(function () {
    "use strict";

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

    function factory($http, $q) {
        ;
        var _GetProductItens = function (Pedido, ProductID) {
            var deferred = $q.defer();
            var args = { Pedido: Pedido, ProductID: ProductID };
            $http.post('/OMNI/GetProductItens', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _GetProductItensFilial = function (ProductID, filial, pedido) {
            var deferred = $q.defer();
            var args = { pedido:pedido, produto: ProductID, filial: filial };
            $http.post('/OMNI/GetProductItensFilial', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };
        
        var _GetFrete = function (Pedido, Cep) {
            var deferred = $q.defer();
            var args = { Pedido: Pedido, Cep: Cep };
            $http.post('/OMNI/GetFrete', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        
        var _SaveEnderecoCliente = function (contato)
        {
            var deferred = $q.defer();
            var args = { contato: contato};
            $http.post('/OMNI/SaveEnderecoCliente', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        }
        var _PrepareNew = function () {
            var deferred = $q.defer();
            
            $http.post('/OMNI/PrepareNew')
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        }

        var _GetEnderecosCliente = function (cliente) {
            var deferred = $q.defer();
            var args = { cliente: cliente};
            $http.post('/OMNI/GetEnderecosCliente', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        return {
            GetProductItens: _GetProductItens,
            GetEnderecosCliente: _GetEnderecosCliente,
            SaveEnderecoCliente: _SaveEnderecoCliente,
            PrepareNew: _PrepareNew,
            GetFrete: _GetFrete,
            GetProductItensFilial: _GetProductItensFilial
        };
    }

})();