﻿
angularFormsApp.controller("ResRoomController", ["$scope", "ngProgressFactory", "dataService", "$uibModal", "$location", "$sce", function ($scope, ngProgressFactory, dataService, $uibModal, $location, $sce) {

    //برای متن هایی که اچ تی ام ال و سی اس اس دارند($sce)
    $scope.trustedHtml = function (plainText) {
        return $sce.trustAsHtml(plainText);
    };
    /************************************************    صفحه اول    **********************************************************/

    // برای اینکه اگر پکیج رو از قسمت اسلایدر پکیج انتخاب کرده بود بعد از انتخاب تاریخ مودال پکیج رو نمایش نده
    $scope.selectFromPackageDetail = false;
    $scope.lstFaMonth = ['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'];
    $scope.lstEnMonth = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

    $scope.hidenWhenSearching = true;
    //$scope.divRoot = false;

    $scope.qsi = $("#hfQsi").val();

    var currentDateVal = $("#hfCurrentDateVal").val();
    var roomSaleTypeTitle = $("#hfRoomSaleTypeTitle").val();
    var selectPackageTitle = $("#hfSelectPackageTitle").val();
    var title = $("#hfTitle").val();
    var selectNationalityTitle = $("#hfSelectNationalityTitle").val();
    var selectSubHotelTitle = $("#hfSelectSubHotelTitle").val();
    var smid = $("#hfSmID").val();
    var autoSearch = $("#hfAutoSearch").val();

    $scope.lang = $("#hfLang").val();
    $scope.checkIn = $("#hfCheckIn").val();
    $scope.checkOut = $("#hfCheckOut").val();

    $scope.checkInShow = $("#hfCheckInShow").val();
    $scope.checkOutShow = $("#hfCheckOutShow").val();

    // برای تاریخ ورود و خروج هدر جدید
    $scope.selectCheckInDay = null;
    $scope.selectCheckInMon = null;
    $scope.selectCheckOutDay = null;
    $scope.selectCheckOutMon = null;
    $scope.selectDay = null;
    $scope.selectMonth = null;

    // اگر تاریخ از آدرس دامنه پر شده بود مثلا
    // http://localhost:52648/fa?a=14010308&d=14010309&di=123
    if ($scope.checkIn != null && $scope.checkOut != null) {
        $scope.selectDay = $scope.checkIn.split('/');
        $scope.selectCheckInDay = parseInt($scope.selectDay[2]);
        if ($scope.lang == "fa")
            $scope.selectCheckInMon = $scope.lstFaMonth[parseInt($scope.selectDay[1] - 1)];
        if ($scope.lang == "en")
            $scope.selectCheckInMon = $scope.lstEnMonth[parseInt($scope.selectDay[1] - 1)];
        $scope.checkInShow = $scope.checkIn;

        $scope.selectMonth = $scope.checkOut.split('/');
        $scope.selectCheckOutDay = parseInt($scope.selectMonth[2]);
        if ($scope.lang == "fa")
            $scope.selectCheckOutMon = $scope.lstFaMonth[parseInt($scope.selectMonth[1] - 1)];
        if ($scope.lang == "en")
            $scope.selectCheckOutMon = $scope.lstEnMonth[parseInt($scope.selectMonth[1] - 1)];
        $scope.checkOutShow = $scope.checkOut;
    }

    $scope.hotelID = $("#hfHotelID").val();
    $scope.offerID = $("#hfOfferID").val();
    $scope.roomSaleTypeID = $("#hfRoomSaleTypeID").val();
    $scope.roomTypeID = $("#hfRoomTypeID").val();
    $scope.discCode = $("#hfDiscCode").val();
    $scope.resID = $("#hfResID").val();
    $scope.natID = $("#hfNatID").val();
    $scope.refererUrl = $("#hfRefererUrl").val();
    //console.log($scope.refererUrl);
    //برای نمایش وعده های غذایی و خدمات رفاهی
    $scope.dinner = false;
    $scope.lunch = false;
    $scope.canSelectSupplement = false;

    $scope.lstRoomTypeOption = [];
    $scope.lstPackage = [];

    $scope.lstNationality = [];
    $scope.activeDiscount = false;

    $scope.Transport = {};
    $scope.CommercialInvoiceInfo = {};

    if (autoSearch == true) {
        $scope.getAvailableRooms();
    }

    //تقسیم بر 10
    $scope.divBy10 = function (amount) {
        if ($scope.lang == "fa") {
            return amount / 10;
        }
        return amount;
    }

    // نمایش لایت اسلایدر 
    $scope.test = function (roomTypeID) {
        //console.log(roomTypeID)
    };

    // نمایش لایت اسلایدر 
    $scope.showLightSlider = function (roomTypeId, picOrVideo) {

        $scope.data = [];
        $scope.data1 = [];

        if (picOrVideo === 1) { // برای عکس ها
            var pic = "#pic" + roomTypeId;

            for (var i = 0; i < $scope.hotelRatesRs.LstRoomRate.length; i++) {
                if ($scope.hotelRatesRs.LstRoomRate[i].RoomTypeID === roomTypeId) {
                    for (var j = 0; j < $scope.hotelRatesRs.LstRoomRate[i].RoomInfo.LstImg.length; j++) {
                        $scope.data.push({
                            "src": $scope.hotelRatesRs.LstRoomRate[i].RoomInfo.LstImg[j],
                            'thumb': $scope.hotelRatesRs.LstRoomRate[i].RoomInfo.LstImg[j]
                        });
                    }
                }
            }
            // $('#pic1').on('click', function (e) {
            // e.preventDefault();
            $(pic).lightGallery({
                dynamic: true,
                dynamicEl: $scope.data

                // });
            });
        }
        if (picOrVideo === 2) {// برای فیلم ها
            var video = "#video" + roomTypeId;

            for (var k = 0; k < $scope.hotelRatesRs.LstRoomRate.length; k++) {
                if ($scope.hotelRatesRs.LstRoomRate[k].RoomTypeID === roomTypeId) {

                    for (var l = 0; l < $scope.hotelRatesRs.LstRoomRate[k].RoomInfo.LstVideo.length; l++) {

                        $scope.data1.push({

                            thumb: 'icons/images2.png',
                            html: '<video class="lg-video-object lg-html5" controls preload="none"><source src="' + $scope.hotelRatesRs.LstRoomRate[k].RoomInfo.LstVideo[l] + '">Your browser does not support HTML5 video</video>'
                        });
                    }
                    break;
                }
            }
            $(video).lightGallery({
                dynamic: true,
                dynamicEl: $scope.data1
            });
        }


    };

    $scope.showLightSliderGuid = function () {

        $scope.data1 = [];

        var video = "#movie" + 1;

        $scope.data1.push({
            thumb: 'images/images.png',
            html: '<video class="lg-video-object lg-html5" controls preload="none"><source src="' + $scope.learnResVideo + '">Your browser does not support HTML5 video</video>'

        });

        // $('#video1').on('click', function (e) {
        // e.preventDefault();
        $(video).lightGallery({
            dynamic: true,
            dynamicEl: $scope.data1
            // });
        });

    };

    $scope.groupNumber = function (amount) {
        if (amount === 0)
            return amount;
        return dataService.groupNumber(amount);
    };

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.advsearch = true;

    $scope.btnSearchClick = function () {

        $scope.getAvailableRooms();
    }

    $scope.openPackageInfoModal = function (packageId) {

        var modalInstance = $uibModal.open({
            templateUrl: '/app/Themplates/PackageInfoModalTpl.html?v=' + dataService.getVersion(),
            controller: 'PackageInfoModalController',
            //backdrop: 'static',
            keyboard: false,
            size: 'md',
            resolve: {
                packageID: function () {
                    return packageId;
                },
                lang: function () {
                    return $scope.lang;
                }
            }
        });
        modalInstance.result.then(function (data) {

            var obj = {};
            obj.Name = data.Title;;
            obj.PackageID = data.OfferID;
            $scope.package = obj;
            $scope.offerID = data.OfferID;
            $scope.selectFromPackageDetail = true;

            $scope.checkIn = null;
            $scope.checkOut = null;

            $scope.dinner = data.Dinner;
            $scope.lunch = data.Lunch;
            $scope.canSelectSupplement = data.CanSelectSupplement;
            //console.log("package", $scope.package);
            //console.log("offerID", $scope.offerID);
            $scope.getAvailableRooms();

        },
            function (data) {
            });
    };

    // برای نمایش مدال پکیج در قسمت امکانات اتاق
    $scope.openPackageInfoModalJustShow = function (offerId) {
        var packageId = 0;
        for (var i = 0; i < $scope.lstPackage.length; i++) {
            if ($scope.lstPackage[i].ID == offerId)
                packageId = $scope.lstPackage[i].PackageID;
        }

        var modalInstance = $uibModal.open({
            templateUrl: '/app/Themplates/PackageInfoModalTpl.html?v=' + dataService.getVersion(),
            controller: 'PackageInfoModalController',
            //backdrop: 'static',
            keyboard: false,
            size: 'md',
            resolve: {
                packageID: function () {
                    return packageId;
                },
                lang: function () {
                    return $scope.lang;
                }
            }
        });
        modalInstance.result.then(function (data) {

        },
            function (data) {
            });
    };

    $scope.openEventInfoModal = function (event) {

        var modalInstance = $uibModal.open({
            templateUrl: '/app/Themplates/EventInfoModalTpl.html?v=' + dataService.getVersion(),
            controller: 'EventInfoModalController',
            //backdrop: 'static',
            keyboard: false,
            size: 'md',
            resolve: {
                event: function () {
                    return event;
                },
                lang: function () {
                    return $scope.lang;
                }
            }
        });
        modalInstance.result.then(function (data) {

        },
            function (data) {
            });
    };

    $scope.openLogInModal = function () {

        var modalInstance = $uibModal.open({
            templateUrl: '/app/Themplates/LogInModalTpl.html?v=' + dataService.getVersion(),
            controller: 'LogInModalController',
            //backdrop: 'static',
            keyboard: false,
            size: 'sm',
            resolve: {
                //lstHotelRoomType: function () {
                //    return $scope.mResModel.LstHotelRoomType1;
                //}
            }
        });
        modalInstance.result.then(function (data) {
        },
            function (data) {
            });
    };

    $scope.rqCount = 0;
    $scope.captchaImageUrl = null;
    $scope.captchaText = null;

    $scope.getInitData = function () {

        $scope.progressbar1 = ngProgressFactory.createInstance();
        $scope.progressbar1.start();
        var request = {};

        request.HotelID = $scope.hotelID;
        request.qsi = $scope.qsi;
        dataService.getInitData(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar1.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.mandatoryNCode = results.data.MyData.mandatoryNCode;
                $scope.mandatoryEmail = results.data.MyData.mandatoryEmail;

                $scope.earlyCheckInComment = results.data.MyData.earlyCheckInComment;
                $scope.lateCheckOutComment = results.data.MyData.lateCheckOutComment;
                $scope.lstNationality = results.data.MyData.lstNat;
                $scope.lstPackage = results.data.MyData.lstPackage;
                //console.log("hn", $scope.lstPackage);


                // برای هنگامی که از کوئری استرینگ، یو آر اِل، پکیج انتخاب کرده بود اسم پکیج هم در صفحه دوم بخونه
                // http://localhost:52648/?a=14021226&d=14021229&o=14
                var offerId123 = parseInt($("#hfOfferID").val());
                if (offerId123 > 0) {
                    for (var i = 0; i < $scope.lstPackage.length; i++) {
                        if ($scope.lstPackage[i].ID == offerId123)
                            $scope.package = $scope.lstPackage[i];
                    }
                }




                $("#divRoot").show();

                //$scope.lstPackage1 = angular.copy($scope.lstPackage);
                //if ($scope.lstPackage1 != null && $scope.lstPackage1.length > 0) {
                //    $scope.lstPackage1.append
                //}

                $scope.lstSaleType = results.data.MyData.lstRoomSaleType;
                $scope.activeDiscount = results.data.MyData.activeDiscount;
                $scope.activeDiscount2 = results.data.MyData.activeDiscount2;
                $scope.rqCount = results.data.MyData.rqCount;
                $scope.captchaImageUrl = results.data.MyData.captchaImageUrl;
                $scope.wageTypeID = results.data.MyData.wageTypeID;
                $scope.activeTransport = results.data.MyData.activeTransport;
                $scope.activeOfficialBill = results.data.MyData.activeOfficialBill;
                $scope.wageRate = results.data.MyData.wageRate;
                $scope.roomLeft = results.data.MyData.roomLeft;
                $scope.activeCryptoPay = results.data.MyData.activeCryptoPay;
                $scope.importantNotesForRes = results.data.MyData.importantNotesForRes;
                $scope.specialPackage = results.data.MyData.specialPackage;
                $scope.subHotels = results.data.MyData.subHotels;
                $scope.currency = results.data.MyData.currency;

                if ($scope.checkIn == null || $scope.checkIn == '') {
                    $scope.checkIn = results.data.MyData.checkIn;
                    $scope.checkOut = results.data.MyData.checkOut;

                    $scope.checkInShow = results.data.MyData.checkInShow;
                    $scope.checkOutShow = results.data.MyData.checkOutShow;

                    //console.log($scope.checkIn);
                    //console.log($scope.checkOut);

                    // برای تاریخ ورود و خروج هدر جدید
                    $scope.selectDay = $scope.checkInShow.split('/');
                    $scope.selectCheckInDay = parseInt($scope.selectDay[2]);
                    if ($scope.lang == "fa")
                        $scope.selectCheckInMon = $scope.lstFaMonth[parseInt($scope.selectDay[1] - 1)];
                    if ($scope.lang == "en")
                        $scope.selectCheckInMon = $scope.lstEnMonth[parseInt($scope.selectDay[1] - 1)];

                    $scope.selectMonth = $scope.checkOutShow.split('/');
                    $scope.selectCheckOutDay = parseInt($scope.selectMonth[2]);
                    if ($scope.lang == "fa")
                        $scope.selectCheckOutMon = $scope.lstFaMonth[parseInt($scope.selectMonth[1] - 1)];
                    if ($scope.lang == "en")
                        $scope.selectCheckOutMon = $scope.lstEnMonth[parseInt($scope.selectMonth[1] - 1)];
                }



                $scope.learnResVideo = results.data.MyData.learnResVideo;
                $scope.lstSocialNetwork = results.data.MyData.lstSocialNetwork;
                $scope.mAgeRang = results.data.MyData.mAgeRang;

                $scope.lstEvent = results.data.MyData.lstEvent;
                $scope.notShowDiscRate = results.data.MyData.notShowDiscRate;
                var defaultModalShow = results.data.MyData.DefaultModalShow;

                if (defaultModalShow != null && defaultModalShow.length > 10) {
                    $uibModal.open({
                        templateUrl: '/App/Themplates/ModalShowDefaultNote.html?v=' + dataService.getVersion(),
                        controller: 'ModalShowDefaultNoteController',
                        keyboard: false,
                        size: 'lg',
                        resolve: {
                            data: function () {
                                return defaultModalShow;
                            }
                        }
                    });
                }

                // برای اینکه مکان فوتر درست باشه
                if ($(document).height() > $('#heightMain').height()) {
                    $('#footer').css("position", "fixed");

                    $('#footer').css("bottom", "0");
                }
                $scope.progressbar1.complete();

            },
            function (results) {
                $scope.progressbar1.complete();

            });


    };
    $scope.getInitData();

    $scope.getAvailableRooms = function () {


        // هنگام گرفتن اطلاعات هتل بگ گراند صفحه نمایش داده نمی شود
        $('.backImag').css('background-image', 'url("' + + '")');

        if ($scope.checkIn == null) {
            $scope.openModalCheckInDate();
            return;
        }
        if ($scope.checkOut == null) {
            $scope.openModalCheckOutDate();
            return;
        }

        // اگر بیشتر از rqCount سرچ کرد کپچا نشون داده میشه

        if ($scope.rqCount > 10 && $scope.captchaText == null) {
            $scope.openCapchaModal();
            return;
        }

        $scope.selectFromPackageDetail = false;

        $scope.progressbar = ngProgressFactory.createInstance();


        $scope.progressbar.start();
        var request = {};



        request.HotelID = $scope.hotelID;
        request.qsi = $scope.qsi;
        request.roomTypeID = $scope.roomTypeID;
        request.offerID = $scope.offerID;
        request.roomSaleTypeID = $scope.roomSaleTypeID;
        request.natID = $scope.natID;
        request.discCode = $scope.discCode;
        request.checkIn = $scope.checkIn.replace(/\//g, '');
        request.checkOut = $scope.checkOut.replace(/\//g, '');
        request.captchaText = $scope.captchaText;
        $scope.captchaText = null;
        $scope.checkInShow = $scope.checkInShow;
        $scope.checkOutShow = $scope.checkOutShow;
        $scope.lang = $scope.lang;
        request.subHotelId = 0;

        if ($scope.subHotel != null)
            request.subHotelId = $scope.subHotel.ID;
        //console.log($scope.checkInShow);
        dataService.getAvailableRooms(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();

                    $scope.hotelRatesRs = null;
                    $scope.captchaImageUrl = results.data.MyData.captchaImageUrl;

                    $scope.rqCount = results.data.MyData.rqCount;
                    $scope.advsearch = false;
                    $scope.hidenWhenSearching = false;
                    $scope.sum = 0;
                    $scope.sumDiscount = 0;
                    $scope.captchaText = null;

                    dataService.errorToaster("خطا", results.data.Error.Text);
                    if (results.data.Error.Code === 401) {
                        $scope.openCapchaModal();
                    }
                    return;
                }
                var discountCodeComment = results.data.MyData.hotelRatesRs.DiscountCodeComment;
                if (discountCodeComment != null && discountCodeComment.length > 10) {
                    var modalInstance = $uibModal.open({
                        templateUrl: '/App/Themplates/ModalShowDefaultNote.html?v=' + dataService.getVersion(),
                        controller: 'ModalShowDefaultNoteController',
                        keyboard: false,
                        size: 'lg',
                        resolve: {
                            data: function () {
                                return discountCodeComment;
                            }
                        }
                    });
                }


                //$scope.lstInventory = results.data.MyData.lstInventory;
                $scope.hotelRatesRs = results.data.MyData.hotelRatesRs;


                $scope.captchaImageUrl = results.data.MyData.captchaImageUrl;
                //console.log($scope.captchaImageUrl);
                $scope.rqCount = results.data.MyData.rqCount;
                // محاسبه و رند کردن درصد تخفیف رو به بالا
                for (var i = 0; i < $scope.hotelRatesRs.LstRoomRate.length; i++) {
                    $scope.hotelRatesRs.LstRoomRate[i].DiscRate = Math.round((1 - $scope.hotelRatesRs.LstRoomRate[i].RoomSale / $scope.hotelRatesRs.LstRoomRate[i].RoomBoard) * 100);
                    $scope.hotelRatesRs.LstRoomRate[i].SelectCount = 0;
                }
                $scope.advsearch = false;
                $scope.hidenWhenSearching = false;
                $scope.sum = 0;
                $scope.sumDiscount = 0;
                $scope.captchaText = null;

                //if (parseInt(request.checkIn) >= 14001101) {
                //    $scope.dinner = false;
                //    $scope.lunch = false;
                //}

                $scope.countSelectRooms = 0;

                $scope.progressbar.complete();

            },
            function (results) {
                $scope.progressbar.complete();
                alert();
            });

    };

    $scope.openCapchaModal = function () {

        var request1 = {};

        request1.captchaImageUrl = $scope.captchaImageUrl;
        request1.Lang = $scope.lang;
        var modalInstance = $uibModal.open({
            templateUrl: '/App/Themplates/CaptchaModalTpl.html?v=9',
            controller: 'CaptchaModalController',
            backdrop: 'static',
            keyboard: false,
            size: 'sm',
            resolve: {
                request: function () {
                    return request1;
                }
            }
        });
        modalInstance.result.then(function (data) {

            $scope.captchaText = data;

            $scope.getAvailableRooms();

        },
            function (data) {

            });
    };

    $scope.selectRoom = [];

    $scope.addRoom = function (num, room) {

        room.SelectCount += num;

        if (room.SelectCount <= room.Count && room.SelectCount >= 0) {

            var q = 0;

            for (var i = 0; i < $scope.selectRoom.length; i++) {

                if ($scope.selectRoom[i].RoomTypeID === room.RoomTypeID) {

                    q = 1;

                }

            }
            if (q === 0) {
                $scope.selectRoom.push({ RoomTypeID: room.RoomTypeID, SelectCount: room.SelectCount });
            }
            else {
                for (var j = 0; j < $scope.selectRoom.length; j++) {

                    if ($scope.selectRoom[j].RoomTypeID === room.RoomTypeID) {

                        $scope.selectRoom[j].SelectCount = room.SelectCount;
                    }
                }
            }
            q = 0;
        }


        if (room.SelectCount > room.Count) {
            room.SelectCount -= 1;
            //dataService.errorToaster("", " عدد وجود دارد " + room.Count + " فقط " + room.RoomTypeName + " از اتاق ");

            dataService.errorToaster("", " از اتاق " + room.RoomTypeName + " تنها " + room.Count + " اتاق موجود هست ");

            return;
        }

        if (room.SelectCount < 0) {
            dataService.errorToaster("", "تعداد  مجاز نیست");
            room.SelectCount = 0;
            return;
        }

    };

    $scope.book = function () {

        if ($scope.selectRoom.length == 1 && $scope.selectRoom[0].SelectCount == 0) {
            dataService.errorToaster("", "برای رزرو حداقل یک اتاق را انتخاب کنید");
            return;
        }

        if ($scope.selectRoom == "") {
            dataService.errorToaster("", "برای رزرو حداقل یک اتاق را انتخاب کنید");
            return;
        }
        //$location.path("http://localhost:52648/Res/rooms");

        window.location.href = "/Res/rooms";
    };

    $scope.getPerDailyPrice = function (room) {

        if (room.lstPerDailyPrice != null)
            return;

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.HotelID = $scope.hotelID;
        request.qsi = $scope.qsi;
        request.offerID = $scope.offerID;
        request.roomSaleTypeID = $scope.roomSaleTypeID;
        request.natID = $scope.natID;
        request.discCode = $scope.discCode;
        request.roomTypeID = room.RoomTypeID;
        request.checkIn = $scope.checkInShow == null ? 0 : $scope.checkInShow.replace(/\//g, '');

        dataService.getPerDailyPrice(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                room.lstPerDailyPrice = results.data.MyData.lstPerDailyPrice;

                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    };

    // امکانات اتاق
    $scope.getRoomTypeOptions = function (room) {

        if (room.lstRoomTypeOption != null)
            return;

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};
        request.HotelID = $scope.hotelID;
        request.roomTypeID = room.RoomTypeID;
        dataService.getRoomTypeOptions(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                room.lstRoomTypeOption = results.data.MyData.lstRoomTypeOption;
                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();
            });


        //GetLstHotelRoomTypeOption
    };

    // امکانات هتل
    $scope.getHotelOptions = function () {

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();

        var request = {};

        dataService.getHotelOptions(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.lstHotelOption = results.data.MyData;
                //console.log($scope.lstHotelOption);
                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();
            });

    };

    /***************** برای تقویم **********************/

    $scope.openModalCheckInDate = function () {
        var request = {};
        request.Config = {};
        request.Config.DSC = 1;
        request.Config.DSCT = 1;
        request.Config.DSM = 0;
        request.Config.DSY = 0;
        request.Config.Title = $scope.lang === "en" ? "Select Arrival Date" : "انتخاب تاریخ ورود";
        request.Config.CalType = $scope.lang === "fa" ? 0 : 1;
        request.Config.MinDate = currentDateVal;
        request.Config.Date = $scope.checkIn === null ? currentDateVal : $scope.checkIn;
        request.Lang = $scope.lang;

        var modalInstance = $uibModal.open({
            templateUrl: '/App/NM-DatePicker/NM-DatePicker.html?v=3',
            controller: 'NM-DatePickerController',
            //backdrop: 'static',
            keyboard: false,
            windowClass: 'nc-modal-content',
            size: 'sm',
            resolve: {
                request: function () {
                    return request;
                }
            }
        });
        modalInstance.result.then(function (data) {

            if (data != null) {
                // $scope.checkIn = data.DateVal;

                if ($scope.lang === "fa") {
                    $scope.checkIn = data.DateVal;
                    $scope.checkOut = $scope.AddDays(data.DateVal, 1, 0);

                    $scope.checkInShow = data.DateVal;
                    $scope.checkOutShow = $scope.AddDays(data.DateVal, 1, 0);



                    // برای تاریخ ورود هدر جدید
                    $scope.selectDay = data.DateVal.split('/');
                    $scope.selectCheckInDay = parseInt($scope.selectDay[2]);

                    $scope.selectCheckInMon = $scope.lstFaMonth[parseInt($scope.selectDay[1] - 1)];

                } else {

                    $scope.checkIn = data.DateVal;
                    $scope.checkOut = $scope.AddDays(data.DateVal, 1, 0);

                    $scope.checkInShow = data.Date;
                    $scope.checkOutShow = $scope.AddDays(data.Date, 1, 1);

                    // برای تاریخ ورود هدر جدید
                    $scope.selectDay = data.Date.split('/');
                    $scope.selectCheckInDay = parseInt($scope.selectDay[2]);

                    $scope.selectCheckInMon = $scope.lstEnMonth[parseInt($scope.selectDay[1] - 1)];
                }

                //console.log("$scope.lang ", $scope.lang);
                //console.log("$scope.checkOut ", $scope.checkOut);
                //console.log("$scope.checkIn ", $scope.checkIn);
                //console.log("$scope.checkInShow ", $scope.checkInShow);
                //console.log("$scope.checkOutShow ", $scope.checkOutShow);

                $scope.openModalCheckOutDate();
            }
        },
            function (data) {

            });
    };

    $scope.openModalCheckOutDate = function () {
        var request = {};
        request.Config = {};
        request.Config.DSC = 1;
        request.Config.DSCT = 1;
        request.Config.DSM = 0;
        request.Config.DSY = 0;
        request.Config.Title = $scope.lang === "en" ? "Select Departure Date" : "انتخاب تاریخ خروج";
        request.Config.CalType = $scope.lang === "fa" ? 0 : 1;
        request.Config.MinDate = $scope.AddDays(currentDateVal, 1, request.Config.CalType);
        request.Config.Date = $scope.checkOut === null ? currentDateVal : $scope.checkOut;

        var modalInstance = $uibModal.open({
            templateUrl: '/App/NM-DatePicker/NM-DatePicker.html?v=3',
            controller: 'NM-DatePickerController',
            //backdrop: 'static',
            keyboard: false,
            windowClass: 'nc-modal-content',
            //controllerAs: '$ctrl',
            size: 'sm',
            resolve: {
                request: function () {
                    return request;
                }
            }
        });

        modalInstance.result.then(function (data) {


            if (data != null) {
                if ($scope.lang === "fa") {
                    $scope.checkOut = data.DateVal;
                    $scope.checkOutShow = data.DateVal;

                    // برای تاریخ خروج هدر جدید
                    $scope.selectMonth = $scope.checkOutShow.split('/');
                    $scope.selectCheckOutDay = parseInt($scope.selectMonth[2]);

                    $scope.selectCheckOutMon = $scope.lstFaMonth[parseInt($scope.selectMonth[1] - 1)];

                }
                else {
                    $scope.checkOut = data.DateVal;
                    $scope.checkOutShow = data.Date;

                    // برای تاریخ خروج هدر جدید
                    $scope.selectDay = data.Date.split('/');
                    $scope.selectCheckOutDay = parseInt($scope.selectDay[2]);

                    $scope.selectCheckOutMon = $scope.lstEnMonth[parseInt($scope.selectDay[1] - 1)];
                }
                $scope.openModalSubHotel();
            }

        },
            function (data) {

            });
    };

    $scope.openModalSubHotel = function () {

        if ($scope.subHotels == null || $scope.subHotels.length <= 0) {
            $scope.openModalNationality();
            return;
        }

        var request = {};
        request.ModalInfo = {};
        request.ModalInfo.lstItem = angular.copy($scope.subHotels);
        if (request.ModalInfo.lstItem == null)
            request.ModalInfo.lstItem = [];
        request.ModalInfo.Title = selectSubHotelTitle;
        request.ModalInfo.MainTitle = title;
        var modalInstance = $uibModal.open({
            templateUrl: '/App/NM-DatePicker/NM-Modal.html?v=3',
            controller: 'NM-ModalController',
            // backdrop: 'static',
            keyboard: false,
            windowClass: 'nm-modal-content',
            size: 'sm',
            resolve: {
                request: function () {
                    return request;
                }
            }
        });

        modalInstance.result.then(function (data) {
            if (data != null)
                $scope.subHotel = data;
            console.log("$scope.subHotel", $scope.subHotel);
            if ($scope.subHotel.PortalLink != null) {
                window.location = $scope.subHotel.PortalLink + "?a=" + $scope.checkIn?.replace(/\//g, '') + "&d=" + $scope.checkOut?.replace(/\//g, '');
                return;
            }
            $scope.openModalPackage();
        },
            function (data) {

            });
    };

    $scope.openModalNationality = function () {

        if ($scope.lstNationality == null || $scope.lstNationality.length <= 0) {
            $scope.openModalPackage();
            return;
        }

        var request = {};
        request.ModalInfo = {};
        request.ModalInfo.lstItem = angular.copy($scope.lstPackage);
        if (request.ModalInfo.lstItem == null)
            request.ModalInfo.lstItem = [];
        request.ModalInfo.lstItem.unshift({ Name: "بدون پکیج", ID: 0 });
        request.ModalInfo.Title = selectNationalityTitle;
        request.ModalInfo.MainTitle = title;
        var modalInstance = $uibModal.open({
            templateUrl: '/App/NM-DatePicker/NM-Modal.html?v=3',
            controller: 'NM-ModalController',
            // backdrop: 'static',
            keyboard: false,
            windowClass: 'nm-modal-content',
            size: 'sm',
            resolve: {
                request: function () {
                    return request;
                }
            }
        });
        modalInstance.result.then(function (data) {
            if (data != null)
                $scope.nat = data;
            $scope.openModalPackage();
        },
            function (data) {

            });
    };



    $scope.openModalPackage = function () {

        if ($scope.lstPackage == null || $scope.lstPackage.length <= 0 || ($scope.offerID > 0 && $scope.selectFromPackageDetail)) {
            $scope.openModalRoomSaleType();
            return;
        }

        var request = {};
        request.ModalInfo = {};
        request.ModalInfo.lstItem = angular.copy($scope.lstPackage);
        if (request.ModalInfo.lstItem == null)
            request.ModalInfo.lstItem = [];


        request.ModalInfo.lstItem.unshift({ Name: "بدون پکیج", ID: 0, Dinner: false, Lunch: false, CanSelectSupplement: false });
        request.ModalInfo.Title = selectPackageTitle;
        request.ModalInfo.MainTitle = title;
        var modalInstance = $uibModal.open({
            templateUrl: '/App/NM-DatePicker/NM-Modal.html?v=3',
            controller: 'NM-ModalController',
            // backdrop: 'static',
            keyboard: false,
            windowClass: 'nm-modal-content',
            size: 'sm',
            resolve: {
                request: function () {
                    return request;
                }
            }
        });
        modalInstance.result.then(function (data) {
            //console.log("data", data);
            $scope.package = data;
            $scope.offerID = data.ID;
            $scope.dinner = data.Dinner;
            $scope.lunch = data.Lunch;
            $scope.canSelectSupplement = data.CanSelectSupplement;
            //console.log("package", $scope.package);
            //console.log("offerID", $scope.offerID);
            $scope.openModalRoomSaleType();
        },
            function (data) {

            });
    };

    $scope.openModalRoomSaleType = function () {

        if ($scope.lstSaleType == null || $scope.lstSaleType.length <= 0) {
            $scope.openModalDiscontCode();
            //$scope.getAvailableRooms();
            return;
        }
        var request = {};
        request.ModalInfo = {};
        request.ModalInfo.lstItem = angular.copy($scope.lstSaleType);
        if (request.ModalInfo.lstItem == null)
            request.ModalInfo.lstItem = [];
        //request.ModalInfo.lstItem.unshift({ Name: "فروش عادی", ID: 0 });
        request.ModalInfo.Title = roomSaleTypeTitle;
        request.ModalInfo.MainTitle = title;
        var modalInstance = $uibModal.open({
            templateUrl: '/App/NM-DatePicker/NM-Modal.html?v=1',
            controller: 'NM-ModalController',
            // backdrop: 'static',
            keyboard: false,
            windowClass: 'nm-modal-content',
            size: 'sm',
            resolve: {
                request: function () {
                    return request;
                }
            }
        });
        modalInstance.result.then(function (data) {
            if (data != null)
                $scope.roomSaleType = data;
            $scope.roomSaleTypeID = data.ID;
            //$scope.openModalDiscontCode();
            $scope.getAvailableRooms();
        },
            function (data) {

            });
    };

    $scope.openModalDiscontCode = function () {

        if ($scope.activeDiscount !== true) {
            $scope.getAvailableRooms();
            return;
        }

        var request = {};
        request.ModalInfo = {};
        request.ModalInfo.item = $scope.discCode;
        //request.ModalInfo.Title = "انتخاب نوع پکیج";
        var modalInstance = $uibModal.open({
            templateUrl: '/App/NM-DatePicker/NM-Modal1.html?v=4',
            controller: 'NM-Modal1Controller',
            backdrop: 'static',
            keyboard: false,
            windowClass: 'nm-modal-content',
            size: 'sm',
            resolve: {
                request: function () {
                    return request;
                }
            }
        });
        modalInstance.result.then(function (data) {
            if (data != null)
                $scope.discCode = data;
            else $scope.discCode = null;
            $scope.getAvailableRooms();
        },
            function (data) {
                $scope.discCode = null;
                $scope.getAvailableRooms();
            });
    };

    $scope.openModalTransferDate = function () {
        var request = {};
        request.Config = {};
        request.Config.DSC = 1;
        request.Config.DSCT = 1;
        request.Config.DSM = 0;
        request.Config.DSY = 0;
        request.Config.Title = $scope.lang === "en" ? "Select Date" : "انتخاب تاریخ";
        request.Config.CalType = $scope.lang === "fa" ? 0 : 1;
        request.Config.MinDate = currentDateVal;
        request.Config.Date = $scope.checkIn === null ? currentDateVal : $scope.checkIn;
        var modalInstance = $uibModal.open({
            templateUrl: '/App/NM-DatePicker/NM-DatePicker.html?v=3',
            controller: 'NM-DatePickerController',
            //backdrop: 'static',
            keyboard: false,
            windowClass: 'nc-modal-content',
            size: 'sm',
            resolve: {
                request: function () {
                    return request;
                }
            }
        });
        modalInstance.result.then(function (data) {

            if (data != null) {
                $scope.Transport.Date = data.DateVal;
            }
        },
            function (data) {

            });
    };

    //متدی که به تاریخ اضافه کند

    $scope.AddDays = function (date, days, calType) {

        if (calType == 0) {
            m = moment(date, 'jYYYY/jMM/jDD');
            m.locale('fa');
            m.add(days, 'days');
            return m.format('YYYY/MM/DD');
        }
        else {
            m = moment(date, 'YYYY/MM/DD');
            m.locale('en');
            m.add(days, 'days');
            return m.format('YYYY/MM/DD');
        }

    };
    //متدی که تعداد روزهای بین دو تاریخ را مشخص می کند
    ///firstdate < secondDays  
    $scope.diffDays = function (firstdate, secondDays, calType) {
        if (calType == 0) {
            fm = moment(firstdate, 'jYYYY/jMM/jDD');
            sm = moment(secondDays, 'jYYYY/jMM/jDD');
            fm.locale('fa');
            sm.locale('fa');
            diff = sm.diff(fm, 'days');
            return diff;
        }
        else {
            fm = moment(firstdate, 'YYYY/MM/DD');
            sm = moment(secondDays, 'YYYY/MM/DD');
            fm.locale('en');
            sm.locale('en');
            diff = sm.diff(fm, 'days');
            return diff;
        }
    };

    // سبد خرید

    $scope.addItem = function (num, item) {
        item.SelectCount += num;

        if (item.SelectCount > item.RoomCount) {
            item.SelectCount -= 1;
            //dataService.errorToaster("", "تعداد انتخاب شده بیشتر از حد مجاز است");
            return;
        }
        $scope.calculatore();

    };

    $scope.lstSlectOrder = [];
    $scope.sumTotal2 = 0; // جمع کل بدون تخفیف
    $scope.sumTotal1 = 0; // جمع کل با تخفیف
    $scope.wage = 0; // کارمزد

    $scope.canselItem = function (order) {
        order.SelectCount = 0;
        $scope.calculatore();
        $('body').removeClass('is-dimmed');
    };
    $scope.countSelectRooms = 0;

    $scope.calculatore = function () {
        $scope.sum = 0;
        $scope.sumDiscount = 0;
        $scope.countSelectRooms = 0;
        for (var k = 0; k < $scope.hotelRatesRs.LstRoomRate.length; k++) {
            if ($scope.hotelRatesRs.LstRoomRate[k].SelectCount > 0) {
                $scope.sum += $scope.hotelRatesRs.LstRoomRate[k].SelectCount * $scope.hotelRatesRs.LstRoomRate[k].RoomSale;
                $scope.sumDiscount += $scope.hotelRatesRs.LstRoomRate[k].SelectCount * $scope.hotelRatesRs.LstRoomRate[k].RoomBoard;
                for (var i = 0; i < $scope.hotelRatesRs.LstRoomRate[k].SelectCount; i++) {
                    $scope.countSelectRooms++;
                }
            }
        }
    };

    $scope.groupNumber = function (amount) {
        return dataService.groupNumber(amount);
    };

    $scope.changeDate = function () {
        $scope.advsearch = true;

        $scope.openModalCheckInDate();
    };

    /************************************************    صفحه دوم    **********************************************************/
    //$scope.myRooms = [];

    $scope.gotoPage2 = function () {

        if ($scope.countSelectRooms == 0) {
            if ($scope.lang === "fa") {
                dataService.errorToaster("خطا", "هنوز اتاقی انتخاب نکردید");
                return;
            }
            if ($scope.lang === "en") {
                dataService.errorToaster("خطا", "You have not yet selected a room ");
                return;
            }
        }

        $("#divRoot").css("display", "none");
        $("#details").css("display", "block");
        $("#prePay").css("display", "none");

        this.hash = '#details';

        // animate
        $('html, body').animate({
            scrollTop: $(this.hash).offset().top - 10

        }, 1000, function () {

        });

        $scope.myRooms = [];
        var id = 0;
        for (var i = 0; i < $scope.hotelRatesRs.LstRoomRate.length; i++) {

            if ($scope.hotelRatesRs.LstRoomRate[i].SelectCount > 0) {

                $scope.hotelRatesRs.LstRoomRate[i].AdultCount = $scope.hotelRatesRs.LstRoomRate[i].RoomInfo.FixBed;
                $scope.hotelRatesRs.LstRoomRate[i].ChildCount = 0;
                $scope.hotelRatesRs.LstRoomRate[i].BabyCount = 0;
                $scope.hotelRatesRs.LstRoomRate[i].EarlyCheckIn = false;
                $scope.hotelRatesRs.LstRoomRate[i].LateCheckOut = false;
                $scope.hotelRatesRs.LstRoomRate[i].NotForeign = "0";
                $scope.hotelRatesRs.LstRoomRate[i].LstMeal = [];
                $scope.hotelRatesRs.LstRoomRate[i].EatTotalRoom = 0;
                $scope.hotelRatesRs.LstRoomRate[i].LstSupp = [];
                $scope.hotelRatesRs.LstRoomRate[i].SuppTotalRoom = 0;

                for (var j = 0; j < $scope.hotelRatesRs.LstRoomRate[i].SelectCount; j++) {
                    $scope.hotelRatesRs.LstRoomRate[i].ID = id;
                    var item = angular.copy($scope.hotelRatesRs.LstRoomRate[i]);
                    $scope.myRooms.push(item);
                    id++;
                }
            }
        }

        // برای تعداد اتاق از یک نوع اتاق
        //for (var z = 0; z < $scope.myRooms.length; z++) {
        //    if ($scope.myRooms[z].NameCount != undefined)
        //        continue;
        //    var count = 1;
        //    for (var l = 0; l < $scope.myRooms.length; l++) {
        //        if ($scope.myRooms[z].RoomTypeID == $scope.myRooms[l].RoomTypeID) {
        //            $scope.myRooms[l].NumberRoomType = count;
        //            count++;
        //        }
        //    }
        //}


        for (var k = 0; k < $scope.myRooms.length; k++) {// محاسبه قیمت برای صفحه دوم
            $scope.calcPrice($scope.myRooms[k]);
        }
        //console.log("$scope.wage", $scope.wage);

        $('body').removeClass('is-dimmed');

    };

    $scope.gotoPage1 = function () {

        $("#divRoot").css("display", "block");
        $("#details").css("display", "none");
        $("#prePay").css("display", "none");

        $(".drop-downItem").slideUp('200');
        $('body').removeClass('is-dimmed');
    };

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.lstCount = [{ ID: 0, Name: "0" }, { ID: 1, Name: "1" }, { ID: 2, Name: "2" }];

    //  برای کمبو بزرگسال و کودک که اگر به تعداد اکسترابد و فیکسبد بزرگسال انتخاب کرده بود
    //دیگه کودک نمیتونه انتخاب کنه واگر به تعدادی که بزرگسال کمتر انتخاب کرده بود میتونه کودک انتخاب کنه
    $scope.lstRange = function (count, start) {
        var lst = [];
        for (var i = start; i <= count; i++) {
            lst.push(i);
        }
        return lst;

    };

    $scope.calcPrice = function (order) {

        order.extraBedMain = order.AdultCount + order.ChildCount - order.RoomInfo.FixBed;
        if (order.extraBedMain < 0)
            order.extraBedMain = 0;

        order.extraBedTrifleMain = 0;

        // اگر ترو بود تعداد کودک هایی که بیشتر از ظرفیت اتاق بود اون تعداد اضافه رو نیم بها حساب میکنه
        if (order.AllowTrifle == true) {
            if (order.extraBedMain > 0) {
                var extraBedTrifleMain = order.ChildCount - order.extraBedMain;

                if (extraBedTrifleMain <= 0)
                    extraBedTrifleMain = order.ChildCount;

                order.extraBedMain -= extraBedTrifleMain;

                order.extraBedTrifleMain = extraBedTrifleMain;
            }
        }

        order.total1 = order.RoomBoard;
        order.total2 = order.RoomSale;

        order.total1 += order.extraBedMain * order.BedBoard;
        order.total2 += order.extraBedMain * order.BedSale;

        order.total1 += order.extraBedTrifleMain * (order.BedBoard / 2);
        order.total2 += order.extraBedTrifleMain * (order.BedSale / 2);

        if (order.EarlyCheckIn === true) {
            order.total1 += (order.SRoomBoard + (order.SBedBoard * order.extraBedMain)) / 2;
            order.total2 += (order.SRoomSale + (order.SBedSale * order.extraBedMain)) / 2;
        }
        if (order.LateCheckOut === true) {
            order.total1 += (order.ERoomBoard + (order.EBedBoard * order.extraBedMain)) / 2;
            order.total2 += (order.ERoomSale + (order.EBedSale * order.extraBedMain)) / 2;
        }

        $scope.sumTotal1 = 0;
        $scope.sumTotal2 = 0;
        for (var k = 0; k < $scope.myRooms.length; k++) {
            $scope.sumTotal1 += $scope.myRooms[k].total1;
            $scope.sumTotal2 += $scope.myRooms[k].total2;
        }

        // محاسبه کل جمع وعده های غذایی

        for (var k = 0; k < $scope.myRooms.length; k++) {
            $scope.sumTotal1 += $scope.myRooms[k].EatTotalRoom;
            $scope.sumTotal2 += $scope.myRooms[k].EatTotalRoom;
        }

        // محاسبه کل جمع خدمات رفاهی

        for (var l = 0; l < $scope.myRooms.length; l++) {
            $scope.sumTotal1 += $scope.myRooms[l].SuppTotalRoom;
            $scope.sumTotal2 += $scope.myRooms[l].SuppTotalRoom;
        }

        if ($scope.wageTypeID == 2)
            $scope.wage = ($scope.sumTotal2 * $scope.wageRate) / 100;

        $scope.sumTotal1 += $scope.wage;
        $scope.sumTotal2 += $scope.wage;
    };

    // مدال وعده غذایی
    $scope.openMealTypeMpdal = function (order) {

        var data = {};
        data.lang = $scope.lang;
        data.LstMeal = order.LstMeal;
        data.LstMealType = $scope.hotelRatesRs.LstMealType;
        data.LstDateVal = $scope.hotelRatesRs.LstDateVal;

        data.dinner = $scope.dinner;
        data.lunch = $scope.lunch;

        var modalInstance = $uibModal.open({
            templateUrl: '/App/Themplates/MealTypeMpdalTpl.html?v=32',
            controller: 'MealTypeMpdalController',
            backdrop: 'static',
            keyboard: false,
            //windowClass: 'nm-modal-content',
            size: 'lg',
            resolve: {
                data: function () {
                    return data;
                },

            }
        });
        modalInstance.result.then(function (data) {
            //console.log(data);
            // افزودن وعده غذایی هر اتاق
            for (var i = 0; i < $scope.myRooms.length; i++) {
                if ($scope.myRooms[i].ID == order.ID) {
                    $scope.myRooms[i].LstMeal = [];
                    $scope.myRooms[i].EatTotalRoom = 0;
                    if (data != null) {
                        for (var j = 0; j < data.length; j++) {
                            if (data[j].Sum > 0) {
                                $scope.myRooms[i].LstMeal.push(data[j]);
                                $scope.myRooms[i].EatTotalRoom += data[j].Sum;
                            }
                        }
                    }
                }
            }
            $scope.calcPrice(order);

        },
            function (data) {

            });
    };

    // مدال خدمات رفاهی
    $scope.openSupplementMpdal = function (order) {

        var data = {};
        data.lang = $scope.lang;
        data.currentDateVal = currentDateVal;
        data.checkIn = $scope.checkIn;
        data.LstSupplement = $scope.hotelRatesRs.LstSupplement;
        data.LstSupp = order.LstSupp;
        data.LstDateVal = $scope.hotelRatesRs.LstDateVal;

        var modalInstance = $uibModal.open({
            templateUrl: '/App/Themplates/SupplementMpdalTpl.html?v=20',
            controller: 'SupplementMpdalController',
            backdrop: 'static',
            keyboard: false,
            //windowClass: 'nm-modal-content',
            size: 'lg',
            resolve: {
                data: function () {
                    return data;
                }
            }
        });
        modalInstance.result.then(function (data) {

            // افزودن وعده غذایی هر اتاق
            for (var i = 0; i < $scope.myRooms.length; i++) {
                if ($scope.myRooms[i].ID == order.ID) {
                    $scope.myRooms[i].LstSupp = [];
                    $scope.myRooms[i].SuppTotalRoom = 0;
                    if (data != null) {
                        for (var j = 0; j < data.length; j++) {
                            if (data[j].SupplementTotal > 0) {
                                $scope.myRooms[i].LstSupp.push(data[j]);
                                $scope.myRooms[i].SuppTotalRoom += data[j].SupplementTotal;
                            }
                        }

                    }
                }
            }
            $scope.calcPrice(order);

        },
            function (data) {

            });
    };

    $scope.FaToEnDigits = function (amount) {
        return dataService.FaToEnDigits(amount);
    };

    $scope.gotoPage3 = function () {
        //چک کردن خالی نبودن اطلاعات شخص رزرو کننده

        if ($scope.myRooms.FName == null) {
            if ($scope.lang === "fa") {
                dataService.errorToaster("خطا", "نام را وارد کنید");
            }
            if ($scope.lang === "en") {
                dataService.errorToaster("error", "Please Enter First Name");
            }


            $('#FName').removeClass("alerts-border");
            $('html').animate({
                scrollTop: $("#FName").offset().top - 150
            }, 1000);
            $("#FName").addClass("alerts-border");
            return;
        }

        if ($scope.myRooms.LName == null) {

            if ($scope.lang === "fa") {
                dataService.errorToaster("خطا", "نام خانوادگی را وارد کنید");
            }
            if ($scope.lang === "en") {
                dataService.errorToaster("error", "Please Enter Lsat Name");
            }

            $('#FName').removeClass("alerts-border");
            $('#LName').removeClass("alerts-border");
            $('html').animate({
                scrollTop: $("#LName").offset().top - 150
            }, 1000);
            $("#LName").addClass("alerts-border");
            return;
        }

        // اگر کد ملی اجباری بود

        if ($scope.mandatoryNCode == true) {
            if ($scope.myRooms.NCode == null) {

                $('#FName').removeClass("alerts-border");
                $('#LName').removeClass("alerts-border");
                $('#mandatoryNCode').removeClass("alerts-border");

                $('html').animate({
                    scrollTop: $("#mandatoryNCode").offset().top - 150
                }, 1000);
                $("#mandatoryNCode").addClass("alerts-border");


                if ($scope.lang === "fa") {
                    dataService.errorToaster("خطا", "لطفا کد ملی را وارد کنید");
                    return;
                }
                if ($scope.lang === "en") {
                    dataService.errorToaster("error", "Please Enter NCode");
                    return;
                }
            }
        }

        // چک کردن پر بودن باکس موبایل
        if ($scope.myRooms.Mobile == null) {
            if ($scope.lang === "fa") {
                dataService.errorToaster("خطا", "موبایل را وارد کنید");
            }

            if ($scope.lang === "en") {
                dataService.errorToaster("خطerrorا", "Please Enter Phone Number");
            }


            $('#FName').removeClass("alerts-border");
            $('#LName').removeClass("alerts-border");
            $('#Mobile').removeClass("alerts-border");

            $('html').animate({
                scrollTop: $("#Mobile").offset().top - 150
            }, 1000);
            $("#Mobile").addClass("alerts-border");
            return;
        }

        $scope.myRooms.Mobile = $scope.FaToEnDigits($scope.myRooms.Mobile);

        if ($scope.lang === "fa") {
            if ($scope.myRooms.Mobile[0] !== "0" || $scope.myRooms.Mobile[1] !== "9" || $scope.myRooms.Mobile.length < 11 || $scope.myRooms.Mobile.length > 11) {
                dataService.errorToaster("خطا", "شماره موبایل اشتباه است");
                return;
            }
        }


        // اگر ایمیل اجباری بود
        if ($scope.mandatoryEmail == true) {
            if ($scope.myRooms.Email == null) {

                $('#FName').removeClass("alerts-border");
                $('#LName').removeClass("alerts-border");
                $('#mandatoryNCode').removeClass("alerts-border");
                $('#Mobile').removeClass("alerts-border");
                $('#mandatoryEmail').removeClass("alerts-border");

                $('html').animate({
                    scrollTop: $("#mandatoryEmail").offset().top - 150
                }, 1000);
                $("#mandatoryEmail").addClass("alerts-border");


                if ($scope.lang === "fa") {
                    dataService.errorToaster("خطا", "لطفا ایمیل را وارد کنید");
                    return;
                }
                if ($scope.lang === "en") {
                    dataService.errorToaster("خطا", "Please Enter Email");
                    return;
                }
            }
        }

        $("#Mobile").removeClass("alerts-border");
        $("#mandatoryEmail").removeClass("alerts-border");
        //چک کردن خالی نبودن اطلاعات لیست اتاق ها

        for (var i = 0; i < $scope.myRooms.length; i++) {
            if ($scope.myRooms[i].AdultCount <= 0) {
                if ($scope.lang === "fa") {
                    dataService.errorToaster("خطا", "بزرگسالی انتخاب نشده است");
                    return;
                }
                if ($scope.lang === "en") {
                    dataService.errorToaster("خطا", "Adult not selected");
                    return;
                }
            }
        }

        for (var k = 0; k < $scope.myRooms.length; k++) {
            $("#FNameRoom" + [k]).removeClass("alerts-border");
            $("#LNameRoom" + [k]).removeClass("alerts-border");
        }

        for (var j = 0; j < $scope.myRooms.length; j++) {


            if ($scope.myRooms[j].RoomInfo.FNameRoom == null) {

                $('html').animate({
                    scrollTop: $("#FNameRoom" + [j]).offset().top - 150
                }, 1000);

                $("#FNameRoom" + [j]).addClass("alerts-border");

                if ($scope.lang === "fa") {
                    dataService.errorToaster("خطا", "نام را وارد کنید");
                }
                if ($scope.lang === "en") {
                    dataService.errorToaster("error", "Please Enter First Name");
                }

                return;

            }
            if ($scope.myRooms[j].RoomInfo.LNameRoom == null) {

                $('html').animate({
                    scrollTop: $("#LNameRoom" + [j]).offset().top - 150
                }, 1000);
                $("#LNameRoom" + [j]).addClass("alerts-border");

                if ($scope.lang === "fa") {
                    dataService.errorToaster("خطا", "نام خانوادگی را وارد کنید");
                }
                if ($scope.lang === "en") {
                    dataService.errorToaster("error", "Please Enter Lsat Name");
                }

                return;

            }
        }

        $scope.$broadcast('show-errors-event');

        if ($scope.bookForm.$invalid) {
            if ($scope.lang === "fa") {
                dataService.errorToaster("خطا", "لطفا اطلاعات شخص رزرو کننده و میهمان اصلی هر اتاق را وارد کنید");
            }
            if ($scope.lang === "en") {
                dataService.errorToaster("error", "Please enter the information of the booking person and the main guest of each room");
            }
            return;
        }

        // چک کردن ترانسفر

        if ($scope.Transport.IsOk === true) {

            if ($scope.Transport.Date == "" || $scope.Transport.Date == null) {
                if ($scope.lang === "fa") {
                    dataService.errorToaster("خطا", "تاریخ ترانسفر را انتخاب کنید");
                    return;
                }
                if ($scope.lang === "en") {
                    dataService.errorToaster("خطا", "Select the transfer date");
                    return;
                }
            }
            if ($scope.Transport.Time == "" || $scope.Transport.Time == null) {
                if ($scope.lang === "fa") {
                    dataService.errorToaster("خطا", "زمان ترانسفر را انتخاب کنید");
                    return;
                }
                if ($scope.lang === "en") {
                    dataService.errorToaster("خطا", "Select the transfer time");
                    return;
                }
            }
            if ($scope.Transport.Airport == "" || $scope.Transport.Airport == null) {
                if ($scope.lang === "fa") {
                    dataService.errorToaster("خطا", "نام فرودگاه را وارد کنید");
                    return;
                }
                if ($scope.lang === "en") {
                    dataService.errorToaster("خطا", "Enter the name of the airport ");
                    return;
                }
            }
            if ($scope.Transport.Terminal == "" || $scope.Transport.Terminal == null) {
                if ($scope.lang === "fa") {
                    dataService.errorToaster("خطا", "نام ترمینال را وارد کنید");
                    return;
                }
                if ($scope.lang === "en") {
                    dataService.errorToaster("خطا", "Enter the terminal name");
                    return;
                }
            }
            if ($scope.Transport.Airline == "" || $scope.Transport.Airline == null) {
                if ($scope.lang === "fa") {
                    dataService.errorToaster("خطا", "نام ایر لاین را وارد کنید");
                    return;
                }
                if ($scope.lang === "en") {
                    dataService.errorToaster("خطا", "Enter the name of the airline ");
                    return;
                }
            }
            if ($scope.Transport.FlightNo == "" || $scope.Transport.FlightNo == null) {
                if ($scope.lang === "fa") {
                    dataService.errorToaster("خطا", "شماره پرواز را وارد کنید");
                    return;
                }
                if ($scope.lang === "en") {
                    dataService.errorToaster("خطا", "Enter the flight number");
                    return;
                }
            }
        }

        // چک کردن اطلاعات حقوقی

        if ($scope.CommercialInvoiceInfo.IsOk === true) {
            if ($scope.CommercialInvoiceInfo.CompanyName == "" || $scope.CommercialInvoiceInfo.CompanyName == null) {
                if ($scope.lang === "fa") {
                    dataService.errorToaster("خطا", "نام شرکت را وارد کنید");
                    return;
                }
                if ($scope.lang === "en") {
                    dataService.errorToaster("خطا", "Enter the company name");
                    return;
                }
            }
            if ($scope.CommercialInvoiceInfo.Address == "" || $scope.CommercialInvoiceInfo.Address == null) {
                if ($scope.lang === "fa") {
                    dataService.errorToaster("خطا", "آدرس را وارد کنید");
                    return;
                }
                if ($scope.lang === "en") {
                    dataService.errorToaster("خطا", "Enter the address");
                    return;
                }
            }
        }

        $("#divRoot").css("display", "none");
        $("#details").css("display", "none");
        $("#prePay").css("display", "block");

        this.hash = '#prePay';

        // animate
        $('html, body').animate({
            scrollTop: $(this.hash).offset().top

        }, 1000, function () {

        });

        // محاسبه کارمزد
        //for (var l = 0; l < $scope.myRooms.length; l++) {
        //}
        //console.log($scope.myRooms);

        // برای اینکه مکان فوتر درست باشه
        $('#footer').css("bottom", "0");

        // برای کد تخفیف
        $scope.discAmount = 0;
        $scope.sumTotal1Disc = 0;
        $scope.sumTotal2Disc = 0;
        $scope.wageDisc = 0;
        $scope.discCode2 = null;
    };

    $scope.gotoPage22 = function () {
        $("#divRoot").css("display", "none");
        $("#details").css("display", "block");
        $("#prePay").css("display", "none");
    }

    $scope.removeRoome = function (index) {

        $scope.myRooms.splice(index, 1);

        $scope.sumTotal1 = 0;
        $scope.sumTotal2 = 0;
        for (var k = 0; k < $scope.myRooms.length; k++) {
            $scope.sumTotal1 += $scope.myRooms[k].total1;
            $scope.sumTotal2 += $scope.myRooms[k].total2;
        }

        // محاسبه کل جمع وعده های غذایی

        for (var k = 0; k < $scope.myRooms.length; k++) {
            $scope.sumTotal1 += $scope.myRooms[k].EatTotalRoom;
            $scope.sumTotal2 += $scope.myRooms[k].EatTotalRoom;
        }

        // محاسبه کل جمع خدمات رفاهی

        for (var l = 0; l < $scope.myRooms.length; l++) {
            $scope.sumTotal1 += $scope.myRooms[l].SuppTotalRoom;
            $scope.sumTotal2 += $scope.myRooms[l].SuppTotalRoom;
        }

        $scope.wage = ($scope.sumTotal2 * $scope.wageRate) / 100;

        $scope.sumTotal1 += $scope.wage;
        $scope.sumTotal2 += $scope.wage;

    };

    /************************************************    صفحه سوم    **********************************************************/

    /*********************** کد تخفیف ************************/

    $scope.discAmount = 0; //  تخفیف

    $scope.sumTotal1Disc = 0; // برای محاسبات درست، جمع کل و کارمزد کد تخفیف ، که با محاسبات اصلی اشتباه نشه
    $scope.sumTotal2Disc = 0; // برای محاسبات درست، جمع کل و کارمزد کد تخفیف ، که با محاسبات اصلی اشتباه نشه
    $scope.wageDisc = 0; // برای محاسبات درست، جمع کل و کارمزد کد تخفیف ، که با محاسبات اصلی اشتباه نشه

    // چک کردن کد تخفیف
    $scope.checkDiscCode = function () {

        if ($scope.discCode2 == null || $scope.discCode2 == "") {
            dataService.errorToaster("", "کد تخفیف را وارد کنید");
            return;
        }

        $scope.sumTotal1Disc = $scope.sumTotal1;
        $scope.sumTotal2Disc = $scope.sumTotal2;
        $scope.wageDisc = $scope.wage;


        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.discCode = $scope.discCode2;

        request.sum = $scope.sumTotal2Disc - $scope.wageDisc; // برای محاسبه درست کد تخفیف اول باید کارمزد محاسبه شده را کم کنیم

        dataService.checkDiscCodeHotel(request).then(
            function (results) {
                $scope.progressbar.complete();
                if (results.data.Error !== null) {

                    $scope.discCode2 = null;
                    $scope.discAmount = 0; // تخفیف
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.discAmount = results.data.MyData; // تخفیف

                if ($scope.discAmount > 0) {
                    // برای محاسبه تخفیف کارمزد رو از مبلغ کل کم می کنیم
                    $scope.sumTotal1Disc = $scope.sumTotal1Disc - $scope.wageDisc;
                    $scope.sumTotal2Disc = $scope.sumTotal2Disc - $scope.wageDisc;

                    // محاسبه مجدد کارمزد
                    if ($scope.wageTypeID == 2)
                        $scope.wageDisc = (($scope.sumTotal2Disc - $scope.discAmount) * $scope.wageRate) / 100;

                    // محاسبه مجدد جمع کل

                    $scope.sumTotal1Disc += $scope.wageDisc;
                    $scope.sumTotal2Disc += $scope.wageDisc;

                    //console.log($scope.sumTotal2);
                }


            },
            function (results) {
                $scope.progressbar.complete();
                dataService.checkAccess(results);
            });
    };

    // پاک کردن کد تخفیف
    $scope.removeDiscCode = function () {
        $scope.discCode2 = null;
        $scope.discAmount = 0; // جمع کل یا تخفیف

    };




    $scope.getMealTypeName = function (mealTypeID) {
        for (var j = 0; j < $scope.hotelRatesRs.LstMealType.length; j++) {
            if ($scope.hotelRatesRs.LstMealType[j].ID === mealTypeID) {
                return $scope.hotelRatesRs.LstMealType[j].Name;
            }
        }
        return '';
    }

    $scope.gotoPage4 = function (payTypeID) {
        var data = {};
        data.Holder = {}
        data.Rooms = [];
        data.ExtraInfo = {};
        data.Transport = {};
        data.CommercialInvoiceInfo = {};
        data.Lang = $("#hfLang").val();
        data.Holder.FirstName = $scope.myRooms.FName;
        data.Holder.LastName = $scope.myRooms.LName;
        data.Holder.Mobile = $scope.myRooms.Mobile;
        data.Holder.Email = $scope.myRooms.Email;
        data.Holder.Considerations = $scope.myRooms.Considerations;
        data.Holder.NCode = $scope.myRooms.NCode;
        data.Holder.PayTypeID = payTypeID;
        data.ResID = 0;

        for (var i = 0; i < $scope.myRooms.length; i++) {

            var obj = {}
            obj.persons = {}
            obj.LstGuestInfo = [];
            obj.LstMeal = [];
            obj.LstSupplement = [];

            obj.Index = i;
            obj.RoomTypeID = $scope.myRooms[i].RoomTypeID;
            obj.AllowTrifle = $scope.myRooms[i].AllowTrifle;
            obj.ExtraBed = $scope.myRooms[i].extraBedMain;
            obj.extraBedTrifle = $scope.myRooms[i].extraBedTrifleMain;
            obj.EarlyCheckIn = $scope.myRooms[i].EarlyCheckIn;
            obj.LateCheckOut = $scope.myRooms[i].LateCheckOut;
            obj.Total1 = $scope.myRooms[i].total1;
            obj.Total2 = $scope.myRooms[i].total2;
            obj.IsForeign = $scope.myRooms[i].NotForeign === "0" ? false : true;

            obj.LstGuestInfo.push({ FirstName: $scope.myRooms[i].RoomInfo.FNameRoom, LastName: $scope.myRooms[i].RoomInfo.LNameRoom });


            obj.persons.AdultCount = $scope.myRooms[i].AdultCount;
            obj.persons.ChildCount = $scope.myRooms[i].ChildCount;
            obj.persons.BabyCount = $scope.myRooms[i].BabyCount;


            // وعدههای غذایی
            for (var j = 0; j < $scope.myRooms[i].LstMeal.length; j++) {
                obj.LstMeal.push({
                    DateVal: $scope.myRooms[i].LstMeal[j].DateVal,
                    MealTypeID: $scope.myRooms[i].LstMeal[j].MealType,
                    MealTypeName: $scope.myRooms[i].LstMeal[j].Name,
                    DinnerRate: $scope.myRooms[i].LstMeal[j].DinnerRate,
                    DinnerCount: $scope.myRooms[i].LstMeal[j].CountDinner,
                    LunchRate: $scope.myRooms[i].LstMeal[j].LunchRate,
                    LunchCount: $scope.myRooms[i].LstMeal[j].CountLunch,
                    Total: $scope.myRooms[i].LstMeal[j].Sum
                });
            }

            // خدمات رفاهی
            for (var j = 0; j < $scope.myRooms[i].LstSupp.length; j++) {
                obj.LstSupplement.push({
                    DateVal: $scope.myRooms[i].LstSupp[j].Date.replace(/\//g, ''),
                    ID: $scope.myRooms[i].LstSupp[j].ID,
                    Price: $scope.myRooms[i].LstSupp[j].Price,
                    Count: $scope.myRooms[i].LstSupp[j].SupplementCount
                });
            }

            data.Rooms.push(obj);
        }

        data.ExtraInfo.CheckInDate = $scope.checkIn.replace(/\//g, '');
        data.ExtraInfo.CheckOutDate = $scope.checkOut.replace(/\//g, '');
        data.ExtraInfo.HotelID = $scope.hotelID;


        // اگر کد تخفیف نداشت
        data.ExtraInfo.Total1 = $scope.sumTotal1;
        data.ExtraInfo.Total2 = $scope.sumTotal2;

        // اگر کد تخفیف داشت
        if ($scope.discCode2 != null && $scope.discAmount > 0) {

            data.ExtraInfo.Total1 = $scope.sumTotal1Disc - $scope.discAmount;
            data.ExtraInfo.Total2 = $scope.sumTotal2Disc - $scope.discAmount;
            data.ExtraInfo.DiscCode2 = $scope.discCode2;
            data.ExtraInfo.DiscAmount2 = $scope.discAmount;
        }

        data.ExtraInfo.DiscCode = $scope.discCode;
        data.ExtraInfo.OfferID = $scope.offerID; //$scope.package == null ? 0 : $scope.package.ID;
        data.ExtraInfo.RoomSaleTypeID = $scope.roomSaleTypeID;
        data.ExtraInfo.NatID = $scope.nat;
        data.ExtraInfo.RefererUrl = $scope.refererUrl;
        data.ExtraInfo.Qsi = $scope.qsi;
        data.ExtraInfo.DiscountCode2 = $scope.discCode2;


        if ($scope.Transport.IsOk == true) {

            var time = $scope.Transport.Time.split(":");
            data.Transport.IsOk = $scope.Transport.IsOk;
            data.Transport.Date = $scope.Transport.Date.replace(/\//g, '');
            data.Transport.HTime = time[0];
            data.Transport.MTime = time[1];
            data.Transport.Airport = $scope.Transport.Airport;
            data.Transport.Terminal = $scope.Transport.Terminal;
            data.Transport.Airline = $scope.Transport.Airline;
            data.Transport.FlightNo = $scope.Transport.FlightNo;
        }
        if ($scope.CommercialInvoiceInfo.IsOk == true) {
            data.CommercialInvoiceInfo.CompanyName = $scope.CommercialInvoiceInfo.CompanyName;
            data.CommercialInvoiceInfo.PostalCode = $scope.CommercialInvoiceInfo.PostalCode;
            data.CommercialInvoiceInfo.Tel = $scope.CommercialInvoiceInfo.Tel;
            data.CommercialInvoiceInfo.Fax = $scope.CommercialInvoiceInfo.Fax;
            data.CommercialInvoiceInfo.EconomicalCode = $scope.CommercialInvoiceInfo.EconomicalCode;
            data.CommercialInvoiceInfo.NationalID = $scope.CommercialInvoiceInfo.NationalID;
            data.CommercialInvoiceInfo.Address = $scope.CommercialInvoiceInfo.Address;
        }


        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};
        request.request = data;

        dataService.lockRooms(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                if (results.data.MyData.Voucher != null)
                    window.top.location.href = results.data.MyData.Voucher;
                else window.top.location.href = results.data.MyData.PaymentUrl;
                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    }

    $scope.checkIn = $scope.checkIn;
    $scope.checkOut = $scope.checkOut;
    $scope.offerID = $scope.offerID;
    $scope.discCode = $scope.discCode;
    $scope.roomTypeID = $scope.roomTypeID;

    if ($scope.checkIn == null || $scope.checkIn == '')
        $scope.checkIn = null;
    if ($scope.checkIn != null && $scope.checkIn != '') {
        $scope.getAvailableRooms();
    }

    /************************************************  منو اسلایدر راست *****************************************************/

    $scope.openVoucherTypeInfoModal = function () {

        var modalInstance = $uibModal.open({
            templateUrl: '/App/Themplates/VoucherTypeInfoModalTpl.html?v=11',
            controller: 'VoucherTypeInfoModalController',
            backdrop: 'static',
            keyboard: false,
            //windowClass: 'nm-modal-content',
            size: 'md',
            resolve: {
            }

        });
        modalInstance.result.then(function (data) {

        },
            function (data) {

            });
    };

    $scope.holdStay = function () {
        dataService.errorToaster("", "به زودی این سرویس اضافه می شود");
    };

    $scope.openCancelResModal = function () {

        var modalInstance = $uibModal.open({

            templateUrl: '/App/Themplates/CancelResModalTpl.html?v=11',
            controller: 'CancelResModalController',
            backdrop: 'static',
            keyboard: false,
            //windowClass: 'nm-modal-content',
            size: 'md',
            resolve: {
            }

        });
        modalInstance.result.then(function (data) {

        },
            function (data) {

            });
    };
}]);

angularFormsApp.controller("VoucherTypeInfoModalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", function ($scope, ngProgressFactory, dataService, $uibModalInstance) {

    $scope.getVoucher = function () {

        if ($scope.mobile == null || $scope.mobile == "") {
            dataService.errorToaster("", "موبایل را وارد کنید");
            return;
        }

        if ($scope.mobile[0] !== "0" || $scope.mobile[1] !== "9" || $scope.mobile.length < 11) {
            dataService.errorToaster("خطا", "شماره موبایل اشتباه است");
            return;
        }

        if ($scope.siteResId == null || $scope.siteResId == "") {
            dataService.errorToaster("", " شماره رزرو سایت را وارد کنید ");
            return;
        }

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.mobile = $scope.mobile;
        request.siteResId = $scope.siteResId;

        dataService.getVoucher(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                window.top.location.href = results.data.MyData;

                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    };

    $scope.cancelForm = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("CancelResModalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", function ($scope, ngProgressFactory, dataService, $uibModalInstance) {

    $scope.continu = function () {

        if ($scope.hotelResNo == null || $scope.hotelResNo == "") {
            dataService.errorToaster("", " شماره رزرو سایت ");
            return;
        }

        window.top.location.href = "/fa/Voucher/CancelRes/" + $scope.hotelResNo;
    };

    $scope.cancelForm = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("MealTypeMpdalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", "data", function ($scope, ngProgressFactory, dataService, $uibModalInstance, data) {

    //console.log(data);

    $scope.dinner = data.dinner;
    $scope.lunch = data.lunch;

    $scope.title = data.lang === "fa" ? "انتخاب / ویرایش وعده های غذایی" : "Select / edit meals";
    $scope.description = data.lang === "fa" ? "لطفا با توجه به پکیج های موجود تعداد را برای هر تاریخ مشخص کنید." : "Please specify the number of lunches and dinners for each date according to the available packages";
    $scope.date = data.lang === "fa" ? "تاریخ" : "date";
    $scope.packageType = data.lang === "fa" ? "نوع پکیج" : "Package type";
    $scope.lunchPrice = data.lang === "fa" ? "قیمت ناهار" : "Lunch price";
    $scope.lunchCount = data.lang === "fa" ? "تعداد ناهار" : "Lunch count";
    $scope.lunchCountRate = data.lang === "fa" ? "قیمت / تعداد ناهار" : "Lunch Count - Rate";
    $scope.dinnerPrice = data.lang === "fa" ? "قیمت شام" : "Dinner price";
    $scope.dinnerCount = data.lang === "fa" ? "تعداد شام" : "Dinner count";
    $scope.dinnerCountRate = data.lang === "fa" ? "قیمت / تعداد شام" : "Dinner count";
    $scope.total = data.lang === "fa" ? "جمع" : "Total";
    $scope.currency = data.lang === "fa" ? "تومان" : "Toman";
    $scope.sumtotal = data.lang === "fa" ? "جمع کل" : "Sum Total";
    $scope.act1 = data.lang === "fa" ? "تایید" : "Confirm";
    $scope.cancel = data.lang === "fa" ? "انصراف" : "Cancel";

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.groupNumber = function (amount) {
        if (amount === 0)
            return amount;
        return dataService.groupNumber(amount);
    };

    $scope.data = data;

    // تبدیل به فرمت تاریخ
    if ($scope.data.LstDateVal.length > 0) {
        for (var k = 0; k < $scope.data.LstDateVal.length; k++) {
            $scope.data.LstDateVal[k] = $scope.getDateFormat($scope.data.LstDateVal[k]);
        }
    }

    // ردیف اول کمبو ها
    $scope.mealType = {};

    // لیست نهایی
    $scope.lstMeal2 = [];

    // ته جمع کل
    $scope.EatTotal2 = 0;

    // اگر ویرایش بود
    if ($scope.data.LstMeal.length > 0) {

        for (var l = 0; l < $scope.data.LstMeal.length; l++) {
            $scope.lstMeal2.push($scope.data.LstMeal[l]);
            if ($scope.data.LstMeal[l].Sum > 0)
                $scope.EatTotal2 += $scope.data.LstMeal[l].Sum;
        }
    }

    // با تغییر کمبو وعده های غذایی قیمت هم تغییر می کند
    $scope.changeMealType2 = function (meal) {
        $scope.mealType.CountLunch = null;
        $scope.mealType.CountDinner = null;
        $scope.mealType.Sum = 0;
        for (var i = 0; i < $scope.data.LstMealType.length; i++) {
            if ($scope.data.LstMealType[i].ID == meal) {
                $scope.mealType.LunchRate = $scope.data.LstMealType[i].LunchRate;
                $scope.mealType.DinnerRate = $scope.data.LstMealType[i].DinnerRate;
                $scope.mealType.Name = $scope.data.LstMealType[i].Name;
                //$scope.mealType.popup = $scope.data.LstMealType[i].Comment;
            }
        }
        //$scope.changeCount(meal);
    };

    // با تغییر تعداد ناهار و شام جمع تغییر میکند
    $scope.changeCount2 = function () {

        if ($scope.mealType.LunchRate == null && $scope.mealType.DinnerRate == null) {
            return;
        }

        $scope.mealType.Sum = 0;

        if ($scope.mealType.CountLunch > 0) {
            $scope.mealType.Sum = $scope.mealType.CountLunch * $scope.mealType.LunchRate;

        }
        if ($scope.mealType.CountDinner > 0) {
            $scope.mealType.Sum += $scope.mealType.CountDinner * $scope.mealType.DinnerRate;

        }

    };

    // افزودن به لیست نهایی
    $scope.addMeal = function () {

        if ($scope.mealType.DateVal == null || $scope.mealType.DateVal == "" || $scope.mealType.DateVal == undefined) {
            dataService.errorToaster("خطا", "لطفا تاریخ را انتخاب کنید");
            return;
        }
        if ($scope.mealType.MealType == null || $scope.mealType.MealType == "") {
            dataService.errorToaster("خطا", "لطفا نوع پکیج را انتخاب کنید");
            return;
        }
        if ($scope.mealType.Sum == null || $scope.mealType.Sum <= 0) {
            dataService.errorToaster("خطا", "لطفا تعداد ناهار یا شام را وارد کنید");
            return;
        }

        if ($scope.mealType.DinnerRate == 0) {
            $scope.mealType.CountDinner = 0;
        }

        if ($scope.mealType.LunchRate == 0) {
            $scope.mealType.CountLunch = 0;
        }

        if ($scope.mealType.CountLunch == undefined || $scope.mealType.CountLunch == 0) {
            $scope.mealType.LunchRate = 0;
        }

        if ($scope.mealType.CountDinner == undefined || $scope.mealType.CountDinner == 0) {
            $scope.mealType.DinnerRate = 0;
        }
        $scope.mealType.DateVal = $scope.mealType.DateVal.replace(/\//g, '');

        $scope.lstMeal2.push($scope.mealType);

        // ته جمع
        $scope.EatTotal2 = 0;
        for (var i = 0; i < $scope.lstMeal2.length; i++) {
            if ($scope.lstMeal2[i].Sum > 0)
                $scope.EatTotal2 += $scope.lstMeal2[i].Sum;
        }

        $scope.mealType = {};

    };

    // حذف وعده غذایی
    $scope.removeMeal = function (index) {

        $scope.EatTotal2 -= $scope.lstMeal2[index].Sum;

        $scope.lstMeal2.splice(index, 1);

    };


    // قبلی
    //$scope.lstMeal = [];

    //$scope.lstMealType = data.LstMealType;

    //// با تغییر وعده غذایی قیمت شام و ناهار تغییر میکند
    //$scope.changeMealType = function (meal) {
    //    for (var i = 0; i < $scope.lstMealType.length; i++) {
    //        if ($scope.lstMealType[i].ID == meal.MealType) {
    //            meal.LunchRate = $scope.lstMealType[i].LunchRate;
    //            meal.DinnerRate = $scope.lstMealType[i].DinnerRate;
    //            meal.popup = $scope.lstMealType[i].Comment;
    //        }
    //    }
    //    $scope.changeCount(meal);
    //};


    //$scope.EatTotal = 0;

    //// با تغییر تعداد ناهار و شام جمع تغییر میکند
    //$scope.changeCount = function (meal) {
    //    if (meal.LunchRate == null && meal.DinnerRate == null) {
    //        return;
    //    }

    //    meal.Sum = 0;
    //    if (meal.CountLunch > 0) {
    //        meal.Sum = meal.Sum + meal.CountLunch * meal.LunchRate;

    //    }
    //    if (meal.CountDinner > 0) {
    //        meal.Sum = meal.Sum + meal.CountDinner * meal.DinnerRate;

    //    }

    //    $scope.EatTotal = 0;
    //    // ته جمع
    //    for (var i = 0; i < $scope.lstMeal.length; i++) {
    //        if ($scope.lstMeal[i].Sum != null)
    //            $scope.EatTotal += $scope.lstMeal[i].Sum;
    //    }

    //};

    //// برای جدید یا ویرایش
    //if (data.LstMeal == "") {
    //    for (var j = 0; j < data.LstDateVal.length; j++) {
    //        $scope.lstMeal.push({ DateVal: data.LstDateVal[j], Sum: 0 });
    //    }

    //} else {
    //    $scope.lstMeal = data.LstMeal;
    //    for (var i = 0; i < $scope.lstMeal.length; i++) {

    //        $scope.EatTotal += $scope.lstMeal[i].Sum;
    //    }
    //}

    //// اگر تعداد وعده های غذایی یدونه بود
    //if ($scope.lstMealType.length == 1) {
    //    for (var j = 0; j < $scope.lstMeal.length; j++) {
    //        $scope.lstMeal[j].LunchRate = $scope.lstMealType[0].LunchRate;
    //        $scope.lstMeal[j].DinnerRate = $scope.lstMealType[0].DinnerRate;
    //        $scope.lstMeal[j].MealType = $scope.lstMealType[0].ID;
    //        $scope.lstMeal[j].popup = $scope.lstMealType[0].Comment;
    //    }
    //}

    $scope.act = function () {

        $uibModalInstance.close($scope.lstMeal2);
    }

    $scope.cancelForm = function () {
        $uibModalInstance.dismiss();
    };
}]);

angularFormsApp.controller("SupplementMpdalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", "$uibModal", "data", function ($scope, ngProgressFactory, dataService, $uibModalInstance, $uibModal, data) {

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.title = data.lang === "fa" ? "انتخاب/ویرایش وعده های غذایی" : "Select / edit meals";
    $scope.date = data.lang === "fa" ? "تاریخ" : "date";
    $scope.price = data.lang === "fa" ? "قیمت" : "Price";
    $scope.count = data.lang === "fa" ? "تعداد" : "Count";
    $scope.total1 = data.lang === "fa" ? "جمع" : "Total";
    $scope.type = data.lang === "fa" ? "نوع" : "Type ";
    $scope.delete = data.lang === "fa" ? "حذف" : "Delete ";
    $scope.act1 = data.lang === "fa" ? "تایید" : "Confirm";
    $scope.cancel = data.lang === "fa" ? "انصراف" : "Cancel";
    $scope.currency = data.lang === "fa" ? "تومان" : "Toman";
    $scope.sumtotal = data.lang === "fa" ? "جمع کل" : "Sum Total";


    $scope.total = 0;

    $scope.header = {};
    if (data.LstSupp != null) {
        $scope.lstSupplement = data.LstSupp;
        for (var i = 0; i < $scope.lstSupplement.length; i++) {
            $scope.total += $scope.lstSupplement[i].SupplementTotal;
        }
    } else {
        $scope.lstSupplement = [];
    }

    $scope.lstSupplementType = data.LstSupplement;
    $scope.lstDateVal = data.LstDateVal;

    for (var l = 0; l < $scope.lstDateVal.length; l++) {
        $scope.lstDateVal[l] = $scope.getDateFormat($scope.lstDateVal[l]);
    }

    // مدال تاریخ
    //$scope.openModalSupplementDate = function () {
    //    var request = {};
    //    request.Config = {};
    //    request.Config.DSC = 1;
    //    request.Config.DSCT = 1;
    //    request.Config.DSM = 0;
    //    request.Config.DSY = 0;
    //    request.Config.Title = data.lang === "en" ? "Select Date" : "انتخاب تاریخ";
    //    request.Config.CalType = data.lang === "fa" ? 0 : 1;
    //    request.Config.MinDate = data.currentDateVal;
    //    request.Config.Date = data.checkIn === null ? data.currentDateVal : data.checkIn;
    //    var modalInstance = $uibModal.open({
    //        templateUrl: '/App/NM-DatePicker/NM-DatePicker.html?v=4',
    //        controller: 'NM-DatePickerController',
    //        //backdrop: 'static',
    //        keyboard: false,
    //        windowClass: 'nc-modal-content',
    //        size: 'sm',
    //        resolve: {
    //            request: function () {
    //                return request;
    //            }
    //        }
    //    });
    //    modalInstance.result.then(function (data) {

    //        if (data != null) {
    //            $scope.header.Date = data.DateVal;
    //        }
    //    },
    //        function (data) {

    //        });
    //};


    // با تغییر خدمات رفاهی قیمت میشینه


    $scope.changeSupplement = function (header) {
        for (var i = 0; i < $scope.lstSupplementType.length; i++) {
            if ($scope.lstSupplementType[i].ID == header.ID) {
                header.Price = $scope.lstSupplementType[i].Price;
            }
        }
        $scope.changeCount(header);
    };

    // با تغییر تعداد  جمع تغییر میکند
    $scope.changeCount = function (header) {
        if (header.Price == null && header.Price == null) {
            return;
        }

        header.SupplementTotal = 0;

        if (header.SupplementCount > 0) {
            header.SupplementTotal = header.SupplementCount * header.Price;
        }



    };

    $scope.add = function () {

        if ($scope.header.Date == null) {
            dataService.errorToaster("خطا", "تاریخ را انتخاب کنین");
            return;
        }
        if ($scope.header.ID == null) {
            dataService.errorToaster("خطا", "نوع را انتخاب کنین");
            return;
        }
        if ($scope.header.SupplementCount == null) {
            dataService.errorToaster("خطا", "تعداد را وارد کنین");
            return;
        }

        // اگر در این تاریخ از این وع بود روی همون قبلی اضافه میکنه واگر نه یدونه جدید میسازه 
        var find = 0;

        for (var i = 0; i < $scope.lstSupplement.length; i++) {
            if ($scope.lstSupplement[i].ID == $scope.header.ID && $scope.lstSupplement[i].Date == $scope.header.Date) {

                $scope.lstSupplement[i].SupplementTotal = 0;
                $scope.lstSupplement[i].SupplementCount += parseInt($scope.header.SupplementCount);
                $scope.lstSupplement[i].SupplementTotal = $scope.lstSupplement[i].SupplementCount * $scope.lstSupplement[i].Price;
                find++;
            }
        }

        if (find == 0) {
            $scope.lstSupplement.push({
                Date: $scope.header.Date,
                ID: $scope.header.ID,
                Price: $scope.header.Price,
                SupplementCount: parseInt($scope.header.SupplementCount),
                SupplementTotal: $scope.header.SupplementTotal
            });
        }

        if ($scope.lstSupplement.length > 0) {
            for (var i = 0; i < $scope.lstSupplement.length; i++) {
                for (var j = 0; j < $scope.lstSupplementType.length; j++) {
                    if ($scope.lstSupplement[i].ID == $scope.lstSupplementType[j].ID) {
                        $scope.lstSupplement[i].Title = $scope.lstSupplementType[j].Name;
                    }
                }
            }
        }

        //محاسبه جمع کل

        $scope.total = 0;

        for (var k = 0; k < $scope.lstSupplement.length; k++) {
            $scope.total += $scope.lstSupplement[k].SupplementTotal;
        }

        $scope.empty();
    }

    $scope.empty = function () {
        $scope.header.Date = null;
        $scope.header.ID = null;
        $scope.header.Price = null;
        $scope.header.SupplementCount = null;
        $scope.header.SupplementTotal = null;
    }

    $scope.act = function () {
        //if ($scope.lstSupplement.length <= 0) {
        //    dataService.errorToaster("خطا", "لیستی انتخاب نکرده اید");
        //    return;
        //}
        $uibModalInstance.close($scope.lstSupplement);
    }

    $scope.remove = function (index) {

        $scope.total = 0;

        $scope.lstSupplement.splice(index, 1);
        for (var k = 0; k < $scope.lstSupplement.length; k++) {
            $scope.total += $scope.lstSupplement[k].SupplementTotal;
        }

    };

    $scope.groupNumber = function (amount) {
        if (amount === 0)
            return amount;
        return dataService.groupNumber(amount);
    };

    $scope.cancelForm = function () {
        $uibModalInstance.dismiss();
    };
}]);

angularFormsApp.controller("PackageInfoModalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", "$uibModal", "packageID", "lang", function ($scope, ngProgressFactory, dataService, $uibModalInstance, $uibModal, packageID, lang) {

    //console.log($scope.specialPackage);

    $scope.date = lang === "fa" ? "بازه های تاریخی" : "Date Interval";
    $scope.from = lang === "fa" ? "از تاریخ" : "From";
    $scope.to = lang === "fa" ? "الی" : "To";
    $scope.comment = lang === "fa" ? "توضیحات" : "Comment";
    $scope.sale = lang === "fa" ? "نوع اتاقهای قابل فروش" : "Rooms for sale";

    $scope.getPackage = function () {

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.packageID = packageID;
        dataService.getPackage(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                $scope.packageInfo = results.data.MyData.packageInfo;
                $scope.specialPackage = results.data.MyData.specialPackage;

                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });


    };
    $scope.getPackage();

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.ok = function () {

        // اگر تاریخ های اسپسیال نداشت
        if ($scope.specialPackage == null) {

            $uibModalInstance.close($scope.packageInfo);
            return;
        }

        // اگر تاریخ های اسپسیال داشت

        $scope.openSpecialModal();
    };

    $scope.openSpecialModal = function () {

        var modalInstance = $uibModal.open({
            templateUrl: '/app/Themplates/SpecialModalTpl.html?v=' + dataService.getVersion(),
            controller: 'SpecialModalController',
            //backdrop: 'static',
            keyboard: false,
            size: 'md',
            resolve: {
                specialPackage: function () {
                    return $scope.specialPackage;
                }
            }
        });
        modalInstance.result.then(function (data) {

        },
            function (data) {
            });
    };

    $scope.cancel = function () {
        $uibModalInstance.dismiss();
    };

}]);
angularFormsApp.controller("SpecialModalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", "specialPackage", function ($scope, ngProgressFactory, dataService, $uibModalInstance, specialPackage) {

    $scope.specialPackage = specialPackage;

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.cancel = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("EventInfoModalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", "event", "lang", function ($scope, ngProgressFactory, dataService, $uibModalInstance, event, lang) {


    $scope.event = event;

    $scope.date = lang === "fa" ? "تاریخ" : "Date";
    $scope.comment = lang === "fa" ? "توضیحات" : "Comment";

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.cancel = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("CaptchaModalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", "request", function ($scope, ngProgressFactory, dataService, $uibModalInstance, request) {

    $scope.txt = request.Lang === "fa" ? "متن تصویر" : "Image text ";
    $scope.act2 = request.Lang === "fa" ? "تایید" : "Confirm";
    $scope.txt2 = request.Lang === "fa" ? "متن تصویر را وارد کنید" : " Enter the text of the image ";

    $scope.captchaImageUrl = request.captchaImageUrl;

    $scope.act = function () {
        $scope.$broadcast('show-errors-event');
        if ($scope.capcha.$invalid) {
            return;
        }

        $uibModalInstance.close($scope.captchaText);
    };



}]);

angularFormsApp.controller("Test2Controller", ["$scope", "ngProgressFactory", "dataService", "$uibModal", "moment", function ($scope, ngProgressFactory, dataService, $uibModal, moment) {

    $scope.lstCat = [{ ID: 1, Name: "اتاق ها" }, { ID: 2, Name: "امکانات" }, { ID: 3, Name: "نظرات" }, { ID: 4, Name: "کودکان و تخت های اضافی" }, { ID: 5, Name: "قوانین" }, { ID: 6, Name: "نقشه" }];

    $scope.goto = function (cat) {
        if (cat == 6) {

            var request = {};
            var modalInstance = $uibModal.open({
                templateUrl: '/App/Themplates/MapModalTpl.html?v=2',
                controller: 'MapModalController',
                // backdrop: 'static',
                keyboard: false,
                /*windowClass: 'nm-modal-content',*/
                size: 'lg',
                resolve: {

                }
            });
            modalInstance.result.then(function (data) {

            },
                function (data) {

                });

        } else {
            this.hash = '#' + cat;

            // animate
            $('html, body').animate({
                scrollTop: $(this.hash).offset().top

            }, 300, function () {

            });
        }

    }


    $scope.page1 = false;
    $scope.page2 = true;

    $scope.quantity = 8;
    $scope.lstHotel = [

        {
            HotelID: 1,
            HotelName: "هتل اسپیناس پالاس",
            Star: 5,
            Address: "سعادت آباد بلوار پيام ميدان بهرود خيابان عابدي کوچه 33",
            Degree1: 9.1,
            Degree2: "عالی",
            Degree3: 7850,
            Price: "1,200,000",
            HotelImage: "https://app.harrisnewtech.ir/Images//a94094c006c14ebabfce63ced56ca5ed.jpg",
            LstImageRoom: [
                "https://app.harrisnewtech.ir/Images/d4f8362b3df34940a916fa3586bee0b3.JPG",
                "https://app.harrisnewtech.ir/Images/bf5585cbfb5841a0bddf90bb5e07bd63.jpg",
                "https://app.harrisnewtech.ir/Images/1a3dbbe7408349aba711d49accdf2491.JPG",
                "https://app.harrisnewtech.ir/Images/7a1642fc748f40ab805a922c419d565f.jpg",
                "https://app.harrisnewtech.ir/Images/78e65705a2b440ee954c1c8157cc18ac.jpg",
                "https://app.harrisnewtech.ir/Images/be0664a973ea4f48a8c06b44592a7377.jpg",
                "https://app.harrisnewtech.ir/Images/675711d037f24dbbb26f1c4330c54f4f.jpg",
                "https://app.harrisnewtech.ir/Images/ec40e68e2f9347abbdecd024d33a7200.jpg",
                "https://app.harrisnewtech.ir/Images//a94094c006c14ebabfce63ced56ca5ed.jpg",
            ],
            Facilities: [
                "تلویزیون", "سرویس بهداشتی فرنگی", "تلفن", "مبلمان", "یخچال",
                "صندوق امانات در اتاق", "چای‌ساز", "مینی‌بار غیررایگان", "چیلر",
                "سیستم IPTV", "مسواک", "دوش", "وان", "صابون", "شامپو", "مسواک",
                "خمیردندان", "دمپایی", "سشوار", "حوله", "رخت‌آویز", "کمد لباس",
                "آباژور", "اینترنت رایگان و نامحدود در اتاق", "میز و صندلی"]
        },

        {
            HotelID: 2,
            HotelName: "هتل اسپیناس خلیج فارس",
            Star: 5,
            Address: "تهران، میدان ولیعصر، بلوار کشاورز، شماره 126",
            Degree1: 8.3,
            Degree2: "عالی",
            Degree3: 725,
            Price: "690,000",
            HotelImage: "https://app.harrisnewtech.ir/Images/f44469db1a80414da6197f682d1ed021.jpg",
            LstImageRoom: [
                "https://app.harrisnewtech.ir/Images/78e65705a2b440ee954c1c8157cc18ac.jpg",
                "https://app.harrisnewtech.ir/Images/176adea6b98b41b68aca9764bbbdbd08.jpg",
                "https://app.harrisnewtech.ir/Images/4135c2b23a67483f9e2239a3579f6e98.jpg",
                "https://app.harrisnewtech.ir/Images/cb316db7dc05484a9fba19962675678c.jpg",
                "https://app.harrisnewtech.ir/Images/9bb2eacc752849f2ba018364f40c3abd.jpeg",
                "https://app.harrisnewtech.ir/Images/a6a412e0daef400194c675d0fdbc3434.jpg",
                "https://app.harrisnewtech.ir/Images/505601670e964dfe906e6ae4de5973c8.jpg",
                "https://app.harrisnewtech.ir/Images/08c4978a195a4d82ad6f35c32f7ff68a.jpg",
                "https://admin.bookingir.com/Logo/RoomTypeLogo/ab18babd6d304e81bdb76ec61b08d687.jpg",
                "https://app.harrisnewtech.ir/Images/d44a25f93f794082a254b2b2ff7265fb.jpg",
            ],
            Facilities: [
                "تلویزیون", "سرویس بهداشتی فرنگی", "تلفن", "مبلمان", "یخچال",
                "صندوق امانات در اتاق", "چای‌ساز", "مینی‌بار غیررایگان", "چیلر",
                "سیستم IPTV", "مسواک", "دوش", "وان", "صابون", "شامپو", "مسواک",
                "خمیردندان", "دمپایی", "سشوار", "حوله", "رخت‌آویز", "کمد لباس",
                "آباژور", "اینترنت رایگان و نامحدود در اتاق", "میز و صندلی"]
        },

        {
            HotelID: 3,
            HotelName: "هتل اسپیناس آستارا",
            Star: 4,
            Address: "گيلان، آستارا، جنب پلیس راه آستارا تالش",
            Degree1: 8,
            Degree2: "عالی",
            Degree3: 1452,
            Price: "735,000",
            HotelImage: "https://admin.bookingir.com/Logo/SlideLogo/25c77d6c50fc44359d9a3183cd5a5bac.jpg",
            LstImageRoom: [
                "https://app.harrisnewtech.ir/Images/0608c418b93f4e3c9e891b1778dbae29.jpg",
                "https://app.harrisnewtech.ir/Images/c04924c602ff49df87341d86abe5486a.jpeg",
                "https://app.harrisnewtech.ir/Images/92c4de067e044d21a032c6b66731b04b.jpg",
                "https://app.harrisnewtech.ir/Images/a880de9d55b2496b8d5138384eec8cca.jpeg",
                "https://app.harrisnewtech.ir/Images/dccab0b7f5ba4512aafbef756d70f095.jpg",
                "https://app.harrisnewtech.ir/Images/39df56ec25264b70b21c29eacc4a252e.jpg",
                "https://app.harrisnewtech.ir/Images/9bb2eacc752849f2ba018364f40c3abd.jpeg",
                "https://app.harrisnewtech.ir/Images/a6a412e0daef400194c675d0fdbc3434.jpg",
            ],

            Facilities: [
                "تلویزیون", "سرویس بهداشتی فرنگی", "تلفن", "مبلمان", "یخچال",
                "صندوق امانات در اتاق", "چای‌ساز", "مینی‌بار غیررایگان", "چیلر",
                "سیستم IPTV", "مسواک", "دوش", "وان", "صابون", "شامپو", "مسواک",
                "خمیردندان", "دمپایی", "سشوار", "حوله", "رخت‌آویز", "کمد لباس",
                "آباژور", "اینترنت رایگان و نامحدود در اتاق", "میز و صندلی"]
        },

    ];

    $scope.hotel =
    {
        HotelID: 1,
        HotelName: "هتل اسپیناس پالاس",
        Star: 5,
        Address: "سعادت آباد بلوار پيام ميدان بهرود خيابان عابدي کوچه 33",
        Degree1: 9.1,
        Degree2: "عالی",
        Degree3: 7850,
        Price: "1,200,000",
        HotelImage: "https://app.harrisnewtech.ir/Images//a94094c006c14ebabfce63ced56ca5ed.jpg",
        LstImageRoom: [
            "https://app.harrisnewtech.ir/Images/d4f8362b3df34940a916fa3586bee0b3.JPG",
            "https://app.harrisnewtech.ir/Images/bf5585cbfb5841a0bddf90bb5e07bd63.jpg",
            "https://app.harrisnewtech.ir/Images/1a3dbbe7408349aba711d49accdf2491.JPG",
            "https://app.harrisnewtech.ir/Images/7a1642fc748f40ab805a922c419d565f.jpg",
            "https://app.harrisnewtech.ir/Images/78e65705a2b440ee954c1c8157cc18ac.jpg",
            "https://app.harrisnewtech.ir/Images/be0664a973ea4f48a8c06b44592a7377.jpg",
            "https://app.harrisnewtech.ir/Images/675711d037f24dbbb26f1c4330c54f4f.jpg",
            "https://app.harrisnewtech.ir/Images/ec40e68e2f9347abbdecd024d33a7200.jpg",
            "https://app.harrisnewtech.ir/Images//a94094c006c14ebabfce63ced56ca5ed.jpg",
        ],
        Facilities: [
            "تلویزیون", "سرویس بهداشتی فرنگی", "تلفن", "مبلمان", "یخچال",
            "صندوق امانات در اتاق", "چای‌ساز", "مینی‌بار غیررایگان", "چیلر",
            "سیستم IPTV", "مسواک", "دوش", "وان", "صابون", "شامپو", "مسواک",
            "خمیردندان", "دمپایی", "سشوار", "حوله", "رخت‌آویز", "کمد لباس",
            "آباژور", "اینترنت رایگان و نامحدود در اتاق", "میز و صندلی"
        ]
    };

    $scope.getNumber = function (num) { // برای ستاره های ستون سمت چپ که به شماره , ستاره تولید میکنه
        return new Array(num);
    }

    // نمایش لایت اسلایدر 
    $scope.showLightSlider = function (hotelID) {

        $scope.data = [];

        var pic = "#pic" + hotelID;

        for (var i = 0; i < $scope.lstHotel.length; i++) {
            if ($scope.lstHotel[i].HotelID === hotelID) {
                for (var j = 0; j < $scope.lstHotel[i].LstImageRoom.length; j++) {
                    $scope.data.push({
                        "src": $scope.lstHotel[i].LstImageRoom[j],
                        'thumb': $scope.lstHotel[i].LstImageRoom[j],
                        'subHtml': '<h4>' + " تلویزیون " + " سرویس بهداشتی فرنگی " + " تلفن " + " مبلمان " + " یخچال " + " صندوق امانات در اتاق " + " چای‌ساز " + " مینی‌بار غیررایگان " + " چیلر " + " سیستم IPTV " + " مسواک " + '</h4>'
                    });
                }
            }
        }
        $(pic).lightGallery({
            dynamic: true,
            dynamicEl: $scope.data,
        });
    };

    //مدال نمایش عکس
    $scope.openTest2PictureModal = function (hotel) {

        var modalInstance = $uibModal.open({
            templateUrl: '/App/Themplates/Test2PictureModalTpl.html?v=9',
            controller: 'Test2PictureModalController',
            // backdrop: 'static',
            //keyboard: false,
            //windowClass: 'nm-modal-content',
            size: 'lg',
            resolve: {
                hotel: function () {
                    return hotel;
                }
            }
        });
        modalInstance.result.then(function (data) {

        },
            function (data) {

            });
    };

    //مدال نمایش عکس سایز موبایل
    $scope.openTest2MobilePictureModal = function () {

        var modalInstance = $uibModal.open({
            templateUrl: '/App/Themplates/Test2MobilePictureModalTpl.html?v=11',
            controller: 'Test2MobilePictureModalController',
            // backdrop: 'static',
            //keyboard: false,
            //windowClass: 'nm-modal-content',
            size: 'lg',
            resolve: {

            }
        });
        modalInstance.result.then(function (data) {

        },
            function (data) {

            });
    };

    //مدال نمایش فیلم
    $scope.openTest2MovieModal = function (hotel) {

        var modalInstance = $uibModal.open({
            templateUrl: '/App/Themplates/Test2MovieModalTpl.html?v=14',
            controller: 'Test2MovieModalController',
            // backdrop: 'static',
            //keyboard: false,
            //windowClass: 'nm-modal-content',
            size: 'lg',
            resolve: {
                hotel: function () {
                    return hotel;
                }
            }
        });
        modalInstance.result.then(function (data) {

        },
            function (data) {

            });
    };


    /************************************   searchbox    *******************************************/

    //زبان صفحه
    $scope.lstLangType = [{ "ID": 0, "Name": "فارسی" }, { "ID": 1, "Name": "انگلیسی" }];


    //آبجکت شهر انتخابی
    $scope.City = {};
    //آبجکت برای قسمت سرچ شهر
    $scope.searchText = {};
    //تنظیمات کنترل ها مانند زبان و مدال های مورد نظر رو نشان میده
    $scope.Config = {
        citySearch: false,
        checkInBox: false,
        checkOutBox: false,
        personBox: false,
        langType: 0
    };
    //ارسال تنظیمات به کنترلر  های دیگر
    $scope.$watch('Config', function (newValue) {
        $scope.$broadcast('ConfigChanged', newValue);
    });
    //ارسال اطلاعات شهر به کنترلر
    $scope.$watch('City', function (newValue, oldValue) {
        $scope.$broadcast('GetCity', newValue);

    });
    //تنظیمات درصورت کلیک کردن برباکس جستجوی شهرها
    $scope.openSearchBox = function () {
        $scope.Config.citySearch = true;
        $scope.Config.personBox = false;
        $scope.Config.checkOutBox = false;
        $scope.Config.checkInBox = false;

    };
    //دریافت اطلاعات شهراز کنترلرشهر
    $scope.$on('CityChanged', function (event, value) {
        $scope.City = value;

    });
    //تنظیمات در صورت کلیک بر روی باکس چک-این
    $scope.openCheckIn = function () {

        $scope.Config.citySearch = false;
        $scope.Config.personBox = false;
        $scope.Config.checkOutBox = false;
        $scope.Config.checkInBox = true;

    };
    //تنظمات در صورت کلیک بر روی باکس چک-اوت
    $scope.openCheckOut = function () {
        $scope.checkOutDate = {};
        $scope.Config.citySearch = false;
        $scope.Config.personBox = false;
        $scope.Config.checkOutBox = true;
        $scope.Config.checkInBox = false;

    };
    //تنظیمات در صورت کلیک بر روی باکس اطلاعات اتاق ها
    $scope.openPerson = function () {
        $scope.Config.citySearch = false;
        $scope.Config.personBox = true;
        $scope.Config.checkOutBox = false;
        $scope.Config.checkInBox = false;

    };
    //تنظیمات در صورت کلیک بر روی صفحه
    $scope.closeAllModal = function () {

        $scope.Config.checkOutBox = false;
        $scope.Config.checkInBox = false;
        $scope.Config.personBox = false;
        $scope.Config.citySearch = false;
    };
    //متدی که فارسی نشونه بده اعداد تقویم فارسی رو
    $scope.toFarsiNumber = function (str) {
        return str;
        //if ($scope.Config.langType == 0 && str != null) {
        //    const farsiDigits = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];

        //    return str.toString()
        //        .replace(/\d/g, x => farsiDigits[x]);
        //}
        //else {
        //    return str;
        //}
    };
    //ابجکت چک-این
    $scope.checkInDate = {
        "DayID": null,
        "MonthID": null,
        "MonthName": null,
        "YearID": null,
        "DateVal": null,
        "Selected": false,
        "Disabled": false,
    };
    //ابجکت چک-اوت
    $scope.checkOutDate = {
        "DayID": null,
        "MonthID": null,
        "MonthName": null,
        "YearID": null,
        "DateVal": null,
        "Selected": false,
        "Disabled": false,
    };
    //تاریخ مینیمم که قبل از ان هیچ داده ای قابل انتخاب نیست
    // حتما باید وجود داشته باشد
    $scope.minDate = "1400/04/22";
    //ارسال داده چک این به کنترلر انتخاب تاریخ
    $scope.$watch('checkInDate', function (newValue, oldValue) {
        $scope.$broadcast('GetcheckIn', newValue);

    });
    //ارسال داده چک اوت به کنترلر انتخاب تاریخ
    $scope.$watch('checkOutDate', function (newValue, oldValue) {
        $scope.$broadcast('GetcheckOut', newValue);

    });
    //ارسال داده تاریخ مینیمم به کنترلر انتخاب تاریخ
    $scope.$watch('minDate', function (newValue, oldValue) {
        $scope.$broadcast('GetminDate', newValue);

    });
    //دریافت داده چک این از کنترلر انتخاب تاریخ
    $scope.$on('checkInDateChanged', function (event, value) {
        $scope.checkInDate = value;

    });
    //دریافت داده چک این از کنترلر انتخاب تاریخ
    $scope.$on('checkOutDateChanged', function (event, value) {
        $scope.checkOutDate = value;

    });
    //ست کردن تاریخ چک-این و چک اوت- برای اولین بار که صفحه لود میشود
    $scope.setCheckInOUT = function () {
        if ($scope.checkOutDate.DateVal == null && $scope.checkInDate.DateVal == null) {

            check = moment();
            if ($scope.Config.langType == 0) {

                check.locale('fa');

            }
            if ($scope.Config.langType == 1) {

                check.locale('en');

            }
            if ($scope.LstLockDate != null && $scope.LstLockDate.length > 0) {
                conter = 0;
                for (var z = 0; z < $scope.LstLockDate.length; z++) {
                    if (check.format('YYYY/MM/DD') == $scope.convertToMiladi($scope.LstLockDate[z].Start) || check.format('YYYY/MM/DD') == $scope.convertToMiladi($scope.LstLockDate[z].End) || check.isBetween($scope.convertToMiladi($scope.LstLockDate[z].Start), $scope.convertToMiladi($scope.LstLockDate[z].End), 'Date')) {
                        conter++;

                    }
                }
                check.add(conter, 'days');
                $scope.checkInDate = {
                    "DayID": check.format('D'),
                    "MonthID": check.format('M'),
                    "MonthName": check.format('MMMM'),
                    "YearID": check.format('YYYY'),
                    "DateVal": check.format('YYYY/MM/DD'),
                    "Selected": false,
                    "Disabled": false,
                    "TempDisabled": false,
                };
                check.add(2, 'days');
                for (var z = 0; z < $scope.LstLockDate.length; z++) {
                    if (check.format('YYYY/MM/DD') == $scope.convertToMiladi($scope.LstLockDate[z].Start) || check.format('YYYY/MM/DD') == $scope.convertToMiladi($scope.LstLockDate[z].End) || check.isBetween($scope.convertToMiladi($scope.LstLockDate[z].Start), $scope.convertToMiladi($scope.LstLockDate[z].End), 'Date')) {
                        conter++;

                    }
                }
                $scope.checkOutDate = {
                    "DayID": check.format('D'),
                    "MonthID": check.format('M'),
                    "MonthName": check.format('MMMM'),
                    "YearID": check.format('YYYY'),
                    "DateVal": check.format('YYYY/MM/DD'),
                    "Selected": false,
                    "Disabled": false,
                    "TempDisabled": false,
                };
            }
            else {
                check.add(1, 'days');
                $scope.checkInDate = {
                    "DayID": check.format('D'),
                    "MonthID": check.format('M'),
                    "MonthName": check.format('MMMM'),
                    "YearID": check.format('YYYY'),
                    "DateVal": check.format('YYYY/MM/DD'),
                    "Selected": false,
                    "Disabled": false,
                    "TempDisabled": false,
                };
                check.add(2, 'days');
                $scope.checkOutDate = {
                    "DayID": check.format('D'),
                    "MonthID": check.format('M'),
                    "MonthName": check.format('MMMM'),
                    "YearID": check.format('YYYY'),
                    "DateVal": check.format('YYYY/MM/DD'),
                    "Selected": false,
                    "Disabled": false,
                    "TempDisabled": false,
                };
            }
        }

    };
    $scope.setCheckInOUT();
    //فرمت تاریخ که می خواهیم در صفحه نشان دهد
    $scope.DateInput = function (value) {
        if (value == null) {
            return;
        }
        if ($scope.Config.langType == 0) {
            m = moment(value, 'jYYYY/jM/jD');
            m.locale('fa');
            return $scope.toFarsiNumber(m.format("dddd, Do MMMM YYYY "));

        }
        if ($scope.Config.langType == 1) {
            m.locale('en');
            return moment(value).format("dddd, MMMM Do YYYY");
        }
    };
    //فرمت تاریخ که می خواهیم در صفحه نشان دهد
    $scope.DatesmalInput = function (value) {
        if (value == null) {
            return;
        }
        if ($scope.Config.langType == 0) {
            m = moment(value, 'jYYYY/jM/jD');
            m.locale('fa');
            return $scope.toFarsiNumber(m.format("D MMM"));

        }
        if ($scope.Config.langType == 1) {
            m.locale('en');
            return moment(value).format("D MMM");
        }
    };
    //فرمت تاریخ که می خواهیم در صفحه نشان دهد
    $scope.DateFinallInput = function (value) {
        if (value == null) {
            return;
        }
        if ($scope.Config.langType == 0) {
            m = moment(value, 'jYYYY/jM/jD');
            m.locale('fa');
            return $scope.toFarsiNumber(m.format(" D MMMM YYYY "));

        }
        if ($scope.Config.langType == 1) {
            m.locale('en');
            return moment(value).format(" D MMMM YYYY");
        }
    };
    //فرمت تاریخ که می خواهیم در صفحه نشان دهد
    $scope.dayofWeek = function (value) {
        if (value == null) {
            return;
        }
        if ($scope.Config.langType == 0) {
            m = moment(value, 'jYYYY/jM/jD');
            m.locale('fa');
            return $scope.toFarsiNumber(m.format(" dddd "));

        }
        if ($scope.Config.langType == 1) {
            m.locale('en');
            return moment(value).format(" dddd");
        }
    };
    // تنظیماتی که وقتی زبان صفحه تغییر می کند
    $scope.setLangType = function (value) {
        if ($scope.Config.langType == 0) {
            toMoment = moment($scope.checkInDate.DateVal, 'YYYY/MM/DD');
            toMoment.locale('fa');
            $scope.checkInDate = {
                "DayID": toMoment.format('D'),
                "MonthID": toMoment.format('M'),
                "MonthName": toMoment.format('MMMM'),
                "YearID": toMoment.format('YYYY'),
                "DateVal": toMoment.format('YYYY/MM/DD')
            };
            toMoment = moment($scope.checkOutDate.DateVal, 'YYYY/MM/DD');
            toMoment.locale('fa');
            $scope.checkOutDate = {
                "DayID": toMoment.format('D'),
                "MonthID": toMoment.format('M'),
                "MonthName": toMoment.format('MMMM'),
                "YearID": toMoment.format('YYYY'),
                "DateVal": toMoment.format('YYYY/MM/DD')
            };
        }
        if ($scope.Config.langType == 1) {
            toMoment = moment($scope.checkInDate.DateVal, 'jYYYY/jMM/jDD');
            toMoment.locale('en');
            $scope.checkInDate = {
                "DayID": toMoment.format('D'),
                "MonthID": toMoment.format('M'),
                "MonthName": toMoment.format('MMMM'),
                "YearID": toMoment.format('YYYY'),
                "DateVal": toMoment.format('YYYY/MM/DD')
            };
            toMoment = moment($scope.checkOutDate.DateVal, 'jYYYY/jMM/jDD');
            toMoment.locale('en');
            $scope.checkOutDate = {
                "DayID": toMoment.format('D'),
                "MonthID": toMoment.format('M'),
                "MonthName": toMoment.format('MMMM'),
                "YearID": toMoment.format('YYYY'),
                "DateVal": toMoment.format('YYYY/MM/DD')
            };
        }
    };
    // آبجکت اطلاعات اتاق و افراد
    //TravelerType = 1 فرد تنها
    //TravelerType = 2 زوج
    //TravelerType = 3 خانوادگی
    //TravelerType = 4 گروهی
    //TravelerType = 5 کاری
    $scope.Occupancy = {
        "Room": 1,
        "Adults": 2,
        "Children": 0,
        "TravelerType": 2,
        "ChildrenAge": []
    };
    // ارسال اطلاعات اتاق و افراد به کنترلر مورد نظر
    $scope.$watch('Occupancy', function (newValue) {
        $scope.$broadcast('GetOccupancy', newValue);
    });
    // دریافت اطلاعات اتاق و افراد از کنترلر مورد نظر
    $scope.$on('OccupancyChanged', function (event, value) {
        $scope.Occupancy = value;

    });

    // باز شدن مدال در حالت صفحهای کوچک
    $scope.openSbModal = function () {

        var request = {};
        request.City = $scope.City;
        request.Occupancy = $scope.Occupancy;
        request.Config = {};
        request.Config.langType = $scope.Config.langType;
        request.Date = {};
        request.Date.checkInDate = $scope.checkInDate;
        request.Date.checkOutDate = $scope.checkOutDate;
        request.Date.minDate = $scope.minDate;
        var modalInstance = $uibModal.open({
            //ariaLabelledBy: 'modal-title',
            // ariaDescribedBy: 'modal-body',
            templateUrl: '/App/SB-Modal/SB-SearchEdit.html?v=14222485',
            controller: 'SB-SearchEditController',
            backdrop: 'static',
            keyboard: false,
            windowClass: 'sb-modal-content',
            //controllerAs: '$ctrl',
            size: 'lg',
            resolve: {
                request: function () {
                    return request;
                }
            }
        });
        modalInstance.result.then(function (data) {
            $scope.City = data.City;
            $scope.Occupancy = data.Occupancy;
            $scope.checkInDate = data.Date.checkInDate;
            $scope.checkOutDate = data.Date.checkOutDate;
        },
            function (data) {

            });
    };

}]);

angularFormsApp.controller("Test2PictureModalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", "hotel", function ($scope, ngProgressFactory, dataService, $uibModalInstance, hotel) {

    $scope.hotel = hotel;

    $scope.cancelForm = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("Test2MobilePictureModalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", function ($scope, ngProgressFactory, dataService, $uibModalInstance) {



    $scope.cancelForm = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("Test2MovieModalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", "hotel", function ($scope, ngProgressFactory, dataService, $uibModalInstance, hotel) {

    $scope.lstMovie = [{ ID: 1, Name: "../../video/espinas3.mp4" }, { ID: 2, Name: "../../video/espinas4.mp4" }, { ID: 3, Name: "../../video/espinas2.mp4" }, { ID: 4, Name: "../../video/espinas1.mp4" }, { ID: 5, Name: "../../video/espinas5.mp4" }];

    $scope.hotel = hotel;

    $scope.cancelForm = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("MapModalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", function ($scope, ngProgressFactory, dataService, $uibModalInstance) {
    $scope.cancelForm = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("SearchCodeController", ["$scope", "ngProgressFactory", "dataService", "$location", "$window", function ($scope, ngProgressFactory, dataService, $location, $window) {

    var lang = $("#hfLang").val();
    var resID = $("#hfResID").val();
    var hotelID = $("#hfHotelID").val();

    // $scope.mVocher = {};
    $scope.wage = 0; // کارمزد
    $scope.resIdSearchCode = 0; // برای قفل کردن اتاق و لینک پرداخت

    $scope.groupNumber = function (amount) {
        if (amount === 0)
            return amount;
        return dataService.groupNumber(amount);
    };

    $scope.searchCode = function () {

        if ($scope.resId == null || $scope.resId == "") {
            dataService.errorToaster("", "کد رزرو را انتخاب کنید");
            return;
        }
        $scope.mVocher = null;
        $scope.resIdSearchCode = 0;

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.resId = $scope.resId;
        request.lang = lang;
        request.hotelID = hotelID;

        dataService.getResInfo(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                $scope.mVocher = results.data.MyData.mVocher;
                $scope.isTherePayment = results.data.MyData.isTherePayment;
                console.log($scope.mVocher);

                for (var i = 0; i < $scope.mVocher.LstmRooms.length; i++) {
                    $scope.mVocher.mReserveInfo.BonusAmount += $scope.mVocher.LstmRooms[i].MealPrice;
                    $scope.mVocher.mReserveInfo.BonusAmount += $scope.mVocher.LstmRooms[i].SupplementPrice;
                    if ($scope.mVocher.mReserveInfo.CostAmountWithoutDiscount > 0) {
                        $scope.mVocher.mReserveInfo.CostAmountWithoutDiscount += $scope.mVocher.LstmRooms[i].MealPrice;
                        $scope.mVocher.mReserveInfo.CostAmountWithoutDiscount += $scope.mVocher.LstmRooms[i].SupplementPrice;
                    }
                }

                $scope.wage = ($scope.mVocher.mReserveInfo.BonusAmount * $scope.mVocher.mHotelInfo.WageRate) / 100;

                $scope.mVocher.mReserveInfo.BonusAmount = $scope.mVocher.mReserveInfo.BonusAmount + $scope.wage;

                if ($scope.mVocher.mReserveInfo.CostAmountWithoutDiscount > 0) {
                    $scope.mVocher.mReserveInfo.CostAmountWithoutDiscount =
                        $scope.mVocher.mReserveInfo.CostAmountWithoutDiscount + $scope.wage;
                }
                console.log($scope.mVocher);
                $scope.resIdSearchCode = $scope.resId;
                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    };

    if (resID > 0) {
        $scope.resId = resID;

        $scope.searchCode();
    }

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.request = {};
    $scope.request.ExtraInfo = {};

    $scope.lockRooms = function () {

        if ($scope.resIdSearchCode == null || $scope.resIdSearchCode == "") {
            dataService.errorToaster("", "کد رزرو را انتخاب کنید");
            return;
        }

        $scope.request.ResID = $scope.resIdSearchCode;
        $scope.request.ExtraInfo.HotelID = hotelID;

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};


        request = $scope.request;

        //console.log(request);
        dataService.lockRooms(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                window.top.location.href = results.data.MyData.PaymentUrl;

                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    };

}]);

angularFormsApp.controller("HotelsOnlineController", ["$scope", "$location", "ngProgressFactory", "dataService", function ($scope, $location, ngProgressFactory, dataService) {

    // لیست هتل ها
    $scope.getLstHotelInfo = function () {
        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        dataService.getLstHotelInfo(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.lstHotelInfo = results.data.MyData.lstHotelInfo;



                for (var j = 0; j < $scope.lstHotelInfo.length; j++) {

                    $scope.lstHotelInfo[j].Name = $scope.lstHotelInfo[j].Name.replace(/ي/g, "ی").replace(/ك/g, "ک");
                }

                $scope.lstHotelInfoTmp = $scope.lstHotelInfo;
                $scope.lstState = results.data.MyData.lstState;

                // اضافه کردن کانت به آبجکت لیست استانها
                for (var i = 0; i < $scope.lstState.length; i++) {
                    $scope.lstState[i].Count = 0;
                }

                // جمع کل هتلهایی که در استانها وجود داره
                $scope.countOfState = 0;

                // اضافه کردن تعداد هتلهای هر استان به لیست استانها
                for (var i = 0; i < $scope.lstState.length; i++) {
                    for (var j = 0; j < $scope.lstHotelInfo.length; j++) {
                        if ($scope.lstState[i].StateID == $scope.lstHotelInfo[j].StateID) {
                            $scope.lstState[i].Count += 1;
                            $scope.countOfState += 1;
                        }
                    }
                }

                // سورت برعکس استان ها (هر استان که بیشترین هتل را داشته باشد از بالا سورت میشود)

                //$scope.lstState.sort((a, b) => parseFloat(b.Count) - parseFloat(a.Count));

                $scope.progressbar.complete();

            },
            function (results) {
                $scope.progressbar.complete();

            });
    };
    $scope.getLstHotelInfo();

    $scope.goToTop = function () {
        $("html, body").animate({ scrollTop: 0 }, 1000);
    };

    // تعداد استانهایی که از ستون راست انتخاب کرده
    $scope.selectedState = function () {
        $scope.lstHotelInfoTmp = [];
        var countOfSelected = 0;
        for (var i = 0; i < $scope.lstState.length; i++) {
            if ($scope.lstState[i].Selected == true) {
                countOfSelected += 1;
                for (var j = 0; j < $scope.lstHotelInfo.length; j++) {
                    if ($scope.lstState[i].StateID == $scope.lstHotelInfo[j].StateID) {
                        $scope.lstHotelInfoTmp.push($scope.lstHotelInfo[j]);
                    }
                }
            }
        }
        if (countOfSelected == 0) {
            $scope.lstHotelInfoTmp = $scope.lstHotelInfo;
        }
    }

    $scope.getNumber = function (num) { // به تعداد گرید, ستاره تولید میکنه
        return new Array(num);
    }

    $scope.lstMLearningItem = [
        { OrderIndex: 1, Title: "مبلغ رزرو آنلاین به چه حسابی واریز می شود", STime: "00:37", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/f989e6943e6f45fe9751311a9d2e557c.mp4" },
        { OrderIndex: 2, Title: "آیا راه اندازی رزرو آنلاین هزینه دارد؟", STime: "00:24", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/b8a289911071498fac88e98c1612cf74.mp4" },
        { OrderIndex: 3, Title: "مشاهده ظرفیت هتل برای دیگران؟", STime: "00:28", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/f5891ca01bc240b882d92807704b780d.m4v" },
        { OrderIndex: 4, Title: "فروش اتاق اختصاص داده شده به رزرو آنلاین به مشتری حضوری", STime: "00:27", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/a6c8394a8b7a41ea92aa3a341a9ae1a0.mp4" },
        { OrderIndex: 5, Title: "افزایش فروش سایت هتل", STime: "00:37", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/812988a84b2a49f28f5c56009d9c56f4.m4v" },
        { OrderIndex: 6, Title: "دلیل اصلی برای آنلاین بودن", STime: "00:24", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/a2f26195b0f14e98beb85483e8b02e3b.m4v" },
        { OrderIndex: 7, Title: "ساین چیست و به چه کسانی ساین داده می شود؟", STime: "00:38", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/95af7096ee2c47a28393942aafdb042c.m4v" },
        { OrderIndex: 8, Title: "API چیست و به چه کسانی داده می شود؟", STime: "00:31", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/3e2e2dc866a74861b2ef45020499716e.m4v" },
        { OrderIndex: 9, Title: "رزرو آنلاین چه کمکی به پرسنل هتل می کند؟", STime: "00:50", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/2125c85a21954ef8a4d8a3dde2c8a058.m4v" },
        { OrderIndex: 10, Title: "آیا رزرو آنلاین راهکاری برای پرداخت ارزی دارد؟", STime: "00:31", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/a17caa96fc234f809199ead37e1d155c.m4v" },
        { OrderIndex: 11, Title: "آیا در رزرو آنلاین احتمال اور بوک وجود دارد؟", STime: "00:27", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/147b47a8accc48f5a3bbf9fc0d309ef6.mp4" },
        { OrderIndex: 12, Title: "امکان تعریف انواع فروش", STime: "00:29", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/708b7759db064700874ca24bdb92ecea.mp4" },
        { OrderIndex: 13, Title: "فواید استفاده از تیپ قرادادی چیست؟", STime: "00:44", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/c9e38cf96dd94f04a24cc797f736365a.mp4" },
        { OrderIndex: 14, Title: "چگونه عکس اتاق را بارگذاری کنم ؟", STime: "00:35", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/aeb4746901ec436aa754dc477f2df307.m4v" },
        { OrderIndex: 15, Title: "اگر سایت نداشته باشیم میتوانیم رزرو انلاین داشته باشیم ؟", STime: "00:39", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/b42cdb34e4724ba3b16830334c0cb24f.m4v" },
        { OrderIndex: 16, Title: "ارتباط برنامه پذیرش با پنلی که آژانس ها به هتل می دهند چیست؟", STime: "00:39", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/9fc76ab13ca8474c8421fd4aaa557b80.mp4" },
        { OrderIndex: 17, Title: "اگر رزرو انلاین انجام شود هتل از کجا متوجه می شود؟", STime: "00:33", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/1f3eac9a6cb2482db9173110c2d246f3.m4v" },
        { OrderIndex: 18, Title: "چه هتل هایی تاکنون آنلاین شده اند؟", STime: "00:38", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/46964089bab14c949dc88cdd823ea086.m4v" },
        { OrderIndex: 19, Title: "آیا مهمان شماره اتاق را رزرو میکند یا نوع اتاق را ؟", STime: "00:31", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/9c7c13d8a20b4452a13605d6f746492e.m4v" },
        { OrderIndex: 20, Title: "رزرو آنلاین به صورت نقدی است یا اعتباری؟", STime: "00:25", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/e6575e13fd5e4b4094478e3b497cb595.mp4" },
        { OrderIndex: 21, Title: "مهمان چگونه از قوانین هتل مطلع می شود ؟", STime: "00:31", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/c41ba53668294b478c5370200a179847.m4v" },
        { OrderIndex: 22, Title: "چگونه می توان به مهمان هتل تخفیف داد؟", STime: "00:37", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/3b0f666a090d4cc5af0aa5c289210c3b.m4v" },
        { OrderIndex: 23, Title: "کنسلی در رزرو آنلاین چگونه است؟", STime: "00:50", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/12e2d9990b6b4c639b977dcdf744d2a5.m4v" },
        { OrderIndex: 24, Title: "آیا مهمان در لحظه ی رزرو واچر دریافت می کند ؟", STime: "00:28", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/17e7dac8bd8e43faacdfbb1bc4df63de.m4v" },
        { OrderIndex: 25, Title: "آیا امکان مراجعه حضوری برای راه اندازی سیستم رزرو آنلاین وجود دارد ؟", STime: "00:26", Url: "https://Admin.NetMinder.HarrisNewTech.ir/Images/ab7d770fdc1248dea75e13c30cc1f9d7.m4v" }
    ];

}]);

angularFormsApp.controller("ModalShowDefaultNoteController", ["$scope", "dataService", "$uibModalInstance", "data", "$sce", function ($scope, dataService, $uibModalInstance, data, $sce) {
    $scope.data = data;
    $scope.trustedHtml = function (plainText) {
        return $sce.trustAsHtml(plainText);
    }
    $scope.ok = function () {
        $uibModalInstance.close();
    };

}]);

angularFormsApp.controller("VoucherPrintController", ["$scope", "ngProgressFactory", "dataService", "$location", "$uibModal", function ($scope, ngProgressFactory, dataService, $location, $uibModal) {

    $scope.getVoucher = function () {

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.resId = $("#hfResID").val();
        request.lang = $("#hfLang").val();

        dataService.getResInfo(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.resInfo = results.data.MyData.mVocher;
                //console.log($scope.resInfo);
                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    };
    $scope.getVoucher();

    $scope.getFaLink = function () {

        const url = $location.$$absUrl.split("/"); // گرفتن Url


        window.location = url[0] + "/" + url[1] + "/" + url[2] + "/fa/" + url[4] + "/" + url[5] + "/" + url[6];
    };

    $scope.getEnLink = function () {

        const url = $location.$$absUrl.split("/"); // گرفتن Url

        window.location = url[0] + "/" + url[1] + "/" + url[2] + "/en/" + url[4] + "/" + url[5] + "/" + url[6];
    };

    $scope.share = function () {

        var modalInstance = $uibModal.open({
            templateUrl: '/app/Themplates/VoucherPrintShareTpl.html?v=' + dataService.getVersion(),
            controller: 'VoucherPrintShareController',
            //backdrop: 'static',
            keyboard: false,
            size: 'md',
            resolve: {
            }
        });
        modalInstance.result.then(function (data) {

        },
            function (data) {
            });
    };

    $scope.groupNumber = function (amount) {
        if (amount === 0)
            return amount;
        return dataService.groupNumber(amount);
    };

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.printWindow = function () {
        window.print();
    }



}]);

angularFormsApp.controller("VoucherPrintShareController", ["$scope", "ngProgressFactory", "$uibModalInstance", "dataService", "$location", "clipboard", "$window", function ($scope, ngProgressFactory, $uibModalInstance, dataService, $location, clipboard, $window) {

    $scope.btnCopyLink = function () {
        clipboard.copyText($location.$$absUrl);
        dataService.successToaster("", "لینک کپی شد");
        $uibModalInstance.close();
    };

    $scope.btnWhatsApp = function () {
        var screenWidth = $window.innerWidth;
        if (screenWidth < 733) {
            window.location = "https://api.whatsapp.com/send?text=" + $location.$$absUrl;

        } else {
            window.location = "https://web.whatsapp.com/send?text=" + $location.$$absUrl;
        }
    };

    $scope.btnTwitter = function () {
        window.location = "https://twitter.com/intent/tweet?url=" + $location.$$absUrl;
    };

    $scope.btnFacebook = function () {
        window.location = "https://www.facebook.com/sharer.php?u=" + $location.$$absUrl;
    };

    $scope.cancelForm = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("SurveyController", ["$scope", "ngProgressFactory", "dataService", function ($scope, ngProgressFactory, dataService) {

    var resID = $("#hfResID").val();

    $scope.lstReason = [
        { ID: 1, Name: "نداشتن رمز دوم کارت بانکی" },
        { ID: 2, Name: "عدم هدایت به درگاه بانکی در زمان کلیک روی دکمه پرداخت و دریافت واچر" },
        { ID: 3, Name: "انصراف از رزرو به دلایل شخصی" },
        { ID: 4, Name: "عدم موجودی کافی در کارت" },
        { ID: 5, Name: "اشتباه در وارد کردن تاریخ انقضای کارت" },
        { ID: 6, Name: "قطعی اینتر نت" },
        { ID: 7, Name: "نا معتبر بودن کارت" },
        { ID: 8, Name: "مشکل از درگاه بانک" },
        { ID: 9, Name: "مجدد تلاش کردم و رزروم انجام شد" }
    ];

    var reasonID = 0;

    $scope.selectReason = function (reason) {
        for (var i = 0; i < $scope.lstReason.length; i++) {
            $scope.lstReason[i].Selected = false;
        }
        reason.Selected = true;
        reasonID = reason.ID;
    };

    $scope.saveReasonFailed = function () {

        if (reasonID === 0 && $scope.Comment == null) {
            dataService.errorToaster(" ", "لطفا یک گزینه را انتخاب کنید یا توضیحاتی وارد نمایید ");
            return;
        }

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};
        request.ResID = resID;
        request.Comment = $scope.Comment;
        request.ReasonFailedID = reasonID;
        request.success = false;
        dataService.saveReasonFailed(request).then(
            function (results) {
                $scope.progressbar.complete();
                if (results.data.Error !== null) {
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                window.location = "/fa/Survey/Finish";
                //dataService.successToaster("انجام شد", "اطلاعات شما با موفقیت ثبت شد");
            },
            function (results) {
                $scope.progressbar.complete();
                dataService.checkAccess(results);
            });
    };

    $scope.saveSuccess = function () {

        if ($scope.Comment == null || $scope.Comment == "") {
            dataService.errorToaster(" ", "لطفا توضیحات را وارد نمایید ");
            return;
        }

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};
        request.ResID = resID;
        request.Comment = $scope.Comment;
        request.ReasonFailedID = reasonID;
        request.success = true;

        dataService.saveSuccess(request).then(
            function (results) {
                $scope.progressbar.complete();
                if (results.data.Error !== null) {
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                window.location = "/fa/Survey/Finish";
                //dataService.successToaster("انجام شد", "اطلاعات شما با موفقیت ثبت شد");
            },
            function (results) {
                $scope.progressbar.complete();
                dataService.checkAccess(results);
            });
    };

}]);

angularFormsApp.controller("GuestController", ["$scope", "ngProgressFactory", "dataService", "$uibModal", function ($scope, ngProgressFactory, dataService, $uibModal) {


    $scope.folioNo = $("#hfFolioNo").val();
    var hotelID = $("#hfHotelID").val();

    $scope.residentGuest = null;

    $scope.getGuestInfo = function () {

        if ($scope.folioNo == null || $scope.folioNo == "") {
            dataService.errorToaster("", "کد پذیرش را وارد کنید");
            return;
        }

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};
        request.folioNo = $scope.folioNo;
        request.hotelID = hotelID;

        dataService.getGuestInfo(request).then(
            function (results) {
                $scope.progressbar.complete();
                if (results.data.Error !== null) {
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                $scope.residentGuest = results.data.MyData.residentGuest;
            },
            function (results) {
                $scope.progressbar.complete();
                dataService.checkAccess(results);
            });
    };

    $scope.checkRoomAvailability = function () {



        if ($scope.newDate == null || $scope.newDate == "") {
            dataService.errorToaster("", "تاریخ خروج را انتخاب کنید");
            return;
        }
        window.location = "/fa?a=" + $scope.residentGuest.CheckOutDateVal + "&d=" + $scope.newDate;
    };

    $scope.openModalNewDate = function () {

        var request = {};
        request.Config = {};
        request.Config.DSC = 1;
        request.Config.DSCT = 1;
        request.Config.DSM = 0;
        request.Config.DSY = 0;
        request.Config.Title = "انتخاب تاریخ";
        request.Config.CalType = 0;
        request.Config.MinDate = $scope.residentGuest.CheckOutDateVal;
        request.Config.Date = $scope.AddDays($scope.residentGuest.CheckOutDateVal, 1, 1);
        var modalInstance = $uibModal.open({
            templateUrl: '/App/NM-DatePicker/NM-DatePicker.html?v=3',
            controller: 'NM-DatePickerController',
            //backdrop: 'static',
            keyboard: false,
            windowClass: 'nc-modal-content',
            size: 'sm',
            resolve: {
                request: function () {
                    return request;
                }
            }
        });
        modalInstance.result.then(function (data) {

            if (data != null) {
                $scope.newDate = data.DateVal;
            }
        },
            function (data) {

            });
    };

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.AddDays = function (date, days, calType) {
        if (calType == 0) {
            m = moment(date, 'jYYYY/jMM/jDD');
            m.locale('fa');
            m.add(days, 'days');
            return m.format('YYYY/MM/DD');
        }
        else {
            m = moment(date, 'YYYY/MM/DD');
            m.locale('en');
            m.add(days, 'days');
            return m.format('YYYY/MM/DD');
        }
    };
}]);

angularFormsApp.controller("SightseeController", ["$scope", "ngProgressFactory", "dataService", "$uibModal", function ($scope, ngProgressFactory, dataService, $uibModal) {

    $scope.lstCat = [];

    var hotelID = $("#hfHotelID").val();
    $scope.getLstSightseeCat = function () {
        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        dataService.getLstSightseeCat(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.lstCat = results.data.MyData;

                $scope.progressbar.complete();

            },
            function (results) {
                $scope.progressbar.complete();

            });
    };
    $scope.getLstSightseeCat();

    $scope.openSightseeMpdal = function (cat) {

        cat.hotelID = hotelID;
        var modalInstance = $uibModal.open({
            templateUrl: '/App/Themplates/SightseeModalTpl.html?v=' + dataService.getVersion(),
            controller: 'SightseeMpdalController',
            //backdrop: 'static',
            keyboard: false,
            //windowClass: 'nm-modal-content',
            size: 'lg',
            resolve: {
                cat: function () {
                    return cat;
                }
            }
        });
        modalInstance.result.then(function (data) {

        },
            function (data) {

            });
    };

}]);

angularFormsApp.controller("SightseeMpdalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", "cat", "$uibModal", function ($scope, ngProgressFactory, dataService, $uibModalInstance, cat, $uibModal) {

    $scope.cat = cat;

    $scope.getLstSightsee = function () {
        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};
        request.catID = cat.ID;
        request.hotelID = cat.hotelID;

        dataService.getLstSightsee(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.lstSightsee = results.data.MyData;

                $scope.progressbar.complete();

            },
            function (results) {
                $scope.progressbar.complete();

            });
    };
    $scope.getLstSightsee();

    $scope.openSightseeDetails2Modal = function (id) {

        var modalInstance = $uibModal.open({
            templateUrl: '/App/Themplates/SightseeDetailsModalTpl.html?v=' + dataService.getVersion(),
            controller: 'SightseeDetails2Controller',
            //backdrop: 'static',
            keyboard: false,
            //windowClass: 'nm-modal-content',
            size: 'lg',
            resolve: {
                id: function () {
                    return id;
                }
            }
        });
        modalInstance.result.then(function (data) {
        },
            function (data) {
            });
    };

    $scope.cancelForm = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("SightseeDetailsController", ["$scope", "ngProgressFactory", "dataService", "$sce", function ($scope, ngProgressFactory, dataService, $sce) {


    // اطلاعات این قسمت رو هم تو مدال(SightseeDetailsMpdalTpl)  و  هم تو صفحه (Details)نشون میده

    var sightseeID = $("#hfSightseeID").val();

    $scope.trustedHtml = function (plainText) {
        return $sce.trustAsHtml(plainText);
    };

    $scope.getLstSightseeDetail = function () {
        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};
        request.sightseeID = sightseeID;

        dataService.getLstSightseeDetail(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.sightseeDetail = results.data.MyData;

                $scope.progressbar.complete();

            },
            function (results) {
                $scope.progressbar.complete();

            });
    };
    $scope.getLstSightseeDetail();

    // نمایش لایت اسلایدر 
    $scope.showLightSlider = function (id) {

        $scope.data = [];

        var pic = "#pic" + id;

        for (var i = 0; i < $scope.sightseeDetail.LstImgUrl.length; i++) {
            $scope.data.push({
                "src": $scope.sightseeDetail.LstImgUrl[i],
                'thumb': $scope.sightseeDetail.LstImgUrl[i]
            });
        }

        $(pic).lightGallery({
            dynamic: true,
            dynamicEl: $scope.data
        });
    };

}]);

angularFormsApp.controller("SightseeDetails2Controller", ["$scope", "ngProgressFactory", "$uibModalInstance", "dataService", "$sce", "id", function ($scope, ngProgressFactory, $uibModalInstance, dataService, $sce, id) {


    // اطلاعات این قسمت رو هم تو مدال(SightseeDetailsMpdalTpl)  و  هم تو صفحه (Details)نشون میده


    $scope.trustedHtml = function (plainText) {
        return $sce.trustAsHtml(plainText);
    };

    $scope.getLstSightseeDetail = function () {
        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};
        request.sightseeID = id;

        dataService.getLstSightseeDetail(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.sightseeDetail = results.data.MyData;

                $scope.progressbar.complete();

            },
            function (results) {
                $scope.progressbar.complete();

            });
    };
    $scope.getLstSightseeDetail();

    // نمایش لایت اسلایدر 
    $scope.showLightSlider = function (id) {

        $scope.data = [];

        var pic = "#pic" + id;

        for (var i = 0; i < $scope.sightseeDetail.LstImgUrl.length; i++) {
            $scope.data.push({
                "src": $scope.sightseeDetail.LstImgUrl[i],
                'thumb': $scope.sightseeDetail.LstImgUrl[i]
            });
        }

        $(pic).lightGallery({
            dynamic: true,
            dynamicEl: $scope.data
        });
    };

    $scope.cancelForm = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("ResSearchController", ["$scope", "ngProgressFactory", "dataService", "$location", "$uibModal", "$timeout", function ($scope, ngProgressFactory, dataService, $location, $uibModal, $timeout) {

    $scope.lstHotel = [{ ID: 1, Name: "1" }, { ID: 2, Name: "2" }, { ID: 3, Name: "3" }];

    $scope.EnToFaDigits = function (input) {
        return dataService.EnToFaDigits(input);
    };

    $scope.goToResRoom = function (hotelID) {

        if ($scope.checkIn == null || $scope.checkIn === '') {
            dataService.errorToaster("", "تاریخ ورود را انتخاب نمایید");
            return;
        }
        if ($scope.checkOut == null || $scope.checkOut === '') {
            dataService.errorToaster("", "تاریخ خروج را انتخاب نمایید");
            return;
        }

        $location.path("/Room/" + $scope.checkIn.replace(/\//g, '') + "/" + $scope.checkOut.replace(/\//g, '') + "/" + hotelID);
    };

    $scope.hidethis = false;

    $scope.getLstSearch = function () {
        var request = {};
        request.Phrase = $scope.Phrase;
        dataService.getLstSearch(request).then(
            function (results) {
                if (results.data.Error !== null) {
                    //dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                $scope.lst = results.data.MyData;
            },
            function (results) {
            });
    };

    $scope.myBlur = function () {
        $timeout(function () {
            $scope.hidethis = true;
        }, 100);
    };


    var item1 = {};
    $scope.selectItem = function (item) {

        item1 = item;
        $scope.Phrase = item.Name;
        $scope.hidethis = true;
    };

    $scope.goToTop = function () {
        $("html, body").animate({ scrollTop: $(".offer").height() + 100 }, 2000);
    };

    $scope.getNumber = function (num) { // برای ستاره های ستون سمت راست که به شماره آیدی, ستاره تولید میکنه
        return new Array(num);
    }

    $scope.lstSorting = [
        { ID: 4, Name: "کمترین قیمت" },
        { ID: 3, Name: "بیشترین قیمت" },
        { ID: 2, Name: "بالاترین تخفیف" },
        { ID: 1, Name: "پربازدیدترین" },
        { ID: 0, Name: "پرفروش‌ترین" }];

    $scope.getLstSearchHotels = function () {


        if ($scope.Phrase == null || $scope.Phrase === '') {
            dataService.errorToaster("", "شهر یا هتل مورد نظر را انتخاب کنید");
            return;
        }
        if ($scope.checkIn == null || $scope.checkIn === '') {
            dataService.errorToaster("", "تاریخ ورود را انتخاب نمایید");
            return;
        }
        if ($scope.checkOut == null || $scope.checkOut === '') {
            dataService.errorToaster("", "تاریخ خروج را انتخاب نمایید");
            return;
        }
        $scope.item2 = item1;
        $scope.item2.checkIn = $scope.checkIn;
        $scope.item2.checkOut = $scope.checkOut;

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        //request.cityID = 103;
        //request.hotelID = 101537;
        request.name = $scope.Phrase;
        request.checkInDateVal = $scope.checkIn.replace(/\//g, '');
        request.checkOutDateVal = $scope.checkOut.replace(/\//g, '');

        dataService.getLstSearchHotels(request).then(
            function (results) {
                $scope.progressbar.complete();

                if (results.data.Error !== null) {
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.lstResSearch = results.data.MyData;

                $scope.lstResSearch2 = results.data.MyData;

            },
            function (results) {
                $scope.progressbar.complete();
                dataService.checkAccess(results);
            });
    };

    $scope.lststars = [{ ID: 5 }, { ID: 4 }, { ID: 3 }, { ID: 2 }, { ID: 1 }];

    $scope.sortKey = "score";

    $scope.sorting = 0;

    $scope.lstTab = [true, false, false, false, false];

    $scope.ChangeTab = function (arg) {
        switch (arg) {
            case 0:
                $scope.sortKey = "score";
                break;
            case 1:
                $scope.sortKey = "View";
                break;
            case 2:
                $scope.sortKey = "-DiscRate";
                break;
            case 3:
                $scope.sortKey = "-Price2";
                break;
            case 4:
                $scope.sortKey = "Price2";
                break;
            default: $scope.sortKey = "score";
        }
        for (var i = 0; i < 5; i++) {
            if (i === arg) {
                $scope.lstTab[i] = true;
            } else {
                $scope.lstTab[i] = false;
            }
        }
    }

    $scope.getHotelStars = function (data) {

        $scope.lststars1 = [];

        if (data != null) {

            for (var l = 0; l < data.length; l++) {
                $scope.lststars1.push(data[l]);
            }

            for (var j = 0; j < $scope.lststars1.length; j++) {

                for (var i = 0; i < $scope.lststars.length; i++) {

                    if ($scope.lststars[i].ID === $scope.lststars1[j])
                        $scope.lststars[i].Selected = true;
                }
            }

        }
        if (data == null) {
            for (var k = 0; k < $scope.lststars.length; k++) {
                if ($scope.lststars[k].Selected) {
                    $scope.lststars1.push($scope.lststars[k].ID);
                }
            }
        }


        $scope.lstResSearch3 = [];

        for (var j = 0; j < $scope.lststars1.length; j++) {

            for (var i = 0; i < $scope.lstResSearch.length; i++) {

                if ($scope.lstResSearch[i].Grade === $scope.lststars1[j])

                    $scope.lstResSearch3.push($scope.lstResSearch[i]);
            }
        }

        if ($scope.lstResSearch3.length > 0) {
            $scope.lstResSearch2 = $scope.lstResSearch3;

        } else {
            $scope.lstResSearch2 = $scope.lstResSearch;
        }
    };

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.groupNumber = function (amount) {
        return dataService.groupNumber(amount);
    };

    $scope.openModalFilter = function () {

        var modalInstance = $uibModal.open({
            templateUrl: '/app/Themplates/ResSearchFilterModalTpl.html?v=' + dataService.getVersion(),
            controller: 'ResSearchFilterModalController',
            backdrop: 'static',
            keyboard: false,
            size: 'lg',
            resolve: {
                lststars1: function () {
                    return $scope.lststars1;
                }
            }
        });
        modalInstance.result.then(function (data) {
            $scope.getHotelStars(data);
        },
            function (data) {

            });
    };

}]);

angularFormsApp.controller("OnlineTicketController", ["$scope", "ngProgressFactory", "dataService", "$uibModal", function ($scope, ngProgressFactory, dataService, $uibModal) {

    $scope.getLstOnlineTicket = function () {

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        dataService.getLstOnlineTicket(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                $scope.lstOnlineTicket = results.data.MyData.lstOnlineTicket;
                $scope.hotelInfo = results.data.MyData.hotelInfo;
                console.log($scope.hotelInfo);
                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    };
    $scope.getLstOnlineTicket();

    $scope.openOnlineTicketModal = function (ticket) {

        var modalInstance = $uibModal.open({
            templateUrl: '/app/Themplates/OnlineTicketModalTpl.html?v=' + dataService.getVersion(),
            controller: 'OnlineTicketModalController',
            backdrop: 'static',
            keyboard: false,
            size: 'lg',
            resolve: {
                ticket: function () {
                    return ticket;
                }
            }
        });
        modalInstance.result.then(function (data) {
        },
            function (data) {

            });
    };

}]);

angularFormsApp.controller("OnlineTicketModalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", "ticket", "$location", "$window", function ($scope, ngProgressFactory, dataService, $uibModalInstance, ticket, $location, $window) {

    $scope.groupNumber = function (amount) {
        if (amount === 0)
            return amount;
        return dataService.groupNumber(amount);
    };

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.ticket = ticket;

    $scope.lstSans = [];

    $scope.timeId = 0;
    $scope.price = 0;
    $scope.priceShow = 0;
    $scope.count = 1;

    // نمایش تب های تاریخ
    $scope.changeTab = function (arg) {
        $scope.count = 1;
        $scope.showTabs = arg;

        for (var i = 0; i < $scope.lstOnlineTicketDate.length; i++) {
            if ($scope.lstOnlineTicketDate[i].ID === arg) {

                $scope.lstSans = [];

                for (var j = 0; j < $scope.lstOnlineTicketDate[i].LstOnlineTicketSans.length; j++) {

                    $scope.lstSans.push($scope.lstOnlineTicketDate[i].LstOnlineTicketSans[j]);

                    $scope.timeId = $scope.lstOnlineTicketDate[i].ID;

                    $scope.changeSanse($scope.lstSans[0].ID);
                }
            }
        }

    }

    $scope.getOnlineTicketDetail = function () {

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.onlineTicketID = ticket.ID;

        dataService.getOnlineTicketDetail(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $uibModalInstance.dismiss();
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                $scope.lstOnlineTicketDate = results.data.MyData;

                $scope.changeTab($scope.lstOnlineTicketDate[0].ID);

                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    };
    $scope.getOnlineTicketDetail();

    $scope.changeSanse = function (arg) {
        $scope.count = 1;
        $scope.showSans = arg;

        for (var i = 0; i < $scope.lstOnlineTicketDate.length; i++) {
            if ($scope.lstOnlineTicketDate[i].ID === $scope.timeId) {
                for (var j = 0; j < $scope.lstOnlineTicketDate[i].LstOnlineTicketSans.length; j++) {
                    if ($scope.lstOnlineTicketDate[i].LstOnlineTicketSans[j].ID == arg) {
                        $scope.price = $scope.lstOnlineTicketDate[i].LstOnlineTicketSans[j].Price;
                        $scope.priceShow = $scope.lstOnlineTicketDate[i].LstOnlineTicketSans[j].Price;
                        $scope.sale = $scope.lstOnlineTicketDate[i].LstOnlineTicketSans[j].Count - $scope.lstOnlineTicketDate[i].LstOnlineTicketSans[j].Sale;
                    }
                }
            }
        }

    }

    $scope.addSans = function (add) {
        $scope.count = $scope.count + add
        if ($scope.count >= 1)
            $scope.priceShow = $scope.price * $scope.count;
        else {
            $scope.count = 1
        }
    }

    $scope.getPaymentLink = function () {
        if ($scope.Name == null || $scope.Name == "") {
            dataService.errorToaster("خطا", "نام را وارد کنید");
            return;
        }
        if ($scope.Mobile == null || $scope.Mobile == "") {
            dataService.errorToaster("خطا", "موبایل را وارد کنید");
            return;
        }
        if ($scope.Mobile[0] !== "0" || $scope.Mobile[1] !== "9" || $scope.Mobile.length < 11) {
            dataService.errorToaster("خطا", "شماره موبایل اشتباه است");
            return;
        }
        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.OnlineTicketID = ticket.ID;

        for (var i = 0; i < $scope.lstOnlineTicketDate.length; i++) {
            if ($scope.lstOnlineTicketDate[i].ID == $scope.showTabs) {
                request.DateVal = $scope.lstOnlineTicketDate[i].DateVal;
                for (var j = 0; j < $scope.lstOnlineTicketDate[i].LstOnlineTicketSans.length; j++) {
                    if ($scope.lstOnlineTicketDate[i].LstOnlineTicketSans[j].ID == $scope.showSans) {
                        request.SansStart = $scope.lstOnlineTicketDate[i].LstOnlineTicketSans[j].StartTime;
                        request.SansEnd = $scope.lstOnlineTicketDate[i].LstOnlineTicketSans[j].EndTime;
                        request.Fee = $scope.lstOnlineTicketDate[i].LstOnlineTicketSans[j].Price;
                        request.OnlineTicketSansID = $scope.lstOnlineTicketDate[i].LstOnlineTicketSans[j].ID;
                    }
                }
            }
        }

        request.Count = $scope.count;
        request.BookedName = $scope.Name;
        request.Mobile = $scope.Mobile;

        dataService.getPaymentLink(request).then(
            function (results) {
                if (results.data.Error !== null) {
                    $uibModalInstance.dismiss();
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                window.top.location.href = results.data.MyData;
                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();
            });
    };

    $scope.cancel = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("ReceiptInfoController", ["$scope", "ngProgressFactory", "dataService", function ($scope, ngProgressFactory, dataService) {

    $scope.groupNumber = function (amount) {
        if (amount === 0)
            return amount;
        return dataService.groupNumber(amount);
    };

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.getReceiptInfo = function () {

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.resId = $("#hfResID").val();

        dataService.getReceiptInfo(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.onlineTicketOrder = results.data.MyData.onlineTicketOrder;
                $scope.onlineTicket = results.data.MyData.onlineTicket;

                //console.log($scope.onlineTicketOrder);
                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    };
    $scope.getReceiptInfo();

}]);

angularFormsApp.controller("CancelResController", ["$scope", "ngProgressFactory", "dataService", "$uibModal", function ($scope, ngProgressFactory, dataService, $uibModal) {

    // نمایش واچر
    $scope.getVoucherCancelRes = function () {

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.lang = $("#hfLang").val();

        dataService.getVoucherCancelRes(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.resInfo = results.data.MyData;

                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    };
    $scope.getVoucherCancelRes();


    $scope.groupNumber = function (amount) {
        if (amount === 0)
            return amount;
        return dataService.groupNumber(amount);
    };

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.printWindow = function () {

        window.print();
    }

    // کنسل کردن رزرو
    $scope.openCanselReserveModal = function () {
        console.log($scope.resInfo.mReserveInfo.WebResId);
        console.log($("#hfHotelID").val());
        console.log($scope.resInfo.mReserveInfo.WsResNO);
        var modalInstance = $uibModal.open({
            templateUrl: '/app/Themplates/CanselReserveModalTpl.html?v=' + dataService.getVersion(),
            controller: 'CanselReserveModalController',
            backdrop: 'static',
            keyboard: false,
            size: 'md',
            resolve: {
                resId: function () {
                    return $scope.resInfo.mReserveInfo.WebResId; // شماره رزرو سایت
                },
                hotelId: function () {
                    return $("#hfHotelID").val(); // هتل کُد
                },
                hotelResNo: function () {
                    return $scope.resInfo.mReserveInfo.WsResNO; // شماره رزرو هتل
                }
            }
        });
        modalInstance.result.then(function (data) {

            $scope.resInfo.mReserveInfo.Canceled = true;
        },
            function (data) {

            });
    };

    // خروج
    $scope.signOut = function () {

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};
        dataService.signOut(request).then(
            function (results) {
                $scope.progressbar.complete();
                if (results.data.Error !== null) {
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                window.location = '/';

            },
            function (results) {
                $scope.progressbar.complete();
                dataService.checkAccess(results);
            });
    };

}]);

angularFormsApp.controller("CanselReserveModalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", "resId", "hotelId", "hotelResNo", function ($scope, ngProgressFactory, dataService, $uibModalInstance, resId, hotelId, hotelResNo) {

    // نبدیل اعداد فارسی به انگلیسی
    String.prototype.toEnDigit = function () {
        return this.replace(/[\u06F0-\u06F9]+/g, function (digit) {
            var ret = '';
            for (var i = 0, len = digit.length; i < len; i++) {
                ret += String.fromCharCode(digit.charCodeAt(i) - 1728);
            }

            return ret;
        });
    };

    $scope.lstReason = [
        { ID: 1, Name: "تغییر برنامه مسافرت" },
        { ID: 2, Name: "انتخاب هتل دیگر" },
        { ID: 3, Name: "کنسلی پرواز" },
        { ID: 4, Name: "بیماری" },
        { ID: 5, Name: "شخصی" },
        { ID: 6, Name: "قیمت" },
        { ID: 7, Name: "سایر" }];

    $scope.groupNumber = function (amount) {
        if (amount === 0)
            return amount;
        return dataService.groupNumber(amount);
    };

    $scope.getCancelInfo = function () {

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.resId = resId;
        request.hotelId = hotelId;
        /*console.log(request);*/
        dataService.getCancelInfo(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    $uibModalInstance.dismiss();
                    return;
                }

                $scope.penalty = results.data.MyData;

                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    }
    $scope.getCancelInfo();

    $scope.cancelReserve = function () {

        if ($scope.fName == null || $scope.fName == "") {
            dataService.errorToaster("خطا", "نام صاحب حساب را وارد کنید");
            return;
        }
        if ($scope.lName == null || $scope.lName == "") {
            dataService.errorToaster("خطا", "نام خانوادگی صاحب حساب را وارد کنید");
            return;
        }

        if ($scope.shebaNum == null || $scope.shebaNum == "") {
            dataService.errorToaster("خطا", "شماره شبا را وارد کنید");
            return;
        }
        if ($scope.shebaNum.length <= 23) {
            dataService.errorToaster("خطا", "شماره شبا به درستی وارد نشده");
            return;
        }

        if ($scope.reason == null || $scope.reason == "") {

            dataService.errorToaster("خطا", "لطفا علت کنسلی را انتخاب کنید");
            return;
        }

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.resId = resId;
        request.hotelId = hotelId;
        request.fName = $scope.fName;
        request.lName = $scope.lName;
        request.shebaNum = $scope.shebaNum.toEnDigit();
        request.reason = $scope.reason;
        request.hotelResNo = hotelResNo;
        //console.log(request);
        dataService.cancelReserve(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    $uibModalInstance.dismiss();
                    return;
                }

                $scope.penalty = results.data.MyData;

                //console.log($scope.penalty);
                if ($scope.penalty == true) {
                    dataService.successToaster("انجام شد", "رزرو شما با موفقیت لغو شد.");
                    $uibModalInstance.close();
                } else {
                    dataService.errorToaster("خطا", "متاسفانه رزرو شما لغو نشد");
                    $uibModalInstance.dismiss();
                }

                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    }

    $scope.cancelForm = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("InfoController", ["$scope", "ngProgressFactory", "dataService", "$uibModal", function ($scope, ngProgressFactory, dataService, $uibModal) {

    $scope.hotelResNo = $("#hfHotelResNo").val();

    // فرستادن کد تایید و نمایش واچر
    $scope.getVoucherCancelRes = function () {

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.hotelResNo = $scope.hotelResNo;
        request.lang = $("#hfLang").val();
        request.hotelId = $("#hfHotelID").val();
        //console.log(request);
        dataService.getVoucherCancelRes(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.resInfo = results.data.MyData;

                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    };
    $scope.getVoucherCancelRes();

    $scope.groupNumber = function (amount) {
        if (amount === 0)
            return amount;
        return dataService.groupNumber(amount);
    };

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    $scope.printWindow = function () {
        window.print();
    }

}]);


angularFormsApp.controller("GuestInfoController", ["$scope", "ngProgressFactory", "dataService", "$uibModal", function ($scope, ngProgressFactory, dataService, $uibModal) {

    $scope.getLstGuestInfo = function () {

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        dataService.getLstGuestInfo(request).then(
            function (results) {
                $scope.progressbar.complete();
                if (results.data.Error !== null) {

                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                $scope.gradeId = [];
                $scope.guestInfo = results.data.MyData.getFastCheckinRs;
                $scope.mHotelInfo = results.data.MyData.mHotelInfo;
                $scope.resNo = $scope.guestInfo.ResNo;

                $scope.guestInfoForcible = $scope.guestInfo.GuestInfoForcible;
                // تولید ستاره
                if ($scope.mHotelInfo.GradeId > 0) {
                    for (var i = 0; i < $scope.mHotelInfo.GradeId; i++) {
                        $scope.gradeId.push(1);
                    }
                }
                //console.log($scope.guestInfoForcible);

            },
            function (results) {
                $scope.progressbar.complete();
            });
    };
    $scope.getLstGuestInfo();

    $scope.delete = function (guestInfo) {

        var lstGuestInfo = [];

        // حذفش شبیه ذخیره است فقط دیلیت رو یک میزاریم 
        guestInfo.Deleted = true;

        // چون سمت سرور لیست میگیره ما هم لیست بهش می دیم
        lstGuestInfo.push(guestInfo);

        var modalInstance = $uibModal.open({
            templateUrl: '/app/Themplates/ConfirmTpl.html?v=' + dataService.getVersion(),
            controller: 'ConfirmController',
            backdrop: 'static',
            keyboard: false,
            size: 'md'
        });
        modalInstance.result.then(function (data) { //agar dorost bood ein method ejra misheh(ok button)
            $scope.progressbar = ngProgressFactory.createInstance();
            $scope.progressbar.start();
            var request = {};

            request.lstGuestInfo = lstGuestInfo;

            dataService.deleteGuestInfo(request).then(
                function (results) {
                    $scope.progressbar.complete();
                    //console.log(results.data);
                    if (results.data.Error !== null) {
                        dataService.errorToaster("خطا", results.data.Error.Text);
                        return;
                    }
                    $scope.guestInfo = results.data.MyData;


                    dataService.successToaster("انجام شد", "اطلاعات شما با موفقیت حذف شد");

                },
                function (results) {
                    $scope.progressbar.complete();
                    dataService.checkAccess(results);
                });
        },
            function (data) {//agar dorost nabood ein method ejra misheh
                //no thing
            });
    };

    $scope.openGuestInfoModal = function (guestInfo) {

        var modalInstance = $uibModal.open({
            templateUrl: '/app/Themplates/GuestInfoModalTpl.html?v=' + dataService.getVersion(),
            controller: 'GuestInfoModalController',
            backdrop: 'static',
            keyboard: false,
            size: 'lg',
            resolve: {
                guestInfo: function () {
                    return guestInfo;
                },
                guestInfoForcible: function () {
                    return $scope.guestInfoForcible;
                }
            }
        });
        modalInstance.result.then(function (data) {
            $scope.guestInfo = data;
        },
            function (data) {

            });
    };

}]);

angularFormsApp.controller("GuestInfoModalController", ["$scope", "ngProgressFactory", "dataService", "$uibModalInstance", "guestInfo", "guestInfoForcible", function ($scope, ngProgressFactory, dataService, $uibModalInstance, guestInfo, guestInfoForcible) {

    $scope.getDateFormat = function (dateVal) {
        return dataService.dateFormat(dateVal);
    };

    // محل تولد برای ایرانی ها میشه شهر و برای خارجی ها میشه کشور


    $scope.guestInfo = {}

    $scope.lstNationality = [{ ID: 1, Name: "ایرانی" }, { ID: 2, Name: "خارجی" }];

    $scope.lstSex = [{ ID: 1, Name: "مرد" }, { ID: 2, Name: "زن" }];

    $scope.nationality = $scope.lstNationality[0].ID;
    //$(".ADMdtp-box").css('font-family', 'IRANSans !important');


    $scope.changeNationality = function () {

        $scope.guestInfo.FName = null;
        $scope.guestInfo.LName = null;
        $scope.guestInfo.FatherName = null;
        $scope.guestInfo.MobileNo = null;
        $scope.guestInfo.BirthDateVal = null;
        $scope.guestInfo.IDNo = null;
        $scope.guestInfo.NCode = null;
        $scope.guestInfo.PlaceID = null;
        $scope.guestInfo.Gender = null;
        $scope.guestInfo.IssueDateVal = null;
        $scope.guestInfo.PassNo = null;
        $scope.guestInfo.VisaExpDate = null;
        $scope.guestInfo.SourceID = null;
        $scope.guestInfo.TargetID = null;
        $scope.guestInfo.ReasonID = null;
        $scope.guestInfo.DeviceID = null;
        $scope.guestInfo.JobID = null;
        $scope.guestInfo.RelationID = null;
        $scope.guestInfo.Tel = null;
        $scope.guestInfo.Email = null;
        $scope.guestInfo.HomeAddress = null;
        $scope.guestInfo.OfficeAddress = null;
        $scope.guestInfo.IsMain = false;

        if ($scope.nationality == 2) {
            $scope.guestInfo.NationalityID = "";
            //console.log(2);
            //$(".ADMdtp-box").css('font-family', 'yekan !important');
        }

        if ($scope.nationality == 1) {
            $scope.guestInfo.NationalityID = 100038;
            //console.log(1);
            //$(".ADMdtp-box").css('font-family', 'IRANSans !important');
        }
    }

    // angular.element('.ADMdtp-box').css('font-family', 'yekan');

    $scope.getLstCodeing = function () {

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};
        //debugger;
        dataService.getLstCodeing(request).then(
            function (results) {
                $scope.progressbar.complete();
                if (results.data.Error !== null) {
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.lstCodeing = results.data.MyData;
                //console.log($scope.lstCodeing);
            },
            function (results) {
                $scope.progressbar.complete();
            });
    };
    $scope.getLstCodeing();

    // اگر ویرایش بود
    if (guestInfo != null) {
        $scope.guestInfo = angular.copy(guestInfo);
        if (guestInfo.NationalityID == 100038) {

            $scope.nationality = $scope.lstNationality[0].ID;

            if ($scope.guestInfo.IssueDateVal != null)
                $scope.guestInfo.IssueDateVal = $scope.getDateFormat($scope.guestInfo.IssueDateVal);
        }

        else {
            $scope.nationality = $scope.lstNationality[1].ID;
            if ($scope.guestInfo.VisaExpDate != null)
                $scope.guestInfo.VisaExpDate = $scope.getDateFormat($scope.guestInfo.VisaExpDate);
        }



        if ($scope.guestInfo.BirthDateVal != null) {
            $scope.guestInfo.BirthDateVal = $scope.getDateFormat($scope.guestInfo.BirthDateVal);
        }

    }

    $scope.save = function () {

        $scope.lstGuestInfo = [];
        if ($scope.nationality == 1) {
            $scope.guestInfo.NationalityID = 100038;
        }

        /******************* بخش اول  *******************/

        if (($scope.guestInfo.FName == null || $scope.guestInfo.FName == "") && guestInfoForcible.FName == true) {
            dataService.errorToaster("خطا", "نام را وارد کنید");
            return;
        }
        if (($scope.guestInfo.LName == null || $scope.guestInfo.LName == "") && guestInfoForcible.LName == true) {
            dataService.errorToaster("خطا", "نام خانوادگی را وارد کنید");
            return;
        }

        if ($scope.nationality == 1) {
            if (($scope.guestInfo.FatherName == null || $scope.guestInfo.FatherName == "") && guestInfoForcible.FatherName == true) {
                dataService.errorToaster("خطا", "نام پدر را وارد کنید");
                return;
            }
        }
        if ($scope.nationality == 1) {

            if (($scope.guestInfo.MobileNo == null || $scope.guestInfo.MobileNo == "") && guestInfoForcible.MobileNo == true) {
                dataService.errorToaster("خطا", "شماره موبایل را وارد کنید");
                return;
            }
            if (($scope.guestInfo.MobileNo[0] !== "0" || $scope.guestInfo.MobileNo[1] !== "9" || $scope.guestInfo.MobileNo.length < 11) && guestInfoForcible.MobileNo == true) {
                dataService.errorToaster("خطا", "شماره موبایل اشتباه است");
                return;
            }
        }

        /******************* بخش دوم  *********************/

        if (($scope.guestInfo.BirthDateVal == null || $scope.guestInfo.BirthDateVal == "") && guestInfoForcible.BirthDateVal == true) {
            dataService.errorToaster("خطا", "تاریخ تولد را کنید");
            return;
        }
        if ($scope.nationality == 1) {

            if (($scope.guestInfo.IDNo == null || $scope.guestInfo.IDNo == "") && guestInfoForcible.IDNo == true) {
                dataService.errorToaster("خطا", "شماره شناسنامه را وارد کنید");
                return;
            }
        }
        if ($scope.nationality == 1) {

            if (($scope.guestInfo.NCode == null || $scope.guestInfo.NCode == "") && guestInfoForcible.NCode == true) {
                dataService.errorToaster("خطا", "کد ملی را وارد کنید");
                return;
            }
        }
        if (($scope.guestInfo.PlaceID == null || $scope.guestInfo.PlaceID == "") && guestInfoForcible.PlaceID == true) {
            dataService.errorToaster("خطا", "محل تولد را کنید");
            return;
        }

        if (($scope.guestInfo.Gender == null || $scope.guestInfo.Gender == "") && guestInfoForcible.Gender == true) {
            dataService.errorToaster("خطا", "نوع جنسیت را وارد کنید");
            return;
        }
        if ($scope.nationality == 1) {

            if (($scope.guestInfo.IssueDateVal == null || $scope.guestInfo.IssueDateVal == "") && guestInfoForcible.IssueDateVal == true) {
                dataService.errorToaster("خطا", "تاریخ صدور شناسنامه را وارد کنید");
                return;
            }
        }
        if ($scope.nationality == 2) {
            if (($scope.guestInfo.NationalityID == null || $scope.guestInfo.NationalityID == "") && guestInfoForcible.NationalityID == true) {
                dataService.errorToaster("خطا", "ملیت را انتخاب کنید");
                return;
            }
            if (($scope.guestInfo.PassNo == null || $scope.guestInfo.PassNo == "") && guestInfoForcible.PassNo == true) {
                dataService.errorToaster("خطا", "شماره پاسپورت را وارد کنید");
                return;
            }

            if (($scope.guestInfo.VisaExpDate == null || $scope.guestInfo.VisaExpDate == "") && guestInfoForcible.VisaExpDate == true) {
                dataService.errorToaster("خطا", "تاریخ انقضای پاسپورت را انتخاب کنید");
                return;
            }
        }

        /******************* بخش دوم  *********************/


        if (($scope.guestInfo.SourceID == null || $scope.guestInfo.SourceID == "") && guestInfoForcible.SourceID == true) {
            dataService.errorToaster("خطا", "مبدا سفر را انتخاب کنید");
            return;
        }

        if ($scope.nationality == 1) {
            if (($scope.guestInfo.TargetID == null || $scope.guestInfo.TargetID == "") && guestInfoForcible.TargetID == true) {
                dataService.errorToaster("خطا", "مقصد سفر را انتخاب کنید");
                return;
            }
        }

        if (($scope.guestInfo.ReasonID == null || $scope.guestInfo.ReasonID == "") && guestInfoForcible.ReasonID == true) {
            dataService.errorToaster("خطا", "علت سفر را انتخاب کنید");
            return;
        }

        if (($scope.guestInfo.DeviceID == null || $scope.guestInfo.DeviceID == "") && guestInfoForcible.DeviceID == true) {
            dataService.errorToaster("خطا", "وسیله سفر را انتخاب کنید");
            return;
        }

        if (($scope.guestInfo.JobID == null || $scope.guestInfo.JobID == "") && guestInfoForcible.JobID == true) {
            dataService.errorToaster("خطا", "عنوان شغل را انتخاب کنید");
            return;
        }

        if (($scope.guestInfo.RelationID == null || $scope.guestInfo.RelationID == "") && guestInfoForcible.RelationID == true) {
            dataService.errorToaster("خطا", "نسبت را انتخاب کنید");
            return;
        }

        if (($scope.guestInfo.Tel == null || $scope.guestInfo.Tel == "") && guestInfoForcible.Tel == true) {
            dataService.errorToaster("خطا", "تلفن را وارد کنید");
            return;
        }

        if (($scope.guestInfo.Email == null || $scope.guestInfo.Email == "") && guestInfoForcible.Email == true) {
            dataService.errorToaster("خطا", "ایمیل را وارد کنید");
            return;
        }

        if (($scope.guestInfo.HomeAddress == null || $scope.guestInfo.HomeAddress == "") && guestInfoForcible.HomeAddress == true) {
            dataService.errorToaster("خطا", "آدرس منزل را وارد کنید");
            return;
        }

        if (($scope.guestInfo.OfficeAddress == null || $scope.guestInfo.OfficeAddress == "") && guestInfoForcible.OfficeAddress == true) {
            dataService.errorToaster("خطا", "آدرس محل کار را وارد کنید");
            return;
        }

        /****** برداشتن اسلش *******/

        if ($scope.guestInfo.BirthDateVal != null && $scope.guestInfo.BirthDateVal != "") {
            $scope.guestInfo.BirthDateVal = $scope.guestInfo.BirthDateVal.replace(/\//g, '');

        }

        if ($scope.nationality == 1) {
            if ($scope.guestInfo.IssueDateVal != null && $scope.guestInfo.IssueDateVal != "") {
                $scope.guestInfo.IssueDateVal = $scope.guestInfo.IssueDateVal.replace(/\//g, '');
            }
        }

        if ($scope.nationality == 2) {

            if ($scope.guestInfo.VisaExpDate != null && $scope.guestInfo.VisaExpDate != "") {
                $scope.guestInfo.VisaExpDate = $scope.guestInfo.VisaExpDate.replace(/\//g, '');
            }

        }
        $scope.guestInfo.Deleted = 0;

        // چون سمت سرور لیست میگیره ما هم لیست بهش می دیم
        $scope.lstGuestInfo.push($scope.guestInfo);

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();

        var request = {};

        request.lstGuestInfo = $scope.lstGuestInfo;


        dataService.saveGuestInfo(request).then(
            function (results) {
                $scope.progressbar.complete();
                if (results.data.Error !== null) {
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                dataService.successToaster("انجام شد", "اطلاعات با موفقیت ثبت گردید");
                var guestInfo = results.data.MyData;
                $uibModalInstance.close(guestInfo);


            },
            function (results) {
                $scope.progressbar.complete();
                dataService.checkAccess(results);

            });
    }

    $scope.cancel = function () {
        $uibModalInstance.dismiss();
    };

}]);

angularFormsApp.controller("ConfirmResController", ["$scope", "ngProgressFactory", "dataService", function ($scope, ngProgressFactory, dataService) {

    $scope.confirmRes = 1;

    // آدرس صفحه ای که کاربر از اونجا اومده و در نهایت باید بهش برگرده

    var mainUrl = $("#hfMainUrl").val();

    // اسم صفحه ای که کاربر اومده که یا پذیرش سریعه یا کنسل کردن رزرو یا دریافت واچره
    var mainPageName = $("#hfMainPageName").val();

    // فرستادن کد رزرو سمت سرور و گرفتن شماره موبایل اگر از صفحه پذرش سریع یا کنسل کردن رزرو اومده باشه
    $scope.getConfirmResInfo = function () {

        if ($scope.resId == null || $scope.resId == "") {
            dataService.errorToaster("خطا", "شماره رزرو را وارد کنید");
            return;
        }

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.resId = $scope.resId;
        request.mainPageName = mainPageName;

        dataService.getConfirmResInfo(request).then(
            function (results) {
                $scope.progressbar.complete();
                if (results.data.Error !== null) {
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.mobile = results.data.MyData;
                $scope.mobileTmp = $scope.mobile.slice(0, -4);

                $scope.confirmRes = 2;
                //console.log($scope.mobile);
                //dataService.errorToaster("خطا", "لطفا چهار رقم آخر موبایل خود را وارد کنید");

            },
            function (results) {
                $scope.progressbar.complete();
            });
    };


    // فرستادن کد رزرو سایت و ارسال پیامک
    $scope.confirmUserHotelMobile = function () {

        if ($scope.num1 == null || $scope.num2 == null || $scope.num3 == null || $scope.num4 == null) {
            dataService.errorToaster("خطا", "شماره ها را وارد کنید");
            return;
        }
        //console.log($scope.mobile);
        if ($scope.mobileTmp + $scope.num1 + $scope.num2 + $scope.num3 + $scope.num4 != $scope.mobile) {
            dataService.errorToaster("خطا", "شماره های وارد شده اشتباه است");
            $scope.num1 = null;
            $scope.num2 = null;
            $scope.num3 = null;
            $scope.num4 = null;
            return;
        }

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.mobile = $scope.mobile;

        dataService.confirmUserHotelMobile(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }

                $scope.randomCode = results.data.MyData.randomCode;
                $scope.confirmRes = 3;
                //console.log($scope.randomCode);

                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    };

    // لاگین شده کاربر و فرستادن کاربر به همون صفحه ای که اومده
    $scope.registerHotelGuest = function () {

        if ($scope.num5 == null || $scope.num6 == null || $scope.num7 == null || $scope.num8 == null) {
            dataService.errorToaster("خطا", "کد تایید را وارد کنید");
            return;
        }

        if ($scope.num5 + $scope.num6 + $scope.num7 + $scope.num8 != $scope.randomCode) {
            dataService.errorToaster("خطا", "کد وارد شده اشتباه است");
            $scope.num5 = null;
            $scope.num6 = null;
            $scope.num7 = null;
            $scope.num8 = null;
            return;
        }

        $scope.progressbar = ngProgressFactory.createInstance();
        $scope.progressbar.start();
        var request = {};

        request.mainUrl = mainUrl;
        request.hotelResNo = $scope.resId;
        request.hotelId = $("#hfHotelID").val();
        request.mainPageName = mainPageName;

        dataService.registerHotelGuest(request).then(
            function (results) {

                if (results.data.Error !== null) {
                    $scope.progressbar.complete();
                    dataService.errorToaster("خطا", results.data.Error.Text);
                    return;
                }
                window.location.href = results.data.MyData;

                $scope.progressbar.complete();
            },
            function (results) {
                $scope.progressbar.complete();

            });
    };

    $scope.changeResId = function () {
        $scope.confirmRes = 1;
        $scope.mobileTmp = null;
        $scope.mobile = null;
        $scope.resId = "";
        $scope.num1 = null;
        $scope.num2 = null;
        $scope.num3 = null;
        $scope.num4 = null;
        $scope.num5 = null;
        $scope.num6 = null;
        $scope.num7 = null;
        $scope.num8 = null;
    }

}]);

angularFormsApp.controller("ConfirmController", ["$scope", "$uibModalInstance", function ($scope, $uibModalInstance) {

    $scope.btnOK = function () {
        $uibModalInstance.close();
    };
    $scope.btnNO = function () {
        $uibModalInstance.dismiss();
    };

}]);