//@ts-nocheck
import { observable, action } from 'mobx';
import { Api } from '../../services/api';
import { myLog } from '../../utils/log';
import { Alert } from 'react-native';
import { NATIONAL_ID, save } from '../../utils/storage';
import appStore from '../../AppStore';
import { removeAccent } from '../../utils';
import Slack from 'react-native-slack-webhook';
const webHookURL =
  'https://hooks.slack.com/services/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';

class Store {
  @observable isLoading = false;
  @observable isError = false;
  @observable data = {};
  @observable photo = null;

  @action
  async uploadNationalCard(body, loan, onSuccess?, onFailure?) {
    this.isLoading = true;
    const response = await Api.getInstance().ekycNationalCard(body, loan.id);
    this.isLoading = false;
    myLog(response);
    if (response.kind === 'ok') {
      if (response.data.meta.errorCode === 200) {
        // if (__DEV__) {
        //   if (onSuccess) {
        //     onSuccess(response.data.data)
        //   }
        //   return
        // }
        if (response.data.data !== null) {
          try {
            new Slack(webHookURL).post(
              JSON.stringify({
                loanID: loan.id,
                nationalIDLOS: loan.nationalCard,
                nationalIDeKYC: response.data.data?.info?.id,
                nameLOS: loan.fullname,
                nameKYC: response.data.data?.info?.name,
                nameRemove: removeAccent(loan.fullname?.toLowerCase()),
                nameRemove2: removeAccent(
                  response.data.data?.info?.name?.toLowerCase()
                ),
              }),
              '#timacare'
            );
          } catch (e) {}

          if (
            response.data.data?.info !== null &&
            response.data.data?.side === 'FRONT'
          ) {
            if (response.data.data?.missingCorner === false) {
              if (
                loan.nationalCard === response.data.data?.info?.id &&
                removeAccent(loan.fullname?.toLowerCase()) ===
                  removeAccent(response.data.data?.info?.name?.toLowerCase())
              ) {
                this.isError = false;
                myLog('data', response.data.data);
                save(NATIONAL_ID, response.data.data);
                appStore.nationalID = response.data.data;
                if (onSuccess) {
                  onSuccess(response.data.data);
                }
              } else {
                Alert.alert(
                  'Thông báo',
                  'Vui lòng chụp đúng CMND/CCCD của bạn',
                  [{ text: 'Đồng ý' }]
                );
              }
            } else {
              Alert.alert(
                'Thông báo',
                'Vui lòng chụp đầy đủ không bị cắt góc CMND/CCCD mặt trước',
                [{ text: 'Đồng ý' }]
              );
            }
          } else {
            Alert.alert(
              'Thông báo',
              'Vui lòng chụp đúng ảnh CMND/CCCD mặt trước',
              [{ text: 'Đồng ý' }]
            );
          }
        } else {
          Alert.alert(
            'Thông báo',
            'Vui lòng chụp đúng ảnh CMND/CCCD mặt trước',
            [{ text: 'Đồng ý' }]
          );
        }
      } else {
        Alert.alert('Thông báo', response.data.meta.errorMessage, [
          { text: 'Đồng ý' },
        ]);
      }
    } else {
      this.isLoading = false;
      Alert.alert('Thông báo', 'Có lỗi xảy ra. Vui lòng thử lại sau!');
    }
  }

  @action
  async uploadImage(body, onSuccess?, onFailure?) {
    this.isLoading = true;
    const response = await Api.getInstance().uploadDocument(body);
    this.isLoading = false;
    myLog(response);
    if (response.kind === 'ok') {
      if (response.data.meta.errorCode === 200) {
        this.isError = false;
        myLog('data', response.data.data);
        if (onSuccess) {
          onSuccess(response.data.data);
        }
      } else {
        Alert.alert('Thông báo', response.data.meta.errorMessage, [
          { text: 'Đồng ý' },
        ]);
        if (onFailure) onFailure();
      }
    } else {
      this.isLoading = false;
      this.isError = false;
      Alert.alert('Thông báo', 'Có lỗi xảy ra. Vui lòng thử lại sau!');
      if (onFailure) onFailure();
    }
  }
}

const nationalIDStore = new Store();

export default nationalIDStore;
