/**
 * Created by nik on 01.10.15.
 * location.reload();
 * $window.location.reload();
 */
var i = false;

var angular;


app.controller('PulseCtrl', function ($scope, $http, /*$cookies,*/ $modal) {
    $scope.mngEl = true;
    $scope.mngImg = true;

    getUserAndLot(); // Записываем в $scop открывшего страницу и лот
    getLog();


    $scope.upBid = function (bidForm) {

        if (bidForm.chkbox === true && $scope.data.leftTimeStop !== 'Торги закінчені!' && $scope.data.last_user !== $scope.data.member_user_id) {

            var urlId = window.location.search;
            var dataPUT = {};
            dataPUT.last_user = $scope.data.member_user_id;
            dataPUT.price_in = $scope.data.next_price;
            $scope.mngEl = false;
            $scope.mngImg = false;
            setTimeout(function () {
                return $scope.mngImg = true
            }, 2000);

            $http({
                method: 'PUT',
                url: '/auction/' + urlId.substring(4),
                data: dataPUT
            }).then(
                function successClbck(data) {
                    //----------------------------------------------------
                    if (~!['1', '2', '3'].indexOf(data.data)) {
                        setTimeout(function () {
                            var content;
                            switch (data.data) {
                                case '1':
                                    content = 'Ваша цінова пропозиція прийнята';
                                    break;
                                case '2':
                                    content = 'Ваша цінова пропозиція є найвищою, Ви не можете запропонувати наступну';
                                    break;
                                case '3':
                                    content = 'Запропонована Вами цінова пропозиція вже не є актуальною';
                                    break
                            }

                            $modal({
                                title: 'Повідомлення',
                                content: content,
                                show: true,
                                templateUrl: '../modal.tpl.html'
                            });
                        }, 100);
                    }
                    //----------------------------------------------------
                });

            angular.element(document.querySelector("#chkbx")).attr("checked", false);
            bidForm.chkbox = false;
            delete $scope.data.leftTimeStop;
            delete $scope.data.last_user;

            // Делаем ставку отправляя только пользователя и лот
        } else {
            $modal({
                title: 'Повідомлення',
                content: 'Заборонено робити кілька ставок поспіль, чи без підтвердження!',
                show: true,
                templateUrl: '../modal.tpl.html'
            });
            bidForm.chkbox = false;
            delete $scope.data.leftTimeStop;
            delete $scope.data.last_user;
            angular.element(document.querySelector("#chkbx")).attr("checked", false);
        }
    };


    function getUserAndLot() { // получаем основные данные

        $http({
            method: 'GET',
            url: '/auction/' + window.location.search
        }).then(
            function successClbck(data) {
                $scope.type_id = true;

                data = data.data[0];
                $scope.user_role = data.user_role;
                $scope.member_user_id = data.member_user_id;
                $scope.pulse = new Date(data.current_time * 1000);
                //----------------------------------------------------

                if (data.type_id === 2) $scope.type_id = false; // определяем тип торгов, если 2 убираем видимость "Зміна ціни"

                if (data.status === 1) {
                    $scope.date_stop_show = false;
                    $scope.left_time_stop = false;
                    $scope.left_time_start = true;
                    $scope.control = false;
                    $scope.bid_stop = false;
                }
                // State view 2 - Bidding;
                else if (data.status === 2) {
                    $scope.status = 2;
                    $scope.left_time_start = false;
                    $scope.date_stop_show = true;
                    $scope.left_time_stop = true;
                    $scope.control = true;
                    $scope.bid_stop = false;
                }
                // State view 3 - Post bidding +++++
                else if (data.status === 3 || data.status === 4) {
                    $scope.date_stop_show = true;
                    $scope.left_time_stop = false;
                    $scope.control = false;
                    $scope.bid_stop = true;
                    $scope.mngEl = true;
                }


                data.timeRich = getTimeRemaining(data.time);
                data.next_price = data.next_price === data.step_money ? data.start_price : data.next_price;
                // логика отключает removeClass('disabled') у кнопки если цикл уже раз пройден chkbx
                if (i !== true) angular.element(document.querySelector("#chkbx #submit")).removeClass('disabled');
                i = true;

                $scope.data = data;
                setTimeout(function () {
                    $scope.$apply();
                }, 100);


                //----------------------------------------------------
            },

            function errorClbck(data, status, headers, config) {
            });
    }

    function getLog() { // получаем лог

        $http({
            method: 'GET',
            url: '/trade' + window.location.search
        }).then(function (data) {
            $scope.logBid = data.data;
            setTimeout(function () {
                $scope.$apply();
            }, 100);
        });
    }

    setInterval(function () {
        getUserAndLot();
        getLog();
    }, 5000);


    $scope.$watch('logBid', function () {
        setTimeout(function () {
            if ($scope.logBid[0] && ($scope.logBid[0].user_id !== $scope.data.member_user_id)) {
                $scope.mngEl = true;
            } else if ($scope.logBid[0] && ($scope.logBid[0].user_id === $scope.data.member_user_id)) {
                $scope.mngEl = false;
            }
        }, 100);
    });

    function getTimeRemaining(t) {
        var seconds = Math.floor(t % 60);
        var minutes = Math.floor((t / 60) % 60);
        var hours = Math.floor((t / (60 * 60)) % 24);

        var regexp = /^\d$/;

        hours = regexp.test(hours) === true ? '0' + hours : hours;
        minutes = regexp.test(minutes) === true ? '0' + minutes : minutes;
        seconds = regexp.test(seconds) === true ? '0' + seconds : seconds;
        return hours + ':' + minutes + ':' + seconds;
    }

    setInterval(function () {

        if ($scope.data.time > 0) {
            //var time = $scope.data.time
            $scope.data.time--;
            $scope.data.timeRich = getTimeRemaining($scope.data.time);
            $scope.$apply();
        }
    }, 1000);

});
