//@ts-nocheck
import { observable, action, toJS, makeAutoObservable } from 'mobx';
import { Api } from '../../services/api';
import moment from 'moment';
import { Alert } from 'react-native';
class Store {
    listProvince = []
    listDistrict = []
    listWard = []

    listDistrict2 = []
    listWard2 = []
    listBank = []
    listCar = []
    listYear = []
    listBrand = []

    listRelationship = []
    listJob = []

    listFirstPayment = []

    constructor() {
        makeAutoObservable(this);
    }

    async getProvinces() {
        try {
            const response = await Api.getInstance().getProvinces({});
            if (response.kind === 'ok') {
                if (response.data.meta.errorCode === 200) {
                    this.listProvince = 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);
        }
    }

    async getDistrict(id, onSuccess?) {
        try {
            const response = await Api.getInstance().getDistricts(id);
            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.listDistrict = 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);
        }
    }


    async getWard(id, onSuccess?) {
        try {
            const response = await Api.getInstance().getWards(id);
            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.listWard = 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 getDistrict2(id, onSuccess?) {
        try {
            const response = await Api.getInstance().getDistricts(id);
            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.listDistrict2 = 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);
        }
    }


    async getWard2(id, onSuccess?) {
        try {
            const response = await Api.getInstance().getWards(id);
            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.listWard2 = 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 getListBank() {
        try {
            const response = await Api.getInstance().getBanks();
            if (response.kind === 'ok') {
                if (response.data.meta.errorCode === 200) {
                    this.listBank = response.data.data.map((item: any) => {
                        return { id: item.bankId, name: `${item?.bankCode} - ${item?.name}` };
                    });
                } else {
                }
            } else {
            }
        } catch (error) {
            console.log(error);
        }
    }

    async getListBrand() {
        try {
            const response = await Api.getInstance().getBrandCar();
            if (response.kind === 'ok') {
                if (response.data.meta.errorCode === 200) {
                    this.listBrand = response.data.data.map((item: any) => {
                        return { id: item, name: item };
                    });
                } else {
                }
            } else {
            }
        } catch (error) {
            console.log(error);
        }
    }

    async getListYearCar(name) {
        try {
            const response = await Api.getInstance().getYearCar(name);
            if (response.kind === 'ok') {
                if (response.data.meta.errorCode === 200) {
                    this.listYear = response.data.data.map((item: any) => {
                        return { id: item, name: item };
                    });
                } else {
                }
            } else {
            }
        } catch (error) {
            console.log(error);
        }
    }

    async getListCar(name, year) {
        try {
            const response = await Api.getInstance().getNameCar(name, year);
            if (response.kind === 'ok') {
                if (response.data.meta.errorCode === 200) {
                    this.listCar = response.data.data.map((item: any) => {
                        return { id: item, name: item };
                    });
                } else {
                }
            } else {
            }
        } catch (error) {
            console.log(error);
        }
    }

    async getRelationship() {
        try {
            const response = await Api.getInstance().getRelationship();
            if (response.kind === 'ok') {
                if (response.data.meta.errorCode === 200) {
                    this.listRelationship = response.data.data
                } else {
                }
            } else {
            }
        } catch (error) {
            console.log(error);
        }
    }


    async getJob() {
        try {
            const response = await Api.getInstance().getJobTima();
            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);
        }
    }

    async getFirstPayment(id) {
        try {
            const response = await Api.getInstance().getFirstPaymentTTSV2(id);
            if (response.kind === 'ok') {
                if (response.data.meta.errorCode === 200) {
                    this.listFirstPayment = response.data.data.map((item: any) => {
                        return { id: item, name: moment(item, 'DD-MM-YYYY').format('DD/MM/YYYY') };
                    });
                } 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);
        }
    }

    async signViettel(id, onSuccess?) {
        try {

            const response = await Api.getInstance().sign_viettel_for_borrower({
                loanBriefId: id
            })
            if (response.kind === 'ok' && response.data.meta.errorCode === 200) {
                Alert.alert(
                    'Thông báo',
                    'Vui lòng kiểm tra tin nhắn để hoàn tất ký hợp đồng',
                    [
                        {
                            text: 'Xác nhận',
                            onPress: () => {
                                if (onSuccess) {
                                    onSuccess()
                                }
                            },
                        },
                    ]
                );

            } else {
                Alert.alert('Thông báo', response.data?.meta?.errorMessage ||
                    'Có lỗi xảy ra. Vui lòng thử lại sau.', [{
                        text: 'OK', onPress: () => {
                            onSuccess && onSuccess()
                        }
                    }]);
            }
        } catch (error) {
            console.log(error);

        }
    }
}

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