//@ts-nocheck
import { observable, action, toJS, makeAutoObservable } from 'mobx';
import { Alert } from 'react-native';
import { Api } from '../../services/api';

class Store {
  @observable isLoading = false;
  @observable step = 1;
  @observable data = undefined;
  @observable listProvinces = [];
  @observable listDistricts = [];
  @observable listWards = [];
  @observable householdListDistricts = [];
  @observable householdListWards = [];
  @observable companyListDistricts = [];
  @observable companyListWards = [];
  @observable listJob = [];
  @observable listJobDescription = [];
  @observable listBrand = [];
  @observable listBrandName = [];
  @observable listBank = [];
  @observable loadingDocument = false;

  @observable body = {};

  //314

  constructor() {
    makeAutoObservable(this);
  }

  @action
  clear() {
    this.body = {};
    this.data = null;
    this.step = 1;
  }

  @action
  async uploadLoanReborrow(body, onSuccess?) {
    this.isLoading = true;
    try {
      const response = await Api.getInstance().updateLoanReborrow(body);
      console.log(response);
      this.isLoading = false;
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          if (onSuccess) onSuccess();
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage);
        }
      } else {
        Alert.alert('Thông báo', 'Có lỗi xảy ra. Vui lòng thử lại sau.');
      }
    } catch (error) {
      this.isLoading = false;
      Alert.alert('Thông báo', 'Có lỗi xảy ra. Vui lòng thử lại sau.');
      console.log(error);
    }
  }

  @action
  async uploadCavet(body, onSuccess?) {
    this.loadingDocument = true;
    try {
      const response = await Api.getInstance().uploadDocument(body);
      this.loadingDocument = false;
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          if (onSuccess) onSuccess();
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage);
        }
      } else {
        Alert.alert('Thông báo', 'Có lỗi xảy ra. Vui lòng thử lại sau.');
      }
    } catch (error) {
      this.loadingDocument = false;
      Alert.alert('Thông báo', 'Có lỗi xảy ra. Vui lòng thử lại sau.');
      console.log(error);
    }
  }

  @action
  async getBank() {
    try {
      const response = await Api.getInstance().getBanks();
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listBank = response.data.data.map((item: any) => {
            return { id: item.bankId, name: item.name };
          });
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage);
        }
      } else {
        // Alert.alert('Thông báo', 'Không lấy được danh sách hãng xe.');
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getBrandName(id) {
    try {
      const response = await Api.getInstance().getNameBrand(id);
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listBrandName = response.data.data.map((item: any) => {
            return { id: item.id, name: item.fullName };
          });
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage);
        }
      } else {
        // Alert.alert('Thông báo', 'Không lấy được danh sách hãng xe.');
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getBrandProduct() {
    try {
      const response = await Api.getInstance().getBrandProduct();
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listBrand = response.data.data;
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage);
        }
      } else {
        // Alert.alert('Thông báo', 'Không lấy được danh sách hãng xe.');
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getJob() {
    try {
      const response = await Api.getInstance().getJobTima();
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listJob = response.data.data;
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage);
        }
      } else {
        // Alert.alert('Thông báo', 'Không lấy được danh sách nghề nghi.');
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getJobDescription(id) {
    try {
      const response = await Api.getInstance().getJobDescriptionTima(id);
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listJobDescription = response.data.data.map((item: any) => {
            return { id: item.jobId, name: item.name };
          });
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage);
        }
      } else {
        // Alert.alert('Thông báo', 'Không lấy được danh sách quận huyện.');
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getDistricts(id, onSuccess?) {
    try {
      const response = await Api.getInstance().getDistricts(id);
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          if (onSuccess) {
            onSuccess(
              response.data.data.map((item: any) => {
                return { id: item.districtId, name: item.name };
              })
            );
          } else {
            this.listDistricts = response.data.data.map((item: any) => {
              return { id: item.districtId, name: item.name };
            });
          }
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage);
        }
      } else {
        Alert.alert('Thông báo', 'Không lấy được danh sách quận huyện.');
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getWards(id, onSuccess?) {
    try {
      const response = await Api.getInstance().getWards(id);
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          if (onSuccess) {
            onSuccess(
              response.data.data.map((item: any) => {
                return { id: item.wardId, name: item.name };
              })
            );
          } else {
            this.listWards = response.data.data.map((item: any) => {
              return { id: item.wardId, name: item.name };
            });
          }
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage);
        }
      } else {
        Alert.alert('Thông báo', 'Không lấy được danh sách quận huyện.');
      }
    } catch (error) {
      console.log(error);
    }
  }

  async getDetailLoan(id, onSuccess?) {
    this.isLoading = true;
    try {
      const response = await Api.getInstance().detailLoanReborrow(id);
      console.log(response, 'Detail');
      this.isLoading = false;
      if (response.kind === 'ok') {
        if (response.data?.meta?.errorCode === 200) {
          if (onSuccess) onSuccess();
          this.data = response.data?.data;
          if (response.data?.data?.provinceId) {
            digitalLendingStore.getDistricts(response.data?.data?.provinceId);
          }
          if (response.data?.data?.wardId) {
            digitalLendingStore.getWards(response.data?.data?.districtId);
          }
        } else {
          Alert.alert(response.data?.meta?.errorMessage);
        }
      } else {
        Alert.alert('Có lỗi xảy ra. Vui lòng thử lại sau!');
      }
    } catch (error) {
      console.log(error);
      this.isLoading = false;
    }
  }

  @action
  async getProvinces() {
    try {
      const response = await Api.getInstance().getProvinces({});
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listProvinces = response.data.data.map((item: any) => {
            return { id: item.provinceId, name: item.name };
          });
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage);
        }
      } else {
        Alert.alert('Thông báo', 'Không lấy được danh sách thành phố.');
      }
    } catch (error) {
      console.log(error);
    }
  }
}

const digitalLendingStore = new Store();
export default digitalLendingStore;
