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

class Store {
  @observable isLoading = false;
  @observable listProvinces = [];
  @observable listDistricts = [];
  @observable listWards = [];
  @observable listBrand = [];
  @observable listYear = [];
  @observable listModel = [];
  @observable listOccupation = [];
  @observable listJobCimb = [];

  @observable loadingButton = false;

  @action
  async getJobsCIMB() {
    try {
      const response = await Api.getInstance().getJobCIMB();
      console.log('JOB_CIMB', response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listJobCimb = response.data.data;
        } else {
          this.listJobCimb = [];
          Alert.alert('Thông báo', response.data.meta.errorMessage);
        }
      } else {
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getOccupation() {
    try {
      const response = await Api.getInstance().getOccupation();
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listOccupation = response.data.data.map((item: any) => {
            return { id: item.id, name: item.jobName };
          });
        } 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);
    }
  }

  @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);
    }
  }

  @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 getYearProduct(id) {
    try {
      const response = await Api.getInstance().getYearProduct(id);
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listYear = 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 năm sản xuất');
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getModelProduct(id, year) {
    try {
      const response = await Api.getInstance().getModelProduct(id, year);
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listModel = 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 xe máy.');
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getDetailLoan(id, onSuccess?, onError?) {
    this.isLoading = true;
    try {
      const response = await Api.getInstance().getDetailLoan(id);
      this.isLoading = false;
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          if (onSuccess) onSuccess(response.data.data);
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage);
          if (onError) onError();
        }
      } else {
        Alert.alert('Thông báo', 'Không thể lấy thông tin đơn vay');
        if (onError) onError();
      }
    } catch (error) {
      this.isLoading = false;
      console.log(error);
      if (onError) onError();
    }
  }

  @action
  async quickSubmit(body, onSuccess?) {
    this.isLoading = true;
    try {
      const response = await Api.getInstance().quickSubmit(body);
      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.');
    }
  }
}
const QuickSubmitStore = new Store();
export default QuickSubmitStore;
