(function () {
    "use strict";

    angular.module('pos').controller('redefinirController', controller);
    controller.$inject = ['$scope', '$confirmModalDefaults', '$confirm', '$state', '$stateParams', 'securityService'];

    function controller($scope, $confirmModalDefaults, $confirm, $state, $stateParams, securityService) {
        //$scope.$parent.initializeLayout('Login');
        $scope.loading = false;

        $scope.intialize = function () {
            $scope.id = $stateParams.id;
        }

        $scope.redirect = function () {
            $state.go('state-login');
        }

        var validateMail = function (mail) {
            if (!mail || mail == "") {
                $scope.$parent.toastr.error("Email inválido", 'Atenção');
                return false;
            }
            return true;
        }

        $scope.enviar = function (mail) {
            if (!validateMail(mail))
                return;

            $scope.loading = true;
            securityService.resetPassword(mail).then(
                    function (response) {
                        $scope.loading = false;
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Atenção');
                        else {
                            $confirmModalDefaults.defaultLabels.title = "Tudo Certo!";
                            $confirm({ text: "Você receberá um email em breve com as instruções de redefinição." })
                            $scope.redirect();
                        }
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        }

        $scope.alterar = function (novoAcesso) {
            $scope.loading = true;
            if (!validatePassword(novoAcesso))
                return;

            securityService.changeInfoPassword($scope.id, novoAcesso.senha).then(
            function (response) {
                $scope.loading = false;
                if (response.Status < 0)
                    $scope.$parent.toastr.error(response.Message, 'Atenção');
                else {
                    $confirmModalDefaults.defaultLabels.title = "Tudo Certo!";
                    $confirm({ text: "Senha alterada com sucesso!" })
                    $scope.redirect();
                }
            },
                function (err) { $scope.$parent.toastr.error(err); }
            );
        }

        var validatePassword = function (novoAcesso) {
            if (!novoAcesso || !novoAcesso.senha || !novoAcesso.repitaSenha) {
                $confirmModalDefaults.defaultLabels.title = "Atenção!";
                $confirm({ text: "O campo senha é obrigatório" });
                return false;
            }
            else if (novoAcesso.senha != novoAcesso.repitaSenha) {
                $confirmModalDefaults.defaultLabels.title = "Atenção!";
                $confirm({ text: "As senhas estão divergentes" });
                return false;
            }

            return true;
        }

        $scope.intialize();
    }

})();