(function () {
    "use strict";

    angular.module('pos').controller('homeController', controller);
    controller.$inject = ['$scope', '$window', 'licencaService', '$location'];

    function controller($scope, $window, licencaService, $location) {

        setTimeout(function () {

            $scope.$parent.initializeLayout('GOFLASH POS');
            $scope.p_classe_cover = $scope.$parent.config.PosicaoLogo;

            setTimeout(function () {
                $scope.state = {
                    principais: [
                        { titulo: 'Capa', materialIcon: 'home', state: 'state-home', descricao: 'Tela principal e inicial do sistema.', allowed: true },
                        { titulo: 'Dashboard', materialIcon: 'dashboard', state: 'state-dashboard', descricao: 'Painel de visualização de indicadores para o vendedor e/ou caixa.', allowed: true },
                        { titulo: 'Vendas', materialIcon: 'shopping_basket', state: 'state-venda', descricao: 'Lista de vendas efetuadas pela loja.', allowed: $scope.$parent.config.UsaPOS },
                        { titulo: 'Clientes', materialIcon: 'account_circle', state: 'state-cliente', descricao: 'Lista de consumidores cadastrados na empresa.', allowed: (angular.isUndefined($scope.$parent.config) ? false : $scope.$parent.config.AbreClientes) },
                        { titulo: 'Produtos', materialIcon: 'widgets', state: 'state-produto', descricao: 'Lista de produtos ofertados pela empresa.', allowed: (!angular.isUndefined($scope.$parent.config) && !angular.isUndefined($scope.$parent.config.AbreEstoque)) ? $scope.$parent.config.AbreEstoque : false , visibleEstoquista : true},
                        { titulo: 'Consulta', materialIcon: 'select_all', state: 'state-consulta', descricao: 'Consulta de preços e estoque dos produtos.', allowed: (!angular.isUndefined($scope.$parent.config) && !angular.isUndefined($scope.$parent.config.AbreConsulta)) ? $scope.$parent.config.AbreConsulta : false, visibleEstoquista: true},
                        { titulo: 'Caixa', materialIcon: 'desktop_windows', state: 'state-caixa', descricao: 'Movimentação de caixa de determinado terminal da loja.', allowed: $scope.$parent.config.UsaPOS && ((!angular.isUndefined($scope.$parent.config) && !angular.isUndefined($scope.$parent.config.AbreConfere)) ? $scope.$parent.config.AbreConfere : false )},
                        { titulo: 'Gestão...', materialIcon: 'equalizer', state: 'state-gestao', descricao: 'Menu para os gestores da loja.', allowed: $scope.$parent.environment.perfil.IndicaGerente, visibleEstoquista: true },
                        { titulo: 'Etiquetas de Produto', materialIcon: 'print', state: 'state-etiqueta-produto', descricao: 'Permite a impressão de etiquetas de produto.', visibleEstoquista: true, allowed: !$scope.$parent.config.IsNativo},
                        { titulo: 'Impressão Personalizada de Etiquetas', materialIcon: 'print', state: 'state-etiqueta-produto-padrao', descricao: 'Permite a impressão de etiquetas de produto.', visibleEstoquista: true, allowed: $scope.$parent.config.IsNativo }
                    ],
                    atalhos: [
                        { titulo: ($scope.$parent.config.UsaPOS ? 'Nova Venda' : 'Novo Pedido'), materialIcon: 'add_circle', state: 'state-venda-add', descricao: 'Abre a tela para colocar uma nova venda.', allowed: true },
                        { titulo: 'Novo Cliente', materialIcon: 'account_circle', state: 'state-cliente-add', descricao: 'Abre a tela para cadastrar um novo cliente/consumidor.', allowed: true }
                    ],
                    relatorios: [
                        { titulo: 'Pagamentos por tipo', materialIcon: 'equalizer', state: 'state-pagamento-por-tipo', descricao: 'Relatório analítico de pagamentos de vendas com quebra por tipos de pagamento.', allowed: $scope.$parent.config.AbreReports },
                        { titulo: 'Pagamentos por Administradoras de Cartões', class: 'responsiveHidden', materialIcon: 'equalizer', state: 'state-pagamento-por-adm-de-cartao', descricao: 'Relatório analítico de vendas com quebra por administradoras de cartão de crédito/debito.', allowed: $scope.$parent.config.AbreReports },
                        { titulo: 'Vendas por vendedor', materialIcon: 'equalizer', state: 'state-venda-por-vendedor', descricao: 'Relatório analítico de vendas com quebra por vendedores.', allowed: $scope.$parent.config.AbreReports && $scope.$parent.config.UsaPOS},
                        { titulo: 'Produtos Vendidos Dia', materialIcon: 'equalizer', class: 'responsiveHidden', state: 'state-vendas-dia', descricao: 'Relatório relativo a venda de produtos.', allowed: $scope.$parent.config.AbreReports && $scope.$parent.config.UsaPOS },
                        { titulo: 'Estoque e Trânsito', materialIcon: 'view_quilt', state: 'state-produto-gerente', descricao: 'Gerenciamento de produtos em trânsito e estoque', allowed: $scope.$parent.config.AbreReports && $scope.$parent.config.MostraConsultaEstoqueHome },
                        { titulo: 'Vale Presente', materialIcon: 'card_membership', class: 'responsiveHidden', state: 'state-vale-presente', descricao: 'Relatório de vale presente.', allowed: $scope.$parent.config.AbreReports },

                    ],
                    relatoriosPreVenda: [
                      { titulo: 'Vendas por Vendedor', materialIcon: 'equalizer', state: 'state-venda-por-vendedor-gestao', descricao: 'Relatório de Vendas por Vendedor.', allowed: true },
                      { titulo: 'Consolidado por Vendedor', materialIcon: 'equalizer', state: 'state-consolidado-vendedor', descricao: 'Indicador de vendas por vendedor.', allowed: true }
                    ]
                };
            }, 10)

            $scope.searchFocus = function () {
                var h = $('.cover').height() - $('#header').height();
                $('body')
                    .animate({ scrollTop: h }, 300);
            }

            $scope.checkProfileNotEstoquista = function () {
                if ($scope.environment.perfil.IndicaGerente && !$scope.environment.perfil.IndicaOperador && !$scope.environment.perfil.IndicaEspecial)
                    return false
                else
                    return true
            };

            $scope.avisoLicenca = function () {
                $scope.licenca = licencaService.mensagemLicenca();
                if (!$scope.licenca)
                    return 1;
                return $scope.licenca.status;
            }

            $scope.initialize();

        },50)

    }

})();