/* Minification failed. Returning unminified contents.
(1,1): run-time error CSS1019: Unexpected token, found '$'
(1,2): run-time error CSS1019: Unexpected token, found '('
(1,12): run-time error CSS1031: Expected selector, found '('
(1,12): run-time error CSS1025: Expected comma or open brace, found '('
(23,2): run-time error CSS1019: Unexpected token, found ')'
(24,1): run-time error CSS1019: Unexpected token, found '$'
(24,2): run-time error CSS1019: Unexpected token, found '('
(24,12): run-time error CSS1031: Expected selector, found '('
(24,12): run-time error CSS1025: Expected comma or open brace, found '('
(51,2): run-time error CSS1019: Unexpected token, found ')'
(52,1): run-time error CSS1019: Unexpected token, found '$'
(52,2): run-time error CSS1019: Unexpected token, found '('
(52,12): run-time error CSS1031: Expected selector, found '('
(52,12): run-time error CSS1025: Expected comma or open brace, found '('
(70,2): run-time error CSS1019: Unexpected token, found ')'
(71,1): run-time error CSS1019: Unexpected token, found '$'
(71,2): run-time error CSS1019: Unexpected token, found '('
(71,12): run-time error CSS1031: Expected selector, found '('
(71,12): run-time error CSS1025: Expected comma or open brace, found '('
(103,2): run-time error CSS1019: Unexpected token, found ')'
(104,1): run-time error CSS1019: Unexpected token, found '$'
(104,2): run-time error CSS1019: Unexpected token, found '('
(104,12): run-time error CSS1031: Expected selector, found '('
(104,12): run-time error CSS1025: Expected comma or open brace, found '('
(199,2): run-time error CSS1019: Unexpected token, found ')'
(200,1): run-time error CSS1019: Unexpected token, found '$'
(200,2): run-time error CSS1019: Unexpected token, found '('
(200,12): run-time error CSS1031: Expected selector, found '('
(200,12): run-time error CSS1025: Expected comma or open brace, found '('
(223,2): run-time error CSS1019: Unexpected token, found ')'
(225,1): run-time error CSS1019: Unexpected token, found '$'
(225,2): run-time error CSS1019: Unexpected token, found '('
(225,12): run-time error CSS1031: Expected selector, found '('
(225,12): run-time error CSS1025: Expected comma or open brace, found '('
(229,2): run-time error CSS1019: Unexpected token, found ')'
(231,17): run-time error CSS1031: Expected selector, found '='
(231,17): run-time error CSS1025: Expected comma or open brace, found '='
(239,17): run-time error CSS1031: Expected selector, found '='
(239,17): run-time error CSS1025: Expected comma or open brace, found '='
(243,16): run-time error CSS1031: Expected selector, found '='
(243,16): run-time error CSS1025: Expected comma or open brace, found '='
(244,16): run-time error CSS1031: Expected selector, found '='
(244,16): run-time error CSS1025: Expected comma or open brace, found '='
(245,21): run-time error CSS1031: Expected selector, found ';'
(245,21): run-time error CSS1025: Expected comma or open brace, found ';'
(246,22): run-time error CSS1031: Expected selector, found '='
(246,22): run-time error CSS1025: Expected comma or open brace, found '='
(247,14): run-time error CSS1031: Expected selector, found '='
(247,14): run-time error CSS1025: Expected comma or open brace, found '='
(248,16): run-time error CSS1031: Expected selector, found '='
(248,16): run-time error CSS1025: Expected comma or open brace, found '='
(249,26): run-time error CSS1031: Expected selector, found '='
(249,26): run-time error CSS1025: Expected comma or open brace, found '='
(251,1): run-time error CSS1019: Unexpected token, found '$'
(251,2): run-time error CSS1019: Unexpected token, found '('
(251,12): run-time error CSS1031: Expected selector, found '('
(251,12): run-time error CSS1025: Expected comma or open brace, found '('
(355,2): run-time error CSS1019: Unexpected token, found ')'
(356,17): run-time error CSS1031: Expected selector, found '='
(356,17): run-time error CSS1025: Expected comma or open brace, found '='
(363,16): run-time error CSS1031: Expected selector, found '='
(363,16): run-time error CSS1025: Expected comma or open brace, found '='
(380,16): run-time error CSS1031: Expected selector, found '='
(380,16): run-time error CSS1025: Expected comma or open brace, found '='
(428,17): run-time error CSS1031: Expected selector, found '='
(428,17): run-time error CSS1025: Expected comma or open brace, found '='
(549,17): run-time error CSS1031: Expected selector, found '='
(549,17): run-time error CSS1025: Expected comma or open brace, found '='
(673,23): run-time error CSS1031: Expected selector, found '='
(673,23): run-time error CSS1025: Expected comma or open brace, found '='
(976,11): run-time error CSS1031: Expected selector, found '='
(976,11): run-time error CSS1025: Expected comma or open brace, found '='
(979,24): run-time error CSS1031: Expected selector, found '='
(979,24): run-time error CSS1025: Expected comma or open brace, found '='
(1066,21): run-time error CSS1031: Expected selector, found '='
(1066,21): run-time error CSS1025: Expected comma or open brace, found '='
(1130,24): run-time error CSS1031: Expected selector, found '='
(1130,24): run-time error CSS1025: Expected comma or open brace, found '='
(1281,26): run-time error CSS1031: Expected selector, found '='
(1281,26): run-time error CSS1025: Expected comma or open brace, found '='
(1354,36): run-time error CSS1031: Expected selector, found '='
(1354,36): run-time error CSS1025: Expected comma or open brace, found '='
(1428,26): run-time error CSS1031: Expected selector, found '='
(1428,26): run-time error CSS1025: Expected comma or open brace, found '='
(1495,18): run-time error CSS1031: Expected selector, found '='
(1495,18): run-time error CSS1025: Expected comma or open brace, found '='
(1542,15): run-time error CSS1031: Expected selector, found '='
(1542,15): run-time error CSS1025: Expected comma or open brace, found '='
(1584,17): run-time error CSS1031: Expected selector, found '='
(1584,17): run-time error CSS1025: Expected comma or open brace, found '='
(1636,25): run-time error CSS1031: Expected selector, found '='
(1636,25): run-time error CSS1025: Expected comma or open brace, found '='
(1701,18): run-time error CSS1031: Expected selector, found '='
(1701,18): run-time error CSS1025: Expected comma or open brace, found '='
(1777,17): run-time error CSS1031: Expected selector, found '='
(1777,17): run-time error CSS1025: Expected comma or open brace, found '='
(1888,21): run-time error CSS1031: Expected selector, found '='
(1888,21): run-time error CSS1025: Expected comma or open brace, found '='
(1975,25): run-time error CSS1031: Expected selector, found '='
(1975,25): run-time error CSS1025: Expected comma or open brace, found '='
(2041,17): run-time error CSS1031: Expected selector, found '='
(2041,17): run-time error CSS1025: Expected comma or open brace, found '='
(2085,25): run-time error CSS1031: Expected selector, found '='
(2085,25): run-time error CSS1025: Expected comma or open brace, found '='
(2128,20): run-time error CSS1031: Expected selector, found '='
(2128,20): run-time error CSS1025: Expected comma or open brace, found '='
(2237,22): run-time error CSS1031: Expected selector, found '='
(2237,22): run-time error CSS1025: Expected comma or open brace, found '='
(2258,22): run-time error CSS1031: Expected selector, found '='
(2258,22): run-time error CSS1025: Expected comma or open brace, found '='
(2580,40): run-time error CSS1031: Expected selector, found '='
(2580,40): run-time error CSS1025: Expected comma or open brace, found '='
(2693,22): run-time error CSS1031: Expected selector, found '='
(2693,22): run-time error CSS1025: Expected comma or open brace, found '='
(2941,23): run-time error CSS1031: Expected selector, found '='
(2941,23): run-time error CSS1025: Expected comma or open brace, found '='
(2973,28): run-time error CSS1031: Expected selector, found '='
(2973,28): run-time error CSS1025: Expected comma or open brace, found '='
(3027,25): run-time error CSS1031: Expected selector, found '='
(3027,25): run-time error CSS1025: Expected comma or open brace, found '='
(3048,22): run-time error CSS1031: Expected selector, found '='
(3048,22): run-time error CSS1025: Expected comma or open brace, found '='
(3089,22): run-time error CSS1031: Expected selector, found '='
(3089,22): run-time error CSS1025: Expected comma or open brace, found '='
(3114,15): run-time error CSS1031: Expected selector, found '='
(3114,15): run-time error CSS1025: Expected comma or open brace, found '='
(3133,14): run-time error CSS1031: Expected selector, found '='
(3133,14): run-time error CSS1025: Expected comma or open brace, found '='
(3203,20): run-time error CSS1031: Expected selector, found '='
(3203,20): run-time error CSS1025: Expected comma or open brace, found '='
(3252,24): run-time error CSS1031: Expected selector, found '='
(3252,24): run-time error CSS1025: Expected comma or open brace, found '='
(3272,23): run-time error CSS1031: Expected selector, found '='
(3272,23): run-time error CSS1025: Expected comma or open brace, found '='
(3292,31): run-time error CSS1031: Expected selector, found '='
(3292,31): run-time error CSS1025: Expected comma or open brace, found '='
(3304,25): run-time error CSS1031: Expected selector, found '='
(3304,25): run-time error CSS1025: Expected comma or open brace, found '='
(3361,18): run-time error CSS1031: Expected selector, found '='
(3361,18): run-time error CSS1025: Expected comma or open brace, found '='
(3370,32): run-time error CSS1031: Expected selector, found '='
(3370,32): run-time error CSS1025: Expected comma or open brace, found '='
(3434,11): run-time error CSS1031: Expected selector, found '='
(3434,11): run-time error CSS1025: Expected comma or open brace, found '='
(3495,19): run-time error CSS1031: Expected selector, found '='
(3495,19): run-time error CSS1025: Expected comma or open brace, found '='
(3589,15): run-time error CSS1031: Expected selector, found '='
(3589,15): run-time error CSS1025: Expected comma or open brace, found '='
(3593,20): run-time error CSS1031: Expected selector, found '='
(3593,20): run-time error CSS1025: Expected comma or open brace, found '='
(3653,1): run-time error CSS1019: Unexpected token, found '$'
(3653,2): run-time error CSS1019: Unexpected token, found '('
(3653,12): run-time error CSS1031: Expected selector, found '('
(3653,12): run-time error CSS1025: Expected comma or open brace, found '('
(3661,2): run-time error CSS1019: Unexpected token, found ')'
(3663,22): run-time error CSS1031: Expected selector, found '='
(3663,22): run-time error CSS1025: Expected comma or open brace, found '='
(3669,15): run-time error CSS1031: Expected selector, found '='
(3669,15): run-time error CSS1025: Expected comma or open brace, found '='
(3671,18): run-time error CSS1031: Expected selector, found '='
(3671,18): run-time error CSS1025: Expected comma or open brace, found '='
(3727,1): run-time error CSS1019: Unexpected token, found '$'
(3727,2): run-time error CSS1019: Unexpected token, found '('
(3727,12): run-time error CSS1031: Expected selector, found '('
(3727,12): run-time error CSS1025: Expected comma or open brace, found '('
(3735,2): run-time error CSS1019: Unexpected token, found ')'
(3737,18): run-time error CSS1031: Expected selector, found '='
(3737,18): run-time error CSS1025: Expected comma or open brace, found '='
(3750,24): run-time error CSS1031: Expected selector, found '='
(3750,24): run-time error CSS1025: Expected comma or open brace, found '='
(3764,17): run-time error CSS1031: Expected selector, found '='
(3764,17): run-time error CSS1025: Expected comma or open brace, found '='
(3766,19): run-time error CSS1031: Expected selector, found '='
(3766,19): run-time error CSS1025: Expected comma or open brace, found '='
 */
$(function () {
    $(".animsition").animsition({
        inClass: 'fade-in',
        outClass: 'fade-out',
        inDuration: 900,
        outDuration: 900,
        linkElement: 'a:not([target="_blank"]):not([href^="#"]):not([class^="chosen-single"])',
        loading: true,
        loadingParentElement: 'html',
        loadingClass: 'page-loader',
        loadingInner: '<div class="page-loader__spin"></div>',
        timeout: false,
        timeoutCountdown: 5000,
        onLoadEvent: true,
        browser: ['animation-duration', '-webkit-animation-duration'],
        overlay: false,
        overlayClass: 'animsition-overlay-slide',
        overlayParentElement: 'html',
        transition: function (url) {
            window.location.href = url;
        }
    });
});
$(function () {
    try {
        var progressbarSimple = $('.js-progressbar-simple');
        progressbarSimple.each(function () {
            var that = $(this);
            var executed = false;
            $(window).on('load', function () {

                that.waypoint(function () {
                    if (!executed) {
                        executed = true;
                        /*progress bar*/
                        that.progressbar({
                            update: function (current_percentage, $this) {
                                $this.find('.js-value').html(current_percentage + '%');
                            }
                        });
                    }
                }, {
                        offset: 'bottom-in-view'
                    });

            });
        });
    } catch (err) {
        console.log(err);
    }
});
$(function () {
    // Scroll Bar
    try {
        var jscr1 = $('.js-scrollbar1');
        if (jscr1[0]) {
            var ps1 = new PerfectScrollbar('.js-scrollbar1');
        }

        var jscr2 = $('.js-scrollbar2');
        if (jscr2[0]) {
            var ps2 = new PerfectScrollbar('.js-scrollbar2');

        }

    } catch (error) {
        console.log(error);
    }

});
$(function () {
    // Select 2
    try {

        $(".js-select2").each(function () {
            $(this).select2({
                dropdownParent: $(this).next('.dropDownSelect2'),
                "language": {
                    "noResults": function () {
                        return "Kayıt bulunamadı";
                    }
                },
                placeholder: "Lütfen Seçiniz",
                allowClear: true
            });
        });
        $(".js-select3").each(function () {
            $(this).select2({
                minimumResultsForSearch: 20,
                dropdownParent: $(this).next('.dropDownSelect2'),
                "language": {
                    "noResults": function () {
                        return "Kayıt bulunamadı";
                    }
                }
            });
        });
    } catch (error) {
        console.log(error);
    }


});
$(function () {
    // Dropdown 
    try {
        var menu = $('.js-item-menu');
        var sub_menu_is_showed = -1;

        for (var i = 0; i < menu.length; i++) {
            $(menu[i]).on('click', function (e) {
                e.preventDefault();
                $('.js-right-sidebar').removeClass("show-sidebar");
                if (jQuery.inArray(this, menu) == sub_menu_is_showed) {
                    $(this).toggleClass('show-dropdown');
                    sub_menu_is_showed = -1;
                }
                else {
                    for (var i = 0; i < menu.length; i++) {
                        $(menu[i]).removeClass("show-dropdown");
                    }
                    $(this).toggleClass('show-dropdown');
                    sub_menu_is_showed = jQuery.inArray(this, menu);
                }
            });
        }
        $(".js-item-menu, .js-dropdown").click(function (event) {
            event.stopPropagation();
        });

        $("body,html").on("click", function () {
            for (var i = 0; i < menu.length; i++) {
                menu[i].classList.remove("show-dropdown");
            }
            sub_menu_is_showed = -1;
        });

    } catch (error) {
        console.log(error);
    }

    var wW = $(window).width();
    // Right Sidebar
    var right_sidebar = $('.js-right-sidebar');
    var sidebar_btn = $('.js-sidebar-btn');

    sidebar_btn.on('click', function (e) {
        e.preventDefault();
        for (var i = 0; i < menu.length; i++) {
            menu[i].classList.remove("show-dropdown");
        }
        sub_menu_is_showed = -1;
        right_sidebar.toggleClass("show-sidebar");
    });

    $(".js-right-sidebar, .js-sidebar-btn").click(function (event) {
        event.stopPropagation();
    });

    $("body,html").on("click", function () {
        right_sidebar.removeClass("show-sidebar");

    });


    // Sublist Sidebar
    try {
        var arrow = $('.js-arrow');
        arrow.each(function () {
            var that = $(this);
            that.on('click', function (e) {
                e.preventDefault();
                that.find(".arrow").toggleClass("up");
                that.toggleClass("open");
                that.parent().find('.js-sub-list').slideToggle("250");
            });
        });

    } catch (error) {
        console.log(error);
    }


    try {
        // Hamburger Menu
        $('.hamburger').on('click', function () {
            $(this).toggleClass('is-active');
            $('.navbar-mobile').slideToggle('500');
        });
        $('.navbar-mobile__list li.has-dropdown > a').on('click', function () {
            var dropdown = $(this).siblings('ul.navbar-mobile__dropdown');
            $(this).toggleClass('active');
            $(dropdown).slideToggle('500');
            return false;
        });
    } catch (error) {
        console.log(error);
    }
});
$(function () {
    // Load more
    try {
        var list_load = $('.js-list-load');
        if (list_load[0]) {
            list_load.each(function () {
                var that = $(this);
                that.find('.js-load-item').hide();
                var load_btn = that.find('.js-load-btn');
                load_btn.on('click', function (e) {
                    $(this).text("Loading...").delay(1500).queue(function (next) {
                        $(this).hide();
                        that.find(".js-load-item").fadeToggle("slow", 'swing');
                    });
                    e.preventDefault();
                });
            })

        }
    } catch (error) {
        console.log(error);
    }

});

$(function () {
    var elem = document.getElementById("my-alert");
    alertify.parent(elem);
    alertify.logPosition("top right");
});

var ShowLoading = function (div, message) {
    $(div).loading({
        theme: 'light',
        message: message,
        zIndex: 9999999
    });
};

var HideLoading = function (div) {
    $(div).loading('stop');
};

var pageNumber = 1;
var recordPage = 10;
var defaultCountryId;
var isNotPhoneNumber = false;
var cityList = ko.observableArray([]);
var countyList = ko.observableArray([]);
var pegasusUpdateContact = null;

$(function () {
    if (PageName === "GetCustomers" || PageName === "CreateCustomer" || PageName === "EditCustomer") {
        if ($("#cusVM").length > 0) {
            ko.applyBindings(cusVM, document.getElementById("cusVM"));
            ko.applyBindings(cusVM, document.getElementById("addressModal"));
            ko.applyBindings(cusVM, document.getElementById("verificationModal"));
            isNotPhoneNumber = isNotPhoneNumber != "" || isNotPhoneNumber != undefined || isNotPhoneNumber != null ? Boolean(isNotPhoneNumber) : false;
            if (isNotPhoneNumber) {
                cusVM.isVisibleKvkkPermissions(false);
                cusVM.isVisibleOtherFields(false);
            }
            getLoginData();

            $("#cusBirthDate").datetimepicker({
                format: 'DD.MM.YYYY',
                "icons": {
                    "previous": "fa fa-arrow-left",
                    "next": "fa fa-arrow-right"
                },
                useCurrent: false
            });
            $("#cusBirthDate").on("dp.change", function (e) {
                if (!e.date) {
                    cusVM.customer().individualBirthDate(e.oldDate.format("DD.MM.YYYY"));
                } else {
                    cusVM.customer().individualBirthDate(e.date.format("DD.MM.YYYY"));
                }
            });

            $("#searchIndividualBirthDate").datetimepicker({
                format: 'DD.MM.YYYY',
                "icons": {
                    "previous": "fa fa-arrow-left",
                    "next": "fa fa-arrow-right"
                },
                useCurrent: false
            });
            $("#searchIndividualBirthDate").on("dp.change", function (e) {
                if (!e.date) {
                    cusVM.searchIndividualBirthDate(e.oldDate.format("DD.MM.YYYY"));
                } else {
                    cusVM.searchIndividualBirthDate(e.date.format("DD.MM.YYYY"));
                }
            });

            $("#cusFoundingDate").datetimepicker({
                format: 'DD.MM.YYYY',
                "icons": {
                    "previous": "fa fa-arrow-left",
                    "next": "fa fa-arrow-right"
                },
                useCurrent: false
            });
            $("#cusFoundingDate").on("dp.change", function (e) {
                if (!e.date) {
                    cusVM.customer().companyFoundingDate(e.oldDate.format("DD.MM.YYYY"));
                } else {
                    cusVM.customer().companyFoundingDate(e.date.format("DD.MM.YYYY"));
                }
            });

            $("input[name='individualphone']").focus(function () {
                if (cusVM.customer().individualForeignessStatusCode() == 1) {
                    $(this).inputmask({ mask: "599 9999999", placeholder: "" });
                } else {
                    $(this).inputmask({ mask: "999999999999999", placeholder: "" });
                }
            });
            $("input[name='searchindividualphone']").focus(function () {
                $(this).inputmask({ mask: "999 9999999999999", placeholder: "" });
            });
            $("input[name='searchindividualphone']").trigger("focus", function () {
                $(this).inputmask({ mask: "999 9999999999999", placeholder: "" });
            });
            $("input[name='companyphone']").focus(function () {
                $(this).inputmask({ mask: "599 9999999", placeholder: "" });
            });
            $("input[name='companypstnphone']").focus(function () {
                $(this).inputmask({ mask: "999 9999999", placeholder: "" });
            });


            $("#cusFirstName").mask('ZZZZZZZZZZZZZZZZZZZZ', { translation: { 'Z': { pattern: /[A-Za-zŞÇĞİÖÜşçğıöü ]/, optional: true } } });
            $("#cusLastName").mask('ZZZZZZZZZZZZZZZZZZZZ', { translation: { 'Z': { pattern: /[A-Za-zŞÇĞİÖÜşçğıöü ]/, optional: true } } });


            //$("input[name='individualname']").focus(function () {
            //    $(this).inputmask({ mask: "*{1,20}", definitions: { "*": { validator: "[A-Za-zŞÇĞİÖÜşçğıöü ]" } }, placeholder: "" });
            //});
            //$("input[name='individuallastname']").focus(function () {
            //    $(this).inputmask({ mask: "*{1,20}", definitions: { "*": { validator: "[A-Za-zŞÇĞİÖÜşçğıöü ]" } }, placeholder: "" });
            //});
            //$("input[name='tckn']").focus(function () {
            //    $(this).inputmask({ mask: "99999999999", placeholder: "" });
            //});
            //$("input[name='passport']").focus(function () {
            //    $(this).inputmask({ mask: "*{1,30}", definitions: { "*": { validator: "[A-Za-z0-9]" } }, placeholder: "" });
            //});
            //$("input[name='companyvkntckn']").focus(function () {
            //    $(this).inputmask({ mask: "99999999999", placeholder: "" });
            //});
            $("#individualForeignessStatusCode").trigger("change");
        }
    }
});
var lookupModel = function (data) {
    var self = this;

    self.mainId = ko.observable(data.mainId);
    self.id = ko.observable(data.id);
    self.name = ko.observable(data.name);
};
var addressMap = function (address) {
    var self = this;

    self.crmId = ko.observable(address.crmId);
    self.customerId = ko.observable(address.customerId);
    self.customerLogicalName = ko.observable(address.customerLogicalName);
    self.addressTypeCode = ko.observable(address.addressTypeCode);
    self.addressTypeCodeName = ko.observable(address.addressTypeCodeName);
    self.countryId = ko.observable(address.countryId);
    self.countryName = ko.observable(address.countryName);
    self.cityId = ko.observable(address.cityId);
    self.cityName = ko.observable(address.cityName);
    self.countyId = ko.observable(address.countyId);
    self.countyName = ko.observable(address.countyName);
    self.shortAddress = ko.observable(address.shortAddress);
    self.fullAddress = ko.observable(address.fullAddress);
};
var newAddress = function () {
    var self = this;

    self.crmId = ko.observable();
    self.customerId = ko.observable();
    self.customerLogicalName = ko.observable();
    self.addressTypeCode = ko.observable();
    self.addressTypeCodeName = ko.observable();
    self.countryId = ko.observable();
    self.countryId.subscribe(function (newValue) {
        if (newValue != undefined) {
            var cityIdList = ko.utils.arrayFilter(cityList(), function (city) {
                return city.mainId() == newValue;
            });
            cusVM.cityIdList(cityIdList);
            cusVM.isEnableCity(true);

            if (defaultCountryId == newValue) {
                cusVM.isSelectedDefaultCountry(true);
            }
            else {
                cusVM.isSelectedDefaultCountry(false);
            }
        } else {
            cusVM.cityIdList([]);
            cusVM.isEnableCity(false);
        }
    });
    self.countryName = ko.observable();
    self.cityId = ko.observable();
    self.cityId.subscribe(function (newValue) {
        if (newValue != undefined) {
            var countyIdList = ko.utils.arrayFilter(countyList(), function (county) {
                return county.mainId() == newValue;
            });
            cusVM.countyIdList(countyIdList);
            cusVM.isEnableCounty(true);
        } else {
            cusVM.countyIdList([]);
            cusVM.isEnableCounty(false);
        }
    });
    self.cityName = ko.observable();
    self.countyId = ko.observable();
    self.countyName = ko.observable();
    self.shortAddress = ko.observable();
    self.fullAddress = ko.observable();
};
var customerMap = function (customer) {
    var self = this;

    self.entityId = ko.observable(customer.entityId);
    self.logicalName = ko.observable(customer.logicalName);
    self.phone = ko.observable(customer.phone);
    self.email = ko.observable(customer.email);
    self.email.subscribe(function (newValue) {
        if (newValue == undefined && newValue == null && newValue == "") {
            cusVM.customer().isSendEmailPermission(false);
        }
    });
    self.isSendSmsPermission = ko.observable(customer.isSendSmsPermission);
    self.isSendSmsPermissionFirst = ko.observable(customer.isSendSmsPermission);
    self.isSendEmailPermission = ko.observable(customer.isSendEmailPermission);
    self.isSendEmailPermissionFirst = ko.observable(customer.isSendEmailPermission);
    self.isKvkkPermission = ko.observable(customer.isKvkkPermission);
    self.isKvkkPermissionFirst = ko.observable(customer.isKvkkPermission);
    self.isAbroadPermission = ko.observable(customer.isAbroadPermission);
    self.isAbroadPermissionFirst = ko.observable(customer.isAbroadPermission);
    self.isLoyaltyMembership = ko.observable(customer.isLoyaltyMembership);
    self.isLoyaltyMembershipFirst = ko.observable(customer.isLoyaltyMembership);

    self.individualFirstName = ko.observable(customer.individualFirstName);
    self.individualMiddleName = ko.observable(customer.individualMiddleName);
    self.individualLastName = ko.observable(customer.individualLastName);
    self.individualBirthDate = ko.observable(customer.individualBirthDate);
    //self.individualTckn = ko.observable(customer.individualTckn);
    //self.individualPassport = ko.observable(customer.individualPassport);
    self.individualLastInvoiceNumber = ko.observable(customer.individualLastInvoiceNumber);
    self.individualCity = ko.observable(customer.individualCity);
    self.individualCounty = ko.observable(customer.individualCounty);
    self.individualAddress = ko.observable(customer.individualAddress);
    self.individualForeignessStatusCode = ko.observable(customer.individualForeignessStatusCode);
    self.individualForeignessStatusCode.subscribe(function (newValue) {
        if (newValue == 2) {
            cusVM.isVisibleKvkkPermissions(false);
        } else {
            cusVM.isVisibleKvkkPermissions(true);
        }
    });
    self.individualForeignessStatusCodeName = ko.observable(customer.individualForeignessStatusCodeName);
    self.individualGenderCode = ko.observable(customer.individualGenderCode);

    self.companyName = ko.observable(customer.companyName);
    self.companyTitle = ko.observable(customer.companyTitle);
    self.companyVknTckn = ko.observable(customer.companyVknTckn);
    self.companyVknTckn.subscribe(function (newValue) {
        if (self.companyForeignessStatusCode() == 1) {
            if (newValue == undefined || newValue == null || newValue == "") {
                self.companyTypeCode(null);
                $("#comTypeCode").trigger("change");
            } else if (newValue.length == 10) {
                self.companyTypeCode(2);
                $("#comTypeCode").trigger("change");
            } else if (newValue.length == 11) {
                self.companyTypeCode(1);
                $("#comTypeCode").trigger("change");
            } else {
                self.companyTypeCode(null);
                $("#comTypeCode").trigger("change");
            }
        }
    });
    self.companyTaxOffice = ko.observable(customer.companyTaxOffice);
    //self.companyTckn = ko.observable(customer.companyTckn);
    self.companyTypeCode = ko.observable(customer.companyTypeCode);
    self.companyTypeCode.subscribe(function (newValue) {
        if (newValue == 2) {
            cusVM.isVisibleKvkkPermissions(false);
        }
        else {
            if (self.companyForeignessStatusCode() == 1) {
                cusVM.isVisibleKvkkPermissions(true);
            }
        }
    });
    self.companyForeignessStatusCode = ko.observable(customer.companyForeignessStatusCode);
    self.companyForeignessStatusCode.subscribe(function (newValue) {
        if (newValue == 2) {
            cusVM.isVisibleKvkkPermissions(false);
            cusVM.isRequiredVkn(false);
            cusVM.isCompanyTypeEnabled(true);
        } else {
            if (self.companyTypeCode() == 1) {
                cusVM.isVisibleKvkkPermissions(true);
            }
            cusVM.isRequiredVkn(true);
            cusVM.isCompanyTypeEnabled(false);
        }

        if (newValue == 1) {
            if (self.companyVknTckn() == undefined || self.companyVknTckn() == null || self.companyVknTckn() == "") {
                self.companyTypeCode(null);
                $("#comTypeCode").trigger("change");
            } else if (self.companyVknTckn().length == 10) {
                self.companyTypeCode(2);
                $("#comTypeCode").trigger("change");
            } else if (self.companyVknTckn().length == 11) {
                self.companyTypeCode(1);
                $("#comTypeCode").trigger("change");
            } else {
                self.companyTypeCode(null);
                $("#comTypeCode").trigger("change");
            }
        }
    });
    self.companyPstnPhone = ko.observable(customer.companyPstnPhone);
    self.companyFoundingDate = ko.observable(customer.companyFoundingDate);

    self.stateCode = ko.observable(customer.stateCode);
    self.stateCodeName = ko.observable(customer.stateCodeName);
    self.statusCode = ko.observable(customer.statusCode);
    self.statusCodeName = ko.observable(customer.statusCodeName);
    self.createdOn = ko.observable(customer.createdOn);
    self.modifiedOn = ko.observable(customer.modifiedOn);
    self.customerStatusCode = ko.observable(customer.customerStatusCode);
    self.customerStatusCodeName = ko.observable(customer.customerStatusCodeName);
    self.qrNo = ko.observable(customer.qrNo);
    self.individualMarialStatusCode = ko.observable(customer.individualMarialStatusCode);
};
var newCustomer = function () {
    var self = this;
    self.entityId = ko.observable();
    self.logicalName = ko.observable();
    self.phone = ko.observable();
    self.email = ko.observable();
    self.email.subscribe(function (newValue) {
        if (newValue != undefined && newValue != null && newValue != "") {
            cusVM.customer().isSendEmailPermission(true);
        } else {
            cusVM.customer().isSendEmailPermission(false);
        }
    });
    self.isSendSmsPermission = ko.observable(true);
    self.isSendSmsPermissionFirst = ko.observable(false);
    self.isSendEmailPermission = ko.observable(false);
    self.isSendEmailPermissionFirst = ko.observable(false);
    self.isKvkkPermission = ko.observable(true);
    self.isKvkkPermissionFirst = ko.observable(false);
    self.isAbroadPermission = ko.observable(false);
    self.isAbroadPermissionFirst = ko.observable(false);
    self.isLoyaltyMembership = ko.observable(false);
    self.isLoyaltyMembershipFirst = ko.observable(false);

    self.individualFirstName = ko.observable();
    self.individualMiddleName = ko.observable();
    self.individualLastName = ko.observable();
    self.individualBirthDate = ko.observable();
    //self.individualTckn = ko.observable();
    //self.individualPassport = ko.observable();
    self.individualLastInvoiceNumber = ko.observable();
    self.individualCity = ko.observable();
    self.individualCounty = ko.observable();
    self.individualAddress = ko.observable();
    self.individualForeignessStatusCode = ko.observable(1);
    self.individualForeignessStatusCode.subscribe(function (newValue) {
        if (newValue == 2 || isNotPhoneNumber) {
            cusVM.isVisibleKvkkPermissions(false);
        } else {
            cusVM.isVisibleKvkkPermissions(true);
        }
        if (isNotPhoneNumber && newValue == 2) {
            cusVM.isVisibleNotPhoneAndForeigness(true);
        } else {
            cusVM.isVisibleNotPhoneAndForeigness(false);
        }
    });
    self.individualForeignessStatusCodeName = ko.observable();
    self.individualGenderCode = ko.observable();

    self.companyName = ko.observable();
    self.companyTitle = ko.observable();
    self.companyVknTckn = ko.observable();
    self.companyVknTckn.subscribe(function (newValue) {
        if (self.companyForeignessStatusCode() == 1) {
            if (newValue == undefined || newValue == null || newValue == "") {
                self.companyTypeCode(null);
                $("#comTypeCode").trigger("change");
            } else if (newValue.length == 10) {
                self.companyTypeCode(2);
                $("#comTypeCode").trigger("change");
            } else if (newValue.length == 11) {
                self.companyTypeCode(1);
                $("#comTypeCode").trigger("change");
            } else {
                self.companyTypeCode(null);
                $("#comTypeCode").trigger("change");
            }
        }
    });
    self.companyTaxOffice = ko.observable();
    //self.companyTckn = ko.observable();
    self.companyTypeCode = ko.observable();
    self.companyTypeCode.subscribe(function (newValue) {
        if (newValue == 2) {
            cusVM.isVisibleKvkkPermissions(false);
        } else {
            if (self.companyForeignessStatusCode() == 1) {
                cusVM.isVisibleKvkkPermissions(true);
            }
        }
    });
    self.companyForeignessStatusCode = ko.observable();
    self.companyForeignessStatusCode.subscribe(function (newValue) {
        if (newValue == 2) {
            cusVM.isVisibleKvkkPermissions(false);
            cusVM.isRequiredVkn(false);
            cusVM.isCompanyTypeEnabled(true);
        } else {
            if (self.companyTypeCode() == 1) {
                cusVM.isVisibleKvkkPermissions(true);
            }
            cusVM.isRequiredVkn(true);
            cusVM.isCompanyTypeEnabled(false);
        }

        if (newValue == 1) {
            if (self.companyVknTckn() == undefined || self.companyVknTckn() == null || self.companyVknTckn() == "") {
                self.companyTypeCode(null);
                $("#comTypeCode").trigger("change");
            } else if (self.companyVknTckn().length == 10) {
                self.companyTypeCode(2);
                $("#comTypeCode").trigger("change");
            } else if (self.companyVknTckn().length == 11) {
                self.companyTypeCode(1);
                $("#comTypeCode").trigger("change");
            } else {
                self.companyTypeCode(null);
                $("#comTypeCode").trigger("change");
            }
        }
    });
    self.companyPstnPhone = ko.observable();
    self.companyFoundingDate = ko.observable();

    self.stateCode = ko.observable();
    self.stateCodeName = ko.observable();
    self.statusCode = ko.observable();
    self.statusCodeName = ko.observable();
    self.createdOn = ko.observable();
    self.modifiedOn = ko.observable();
    self.qrNo = ko.observable();
    self.individualMarialStatusCode = ko.observable();
};
var customerViewModel = function () {
    var self = this;

    //self.searchIndividualFirstName = ko.observable("");
    //self.searchIndividualLastName = ko.observable("");
    self.searchIndividualMobilePhone = ko.observable("");
    //self.searchIndividualEmail = ko.observable("");
    //self.searchIndividualBirthDate = ko.observable("");
    //self.searchIndividualTckn = ko.observable("");
    //self.searchIndividualPassport = ko.observable("");

    self.searchCompanyName = ko.observable("");
    self.searchCompanyVknTckn = ko.observable("");

    self.customer = ko.observable(new newCustomer());
    self.customerType = ko.observable(1);
    self.address = ko.observable(new newAddress());
    self.cusList = ko.observableArray([]);
    self.addressList = ko.observableArray([]);
    self.cusTotalCount = ko.observable();
    self.addressTotalCount = ko.observable();

    //self.ivtDataId = ko.observable();
    //self.smsCode = ko.observable();
    //self.collectorId = ko.observable();

    self.etkIvtDataId = ko.observable();
    self.kvkkIvtDataId = ko.observable();
    self.loyaltyIvtDataId = ko.observable();
    self.etkSmsCode = ko.observable();
    self.kvkkSmsCode = ko.observable();
    self.loyaltySmsCode = ko.observable();
    self.etkCollectorId = ko.observable();
    self.kvkkCollectorId = ko.observable();
    self.loyaltyCollectorId = ko.observable();

    self.isVisibleEtkSmsCode = ko.observable(false);
    self.isVisibleKvkkSmsCode = ko.observable(false);
    self.isVisibleLoyaltySmsCode = ko.observable(false);


    self.individualPageShow = function () {
        self.addBtnHidden(false);
        self.customerType(1);
        clearCustomerFields();
        clearCustomerSearchFields();
        self.isCompanyDataVisible(false);
    };
    self.companyPageShow = function () {
        self.addBtnHidden(false);
        self.customerType(2);
        clearCustomerFields();
        clearCustomerSearchFields();
        self.isIndividualDataVisible(false);
    };

    self.addBtnHidden = ko.observable(false);
    self.isIndividualDataVisible = ko.observable(false);
    self.isCompanyDataVisible = ko.observable(false);
    self.isVisibleLoadMore = ko.observable(false);
    self.isRequiredVkn = ko.observable(true);
    self.isEmailEnabled = ko.observable(false);
    self.isCompanyTypeEnabled = ko.observable(false);
    self.isSelectedDefaultCountry = ko.observable(true);

    self.addressText = ko.observable("");
    self.addAddress = function () {
        self.addressText("Ekle");
        clearAddressFields();
        $("#addressModal").modal();
    };
    self.editAddress = function (address) {
        self.addressText("Güncelle");
        fillAddressFields(address);
        $("#addressModal").modal();
    };
    self.searchBtn = function () {
        if (!searchValidation()) {
            return;
        };

        pageNumber = 1;
        searchCustomerList(false);
    };
    self.loadMoreCustomer = function () {
        pageNumber++;
        searchCustomerList(true);
    };

    self.addCustomerVerification = function () {
        self.customer().individualMiddleName = ko.observable(null);
        if (!createValidation()) {
            return;
        }

        var splitArray = ko.observableArray([]);
        splitArray = self.customer().individualFirstName().split(" ");
        self.customer().individualFirstName = ko.observable(splitArray.shift());
        self.customer().individualMiddleName = ko.observable(splitArray.toString().replaceAll(',', ' '));

        if (!createValidation()) {
            return;
        }
        if (self.customer) {

        }
        if (self.customerType() == 1) {
            if (!qr) {
                checkCustomerByPhone();
            }
            else {
                if (!pegasus) {
                    alertify.okBtn("Tamam");
                    alertify.cancelBtn("İptal");
                    alertify.confirm("Müşteri kaydedilsin mi ?", function () {
                        if (((cusVM.customerType() == 1 && cusVM.customer().individualForeignessStatusCode() == 1) || (cusVM.customer().companyTypeCode() == 1 && cusVM.customer().companyForeignessStatusCode() == 1)) && isChangedPermission()) {
                            conditionalIvtFunctionCall(false);
                        } else {
                            if (PageName == "CreateCustomer") {
                                addCustomer();
                            } else if (PageName == "EditCustomer") {
                                alertify
                                    .delay(10000)
                                    .closeLogOnClick(true)
                                    .error("Müşteri kaydı oluşturulamadı. Lütfen sistem yöneticisine başvurunuz...");
                            }
                        }
                    });
                }
                else {
                    checkCustomerByPhoneForPegasus();
                }
            }
        }
        else if (self.customerType() == 2) {
            if (self.customer().companyTypeCode() == 1) {
                checkCustomerByPhone();
            } else if (self.customer().companyTypeCode() == 2 || self.customer().companyTypeCode() == undefined || self.customer().companyTypeCode() == null) {
                var email = cusVM.customer().email();
                if (email != undefined && email != null && email != "") {
                    checkCustomerByEmail();
                } else {
                    alertify.okBtn("Tamam");
                    alertify.cancelBtn("İptal");
                    alertify.confirm("Müşteri kaydedilsin mi ?", function () {
                        if (PageName == "CreateCustomer") {
                            addCustomer();
                        } else if (PageName == "EditCustomer") {
                            updateCustomer();
                        }
                    });
                }
            }
        }
    }
    self.addCustomerVerificationWithNotPhoneNumber = function () {
        self.customer().individualMiddleName = ko.observable(null);
        if (!createValidationWithNotPhoneNumber()) {
            return;
        }

        var splitArray = ko.observableArray([]);
        splitArray = self.customer().individualFirstName().split(" ");
        self.customer().individualFirstName = ko.observable(splitArray.shift());
        self.customer().individualMiddleName = ko.observable(splitArray.toString().replaceAll(',', ' '));

        if (!createValidationWithNotPhoneNumber()) {
            return;
        }

        if (self.customerType() == 1) {
            alertify.okBtn("Tamam");
            alertify.cancelBtn("İptal");
            alertify.confirm("Müşteri kaydedilsin mi ?", function () {
                if (PageName == "CreateCustomer") {
                    addCustomer();
                }
            });
        }
    }
    self.editCustomerVerification = function () {
        self.customer().individualMiddleName = ko.observable(null);
        if (!updateValidation()) {
            return;
        }

        var splitArray = ko.observableArray([]);
        splitArray = self.customer().individualFirstName().split(" ");
        self.customer().individualFirstName = ko.observable(splitArray.shift());
        self.customer().individualMiddleName = ko.observable(splitArray.toString().replaceAll(',', ' '));

        if (!updateValidation()) {
            return;
        }

        var email = self.customer().email();
        if (self.isEmailEnabled() && email != undefined && email != null && email != "") {
            checkCustomerByEmail();
        } else {
            alertify.okBtn("Tamam");
            alertify.cancelBtn("İptal");
            alertify.confirm("Müşteri kaydedilsin mi ?", function () {
                if (((self.customerType() == 1 && self.customer().individualForeignessStatusCode() == 1) || (self.customer().companyTypeCode() == 1 && self.customer().companyForeignessStatusCode() == 1)) && isChangedPermission()) {
                    conditionalIvtFunctionCall(false);
                } else {
                    updateCustomer();
                }
            });
        }
    }
    self.saveCustomerBtn = function () {
        if (PageName == "CreateCustomer") {
            if (isNotPhoneNumber) {
                self.addCustomerVerificationWithNotPhoneNumber();
            }
            else {
                self.addCustomerVerification();
            }
        } else if (PageName == "EditCustomer") {
            self.editCustomerVerification();
        }
    };
    self.saveAddress = function () {
        if (!addressValidation()) {
            return;
        }

        var confirmText;
        if (self.addressText() == "Ekle") {
            confirmText = "Adres oluşturulsun mu?"
        } else if (self.addressText() == "Güncelle") {
            confirmText = "Adres güncellensin mi?"
        }

        alertify.okBtn("Tamam");
        alertify.cancelBtn("İptal");
        alertify.confirm(confirmText, function () {
            sendAddress();
        });
    }

    self.foreignessStatusCodeList = ko.observableArray([
        new lookupModel({ id: 1, name: "T.C." }),
        new lookupModel({ id: 2, name: "Yabancı" })
    ]);
    self.individualGenderCodeList = ko.observableArray([
        new lookupModel({ id: 2, name: "Kadın" }),
        new lookupModel({ id: 1, name: "Erkek" }),
        new lookupModel({ id: 3, name: "Belirtmek İstemiyorum" })
    ]);
    self.companyTypeCodeList = ko.observableArray([
        new lookupModel({ id: 1, name: "Şahıs" }),
        new lookupModel({ id: 2, name: "Tüzel" })
    ]);
    self.addressTypeCodeList = ko.observableArray([
        new lookupModel({ id: 1, name: "Ev Adresi" }),
        new lookupModel({ id: 2, name: "İş Adresi" })
    ]);
    self.countryIdList = ko.observableArray([]);
    self.cityIdList = ko.observableArray([]);
    self.countyIdList = ko.observableArray([]);

    self.goAddCustomer = function (value) {
        if (value) {
            window.location.href = baseUrl + "Home/CreateCustomer?user=" + storeCode + "&posno=" + posNo + "&entityName=" + entityName + "&isNotPhoneNumber=1";
        } else {
            setSessionVariables();
        }
    };
    self.goEditCustomer = function (item) {
        if (mobilePhone.length === 0) {
            window.location.href = baseUrl + "Home/EditCustomer?user=" + storeCode + "&posno=" + posNo + "&entityId=" + item.entityId() + "&entityName=" + item.logicalName();
        }
        else {
            window.location.href = baseUrl + "Home/EditCustomer?user=" + storeCode + "&posno=" + posNo + "&entityId=" + item.entityId() + "&entityName=" + item.logicalName() + "&tel=" + mobilePhone;
        }
    };

    self.isVisibleKvkkPermissions = ko.observable(true);
    self.isEnableCity = ko.observable(false);
    self.isEnableCounty = ko.observable(false);
    self.isVisibleOtherFields = ko.observable(true);
    self.isVisibleNotPhoneAndForeigness = ko.observable(false);
    self.isVisibleQR = ko.observable(true);
    self.loyaltyMembershipCheck = function () {
        $("#loyaltyMembershipModal").modal();
    };
    self.kvkkPermissionCheck = function () {
        $("#kvkkPermissionModal").modal();
    };
    self.sendEmailSmsPermissionCheck = function () {
        $("#sendEmailSmsPermissionModal").modal();
    };
    self.isVisibleVM = ko.observable(true);
    self.isVisibleQREnd = ko.observable(false);
    self.individualMarialStatusCodeList = ko.observableArray([
        new lookupModel({ id: 1, name: "Evli" }),
        new lookupModel({ id: 2, name: "Bekar" }),
        new lookupModel({ id: 3, name: "Belirtmek İstemiyorum" })
    ]);
    self.isEnableBirthDate = ko.observable(true);
};

var cusVM = new customerViewModel();

//#region get
var searchCustomerList = function (isPages) {
    //var birthDate = ko.toJS(cusVM.searchIndividualBirthDate());
    //birthDate = birthDate != null ? moment(birthDate, 'DD.MM.YYYY').format('MM.DD.YYYY') : null;

    var req = {
        //"individualFirstName": cusVM.searchIndividualFirstName(),
        //"individualLastName": cusVM.searchIndividualLastName(),
        "individualMobilePhone": cusVM.searchIndividualMobilePhone(),
        /*"individualEmail": cusVM.searchIndividualEmail(),*/
        /*"individualBirthDate": birthDate,*/
        //"individualTckn": cusVM.searchIndividualTckn(),
        //"individualPassport": cusVM.searchIndividualPassport(),

        "companyName": cusVM.searchCompanyName(),
        "companyVknTckn": cusVM.searchCompanyVknTckn(),

        "customerType": cusVM.customerType(),

        "pageNumber": pageNumber,
        "recordPage": recordPage
    };

    $.ajax({
        url: baseUrl + "api/Customer/GetCustomers",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            ShowLoading('.customerSearchLoading', "Müşteri bilgisi yükleniyor...");
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    if (!isPages) {
                        cusVM.cusList([]);
                    }
                    if (res.customerList !== null) {
                        if (res.customerList.length > 0) {
                            ko.utils.arrayForEach(res.customerList, function (customer) {
                                customer.individualBirthDate = customer.individualBirthDate != null ? moment(customer.individualBirthDate).format("DD.MM.YYYY") : null;
                                customer.individualFirstName = customer.individualFirstName + " " + customer.individualMiddleName;
                                cusVM.cusList.push(new customerMap(customer));
                            });
                        }
                        if (cusVM.cusList().length > 0) {
                            cusVM.addBtnHidden(false);
                            cusVM.isIndividualDataVisible(true);
                        }
                        else {
                            cusVM.addBtnHidden(true);
                            cusVM.isIndividualDataVisible(false);
                        }

                        cusVM.cusTotalCount("Kayıt Sayısı: " + cusVM.cusList().length);
                    } else {
                        cusVM.isIndividualDataVisible(false);
                        cusVM.isCompanyDataVisible(false);
                    }

                    cusVM.isVisibleLoadMore(res.isMoreRecords);
                } else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("Müşteri listesi alınırken hata: " + res.resultMessage);
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri listesi alınırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            }
            HideLoading('.customerSearchLoading');
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri listesi alınırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.customerSearchLoading');
        }
    });

};
var loadAddressList = function (isSave) {
    var req = {
        "customerId": entityId
    };

    $.ajax({
        url: baseUrl + "api/Customer/GetAddresses",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            cusVM.addressList([]);
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    if (res.addressList !== null) {
                        if (res.addressList.length > 0) {
                            ko.utils.arrayForEach(res.addressList, function (address) {
                                cusVM.addressList.push(new addressMap(address));
                            });
                        }

                        cusVM.addressTotalCount("Kayıt Sayısı: " + cusVM.addressList().length);
                    }

                    if (!isSave) {
                        getCountries();
                    }
                } else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("Müşteri adresleri alınırken hata: " + res.resultMessage);
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri adresleri alınırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            }
            HideLoading('.customerLoading');
            if (isSave) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .success("Adres bilgileri kaydedildi.");
                HideLoading('.saveAddressLoading');
                $("#addressModal").modal("hide");
            }
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri adresleri alınırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.customerLoading');
        }
    });

};
var loadSingleCustomer = function () {
    var req = {
        "entityId": entityId,
        "entityName": entityName
    };

    $.ajax({
        url: baseUrl + "api/Customer/GetSingleCustomer",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            ShowLoading('.customerLoading', "Müşteri kaydı yükleniyor...");
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    if (res.customer !== null) {
                        //res.customer.individualBirthDate = res.customer.individualBirthDate != null ? moment(res.customer.individualBirthDate).format("DD.MM.YYYY") : null;
                        if (res.customer.individualBirthDate != null) {
                            res.customer.individualBirthDate = moment(res.customer.individualBirthDate).format("DD.MM.YYYY");
                            cusVM.isEnableBirthDate(false);
                        }
                        else {
                            res.customer.individualBirthDate = null;
                        }
                        res.customer.companyFoundingDate = res.customer.companyFoundingDate != null ? moment(res.customer.companyFoundingDate).format("DD.MM.YYYY") : null;
                        res.customer.individualFirstName = res.customer.individualFirstName + " " + res.customer.individualMiddleName;

                        cusVM.customer(new customerMap(res.customer));

                        if (cusVM.customer().companyTypeCode() == 2) {
                            cusVM.isVisibleKvkkPermissions(false);
                        }
                        else {
                            if (cusVM.customer().individualForeignessStatusCode() == 2) {
                                cusVM.isVisibleKvkkPermissions(false);
                            }
                            else {
                                cusVM.isVisibleKvkkPermissions(true);
                            }
                        }

                        if (cusVM.customer().companyForeignessStatusCode() == 2) {
                            cusVM.isRequiredVkn(false);
                            cusVM.isCompanyTypeEnabled(true);
                        }

                        if (cusVM.customer().email() == undefined || cusVM.customer().email() == null || cusVM.customer().email() == "") {
                            cusVM.isEmailEnabled(true);
                        }

                        $("#individualForeignessStatusCode").trigger("change");
                        $("#individualGenderCode").trigger("change");
                        $("#individualMarialStatusCode").trigger("change");
                        $("#comTypeCode").trigger("change");
                        $("#comForeignnessStatusCode").trigger("change");

                        loadAddressList();
                    }
                } else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("Müşteri getirilemedi. Hata: " + res.resultMessage);
                    HideLoading('.customerLoading');
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri getirilemedi. Lütfen sistem yöneticisine başvurunuz.");
                HideLoading('.customerLoading');
            }
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri alınırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.customerLoading');
        }
    });
};
////Test de kapalı canlıda kapalı . (Müşteri tekillik geliştirmesi)
//var checkCustomerByPhone = function () {
//    var req = {
//        "customerType": cusVM.customerType(),
//        "phone": cusVM.customer().phone()
//    };

//    $.ajax({
//        url: baseUrl + "api/Customer/CheckCustomerByPhoneForUpdateField",
//        type: "POST",
//        dataType: "json",
//        data: req,
//        beforeSend: function () {
//            ShowLoading('.customerLoading', "İşlemler devam ediyor...");
//        },
//        success: function (res) {
//            if (res !== null) {
//                if (res.resultCode === 0) {
//                    HideLoading('.customerLoading');

//                    var email = cusVM.customer().email();
//                    if (email != undefined && email != null && email != "") {
//                        checkCustomerByEmail();
//                    } else {
//                        alertify.okBtn("Tamam");
//                        alertify.cancelBtn("İptal");
//                        alertify.confirm("Müşteri kaydedilsin mi ?", function () {
//                            if (((cusVM.customerType() == 1 && cusVM.customer().individualForeignessStatusCode() == 1) || (cusVM.customer().companyTypeCode() == 1 && cusVM.customer().companyForeignessStatusCode() == 1)) && isChangedPermission()) {
//                                sendIvtRegister();
//                            } else {
//                                if (PageName == "CreateCustomer") {
//                                    addCustomer();
//                                } else if (PageName == "EditCustomer") {
//                                    updateCustomer();
//                                }
//                            }
//                        });
//                    }
//                } else {
//                    alertify
//                        .delay(10000)
//                        .closeLogOnClick(true)
//                        .error("İşlemler devam ederken hata: " + res.resultMessage);
//                    HideLoading('.customerLoading');
//                }
//            } else {
//                alertify
//                    .delay(10000)
//                    .closeLogOnClick(true)
//                    .error("İşlemler devam ederken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
//                HideLoading('.customerLoading');
//            }
//        },
//        error: function () {
//            alertify
//                .delay(10000)
//                .closeLogOnClick(true)
//                .error("İşlemler devam ederken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
//            HideLoading('.customerLoading');
//        }
//    });
//};

//Testde açık şuanda canlıda açık . (Müşteri tekillik geliştirmesi)
var checkCustomerByPhone = function () {

    var req = {
        "customerType": cusVM.customerType(),
        "phone": cusVM.customer().phone()
    };

    $.ajax({
        url: baseUrl + "api/Customer/CheckCustomerByPhone",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            ShowLoading('.customerLoading', "Telefon numarası kontrol ediliyor...");
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    if (res.isExist) {
                        alertify
                            .delay(10000)
                            .closeLogOnClick(true)
                            .error("Girilen numara farklı bir müşteriye ait.");
                        HideLoading('.customerLoading');
                    } else {
                        HideLoading('.customerLoading');

                        var email = cusVM.customer().email();
                        if (email != undefined && email != null && email != "") {
                            checkCustomerByEmail();
                        } else {
                            alertify.okBtn("Tamam");
                            alertify.cancelBtn("İptal");
                            alertify.confirm("Müşteri kaydedilsin mi ?", function () {
                                if (((cusVM.customerType() == 1 && cusVM.customer().individualForeignessStatusCode() == 1) || (cusVM.customer().companyTypeCode() == 1 && cusVM.customer().companyForeignessStatusCode() == 1)) && isChangedPermission()) {
                                    conditionalIvtFunctionCall(false);
                                } else {
                                    if (PageName == "CreateCustomer") {
                                        addCustomer();
                                    } else if (PageName == "EditCustomer") {
                                        updateCustomer();
                                    }
                                }
                            });
                        }
                    }
                } else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("Telefon numarası kontrol edilemedi. Hata: " + res.resultMessage);
                    HideLoading('.customerLoading');
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Telefon numarası kontrol edilirken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
                HideLoading('.customerLoading');
            }
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Telefon numarası kontrol edilirken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.customerLoading');
        }
    });
};
var checkCustomerByPhoneForPegasus = function () {
    debugger;
    var req = {
        "customerType": cusVM.customerType(),
        "phone": cusVM.customer().phone()
    };

    $.ajax({
        url: baseUrl + "api/Customer/CheckCustomerByPhone",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            ShowLoading('.customerLoading', "Telefon numarası kontrol ediliyor...");
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    if (res.isExist) { if (res.customerId != null) { pegasusUpdateContact = res.customerId; } }

                    HideLoading('.customerLoading');

                    alertify.okBtn("Tamam");
                    alertify.cancelBtn("İptal");
                    alertify.confirm("Müşteri kaydedilsin mi ?", function () {
                        if (((cusVM.customerType() == 1 && cusVM.customer().individualForeignessStatusCode() == 1) || (cusVM.customer().companyTypeCode() == 1 && cusVM.customer().companyForeignessStatusCode() == 1)) && isChangedPermission()) {
                            conditionalIvtFunctionCall(false);
                        }
                        else {
                            //Not: isExist bir veya daha fazla kayıt varsa setlenmektedir. customerId ise bir kayıt varsa setlenmektedir. "Gsm eşliği ile tek kayıt bulunursa ve QR'dan gelen veriler eşlik sağlanan kayıttan farklı ise müşteri üzerinde update edilecektir. Gsm eşliği 1'den fazla ise veya eşlik sağlanmazsa Crm'de yeni kayıt yaratılacaktır."
                            if (res.isExist) {
                                if (res.customerId != null) {
                                    updateCustomer();

                                    pegasusUpdateContact = null;
                                }
                                else {
                                    addCustomer();
                                }
                            }
                            else {
                                addCustomer();
                            }
                        }
                    });
                }
                else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("Telefon numarası kontrol edilemedi. Hata: " + res.resultMessage);
                    HideLoading('.customerLoading');
                }
            }
            else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Telefon numarası kontrol edilirken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
                HideLoading('.customerLoading');
            }
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Telefon numarası kontrol edilirken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.customerLoading');
        }
    });
};
var checkCustomerByEmail = function () {
    var req = {
        "customerType": cusVM.customerType(),
        "email": cusVM.customer().email()
    };

    $.ajax({
        url: baseUrl + "api/Customer/CheckCustomerByEmail",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            ShowLoading('.customerLoading', "Email kontrol ediliyor...");
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    if (res.isExist) {
                        alertify
                            .delay(10000)
                            .closeLogOnClick(true)
                            .error("Girilen email farklı bir müşteriye ait.");
                        HideLoading('.customerLoading');
                    } else {
                        HideLoading('.customerLoading');

                        alertify.okBtn("Tamam");
                        alertify.cancelBtn("İptal");
                        alertify.confirm("Müşteri kaydedilsin mi ?", function () {
                            if (((cusVM.customerType() == 1 && cusVM.customer().individualForeignessStatusCode() == 1) || (cusVM.customer().companyTypeCode() == 1 && cusVM.customer().companyForeignessStatusCode() == 1)) && isChangedPermission()) {
                                conditionalIvtFunctionCall(false);
                            } else {
                                if (PageName == "CreateCustomer") {
                                    addCustomer();
                                } else if (PageName == "EditCustomer") {
                                    updateCustomer();
                                }
                            }
                        });
                    }
                } else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("Email kontrol edilemedi. Hata: " + res.resultMessage);
                    HideLoading('.customerLoading');
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Email kontrol edilirken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
                HideLoading('.customerLoading');
            }
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Email kontrol edilirken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.customerLoading');
        }
    });
};
var getCountries = function () {
    $.ajax({
        url: baseUrl + "api/Customer/GetCountries",
        type: "POST",
        dataType: "json",
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            if (PageName == "CreateCustomer") {
                ShowLoading(".customerLoading", "Veriler yükleniyor...");
            }
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    ko.utils.arrayForEach(res.countryList, function (country) {
                        cusVM.countryIdList.push(new lookupModel(country));
                    });
                    defaultCountryId = res.defaultCountryId;


                    getCities();
                } else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("Ülkeler alınırken hata: " + res.resultMessage);
                    HideLoading('.customerLoading');
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Ülkeler alınırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
                HideLoading('.customerLoading');
            }
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Ülkeler alınırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.customerLoading');
        }
    });
};
var getCities = function () {
    $.ajax({
        url: baseUrl + "api/Customer/GetCities",
        type: "POST",
        dataType: "json",
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    ko.utils.arrayForEach(res.cityList, function (city) {
                        cityList.push(new lookupModel(city));
                    });

                    getCounties();
                } else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("İller alınırken hata: " + res.resultMessage);
                    HideLoading('.customerLoading');
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("İller alınırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
                HideLoading('.customerLoading');
            }
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("İller alınırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.customerLoading');
        }
    });
};
var getCounties = function () {
    $.ajax({
        url: baseUrl + "api/Customer/GetCounties",
        type: "POST",
        dataType: "json",
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    ko.utils.arrayForEach(res.countyList, function (county) {
                        countyList.push(new lookupModel(county));
                    });

                    if (PageName == "CreateCustomer") {
                        if (entityName == "contact") {
                            /*$('.nav-tabs a[href="#addIndividual"]').trigger('click');  */
                            cusVM.individualPageShow();
                        } else if (entityName == "account") {
                            $('.nav-tabs a[href="#addCompany"]').trigger('click');
                        }
                        getSessionVariables();
                    } else {
                        HideLoading('.customerLoading');
                    }
                } else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("İlçeler alınırken hata: " + res.resultMessage);
                    HideLoading('.customerLoading');
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("İlçeler alınırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
                HideLoading('.customerLoading');
            }
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("İlçeler alınırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.customerLoading');
        }
    });
};
var getSessionVariables = function () {
    var req = {
    };
    $.ajax({
        url: baseUrl + "api/Customer/GetSessionVariables",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
        },
        success: function (res) {
            if (res != null) {
                if (entityName == "contact") {
                    //cusVM.customer().individualFirstName(res.individualFirstName);
                    //cusVM.customer().individualLastName(res.individualLastName);
                    cusVM.customer().phone(res.individualPhone);

                    if (cusVM.customer().phone() == null || cusVM.customer().phone() == "" || cusVM.customer().phone() == undefined) {
                        var regex = /^[0-9\s]*$/;
                        if (!regex.test(mobilePhone)) {
                            alertify
                                .delay(10000)
                                .closeLogOnClick(true)
                                .error("Telefon numarası sadece rakamlardan oluşmalıdır.");
                            HideLoading('.customerLoading');
                            return false;
                        }
                        else {
                            cusVM.customer().phone(mobilePhone != null ? mobilePhone : "");
                        }
                    }

                    $("input[name='individualphone']").trigger("focus", function () {
                        if (cusVM.customer().individualForeignessStatusCode() == 1) {
                            $(this).inputmask({ mask: "599 9999999", placeholder: "" });
                        } else {
                            $(this).inputmask({ mask: "999999999999999", placeholder: "" });
                        }
                    });

                    /*cusVM.customer().email(res.individualEmail);*/
                } else if (entityName == "account") {
                    cusVM.customer().companyName(res.companyName);
                    cusVM.customer().companyVknTckn(res.companyVknTckn);
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Arama bilgileri eşitlenirken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            }
            HideLoading('.customerLoading');
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Arama bilgileri eşitlenirken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.customerLoading');
        }
    });
};
var getLoginData = function () {
    var loadingName;
    if (PageName == "GetCustomers") {
        loadingName = ".customerSearchLoading";
    } else if (PageName == "CreateCustomer" || PageName == "UpdateCustomer") {
        loadingName = ".customerLoading";
    }

    var req = {
        "storeCode": storeCode,
        "poSno": posNo
    };
    $.ajax({
        url: baseUrl + "api/Login/Login",
        type: "POST",
        dataType: "json",
        "headers": {
            "api_key": api_key
        },
        data: req,
        beforeSend: function () {
            ShowLoading(loadingName, "Giriş bilgileri doğrulanıyor...");
        },
        success: function (res) {
            if (res != null) {
                if (res.resultCode == 0) {
                    sessionStorage.clear();
                    storeUserMap(res.storeUser);
                    HideLoading(loadingName);

                    if (PageName === "CreateCustomer") {
                        getCountries();
                        cusVM.isEmailEnabled(true);
                    }
                    if (PageName === "EditCustomer") {
                        if (entityName == "contact") {
                            $('.nav-tabs a[href="#editIndividual"]').trigger('click');
                            cusVM.customerType(1);
                        } else if (entityName == "account") {
                            $('.nav-tabs a[href="#editCompany"]').trigger('click');
                            cusVM.customerType(2);
                        }

                        loadSingleCustomer();
                    }
                    if (PageName === "GetCustomers") {
                        var regex = /^[0-9\s]*$/;
                        if (!regex.test(mobilePhone)) {
                            alertify
                                .delay(10000)
                                .closeLogOnClick(true)
                                .error("Telefon numarası sadece rakamlardan oluşmalıdır.");
                            return false;
                        }
                        else {
                            cusVM.searchIndividualMobilePhone(mobilePhone != null ? mobilePhone : "");
                        }
                    }
                } else {
                    sessionStorage.setItem("loginError", res.resultMessage);
                    window.location.href = baseUrl + "Home/LoginError";
                }
            } else {
                sessionStorage.setItem("loginError", "Servis hatası.");
                window.location.href = baseUrl + "Home/LoginError";
            }
        },
        error: function () {
            sessionStorage.setItem("loginError", "Servise ulaşılamadı.");
            window.location.href = baseUrl + "Home/LoginError";
        }
    });
};
//#endregion

//#region create
var addCustomer = function () {
    var data = ko.toJS(cusVM.customer());
    data.etkSmsCode = cusVM.etkSmsCode();
    data.etkCollectorId = cusVM.etkCollectorId();
    data.kvkkSmsCode = cusVM.kvkkSmsCode();
    data.kvkkCollectorId = cusVM.kvkkCollectorId();
    data.loyaltySmsCode = cusVM.loyaltySmsCode();
    data.loyaltyCollectorId = cusVM.loyaltyCollectorId();
    data.storeId = storeUserVM.storeId();
    if (pegasus) {
        if (baseUrl.includes("localhost") || baseUrl.includes("-test")) {
            data.storeId = "846271fe-010e-ef11-9f89-000d3ad99d75";
        }
        else {
            data.storeId = "849EAE63-9526-EF11-840B-6045BD9D35CA";
        }
    }
    data.posNo = storeUserVM.posNo();
    data.individualBirthDate = data.individualBirthDate != null ? moment(data.individualBirthDate, 'DD.MM.YYYY').format('MM.DD.YYYY') : null;
    data.companyFoundingDate = data.companyFoundingDate != null ? moment(data.companyFoundingDate, 'DD.MM.YYYY').format('MM.DD.YYYY') : null;
    data.address = cusVM.address();
    data.isRegistrationWithoutMobilePhone = isNotPhoneNumber;
    data.isQR = qr ? true : false;

    if (cusVM.customer().companyTypeCode() == 2) {
        data.etkSmsCode == null;
        data.etkCollectorId = null;
        data.kvkkSmsCode == null;
        data.kvkkCollectorId = null;
        data.loyaltySmsCode == null;
        data.loyaltyCollectorId = null;
    }

    var req = {
        "customer": data,
        "customerType": cusVM.customerType()
    };
    $.ajax({
        url: baseUrl + "api/Customer/CreateCustomer",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            ShowLoading('.customerLoading', "Müşteri kaydı oluşturuluyor...");
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    if (qr) {
                        cusVM.isVisibleVM(false);
                        cusVM.isVisibleQREnd(true);
                        alertify
                            .delay(10000)
                            .closeLogOnClick(true)
                            .success("Müşteri kaydı oluşturuldu.");
                        HideLoading('.customerLoading');
                    }
                    else {
                        if (isNotPhoneNumber) {
                            alertify
                                .delay(10000)
                                .closeLogOnClick(true)
                                .success("Müşteri kaydı oluşturuldu. Müşteri arama ekranına yönlendiriliyorsunuz...");
                            HideLoading('.customerLoading');
                        } else {
                            alertify
                                .delay(10000)
                                .closeLogOnClick(true)
                                .success("Müşteri kaydı oluşturuldu. Müşteri güncelleme ekranına yönlendiriliyorsunuz...");
                            HideLoading('.customerLoading');
                        }
                        setTimeout(function () {
                            if (isNotPhoneNumber) {
                                window.location.href = baseUrl + "Home/GetCustomers?user=" + storeCode + "&posno=" + posNo;
                            }
                            else if (mobilePhone.length === 0) {
                                window.location.href = baseUrl + "Home/EditCustomer?user=" + storeCode + "&posno=" + posNo + "&entityId=" + res.customer.entityId + "&entityName=" + res.customer.logicalName;
                            }
                            else {
                                window.location.href = baseUrl + "Home/EditCustomer?user=" + storeCode + "&posno=" + posNo + "&entityId=" + res.customer.entityId + "&entityName=" + res.customer.logicalName + "&tel=" + mobilePhone;
                            }
                        }, 2000);
                    }

                } else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error(res.resultMessage);
                    HideLoading('.customerLoading');
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri kaydı oluşturulamadı. Lütfen sistem yöneticisine başvurunuz...");
                HideLoading('.customerLoading');
            }
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri kaydı oluşturulamadı. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.customerLoading');
        }
    });
};
var sendIvtRegister = function (verificationType) {
    var req = {
        "firstName": cusVM.customerType() == 1 ? cusVM.customer().individualFirstName() : cusVM.customer().companyName(),
        "lastName": cusVM.customerType() == 1 ? cusVM.customer().individualLastName() : "",
        "msisdn": cusVM.customer().phone(),
        "email": cusVM.customer().email(),
        "customerType": cusVM.customerType() == 1 ? 0 : 1,
        "formType": PageName == "CreateCustomer" ? 1 : 2,
        "isSendSmsPermission": cusVM.customer().isSendSmsPermission(),
        "isSendSmsPermissionFirst": cusVM.customer().isSendSmsPermissionFirst(),
        "isSendEmailPermission": cusVM.customer().isSendEmailPermission(),
        "isSendEmailPermissionFirst": cusVM.customer().isSendEmailPermissionFirst(),
        "isKvkkPermission": cusVM.customer().isKvkkPermission(),
        "isKvkkPermissionFirst": cusVM.customer().isKvkkPermissionFirst(),
        "isAbroadPermission": cusVM.customer().isAbroadPermission(),
        "isAbroadPermissionFirst": cusVM.customer().isAbroadPermissionFirst(),
        "isLoyaltyMembership": cusVM.customer().isLoyaltyMembership(),
        "isLoyaltyMembershipFirst": cusVM.customer().isLoyaltyMembershipFirst(),
        "verificationTypes": verificationType
    };
    //var msg = verificationType == 1 ? "ETK" : verificationType == 2 ? "KVKK" : verificationType == 3 ? "Sadakat" : "Hatalı izin tipi";
    $.ajax({
        url: baseUrl + "api/Ivt/SendIvtRegister",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            cusVM.etkIvtDataId(null);
            cusVM.etkSmsCode(null);
            cusVM.etkCollectorId(null);

            cusVM.kvkkIvtDataId(null);
            cusVM.kvkkSmsCode(null);
            cusVM.kvkkCollectorId(null);

            cusVM.loyaltyIvtDataId(null);
            cusVM.loyaltySmsCode(null);
            cusVM.loyaltyCollectorId(null);
            ShowLoading('.customerLoading', "İzinler gönderiliyor...");
        },
        success: function (res) {
            HideLoading('.customerLoading');
            if (res !== null) {
                if (res.resultCode === 0) {
                    if (res.IvtRegisters.length > 0) {
                        $("#verificationModal").modal();
                        res.IvtRegisters.forEach((IvtRegister) => {
                            if (IvtRegister.verificationType == 1) {
                                cusVM.etkIvtDataId(IvtRegister.dataId);
                                cusVM.etkCollectorId(IvtRegister.collectorId);
                            }
                            else if (IvtRegister.verificationType == 2) {
                                cusVM.kvkkIvtDataId(IvtRegister.dataId);
                                cusVM.kvkkCollectorId(IvtRegister.collectorId);
                            }
                            else if (IvtRegister.verificationType == 3) {
                                cusVM.loyaltyIvtDataId(IvtRegister.dataId);
                                cusVM.loyaltyCollectorId(IvtRegister.collectorId);
                            }
                        });
                    }

                } else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("İzinler gönderilemedi. Hata: " + res.resultMessage);
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("İzinler gönderilirken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            }
        },
        error: function () {
            HideLoading('.customerLoading');
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("İzinler gönderilirken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
        }
    });
};
var sendIvtVerification = function (postIvtVerification) {
    if (!verificationValidation()) {
        return;
    }
    var req = { "IvtVerifications": postIvtVerification };

    $.ajax({
        url: baseUrl + "api/Ivt/SendIvtVerification",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            ShowLoading('.verificationLoading', "İzinler doğrulanıyor...");
        },
        success: function (res) {
            HideLoading('.verificationLoading');
            if (res !== null) {
                if (res.resultCode === 0) {
                    $("#verificationModal").modal("hide");
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .success("İzinler başarıyla doğrulandı...");

                    if (PageName == "CreateCustomer") {
                        if (pegasus) {
                            if (pegasusUpdateContact != null) {
                                updateCustomer();

                                pegasusUpdateContact = null;
                            }
                            else {
                                addCustomer();
                            }
                        }
                        else {
                            addCustomer();
                        }                        
                    } else if (PageName == "EditCustomer") {
                        updateCustomer();
                    }
                } else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("İzinler doğrulanamdı. Hata: " + res.resultMessage);
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("İzinler doğrulanırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            }
        },
        error: function () {
            HideLoading('.verificationLoading');
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("İzinler doğrulanırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
        }
    });
};
var sendAddress = function () {
    var req = {
        "address": cusVM.address()
    };
    $.ajax({
        url: baseUrl + "api/Customer/SaveAddress",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            ShowLoading('.saveAddressLoading', "Adres bilgileri kaydediliyor...");
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    loadAddressList(true);

                } else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("Adres bilgileri kaydedilirken hata: " + res.resultMessage);
                    HideLoading('.saveAddressLoading');
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Adres bilgileri kaydedilirken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
                HideLoading('.saveAddressLoading');
            }
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Adres bilgileri kaydedilirken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.saveAddressLoading');
        }
    });
};
var setSessionVariables = function () {
    entityName = cusVM.customerType() == 1 ? "contact" : "account";

    var req = {
        //"individualFirstName": cusVM.searchIndividualFirstName(),
        //"individualLastName": cusVM.searchIndividualLastName(),
        "individualPhone": cusVM.searchIndividualMobilePhone(),
        /*"individualEmail": cusVM.searchIndividualEmail(),*/
        "companyName": cusVM.searchCompanyName(),
        "companyVknTckn": cusVM.searchCompanyVknTckn()
    };
    $.ajax({
        url: baseUrl + "api/Customer/SetSessionVariables",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            ShowLoading('.customerSearchLoading', "Müşteri oluşturma ekranına yönlendiriliyor...");
        },
        success: function () {
            HideLoading('.customerSearchLoading');
            if (mobilePhone.length === 0) {
                window.location.href = baseUrl + "Home/CreateCustomer?user=" + storeCode + "&posno=" + posNo + "&entityName=" + entityName;
            }
            else {
                window.location.href = baseUrl + "Home/CreateCustomer?user=" + storeCode + "&posno=" + posNo + "&entityName=" + entityName + "&tel=" + mobilePhone;
            }
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri oluşturma ekranına yönlendirilirken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.customerSearchLoading');
        }
    });
};
//#endregion

//#region update
var updateCustomer = function () {
    var data = ko.toJS(cusVM.customer());

    if (pegasus && pegasusUpdateContact != null) {
        data.entityId = pegasusUpdateContact;
    }

    data.etkSmsCode = cusVM.etkSmsCode();
    data.etkCollectorId = cusVM.etkCollectorId();
    data.kvkkSmsCode = cusVM.kvkkSmsCode();
    data.kvkkCollectorId = cusVM.kvkkCollectorId();
    data.loyaltySmsCode = cusVM.loyaltySmsCode();
    data.loyaltyCollectorId = cusVM.loyaltyCollectorId();
    data.individualBirthDate = data.individualBirthDate !== null ? moment(data.individualBirthDate, 'DD.MM.YYYY').format('MM.DD.YYYY') : null;
    data.companyFoundingDate = data.companyFoundingDate !== null ? moment(data.companyFoundingDate, 'DD.MM.YYYY').format('MM.DD.YYYY') : null;
    data.storeId = storeUserVM.storeId();
    data.posNo = storeUserVM.posNo();
    data.isQR = qr ? true : false;

    if (pegasus) {
        if (baseUrl.includes("localhost") || baseUrl.includes("-test")) {
            data.storeId = "846271fe-010e-ef11-9f89-000d3ad99d75";
        }
        else {
            data.storeId = "849EAE63-9526-EF11-840B-6045BD9D35CA";
        }
        data.isQR = false;
    }

    if (cusVM.customer().companyTypeCode() == 2) {
        data.etkSmsCode == null;
        data.etkCollectorId = null;
        data.kvkkSmsCode == null;
        data.kvkkCollectorId = null;
        data.loyaltySmsCode == null;
        data.loyaltyCollectorId = null;
    }

    var req = {
        "customer": data,
        "customerType": cusVM.customerType()
    };
    $.ajax({
        url: baseUrl + "api/Customer/UpdateCustomer",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            ShowLoading('.customerLoading', "Müşteri kaydı güncelleniyor...");
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    if (pegasus) {
                        cusVM.isVisibleVM(false);
                        cusVM.isVisibleQREnd(true);
                    }

                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .success("Müşteri başarıyla güncellendi.");
                    HideLoading('.customerLoading');

                    cusVM.etkSmsCode(null);
                    cusVM.etkCollectorId(null);
                    cusVM.kvkkSmsCode(null);
                    cusVM.kvkkCollectorId(null);
                    cusVM.loyaltySmsCode(null);
                    cusVM.loyaltyCollectorId(null);
                    cusVM.customer().isSendSmsPermissionFirst(cusVM.customer().isSendSmsPermission());
                    cusVM.customer().isSendEmailPermissionFirst(cusVM.customer().isSendEmailPermission());
                    cusVM.customer().isKvkkPermissionFirst(cusVM.customer().isKvkkPermission());
                    cusVM.customer().isLoyaltyMembershipFirst(cusVM.customer().isLoyaltyMembership());
                    cusVM.customer().isAbroadPermissionFirst(cusVM.customer().isAbroadPermission());

                    var email = cusVM.customer().email();
                    if (email != undefined && email != null && email != "") {
                        cusVM.isEmailEnabled(false);
                    }
                } else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error(res.resultMessage);
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri güncellenemedi.Lütfen sistem yöneticisine başvurunuz.");
            }
            HideLoading('.customerLoading');
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri güncellenemedi. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.customerLoading');
        }
    });
};
//#endregion

//#region other
var searchValidation = function () {
    if (cusVM.customerType() == 1) {
        if (cusVM.searchIndividualMobilePhone() == "" /*&& cusVM.searchIndividualEmail() == ""*/) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Arama yapmak için telefon alanını doldurunuz.");
            return false;
        }
    } else if (cusVM.customerType() == 2) {
        if (cusVM.searchCompanyName() == "" && cusVM.searchCompanyVknTckn() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Arama yapmak için en az bir alanı doldurunuz.");
            return false;
        }
    }

    return true;
};
var createValidation = function () {
    var vowelList = ["A", "E", "I", "İ", "O", "Ö", "U", "Ü"];

    if (cusVM.customerType() == 1 || (cusVM.customerType() == 2 && cusVM.customer().companyTypeCode() == 1)) {
        if (!cusVM.customer().isSendSmsPermission() && !cusVM.customer().isSendEmailPermission() && !cusVM.customer().isKvkkPermission() && !cusVM.customer().isAbroadPermission() && !cusVM.customer().isLoyaltyMembership()) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Lütfen en az bir izin seçin.");
            return false;
        }
    }

    if (!checkPhoneFormat()) {
        return false;
    }
    if (!checkEmailFormat()) {
        return false;
    }

    if (cusVM.customerType() == 1) {
        if (cusVM.customer().individualForeignessStatusCode() == undefined || cusVM.customer().individualForeignessStatusCode() == null) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Uyruğu alanı boş bırakılamaz.");
            return false;
        }

        if (cusVM.customer().individualFirstName() == undefined || cusVM.customer().individualFirstName() == null || cusVM.customer().individualFirstName() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Adı alanı boş bırakılamaz.");
            return false;
        } else if (cusVM.customer().individualFirstName().length < 2) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Adı alanı en az 2 karakterden oluşmalıdır.");
            return false;
        } else if (cusVM.customer().individualFirstName().length == 2) {
            var vowelCount = 0;
            var upperName = cusVM.customer().individualFirstName().toLocaleUpperCase("tr-TR");
            for (var i = 0; i < 2; i++) {
                if (vowelList.includes(upperName.charAt(i))) {
                    vowelCount++;
                }
            }
            if (vowelCount == 0) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri Adı alanı 2 harften oluşuyorsa en az 1 sesli harf içermelidir.");
                return false;
            }
        }

        if (cusVM.customer().individualMiddleName() === undefined || cusVM.customer().individualMiddleName() === null || cusVM.customer().individualMiddleName() === "") {

        } else if (cusVM.customer().individualMiddleName().length < 2) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri İkinci Adı alanı en az 2 karakterden oluşmalıdır.");
            return false;
        } else if (cusVM.customer().individualMiddleName().length == 2) {
            var vowelCount = 0;
            var upperName = cusVM.customer().individualMiddleName().toLocaleUpperCase("tr-TR");
            for (var i = 0; i < 2; i++) {
                if (vowelList.includes(upperName.charAt(i))) {
                    vowelCount++;
                }
            }
            if (vowelCount == 0) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri İkinci Adı alanı 2 harften oluşuyorsa en az 1 sesli harf içermelidir.");
                return false;
            }
        }

        if (cusVM.customer().individualLastName() == undefined || cusVM.customer().individualLastName() == null || cusVM.customer().individualLastName() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Soyadı alanı boş bırakılamaz.");
            return false;
        } else if (cusVM.customer().individualLastName().length < 2) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Soyadı alanı en az 2 karakterden oluşmalıdır.");
            return false;
        } else if (cusVM.customer().individualLastName().length == 2) {
            var vowelCount = 0;
            var upperName = cusVM.customer().individualLastName().toLocaleUpperCase("tr-TR");
            for (var i = 0; i < 2; i++) {
                if (vowelList.includes(upperName.charAt(i))) {
                    vowelCount++;
                }
            }
            if (vowelCount == 0) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri Soyadı alanı 2 harften oluşuyorsa en az 1 sesli harf içermelidir.");
                return false;
            }
        }

        if (cusVM.customer().isLoyaltyMembership()) {
            if (cusVM.customer().individualBirthDate() == undefined || cusVM.customer().individualBirthDate() == null || cusVM.customer().individualBirthDate() == "") {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Madame Coco Prestige programına üye olacak müşteriler Müşteri Doğum Tarihi alanını boş bırakamaz.");
                return false;
            }
            else {
                var dateParts = cusVM.customer().individualBirthDate().split(".");
                var birthDate = new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0]);
                var age = calculateAge(birthDate);
                if (age < 18) {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("18 Yaşından Küçük Kişiler Madame Coco Prestige Programına Dahil Olamaz!");
                    return false;
                }
            }
        }

        if (cusVM.customer().individualBirthDate() != undefined && cusVM.customer().individualBirthDate() != null && cusVM.customer().individualBirthDate() != "") {
            var dateParts = cusVM.customer().individualBirthDate().split(".");
            var birthDate = new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0]);
            var age = calculateAge(birthDate);

            if (age <= 15 || age >= 100) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri yaş aralığı 15'ten büyük ve 100'den küçük olmalıdır.");
                return false;
            }


        }

        //if (cusVM.customer().individualTckn() != undefined && cusVM.customer().individualTckn() != null && cusVM.customer().individualTckn() != "") {
        //    if (!checkTckn(cusVM.customer().individualTckn())) {
        //        alertify
        //            .delay(10000)
        //            .closeLogOnClick(true)
        //            .error("Girilen Müşteri Tckn kurallara uymamaktadır.");
        //        return false;
        //    }
        //}

        if ((cusVM.customer().email() == undefined || cusVM.customer().email() == null || cusVM.customer().email() == "") && cusVM.customer().isSendEmailPermission()) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Email izni için email adresinin girilmesi zorunludur.");
            return false;
        }

        //Herhangi bir izin evet olarak seçildiğinde Yurt dışı iznini evet e çeker. Değişiklik yok ise hayır kalır.
        if (cusVM.customer().isKvkkPermission() || cusVM.customer().isSendSmsPermission() || cusVM.customer().isSendEmailPermission() || cusVM.customer().isLoyaltyMembership()) {
            cusVM.customer().isAbroadPermission(true);
        }
        else if (!cusVM.customer().isKvkkPermission() && !cusVM.customer().isSendSmsPermission() && !cusVM.customer().isSendEmailPermission() && !cusVM.customer().isLoyaltyMembership()) {
            cusVM.customer().isAbroadPermission(false);
        }

        if (!cusVM.customer().individualGenderCode()) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Cinsiyet alanı girilmesi zorunludur.");
            return false;
        }

        if (qr) {
            if (!cusVM.customer().individualMarialStatusCode()) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Medeni Durum alanı girilmesi zorunludur.");
                return false;
            }
        }

        if (pegasus) {
            if (!cusVM.customer().qrNo()) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Kod alanı girilmesi zorunludur.");
                return false;
            }
        }
    }
    else if (cusVM.customerType() == 2) {
        if (cusVM.customer().companyForeignessStatusCode() == undefined || cusVM.customer().companyForeignessStatusCode() == null) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Firma Uyruğu alanı boş bırakılamaz.");
            return false;
        }
        if (cusVM.customer().companyName() == undefined || cusVM.customer().companyName() == null || cusVM.customer().companyName() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Firma Adı alanı boş bırakılamaz.");
            return false;
        }

        if (cusVM.isRequiredVkn()) {
            if (cusVM.customer().companyVknTckn() == undefined || cusVM.customer().companyVknTckn() == null || cusVM.customer().companyVknTckn() == "") {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Firma Uyruğu T.C. olan müşteriler Vergi Numarası/TCKN alanını boş bırakamaz.");
                return false;
            }
        }

        //if (cusVM.customer().companyTypeCode() == 1) {
        //    if (cusVM.customer().companyTckn() != undefined && cusVM.customer().companyTckn() != null && cusVM.customer().companyTckn() != "") {
        //        if (!checkTckn(cusVM.customer().companyTckn())) {
        //            alertify
        //                .delay(10000)
        //                .closeLogOnClick(true)
        //                .error("Girilen Firma Tckn kurallara uymamaktadır.");
        //            return false;
        //        }
        //    }
        //}

        if (cusVM.customer().companyVknTckn() != undefined && cusVM.customer().companyVknTckn() != null && cusVM.customer().companyVknTckn() != "") {
            if (cusVM.customer().companyVknTckn().length == 10) {
                if (!checkVkn(cusVM.customer().companyVknTckn())) {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("Girilen Vergi Numarası kurallara uymamaktadır.");
                    return false;

                }
            } else if (cusVM.customer().companyVknTckn().length == 11) {
                if (!checkTckn(cusVM.customer().companyVknTckn())) {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("Girilen Firma Tckn kurallara uymamaktadır.");
                    return false;

                }
            }
            else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Firma Vergi Numarası/TCKN alanına 10 veya 11 hane girmelisiniz.");
                return false;
            }
        }

        if (cusVM.customer().companyPstnPhone() != undefined && cusVM.customer().companyPstnPhone() != null && cusVM.customer().companyPstnPhone() != "") {
            if (!checkPstnPhone()) {
                return false;
            }
        }

        if (cusVM.customer().companyFoundingDate() != undefined && cusVM.customer().companyFoundingDate() != null && cusVM.customer().companyFoundingDate() != "") {
            var todayDate = new Date();
            var date = moment(todayDate).format("DD.MM.YYYY");

            if (cusVM.customer().companyFoundingDate() >= date) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Şirket kuruluş tarihi bugün veya daha ileri bir tarih olamaz.");
                return false;
            }
        }
    }

    if (cusVM.address().addressTypeCode() == undefined || cusVM.address().addressTypeCode() == null) {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("Adres Tipi alanı boş bırakılamaz.");
        return false;
    }
    if (cusVM.address().countryId() == undefined || cusVM.address().countryId() == null) {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("Ülke alanı boş bırakılamaz.");
        return false;
    }
    if (cusVM.isSelectedDefaultCountry() && (cusVM.address().cityId() == undefined || cusVM.address().cityId() == null)) {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("İl alanı boş bırakılamaz.");
        return false;
    }
    if (cusVM.isSelectedDefaultCountry() && (cusVM.address().countyId() == undefined || cusVM.address().countyId() == null)) {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("İlçe alanı boş bırakılamaz.");
        return false;
    }

    return true;
};
var createValidationWithNotPhoneNumber = function () {
    var vowelList = ["A", "E", "I", "İ", "O", "Ö", "U", "Ü"];

    if (cusVM.customerType() == 1) {
        if (cusVM.customer().individualForeignessStatusCode() == undefined || cusVM.customer().individualForeignessStatusCode() == null) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Uyruğu alanı boş bırakılamaz.");
            return false;
        }

        if (cusVM.customer().individualFirstName() == undefined || cusVM.customer().individualFirstName() == null || cusVM.customer().individualFirstName() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Adı alanı boş bırakılamaz.");
            return false;
        } else if (cusVM.customer().individualFirstName().length < 2) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Adı alanı en az 2 karakterden oluşmalıdır.");
            return false;
        } else if (cusVM.customer().individualFirstName().length == 2) {
            var vowelCount = 0;
            var upperName = cusVM.customer().individualFirstName().toLocaleUpperCase("tr-TR");
            for (var i = 0; i < 2; i++) {
                if (vowelList.includes(upperName.charAt(i))) {
                    vowelCount++;
                }
            }
            if (vowelCount == 0) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri Adı alanı 2 harften oluşuyorsa en az 1 sesli harf içermelidir.");
                return false;
            }
        }

        if (cusVM.customer().individualMiddleName() === undefined || cusVM.customer().individualMiddleName() === null || cusVM.customer().individualMiddleName() === "") {

        } else if (cusVM.customer().individualMiddleName().length < 2) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri İkinci Adı alanı en az 2 karakterden oluşmalıdır.");
            return false;
        } else if (cusVM.customer().individualMiddleName().length == 2) {
            var vowelCount = 0;
            var upperName = cusVM.customer().individualMiddleName().toLocaleUpperCase("tr-TR");
            for (var i = 0; i < 2; i++) {
                if (vowelList.includes(upperName.charAt(i))) {
                    vowelCount++;
                }
            }
            if (vowelCount == 0) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri İkinci Adı alanı 2 harften oluşuyorsa en az 1 sesli harf içermelidir.");
                return false;
            }
        }

        if (cusVM.customer().individualLastName() == undefined || cusVM.customer().individualLastName() == null || cusVM.customer().individualLastName() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Soyadı alanı boş bırakılamaz.");
            return false;
        } else if (cusVM.customer().individualLastName().length < 2) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Soyadı alanı en az 2 karakterden oluşmalıdır.");
            return false;
        } else if (cusVM.customer().individualLastName().length == 2) {
            var vowelCount = 0;
            var upperName = cusVM.customer().individualLastName().toLocaleUpperCase("tr-TR");
            for (var i = 0; i < 2; i++) {
                if (vowelList.includes(upperName.charAt(i))) {
                    vowelCount++;
                }
            }
            if (vowelCount == 0) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri Soyadı alanı 2 harften oluşuyorsa en az 1 sesli harf içermelidir.");
                return false;
            }
        }
        if (cusVM.customer().individualForeignessStatusCode() == 2) {//Yabancı ise
            if (cusVM.address().countryId() == undefined || cusVM.address().countryId() == null) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Ülke alanı boş bırakılamaz.");
                return false;
            }
            if (cusVM.customer().individualGenderCode() == undefined || cusVM.customer().individualGenderCode() == null) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Cinsiyet alanı boş bırakılamaz.");
                return false;
            }
        }
    }
    return true;
};
var updateValidation = function () {
    var vowelList = ["A", "E", "I", "İ", "O", "Ö", "U", "Ü"];
    if (!checkEmailFormat()) {
        return false;
    }

    if (cusVM.customerType() == 1) {
        if (cusVM.customer().individualForeignessStatusCode() == undefined || cusVM.customer().individualForeignessStatusCode() == null) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Uyruğu alanı boş bırakılamaz.");
            return false;
        }

        if (cusVM.customer().individualFirstName() == undefined || cusVM.customer().individualFirstName() == null || cusVM.customer().individualFirstName() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Adı alanı boş bırakılamaz.");
            return false;
        } else if (cusVM.customer().individualFirstName().length < 2) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Soyadı alanı en az 2 karakterden oluşmalıdır.");
            return false;
        } else if (cusVM.customer().individualFirstName().length == 2) {
            var vowelCount = 0;
            var upperName = cusVM.customer().individualFirstName().toLocaleUpperCase("tr-TR");
            for (var i = 0; i < 2; i++) {
                if (vowelList.includes(upperName.charAt(i))) {
                    vowelCount++;
                }
            }
            if (vowelCount == 0) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri Soyadı alanı 2 harften oluşuyorsa en az 1 sesli harf içermelidir.");
                return false;
            }
        }

        if (cusVM.customer().individualMiddleName() === undefined || cusVM.customer().individualMiddleName() === null || cusVM.customer().individualMiddleName() === "") {

        } else if (cusVM.customer().individualMiddleName().length < 2) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri İkinci Adı alanı en az 2 karakterden oluşmalıdır.");
            return false;
        } else if (cusVM.customer().individualMiddleName().length == 2) {
            var vowelCount = 0;
            var upperName = cusVM.customer().individualMiddleName().toLocaleUpperCase("tr-TR");
            for (var i = 0; i < 2; i++) {
                if (vowelList.includes(upperName.charAt(i))) {
                    vowelCount++;
                }
            }
            if (vowelCount == 0) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri İkinci Adı alanı 2 harften oluşuyorsa en az 1 sesli harf içermelidir.");
                return false;
            }
        }

        if (cusVM.customer().individualLastName() == undefined || cusVM.customer().individualLastName() == null || cusVM.customer().individualLastName() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Soyadı alanı boş bırakılamaz.");
            return false;
        } else if (cusVM.customer().individualLastName().length < 2) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Müşteri Soyadı alanı en az 2 karakterden oluşmalıdır.");
            return false;
        } else if (cusVM.customer().individualLastName().length == 2) {
            var vowelCount = 0;
            var upperName = cusVM.customer().individualLastName().toLocaleUpperCase("tr-TR");
            for (var i = 0; i < 2; i++) {
                if (vowelList.includes(upperName.charAt(i))) {
                    vowelCount++;
                }
            }
            if (vowelCount == 0) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri Soyadı alanı 2 harften oluşuyorsa en az 1 sesli harf içermelidir.");
                return false;
            }
        }

        if (cusVM.customer().isLoyaltyMembership()) {
            if (cusVM.customer().individualBirthDate() == undefined || cusVM.customer().individualBirthDate() == null || cusVM.customer().individualBirthDate() == "") {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Madame Coco Prestige programına üye olacak müşteriler Müşteri Doğum Tarihi alanını boş bırakamaz.");
                return false;
            }
            else {
                var dateParts = cusVM.customer().individualBirthDate().split(".");
                var birthDate = new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0]);
                var age = calculateAge(birthDate);
                if (age < 18) {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("18 Yaşından Küçük Kişiler Madame Coco Prestige Programına Dahil Olamaz!");
                    return false;
                }
            }
        }

        if (cusVM.customer().individualBirthDate() != undefined && cusVM.customer().individualBirthDate() != null && cusVM.customer().individualBirthDate() != "") {
            var dateParts = cusVM.customer().individualBirthDate().split(".");

            var birthDate = new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0]);
            var age = calculateAge(birthDate);
            if (age <= 15 || age >= 100) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Müşteri yaş aralığı 15'ten büyük ve 100'den küçük olmalıdır.");
                return false;
            }
        }

        //if (cusVM.customer().individualTckn() != undefined && cusVM.customer().individualTckn() != null && cusVM.customer().individualTckn() != "") {
        //    if (!checkTckn(cusVM.customer().individualTckn())) {
        //        alertify
        //            .delay(10000)
        //            .closeLogOnClick(true)
        //            .error("Girilen Müşteri Tckn kurallara uymamaktadır.");
        //        return false;
        //    }
        //}

        if ((cusVM.customer().email() == undefined || cusVM.customer().email() == null || cusVM.customer().email() == "") && cusVM.customer().isSendEmailPermission()) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Email izni için email adresinin girilmesi zorunludur.");
            return false;
        }
        if (!cusVM.customer().individualGenderCode()) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Cinsiyet alanı girilmesi zorunludur.");
            return false;
        }

    } else if (cusVM.customerType() == 2) {
        if (cusVM.customer().companyForeignessStatusCode() == undefined || cusVM.customer().companyForeignessStatusCode() == null || cusVM.customer().companyForeignessStatusCode() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Firma Uyruğu alanı boş bırakılamaz.");
            return false;
        }
        if (cusVM.customer().companyName() == undefined || cusVM.customer().companyName() == null || cusVM.customer().companyName() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Firma Adı alanı boş bırakılamaz.");
            return false;
        }

        if (cusVM.isRequiredVkn()) {
            if (cusVM.customer().companyVknTckn() == undefined || cusVM.customer().companyVknTckn() == null || cusVM.customer().companyVknTckn() == "") {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Firma Uyruğu T.C. olan müşteriler Vergi Numarası/TCKN alanını boş bırakamaz.");
                return false;
            }
        }
        if (cusVM.customer().companyVknTckn() != undefined && cusVM.customer().companyVknTckn() != null && cusVM.customer().companyVknTckn() != "") {
            if (cusVM.customer().companyVknTckn().length == 10) {
                if (!checkVkn(cusVM.customer().companyVknTckn())) {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("Girilen Vergi Numarası kurallara uymamaktadır.");
                    return false;

                }

            } else if (cusVM.customer().companyVknTckn().length == 11) {
                if (!checkTckn(cusVM.customer().companyVknTckn())) {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("Girilen Firma Tckn kurallara uymamaktadır.");
                    return false;

                }
            }
            else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Firma Vergi Numarası/TCKN alanına 10 veya 11 hane girmelisiniz.");
                return false;
            }
        }

        //if (cusVM.customer().companyTypeCode() == 1) {
        //    if (cusVM.customer().companyTckn() != undefined && cusVM.customer().companyTckn() != null && cusVM.customer().companyTckn() != "") {
        //        if (!checkTckn(cusVM.customer().companyTckn())) {
        //            alertify
        //                .delay(10000)
        //                .closeLogOnClick(true)
        //                .error("Girilen Firma Tckn kurallara uymamaktadır.");
        //            return false;
        //        }
        //    }
        //}

        if (cusVM.customer().companyPstnPhone() != undefined && cusVM.customer().companyPstnPhone() != null && cusVM.customer().companyPstnPhone() != "") {
            if (!checkPstnPhone()) {
                return false;
            }
        }

        if (cusVM.customer().companyFoundingDate() != undefined && cusVM.customer().companyFoundingDate() != null && cusVM.customer().companyFoundingDate() != "") {
            var todayDate = new Date();
            var date = moment(todayDate).format("DD.MM.YYYY");

            if (cusVM.customer().companyFoundingDate() >= date) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Şirket kuruluş tarihi bugün veya daha ileri bir tarih olamaz.");
                return false;
            }
        }
    }

    return true;
};
var addressValidation = function () {
    if (cusVM.address().addressTypeCode() == undefined || cusVM.address().addressTypeCode() == null) {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("Adres Tipi alanı boş bırakılamaz.");
        return false;
    }
    if (cusVM.address().countryId() == undefined || cusVM.address().countryId() == null) {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("Ülke alanı boş bırakılamaz.");
        return false;
    }
    if (cusVM.isSelectedDefaultCountry() && (cusVM.address().cityId() == undefined || cusVM.address().cityId() == null)) {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("İl alanı boş bırakılamaz.");
        return false;
    }
    if (cusVM.isSelectedDefaultCountry() && (cusVM.address().countyId() == undefined || cusVM.address().countyId() == null)) {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("İlçe alanı boş bırakılamaz.");
        return false;
    }

    return true;
};
var verificationValidation = function () {
    if (cusVM.isVisibleEtkSmsCode()) {
        if (cusVM.etkIvtDataId() == undefined || cusVM.etkIvtDataId() == null || cusVM.etkIvtDataId() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .success("Etk Ivt Data Id boş geldi. Lütfen sistem yöneticinize başvurunuz.");
            return false;
        }
        if (cusVM.etkSmsCode() == undefined || cusVM.etkSmsCode() == null || cusVM.etkSmsCode() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .success("Etk Onay Kodu alanı boş bırakılamaz.");
            return false;
        }
    }

    if (cusVM.isVisibleKvkkSmsCode()) {
        if (cusVM.kvkkIvtDataId() == undefined || cusVM.kvkkIvtDataId() == null || cusVM.kvkkIvtDataId() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .success("KVKK Ivt Data Id boş geldi. Lütfen sistem yöneticinize başvurunuz.");
            return false;
        }
        if (cusVM.kvkkSmsCode() == undefined || cusVM.kvkkSmsCode() == null || cusVM.kvkkSmsCode() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .success("KVKK Onay Kodu alanı boş bırakılamaz.");
            return false;
        }
    }

    if (cusVM.isVisibleLoyaltySmsCode()) {
        if (cusVM.loyaltyIvtDataId() == undefined || cusVM.loyaltyIvtDataId() == null || cusVM.loyaltyIvtDataId() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .success("Madame Coco Prestige Ivt Data Id boş geldi. Lütfen sistem yöneticinize başvurunuz.");
            return false;
        }
        if (cusVM.loyaltySmsCode() == undefined || cusVM.loyaltySmsCode() == null || cusVM.loyaltySmsCode() == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .success("Madame Coco Prestige Onay Kodu alanı boş bırakılamaz.");
            return false;
        }
    }

    return true;
};
var isChangedPermission = function () {
    var isChanged = false;

    if (cusVM.customer().isSendSmsPermissionFirst() != cusVM.customer().isSendSmsPermission()) {
        isChanged = true;
    }
    if (cusVM.customer().isSendEmailPermissionFirst() != cusVM.customer().isSendEmailPermission()) {
        isChanged = true;
    }
    if (cusVM.customer().isKvkkPermissionFirst() != cusVM.customer().isKvkkPermission()) {
        isChanged = true;
    }
    if (cusVM.customer().isLoyaltyMembershipFirst() != cusVM.customer().isLoyaltyMembership()) {
        isChanged = true;
    }
    if (cusVM.customer().isAbroadPermissionFirst() != cusVM.customer().isAbroadPermission()) {
        isChanged = true;
    }

    return isChanged;
};
var checkPhoneFormat = function () {
    if (cusVM.customerType() == 1 || (cusVM.customerType() == 2 && cusVM.customer().companyTypeCode() == 1)) {
        var phoneNumber = cusVM.customer().phone();

        if (phoneNumber == undefined || phoneNumber == null || phoneNumber == "") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Telefon alanı boş bırakılamaz.");
            return false;
        }
        var phone = phoneNumber.replace(/\s/g, '');

        if ((cusVM.customerType() == 1 && cusVM.customer().individualForeignessStatusCode() == 1) || (cusVM.customerType() == 2 && cusVM.customer().companyTypeCode() == 1)) {
            if (phone.length != 10) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Lütfen telefon numarası alanını eksiksiz şekilde doldurunuz.");
                return false;
            }
            var lastCharsPhone = phone.substring(3, 10);
            if (/^(.)\1+$/.test(lastCharsPhone)) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Telefon numarasının son 7 karakteri aynı olamaz.");
                return false;
            }
            if (lastCharsPhone == "1234567") {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Telefon numarasının son 7 karakteri 1234567 olamaz.");
                return false;
            }
        }
    }

    return true;
};
var checkEmailFormat = function () {
    var email = cusVM.customer().email();

    if (cusVM.isEmailEnabled() && email != undefined && email != null && email != "") {
        var regex = new RegExp("^([a-zA-Z0-9_.+-])+@(([a-zA-Z0-9-])+.([a-zA-Z]))");

        if (email.includes(" ")) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Email adresi boşluk içeremez.");
            return false;
        }

        if (!regex.test(email)) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Lütfen kurallara uygun email giriniz.");
            return false;
        }
    }

    return true;
};
var checkTckn = function (tckn) {
    if (tckn.substr(0, 1) == 0 && tckn.length != 11) {
        return false;
    }
    var i = 9, md = '', mc = '', digit, mr = '';
    while (digit = tckn.charAt(--i)) {
        i % 2 == 0 ? md += digit : mc += digit;
    }
    if (((eval(md.split('').join('+')) * 7) - eval(mc.split('').join('+'))) % 10 != parseInt(tckn.substr(9, 1), 10)) {
        return false;
    }
    for (c = 0; c <= 9; c++) {
        mr += tckn.charAt(c);
    }
    if (eval(mr.split('').join('+')) % 10 != parseInt(tckn.substr(10, 1), 10)) {
        return false;
    }
    return true;
};
var checkVkn = function (vkn) {
    var v1 = 0;
    var v2 = 0;
    var v3 = 0;
    var v4 = 0;
    var v5 = 0;
    var v6 = 0;
    var v7 = 0;
    var v8 = 0;
    var v9 = 0;
    var v11 = 0;
    var v22 = 0;
    var v33 = 0;
    var v44 = 0;
    var v55 = 0;
    var v66 = 0;
    var v77 = 0;
    var v88 = 0;
    var v99 = 0;
    var v_last_digit = 0;
    var sum = 0;

    if (vkn.length == 10) {

        v1 = (Number(vkn.charAt(0)) + 9) % 10;
        v2 = (Number(vkn.charAt(1)) + 8) % 10;
        v3 = (Number(vkn.charAt(2)) + 7) % 10;
        v4 = (Number(vkn.charAt(3)) + 6) % 10;
        v5 = (Number(vkn.charAt(4)) + 5) % 10;
        v6 = (Number(vkn.charAt(5)) + 4) % 10;
        v7 = (Number(vkn.charAt(6)) + 3) % 10;
        v8 = (Number(vkn.charAt(7)) + 2) % 10;
        v9 = (Number(vkn.charAt(8)) + 1) % 10;
        v_last_digit = Number(vkn.charAt(9));

        v11 = (v1 * 512) % 9;
        v22 = (v2 * 256) % 9;
        v33 = (v3 * 128) % 9;
        v44 = (v4 * 64) % 9;
        v55 = (v5 * 32) % 9;
        v66 = (v6 * 16) % 9;
        v77 = (v7 * 8) % 9;
        v88 = (v8 * 4) % 9;
        v99 = (v9 * 2) % 9;

        if (v1 != 0 && v11 == 0) v11 = 9;
        if (v2 != 0 && v22 == 0) v22 = 9;
        if (v3 != 0 && v33 == 0) v33 = 9;
        if (v4 != 0 && v44 == 0) v44 = 9;
        if (v5 != 0 && v55 == 0) v55 = 9;
        if (v6 != 0 && v66 == 0) v66 = 9;
        if (v7 != 0 && v77 == 0) v77 = 9;
        if (v8 != 0 && v88 == 0) v88 = 9;
        if (v9 != 0 && v99 == 0) v99 = 9;
        sum = v11 + v22 + v33 + v44 + v55 + v66 + v77 + v88 + v99;

        if (sum % 10 == 0) sum = 0;
        else sum = (10 - (sum % 10));

        if (sum == v_last_digit) {
            return true;
        }
        else {
            return false;
        };
    }
    else {
        return false;
    };
};
var checkPstnPhone = function () {
    var pstnPhone = cusVM.customer().companyPstnPhone().replace(/\s/g, '');

    var regex = /^[0-9]*$/;
    if (!regex.test(pstnPhone)) {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("Sabit telefon sadece rakamlardan oluşmalıdır.");
        return false;
    }

    if (pstnPhone.length == 10) {
        var lastCharsPstnPhone = pstnPhone.substring(3, 10);
        if (lastCharsPstnPhone == "1234567") {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Sabit telefonun son 7 hanesi 1234567 olamaz.");
            return false;
        }

        if (!pstnPhone.startsWith("850")) {
            if (/^(.)\1+$/.test(lastCharsPstnPhone)) {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Sabit telefon numarasının son 7 karakteri aynı olamaz.");
                return false;
            }
        }
    } else if (pstnPhone.startsWith("444")) {
        if (pstnPhone.length != 7) {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Lütfen sabit telefon numarası alanını eksiksiz şekilde doldurunuz.");
            return false;
        }
    } else {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("Lütfen sabit telefon numarası alanını eksiksiz şekilde doldurunuz.");
        return false;
    }

    return true;
};
var clearAddressFields = function () {
    cusVM.address().crmId(null);
    cusVM.address().customerId(entityId);
    cusVM.address().customerLogicalName(entityName);
    cusVM.address().addressTypeCode(1);
    cusVM.address().addressTypeCodeName(null);
    cusVM.address().countryId(defaultCountryId);
    cusVM.address().countryName(null);
    cusVM.address().cityId(null);
    cusVM.address().cityName(null);
    cusVM.address().countyId(null);
    cusVM.address().countyName(null);
    cusVM.address().shortAddress(null);
    cusVM.address().fullAddress(null);

    $("#adrAddressTypeCode").trigger("change");
    $("#adrCountryId").trigger("change");
    $("#adrCityId").trigger("change");
    $("#adrCountyId").trigger("change");
};
var fillAddressFields = function (address) {
    cusVM.address().crmId(address.crmId());
    cusVM.address().customerId(address.customerId());
    cusVM.address().customerLogicalName(address.customerLogicalName());
    cusVM.address().addressTypeCode(address.addressTypeCode());
    cusVM.address().addressTypeCodeName(address.addressTypeCodeName());
    cusVM.address().countryId(address.countryId());
    cusVM.address().countryName(address.countryName());
    cusVM.address().cityId(address.cityId());
    cusVM.address().cityName(address.cityName());
    cusVM.address().countyId(address.countyId());
    cusVM.address().countyName(address.countyName());
    cusVM.address().shortAddress(address.shortAddress());
    cusVM.address().fullAddress(address.fullAddress());

    $("#adrAddressTypeCode").trigger("change");
    $("#adrCountryId").trigger("change");
    $("#adrCityId").trigger("change");
    $("#adrCountyId").trigger("change");
};
var clearCustomerSearchFields = function () {
    //cusVM.searchIndividualFirstName("");
    //cusVM.searchIndividualLastName("");
    cusVM.searchIndividualMobilePhone("");
    //cusVM.searchIndividualEmail("");
    //cusVM.searchIndividualBirthDate("");
    //cusVM.searchIndividualTckn("");
    //cusVM.searchIndividualPassport("");

    cusVM.searchCompanyName("");
    cusVM.searchCompanyVknTckn("");
};
var clearCustomerFields = function () {
    cusVM.customer().phone(null);
    cusVM.customer().email(null);
    cusVM.customer().isSendSmsPermission(true);
    cusVM.customer().isSendEmailPermission(false);
    cusVM.customer().isKvkkPermission(true);
    cusVM.customer().isAbroadPermission(false);
    if (qr) {
        cusVM.isVisibleQR(false);
        cusVM.customer().isLoyaltyMembership(true);
        cusVM.isVisibleKvkkPermissions(false);
        storeUserVM.homeUrl("#");
    }
    else {
        cusVM.customer().isLoyaltyMembership(false);
    }

    cusVM.customer().individualFirstName(null);
    cusVM.customer().individualMiddleName(null);
    cusVM.customer().individualLastName(null);
    //cusVM.customer().individualTckn(null);
    //cusVM.customer().individualPassport(null);
    /*cusVM.customer().individualTckn(null);*/
    cusVM.customer().individualGenderCode(null);
    cusVM.customer().individualMarialStatusCode(null);
    cusVM.customer().individualForeignessStatusCode(1);

    cusVM.customer().companyName(null);
    cusVM.customer().companyTitle(null);
    cusVM.customer().companyVknTckn(null);
    cusVM.customer().companyTaxOffice(null);
    cusVM.customer().companyTypeCode(null);
    cusVM.customer().companyForeignessStatusCode(1);
    cusVM.customer().companyPstnPhone(null);

    cusVM.address().addressTypeCode(1);
    cusVM.address().countryId(defaultCountryId);
    cusVM.address().cityId(null);
    cusVM.address().countyId(null);
    cusVM.address().fullAddress(null);

    $("#cusAddressTypeCode").trigger("change");
    $("#cusCountryId").trigger("change");
    $("#cusCityId").trigger("change");
    $("#cusCountyId").trigger("change");

    $("#comAddressTypeCode").trigger("change");
    $("#comCountryId").trigger("change");
    $("#comCityId").trigger("change");
    $("#comCountyId").trigger("change");

    $("#individualForeignessStatusCode").trigger("change");
    $("#individualGenderCode").trigger("change");
    $("#individualMarialStatusCode").trigger("change");
    $("#comTypeCode").trigger("change");
    $("#comForeignnessStatusCode").trigger("change");
};
var calculateAge = function (birthDate) {
    var today = new Date();
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
        age--;
    }
    return age;
};
var conditionalIvtFunctionCall = function (isVerification) {
    var isChangeETK = (cusVM.customer().isSendSmsPermissionFirst() != cusVM.customer().isSendSmsPermission() && cusVM.customer().isSendSmsPermission()) || (cusVM.customer().isSendEmailPermissionFirst() != cusVM.customer().isSendEmailPermission() && cusVM.customer().isSendEmailPermission()) ? true : false;
    var isChangeKVKK = (cusVM.customer().isKvkkPermissionFirst() != cusVM.customer().isKvkkPermission() && cusVM.customer().isKvkkPermission()) ? true : false;
    var isChangeLOYALTY = (cusVM.customer().isLoyaltyMembershipFirst() != cusVM.customer().isLoyaltyMembership() && cusVM.customer().isLoyaltyMembership()) ? true : false;

    if (isVerification) {
        var postIvtVerification = [];

        if (isChangeETK) {
            postIvtVerification.push({
                "dataId": cusVM.etkIvtDataId(),
                "item": cusVM.customer().phone(),
                "code": cusVM.etkSmsCode(),
                "verificationType": 1
            });
        }
        if (isChangeKVKK) {
            postIvtVerification.push({
                "dataId": cusVM.kvkkIvtDataId(),
                "item": cusVM.customer().phone(),
                "code": cusVM.kvkkSmsCode(),
                "verificationType": 2
            });
        }
        if (isChangeLOYALTY) {
            postIvtVerification.push({
                "dataId": cusVM.loyaltyIvtDataId(),
                "item": cusVM.customer().phone(),
                "code": cusVM.loyaltySmsCode(),
                "verificationType": 3
            });
        }
        sendIvtVerification(postIvtVerification);

    }
    else {
        var postVerificationTypes = [];

        if (isChangeETK) {
            postVerificationTypes.push(1);
            cusVM.isVisibleEtkSmsCode(true);
        }
        else {
            cusVM.isVisibleEtkSmsCode(false);
        }
        if (isChangeKVKK) {
            postVerificationTypes.push(2);
            cusVM.isVisibleKvkkSmsCode(true);
        }
        else {
            cusVM.isVisibleKvkkSmsCode(false);
        }
        if (isChangeLOYALTY) {
            postVerificationTypes.push(3);
            cusVM.isVisibleLoyaltySmsCode(true);
        }
        else {
            cusVM.isVisibleLoyaltySmsCode(false);
        }
        sendIvtRegister(postVerificationTypes);

    }
};
//#endregion
var login = function () {
    var username = $('#username').val();
    var password = $('#password').val();

    if (username === "" || password === "") {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("Kullanıcı adı veya şifre boş geçilemez.");
        return;
    }
    

    $.ajax({
        url: baseUrl + "api/Login/Login",
        type: "POST",
        dataType: "json",
        "headers": {
            "api_key": api_key
        },
        data: {
            "username": username,
            "password": password
        },
        beforeSend: function () {
            ShowLoading('.login-content', "Giriş yapılıyor...");
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    if (res.portalUser.isFirstLogin) {
                        window.location.href = baseUrl + 'Home/ResetPassword?userId=' + res.portalUser.userId;
                    } else {
                        window.location.href = baseUrl + 'Home/GetCustomers';
                    }
                }
                else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error(res.resultMessage);
                    HideLoading('.login-content');
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Kullanıcı girişi başarısız. Lütfen sistem yöneticisine başvurunuz.");
                HideLoading('.login-content');
            }
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Kullanıcı girişinde hata. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.login-content');
        }
    });
};

var resetPassword = function () {
    var password = $('#password').val();
    var passwordre = $('#passwordre').val();
    if (userId === "") {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("User Id boş geldi.");
        return;
    }
    if (password === "") {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("Şifre boş geçilemez.");
        return;
    }
    if (passwordre === "") {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("Şifre Tekrar alanına şifre alanında yazılan değeri giriniz");
        return;
    }
    if (passwordre !== password) {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("Şifreler uyuşmuyor.");
        return;
    }
    var strongRegex = new RegExp("^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))&((?=.*[A-Z])(?=.*[0-9])))(?=.{5,})");
    if (!strongRegex.test(password)) {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("Şifreniz min 10 karakter, küçük harf, büyük harf, sayı ve özel karakter kombinasyonundan oluşması gerekmektedir. ");
        return;
    }
    $.ajax({
        url: baseUrl + "api/Login/ResetPassword",
        type: "POST",
        dataType: "json",
        "headers": {
            "api_key": api_key
        },
        data: {
            "userId": userId,
            "password": password,
            "passwordRe": passwordre
        },
        beforeSend: function () {
            ShowLoading('.login-content', "Şifre güncelleniyor...");
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .success("Şifreniz başarılı bir şekilde sıfırlandı.");

                    HideLoading('.login-content');
                    setTimeout(function () {
                        window.location.href = baseUrl + 'Home/Login';
                    }, 2000);

                }
                else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("Şifre değiştirilirken hata: " + res.resultMessage);
                    cleanText();
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Şifre değiştirilirken hata oluştu. Lütfen sistem yöneticisine başvurunuz");
                cleanText();
            }
            HideLoading('.login-content');
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Kullanıcı bilgileri hatası. Lütfen sistem yöneticisine başvurunuz");
            cleanText();
            HideLoading('.password-form');
        }
    });
};
var cleanText = function () {
    $("#password").val(null);
    $("#passwordre").val(null);
};
var forgotPassword = function () {
    var username = $('#username').val();

    if (username === "") {
        alertify
            .delay(10000)
            .closeLogOnClick(true)
            .error("Kullanıcı adı boş geçilemez.");
        return;
    }

    $.ajax({
        url: baseUrl + "api/Login/ForgotPasswordLink",
        type: "POST",
        dataType: "json",
        data: {
            "username": username
        },
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            ShowLoading('.login-content', "Mail gönderiliyor...");
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .success("Email'inize şifre sıfırlama linki gönderildi.");

                    setTimeout(function () {
                        window.location.href = baseUrl + "Home/Login";
                    }, 2000);
                }
                else {
                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error(res.resultMessage);
                }
            } else {
                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("Kullanıcı bilgileri getirilemedi. Lütfen sistem yöneticisine başvurunuz.");
            }
            HideLoading('.login-content');
        },
        error: function () {
            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("Kullanıcı bilgileri hatası. Lütfen sistem yöneticisine başvurunuz.");
            HideLoading('.login-content');
        }
    });
}

$(function () {
    if (PageName === "EmailApprove") {
        if ($("#approveVM").length > 0) {
            ko.applyBindings(approveVM, document.getElementById("approveVM"));
        }

        approveEmail();
    }
});

var approveViewModel = function () {
    var self = this;

    self.result = ko.observable("Doğrulama işlemi gerçekleşiyor. Lütfen bekleyiniz...");
};

var approveVM = new approveViewModel();

var approveEmail = function () {
    var req = {
        "token": token
    };

    $.ajax({
        url: baseUrl + "api/Customer/ApproveEmail",
        type: "POST",
        dataType: "json",
        data: req,
        "headers": {
            "api_key": api_key
        },
        beforeSend: function () {
            ShowLoading('.approveLoading', "Email doğrulanıyor...");
        },
        success: function (res) {
            if (res !== null) {
                if (res.resultCode === 0) {
                    approveVM.result("Email doğrulama işleminiz gerçekleşti. Sayfayı kapatabilirsiniz.")

                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .success("İşlem başarılı.");
                } else {
                    approveVM.result("Email doğrulanamadı. Hata: " + res.resultMessage)

                    alertify
                        .delay(10000)
                        .closeLogOnClick(true)
                        .error("İşlem sırasında hata oluştu.");
                }
            } else {
                approveVM.result("Email doğrulanırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.")

                alertify
                    .delay(10000)
                    .closeLogOnClick(true)
                    .error("İşlem sırasında hata oluştu.");
            }

            HideLoading('.approveLoading');
        },
        error: function () {
            approveVM.result("Email doğrulanırken hata oluştu. Lütfen sistem yöneticisine başvurunuz.");

            alertify
                .delay(10000)
                .closeLogOnClick(true)
                .error("İşlem sırasında hata oluştu.");
            HideLoading('.approveLoading');
        }
    });
};

$(function () {
    if (PageName === "GetCustomers" || PageName === "CreateCustomer" || PageName === "EditCustomer" || PageName == "LoginError") {
        if ($("#storeUserVM").length > 0) {
            ko.applyBindings(storeUserVM, document.getElementById("storeUserVM"));

            setLoginError();
        }
    }
});

var storeUserMap = function (store) {
    storeUserVM.storeId(store.storeId);
    storeUserVM.storeName(store.storeName);
    storeUserVM.storeCode(store.storeCode);
    storeUserVM.storeCodeDetail("Mağaza Kodu: " + store.storeCode);
    storeUserVM.posNo(store.posNo);
    storeUserVM.posNoDetail("POS No: " + store.posNo);
    if (mobilePhone.length===0)    
        storeUserVM.homeUrl(baseUrl + "Home/GetCustomers?user=" + store.storeCode + "&posno=" + store.posNo);
    else
        storeUserVM.homeUrl(baseUrl + "Home/GetCustomers?user=" + store.storeCode + "&posno=" + store.posNo + "&tel=" + mobilePhone);   
};

var storeUserViewModel = function () {
    var self = this;

    self.storeId = ko.observable();
    self.storeName = ko.observable();
    self.storeCode = ko.observable();
    self.storeCodeDetail = ko.observable();
    self.posNo = ko.observable();
    self.posNoDetail = ko.observable();
    self.storeCodePosNo = ko.observable();
    self.homeUrl = ko.observable();
    self.loginError = ko.observable();
};

var storeUserVM = new storeUserViewModel();

var setLoginError = function () {
    storeUserVM.loginError(sessionStorage.getItem("loginError"));
};

