(function () {
    "use strict";

    angular.module('pos').factory('dashboardService', factory);
    factory.$inject = ['$http', '$q'];

    function factory($http, $q) {

        var _getTotaisYTD = function () {
            var deferred = $q.defer();
            $http.get('/dashboard/GetTotaisYTD')
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _getDataChartAtendimentosXCancelamentosYTD = function () {
            var deferred = $q.defer();
            $http.get('/dashboard/GetDataChartAtendimentosXCancelamentosYTD')
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _getDataChartAtendimentosXVendedoresYTD = function () {
            var deferred = $q.defer();
            $http.get('/dashboard/GetDataChartAtendimentosXVendedoresYTD')
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _getTotais30Dias = function (filtro) {
            var deferred = $q.defer();
            var args = {
                'codigoTerminal': filtro.codigoTerminal
            };
            $http.post('/dashboard/GetTotais30Dias', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _getDataChartAtendimentosXCancelamentos30Dias = function (filtro) {
            var deferred = $q.defer();
            var args = {
                'codigoTerminal': filtro.codigoTerminal
            };
            $http.post('/dashboard/GetDataChartAtendimentosXCancelamentos30Dias', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _getDataChartAtendimentosXVendedores30Dias = function (filtro) {
            var deferred = $q.defer();
            var args = {
                'codigoTerminal': filtro.codigoTerminal
            };
            $http.post('/dashboard/GetDataChartAtendimentosXVendedores30Dias', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        /* New */

        var _getTotaisPersonalizado = function (filtro) {
            var deferred = $q.defer();
            var args = {
                'codigoTerminal': filtro.codigoTerminal,
                'periodo': filtro.args.periodo,
                'dtInicio': filtro.args.vendasDe,
                'dtFim': filtro.args.vendasAte
            };
            $http.post('/dashboard/GetTotaisPersonalizado', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _getDataChartAtendimentosXCancelamentosPersonalizado = function (filtro) {
            var deferred = $q.defer();
            var args = {
                'codigoTerminal': filtro.codigoTerminal,
                'periodo': filtro.args.periodo,
                'dtInicio': filtro.args.vendasDe,
                'dtFim': filtro.args.vendasAte
            };
            
            $http.post('/dashboard/GetDataChartAtendimentosXCancelamentosPersonalizado', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _getDataChartAtendimentosXVendedoresPersonalizado = function (filtro) {
            var deferred = $q.defer();
            var args = {
                'codigoTerminal': filtro.codigoTerminal,
                'periodo': filtro.args.periodo,
                'dtInicio': filtro.args.vendasDe,
                'dtFim': filtro.args.vendasAte
            };
            $http.post('/dashboard/GetDataChartAtendimentosXVendedoresPersonalizado', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        /* New */

        return {
            getTotaisYTD: _getTotaisYTD,
            getDataChartAtendimentosXCancelamentosYTD: _getDataChartAtendimentosXCancelamentosYTD,
            getDataChartAtendimentosXVendedoresYTD: _getDataChartAtendimentosXVendedoresYTD,
            getTotais30Dias: _getTotais30Dias,
            getDataChartAtendimentosXCancelamentos30Dias: _getDataChartAtendimentosXCancelamentos30Dias,
            getDataChartAtendimentosXVendedores30Dias: _getDataChartAtendimentosXVendedores30Dias,
            getTotaisPersonalizado: _getTotaisPersonalizado,
            getDataChartAtendimentosXCancelamentosPersonalizado: _getDataChartAtendimentosXCancelamentosPersonalizado,
            getDataChartAtendimentosXVendedoresPersonalizado: _getDataChartAtendimentosXVendedoresPersonalizado
        };
    }

})();