/// <reference path="relatorio.evolucao.de.venda.js" />
(function () {
    "use strict";

    angular.module('pos').controller('clienteConsultaDetailController', controller);
    controller.$inject = ['$scope', '$window', '$stateParams', '$state', '$timeout', 'clienteService', 'entidadeAuxiliarService', 'ticketService'];

    function controller($scope, $window, $stateParams, $state, $timeout, clienteService, entidadeAuxiliarService, ticketService) {

        $scope.$parent.initializeLayout('Detalhes de Clientes');
         
        $scope.ticket = {};
        $scope.cliente = {};
        $scope.TipoItem = 0;
        $scope.vendas = [];
        $scope.venda = {};
        $scope.state = {
            tipoVisualizacao: 0,
            carregando: false,
            modal: false,
            numeroTicket: 0,
            filtro: {
                ativo: false,
                colecao: '',
                grupo: '',
                valorMinimo: '',
                qtdeMinima: '',
                numeroDias: '',
                codigoCliente: $stateParams.codigo
            }
        }

        $scope.print = function (showDetails) {
            $timeout(function () {
                window.print();
            }, 2000);
        };

        $scope.getClienteByCode = function (codigo) {

            $scope.state.carregando = true;
            clienteService
                .get(codigo)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Serviço');
                        else {

                            angular.copy(angular.fromJson(response.Data), $scope.cliente);
                        }

                        $scope.state.carregando = false;
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        };

        $scope.getVendasByCodeCliente = function () {

            clienteService
                .GetDetalhesVendaCliente($scope.state.filtro)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Serviço');
                        else {

                            angular.copy(angular.fromJson(response.Data), $scope.vendas);

                        }
                         
                        
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        };

        $scope.initialize = function () {

            if ($stateParams.codigo == null)
                $window.history.back();

            $scope.getClienteByCode($stateParams.codigo);
            $scope.getVendasByCodeCliente();
        }

        $scope.toggleFilter = function () {
            $scope.state.filtro.ativo = !$scope.state.filtro.ativo;
        };

        $scope.DetailsortBy = function (propertyName) {
            $scope.Detailreverse = ($scope.DetailpropertyName === propertyName) ? !$scope.Detailreverse : false;
            $scope.DetailpropertyName = propertyName;
        };

        $scope.setarAba = function (aba) {
            $scope.state.tipoVisualizacao = aba;
        }

        $scope.SelecionarVenda = function (ticket, emissao) {
            $scope.toggleModalDetalheItem();
            $scope.getVenda(ticket, emissao);
        }

        $scope.toggleModalDetalheItem = function () {
            $scope.state.modal = !$scope.state.modal;
        }

        $scope.getVenda = function (ticket, emissao) {
            $scope.carregandoModal = true;
            $scope.ticket = ticket;
            ticketService
                .get(ticket, emissao)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Serviço');
                        else {
                             
                            angular.copy(angular.fromJson(response.Data), $scope.venda);
                            $scope.state.tipoVisualizacao = 0;
                        }
                        $scope.carregandoModal = false;

                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        };

        $scope.setarItem = function (aba) {
            $scope.TipoItem = aba;
        }


        $scope.initialize();


    }

    //    //[Inicializa objetos]
    //    $scope.clienteSelecionado = {
    //        nome: '',
    //        codigo: '',
    //        selecionado: false
    //    }
    //    $scope.DetalheItem = false;
    //    $scope.vendas = [];
    //    $scope.venda = [];
    //    $scope.carregandoModal = false;
    //    $scope.cliente = [];
    //    $scope.TipoItem = 0;
    //    $scope.itensporgrupo = {
    //        carregando: false,
    //        vazio: true,
    //        data: []
    //    };
    //    $scope.items = {
    //        data: [],
    //        carregando: false,
    //        vazio: false,
    //        count: 0,
    //        filtro: {
    //            ativo: false,
    //            dataCadastro: '',
    //            dataInicio: null,
    //            dataFim: null,
    //            nome: '',
    //            cpf: '',
    //            telefone: '',
    //            colecao: '',
    //            grupo: '',
    //            mes: '',
    //            valorMinimo: '',
    //            qtdeMinima: '',
    //            numeroDias: '',
    //            codigoCliente: ''
    //        },
    //    };

    //    $scope.Voltar = function()
    //    {
    //        $scope.clienteSelecionado.nome = '',
    //        $scope.clienteSelecionado.codigo = '',
    //        $scope.clienteSelecionado.selecionado = false;
    //    }
    //    $scope.setarItem = function (aba) {
    //        $scope.TipoItem = aba;
    //    }
    //    $scope.setarAba = function (aba) {
    //        $scope.state.tipoVisualizacao = aba;
    //    }

    //    $scope.getDataChartitensporgrupo = function () {
    //        $scope.itensporgrupo.carregando = true;
    //        $scope.itensporgrupo.vazio = false;
    //        ticketService
    //            .getChartItensbyGroup($scope.items.data)
    //            .then(
    //                function (response) {
    //                    if (response.Status < 0)
    //                        console.error(response.Message);
    //                    else
    //                        angular.copy(angular.fromJson(response.Data), $scope.itensporgrupo.vendas);

    //                    $scope.itensporgrupo.carregando = false;
    //                    $scope.itensporgrupo.vazio = ($scope.itensporgrupo.data.length == 0);

    //                    $scope.$parent.tools.buildChart('itensporgrupo', null, $scope.itensporgrupo.data);
    //                },
    //                function (err) {
    //                    console.error(err);
    //                    $scope.itensporgrupo.carregando = false;
    //                    $scope.itensporgrupo.vazio = ($scope.itensporgrupo.data.length == 0);
    //                }
    //            );
    //    }

    //    $scope.SelecionarCliente = function(codigo)
    //    { 
             
    //        $scope.clienteSelecionado.codigo = codigo; 
    //        $scope.items.filtro.codigoCliente = codigo;
    //        $scope.getVendas();
    //        $scope.getCliente();
    //    }

        

    //    $scope.state = {
    //        filiais: [],
    //        tipoVisualizacao: 0,
    //        filtro: {
    //            ativo: true,
    //        },
    //    }

    //    function getDateWithoutTime(date) {
    //        var dateObj = new Date(date);
    //        var dateWithoutTime = dateObj.toLocaleDateString();

    //        return dateWithoutTime;
    //    }

        
    //    $scope.carregandoInfo = false;
    //    $scope.carregamentoCompleto = false;

    //    //[Inicializa funcões]
    //    $scope.initialize = function () {
    //        $scope.propertyName = 'ValorCompras';
    //        $scope.reverse = true;
    //    };
    //    $scope.historyBack = function () {
    //        $window.history.back();
    //    };
    //    $scope.toggleModalDetalheItem = function()
    //    {
    //        $scope.DetalheItem = !$scope.DetalheItem;
    //    }

    //    $scope.getAll = function () {
    //        $scope.items.filtro.skip = 0;
    //        $scope.items.count = 0;
    //        $scope.items.carregando = true;
    //        $scope.carregamentoCompleto = false;
    //        $scope.items.vazio = false;
    //        clienteService
    //            .GetVendasClientes($scope.items.filtro)
    //            .then(
    //                function (response) {
    //                    if (response.Status < 0)
    //                        $scope.$parent.toastr.error(response.Message, 'Serviço');
    //                    else {
    //                        angular.copy(angular.fromJson(response.Data), $scope.items.data);                            
    //                    }

    //                    $scope.items.carregando = false;
    //                    $scope.clienteSelecionado.selecionado = false;
    //                    $scope.items.vazio = ($scope.items.data == 0);
    //                },
    //                function (err) { $scope.$parent.toastr.error(err); }
    //            );
    //    };

    //    $scope.getVendas = function () {
    //        $scope.items.filtro.skip = 0;
    //        $scope.items.count = 0;
    //        $scope.items.carregando = true;
    //        $scope.carregamentoCompleto = false;
    //        $scope.items.vazio = false;

    //        clienteService
    //            .GetDetalhesVendaCliente($scope.items.filtro)
    //            .then(
    //                function (response) {
    //                    if (response.Status < 0)
    //                        $scope.$parent.toastr.error(response.Message, 'Serviço');
    //                    else {
                            
    //                        angular.copy(angular.fromJson(response.Data), $scope.vendas);
                            
    //                    }

    //                    $scope.items.carregando = false;
    //                    $scope.clienteSelecionado.selecionado = true;
    //                },
    //                function (err) { $scope.$parent.toastr.error(err); }
    //            );
    //    };

    //    $scope.SelecionarVenda = function(ticket, emissao)
    //    {
    //        $scope.toggleModalDetalheItem();
    //        $scope.getVenda(ticket, emissao);
    //    }

    //    $scope.getVenda = function (ticket, emissao) {
    //        $scope.carregandoModal = true;
    //        console.log($scope.vendas);
    //        ticketService
    //            .get(ticket, emissao)
    //            .then(
    //                function (response) {
    //                    if (response.Status < 0)
    //                        $scope.$parent.toastr.error(response.Message, 'Serviço');
    //                    else {
    //                        angular.copy(angular.fromJson(response.Data), $scope.venda);
    //                    }
    //                    $scope.carregandoModal = false;
                        
    //                    $scope.items.carregando = false;
    //                },
    //                function (err) { $scope.$parent.toastr.error(err); }
    //            );
    //    };

    //    $scope.getCliente = function () {
    //        clienteService
    //            .get($scope.items.filtro.codigoCliente)
    //            .then(
    //                function (response) {
    //                    if (response.Status < 0)
    //                        $scope.$parent.toastr.error(response.Message, 'Serviço');
    //                    else {

    //                        angular.copy(angular.fromJson(response.Data), $scope.cliente);
    //                    }

    //                    $scope.items.carregando = false;
    //                },
    //                function (err) { $scope.$parent.toastr.error(err); }
    //            );
    //    };
       

    //    $scope.disableInfiniteScroll = function () {
    //        var hasNoItens = $scope.items.count == 0;
    //        var produtosJaCarregados = $scope.carregamentoCompleto;
    //        return (hasNoItens || produtosJaCarregados);
    //    }

    //    $scope.toggleFilter = function () {
    //        $scope.items.filtro.ativo = !$scope.items.filtro.ativo;            
    //    };

    //    $scope.refresh = function () {
    //        $scope.getAll();
    //    };

    //    $scope.propertyName = 'ValorCompras';
    //    $scope.reverse = true;
        

    //    $scope.sortBy = function (propertyName) {
    //        $scope.reverse = ($scope.propertyName === propertyName) ? !$scope.reverse : false;
    //        $scope.propertyName = propertyName;
    //    };

    //    $scope.DetailpropertyName = 'ValorCompras';
    //    $scope.Detailreverse = true;


    //    $scope.DetailsortBy = function (propertyName) {
    //        $scope.Detailreverse = ($scope.DetailpropertyName === propertyName) ? !$scope.Detailreverse : false;
    //        $scope.DetailpropertyName = propertyName;
    //    };

    //    $scope.pesquisar = function () {
    //        $scope.listar = true;

    //        //if ($scope.items.filtro.dataInicio) {
    //        //    var emissaoDe = $scope.items.filtro.dataInicio;
    //        //    var emissaoDeNoTime = getDateWithoutTime(emissaoDe);
    //        //    $scope.items.filtro.dataInicio = emissaoDeNoTime;
    //        //}

    //        //if ($scope.items.filtro.dataFim) {
    //        //    var emissaoAte = $scope.items.filtro.dataFim;
    //        //    var emissaoAteNoTime = getDateWithoutTime(emissaoAte);
    //        //    $scope.items.filtro.dataFim = emissaoAteNoTime;
    //        //}

    //        $scope.toggleFilter();
    //        $scope.Voltar();
    //        $scope.refresh();
    //    };

    //    $scope.Limpar = function () {
    //        $scope.items.filtro = {
    //            dataCadastro: '',
    //            dataInicio: '',
    //            dataFim: '',
    //            nome: '',
    //            cpf: '',
    //            telefone: '',
    //            colecao: '',
    //            grupo: '',
    //            mes: '',
    //            valorMinimo: '',
    //            qtdeMinima: '',
    //            numeroDias: 0,
    //            codigoCliente: ''
    //        };
    //    };
    //    $scope.toggleFilter = function () {
    //        $scope.items.filtro.ativo = !$scope.items.filtro.ativo;
    //        if ($scope.items.filtro.ativo)
    //            $timeout(function () { $('[ng-model$="items.filtro.chaves"]').focus(); });
    //    };
    //    $scope.toggleCatalogo = function () {
    //        $scope.catalogo = !$scope.catalogo;
    //    };

    //    $scope.$watch('carregandoInfo', function (newValue, oldValue) {
    //        if (oldValue == false && newValue == true)
    //            $scope.$parent.toastr.info("Carregando novos itens...");
    //    });

    //    /*Inicializa funções*/
    //    $scope.initialize();
    //}

})();