service.js 2.72 KB
angular.module('focaAbmVehiculo')
    .factory('focaAbmVehiculoService', ['$http', 'API_ENDPOINT', function($http, API_ENDPOINT) {
        var cisternas = [];
        var cisternasPristine = true;
        return {
            getVehiculos: function() {
                return $http.get(API_ENDPOINT.URL + '/vehiculo');
            },
            getVehiculo: function(id) {
                return $http.get(API_ENDPOINT.URL + '/vehiculo/' + id);
            },
            getTransportistas: function() {
                return $http.get(API_ENDPOINT.URL + '/transportista');
            },
            guardarVehiculo: function(vehiculo) {
                return $http.post(API_ENDPOINT.URL + '/vehiculo', {vehiculo: vehiculo});
            },
            deleteVehiculo: function(id) {
                return $http.delete(API_ENDPOINT.URL + '/vehiculo/' + id);
            },
            getCisternas: function(idVehiculo) {
                if (cisternas.length) {
                    cisternasPristine = true;
                    return Promise.resolve(angular.copy(cisternas));
                } else {
                    cisternasPristine = true;
                    return new Promise(function(resolve) {
                        $http.get(API_ENDPOINT.URL + '/cisterna/listar/' + idVehiculo)
                            .then(function(res) {
                                cisternas = res.data;
                                resolve(res.data);
                            });
                    });
                }
            },
            guardarCisterna: function(cisterna, idx) {
                if (idx !== '-1') {
                    //update
                    cisternas[idx] = cisterna;
                    cisternasPristine = false;
                } else {
                    //insert
                    cisternas.push(cisterna);
                    cisternasPristine = false;
                }
            },
            guardarCisternas: function(cisternas) {
                return $http.post(API_ENDPOINT.URL + '/cisterna', {cisternas: cisternas});
            },
            deleteCisterna: function(cisterna) {
                cisterna.desactivado = true;
                cisternasPristine = false;
                return $http.delete(API_ENDPOINT.URL + '/cisterna/' + cisterna.id);
            },
            cleanCisternas: function() {
                cisternas = [];
            },
            getVehiculosPorTransportista: function(id) {
                return $http.get(API_ENDPOINT.URL + '/vehiculo/transportista/' + id);
            },
            getTransportistaPorId: function(id) {
                return $http.get(API_ENDPOINT.URL + '/transportista/' + id);
            },
            transportistaSeleccionado: {}
        };
    }]);