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

class Store {
  @observable isLoading = false;
  @observable listDocument = [];
  @observable loadingDocument = false;
  @observable listJobTitle = [];
  @observable listSourceFund = [];
  @observable listStatusWorking = [];
  @observable listTypeMerried = [];
  @observable listBanks = [];
  @observable tab = 1;

  @observable loadingButton = false;
  @observable loadingInsurance = false;
  @observable dataInsurance = null;

  @observable lstStatusJobCIMB = [];
  @observable lstIncomeCIMB = [];
  @observable lstPositionCIMB = [];

  @action
  async getDetailLoan(id, onSuccess?) {
    this.isLoading = true;
    try {
      const response = await Api.getInstance().getDetailFullSubmit(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);
        }
      } else {
        Alert.alert('Thông báo', 'Không thể lấy thông tin đơn vay');
      }
    } catch (error) {
      this.isLoading = false;
      console.log(error);
    }
  }

  @action
  async getDocument(id, onSuccess?, onError?) {
    this.loadingDocument = true;
    try {
      const response = await Api.getInstance().getDocument(id);
      this.loadingDocument = false;
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listDocument = response.data.data;
          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', 'Có lỗi xảy ra. Vui lòng thử lại sau.');
        if (onError) onError();
      }
    } 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);
      if (onError) onError();
    }
  }

  @action
  async uploadDocument(body, onSuccess?, onError?) {
    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);
          if (onError) onError();
        }
      } else {
        Alert.alert('Thông báo', 'Có lỗi xảy ra. Vui lòng thử lại sau.');
        if (onError) onError();
      }
    } 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);
      if (onError) onError();
    }
  }

  @action
  async getListSourceFund() {
    try {
      const response = await Api.getInstance().getSourceFund();
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listSourceFund = response.data.data.map((item: any) => {
            return { id: item.code, name: item.vi };
          });
        } 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 nguồn thu nhập.');
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getListStatusWorking() {
    try {
      const response = await Api.getInstance().getStatusWorking();
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listStatusWorking = response.data.data.map((item: any) => {
            return { id: item.code, name: item.vi };
          });
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage);
        }
      } else {
        Alert.alert('Thông báo', 'Không lấy được trạng thái làm việc.');
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getListJobTitle() {
    try {
      const response = await Api.getInstance().getJobTitle();
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listJobTitle = response.data.data.map((item: any) => {
            return { id: item.code, name: item.vi };
          });
        } 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 chức vụ.');
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getTypeMerried() {
    try {
      const response = await Api.getInstance().getTypeMerried();
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listTypeMerried = 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 chức vụ.")
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getListBank() {
    try {
      const response = await Api.getInstance().getBanks();
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.listBanks = 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 chức vụ.")
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async fullSubmit(body, onSuccess?, onError?) {
    this.loadingButton = true;
    try {
      const response = await Api.getInstance().fullSubmit(body);
      this.loadingButton = 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);
          if (onError) onError();
        }
      } else {
        Alert.alert('Thông báo', 'Có lỗi xảy ra. Vui lòng thử lại sau.');
        if (onError) onError();
      }
    } catch (error) {
      this.loadingButton = false;
      if (onError) onError();
      Alert.alert('Thông báo', 'Có lỗi xảy ra. Vui lòng thử lại sau.');
    }
  }

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

  @action
  async getSchedulePayment(id, onSuccess?) {
    try {
      const response = await Api.getInstance().getPaymentSchedule(id);
      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);
        }
      } else {
        this.loadingInsurance = false;
        Alert.alert('Thông báo', 'Không lấy được lịch thanh toán!');
      }
    } catch (error) {
      console.log(error);
    }
  }

  @action
  async getInsurance(params, onSuccess?) {
    this.loadingInsurance = true;
    try {
      const response = await Api.getInstance().getInsurance(params);
      console.log(response);
      this.loadingInsurance = false;
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.dataInsurance = response.data.data;
          if (onSuccess) onSuccess(response.data.data);
        } else {
          Alert.alert('Thông báo', response.data.meta.errorMessage);
        }
      } else {
        this.loadingInsurance = false;
        Alert.alert('Thông báo', 'Không lấy được phí bảo hiểm.');
      }
    } catch (error) {
      console.log(error);
      this.loadingInsurance = false;
    }
  }
  @action
  async confirmInsurance(body, onSuccess?) {
    try {
      const response = await Api.getInstance().confirmInsurance(body);
      console.log(response);
      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) {
      console.log(error);
    }
  }

  @action
  async getPositionCIMB() {
    try {
      const response = await Api.getInstance().getPositionCIMB();
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.lstPositionCIMB = 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 chức vụ.")
      }
    } catch (error) {
      console.log(error);
    }
  }
  @action
  async getJobStatusCIMB() {
    try {
      const response = await Api.getInstance().getJobStatusCIMB();
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.lstStatusJobCIMB = 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 chức vụ.")
      }
    } catch (error) {
      console.log(error);
    }
  }
  @action
  async getIncomeCIMB() {
    try {
      const response = await Api.getInstance().getIncomeCIMB();
      console.log(response);
      if (response.kind === 'ok') {
        if (response.data.meta.errorCode === 200) {
          this.lstIncomeCIMB = 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 chức vụ.")
      }
    } catch (error) {
      console.log(error);
    }
  }
}
const FullSubmitStore = new Store();
export default FullSubmitStore;
