#182 files preparation for ticket volume
This commit is contained in:
parent
d57dbe2224
commit
0c4246847b
|
@ -0,0 +1,147 @@
|
|||
import ngModule from '../module';
|
||||
|
||||
class Controller {
|
||||
constructor($stateParams, $scope, $http, $translate, vnApp) {
|
||||
this.params = $stateParams;
|
||||
this.$scope = $scope;
|
||||
this.$http = $http;
|
||||
this.$translate = $translate;
|
||||
this.vnApp = vnApp;
|
||||
|
||||
this.ticketVolumes = [];
|
||||
this.oldVolumes = {};
|
||||
this.removedVolumes = [];
|
||||
}
|
||||
|
||||
_getTicketVolumes(ticketFk) {
|
||||
this.$http.get(`/tcket/api/Volumes/${ticketFk}/getVolumes`)
|
||||
.then(response => {
|
||||
this.ticketVolumes = response.data;
|
||||
});
|
||||
}
|
||||
|
||||
// _setIconAdd() {
|
||||
// if (this.ticketVolumes.length) {
|
||||
// this.ticketVolumes.map(element => {
|
||||
// element.showAddIcon = false;
|
||||
// return true;
|
||||
// });
|
||||
// this.ticketVolumes[this.ticketVolumes.length - 1].showAddIcon = true;
|
||||
// }
|
||||
// }
|
||||
|
||||
// _setDirtyForm() {
|
||||
// if (this.$scope.form) {
|
||||
// this.$scope.form.$setDirty();
|
||||
// }
|
||||
// }
|
||||
|
||||
// _unsetDirtyForm() {
|
||||
// if (this.$scope.form) {
|
||||
// this.$scope.form.$setPristine();
|
||||
// }
|
||||
// }
|
||||
|
||||
// addVolume() {
|
||||
// this.ticketVolumes.push({description: null, ticketFk: this.params.id, showAddIcon: true});
|
||||
// this._setIconAdd();
|
||||
// }
|
||||
|
||||
// removeVolume(index) {
|
||||
// let item = this.ticketVolumes[index];
|
||||
// if (item) {
|
||||
// this.ticketVolumes.splice(index, 1);
|
||||
// this._setIconAdd();
|
||||
// if (item.id) {
|
||||
// this.removedVolumes.push(item.id);
|
||||
// this._setDirtyForm();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// _equalVolumes(oldVolume, newVolume) {
|
||||
// return oldVolume.id === newVolume.id && oldVolume.VolumeTypeFk === newVolume.VolumeTypeFk && oldVolume.description === newVolume.description;
|
||||
// }
|
||||
|
||||
// setOldVolumes(response) {
|
||||
// this._setIconAdd();
|
||||
// response.data.forEach(Volume => {
|
||||
// this.oldVolumes[Volume.id] = Object.assign({}, Volume);
|
||||
// });
|
||||
// }
|
||||
|
||||
// getVolumes() {
|
||||
// let filter = {
|
||||
// where: {ticketFk: this.params.id},
|
||||
// include: ['VolumeType']
|
||||
// };
|
||||
|
||||
// this.$http.get(`/ticket/api/TicketVolumes?filter=${JSON.stringify(filter)}`).then(response => {
|
||||
// this.ticketVolumes = response.data;
|
||||
// this.setOldVolumes(response);
|
||||
// });
|
||||
// }
|
||||
|
||||
// submit() {
|
||||
// let typesDefined = [];
|
||||
// let repeatedType = false;
|
||||
// let canSubmit;
|
||||
// let VolumesObj = {
|
||||
// delete: this.removedVolumes,
|
||||
// create: [],
|
||||
// update: []
|
||||
// };
|
||||
|
||||
// this.ticketVolumes.forEach(Volume => {
|
||||
// let isNewVolume = !Volume.id;
|
||||
|
||||
// delete Volume.showAddIcon;
|
||||
|
||||
// if (typesDefined.indexOf(Volume.VolumeTypeFk) !== -1) {
|
||||
// repeatedType = true;
|
||||
// return;
|
||||
// }
|
||||
// typesDefined.push(Volume.VolumeTypeFk);
|
||||
|
||||
// if (isNewVolume && Volume.description && Volume.VolumeTypeFk) {
|
||||
// VolumesObj.create.push(Volume);
|
||||
// }
|
||||
|
||||
// if (!isNewVolume && !this._equalVolumes(this.oldVolumes[Volume.id], Volume)) {
|
||||
// VolumesObj.update.push(Volume);
|
||||
// }
|
||||
// });
|
||||
|
||||
// if (this.$scope.form.$invalid) {
|
||||
// return this.vnApp.showMessage(this.$translate.instant('Some fields are invalid'));
|
||||
// }
|
||||
|
||||
// if (repeatedType) {
|
||||
// return this.vnApp.showMessage(this.$translate.instant('The Volume type must be unique'));
|
||||
// }
|
||||
|
||||
// canSubmit = VolumesObj.update.length > 0 || VolumesObj.create.length > 0 || VolumesObj.delete.length > 0;
|
||||
|
||||
// if (canSubmit) {
|
||||
// return this.$http.post(`/ticket/api/TicketVolumes/crudTicketVolumes`, VolumesObj).then(() => {
|
||||
// this.getVolumes();
|
||||
// this._unsetDirtyForm();
|
||||
// });
|
||||
// }
|
||||
// this.vnApp.showMessage(this.$translate.instant('No changes to save'));
|
||||
// }
|
||||
|
||||
$onInit() {
|
||||
// this.getVolumes();
|
||||
}
|
||||
}
|
||||
|
||||
Controller.$inject = ['$stateParams', '$scope', '$http', '$translate', 'vnApp'];
|
||||
|
||||
ngModule.component('vnTicketVolume', {
|
||||
template: require('./ticket-volume.html'),
|
||||
controller: Controller,
|
||||
bindings: {
|
||||
ticket: '<'
|
||||
}
|
||||
});
|
|
@ -0,0 +1,143 @@
|
|||
// import './ticket-observations.js';
|
||||
|
||||
// describe('ticket', () => {
|
||||
// describe('Component vnTicketObservations', () => {
|
||||
// let $componentController;
|
||||
// let $state;
|
||||
// let controller;
|
||||
// let $httpBackend;
|
||||
|
||||
// beforeEach(() => {
|
||||
// angular.mock.module('ticket');
|
||||
// });
|
||||
|
||||
// beforeEach(angular.mock.inject((_$componentController_, _$state_, _$httpBackend_) => {
|
||||
// $componentController = _$componentController_;
|
||||
// $state = _$state_;
|
||||
// $httpBackend = _$httpBackend_;
|
||||
// controller = $componentController('vnTicketObservations', {$state: $state});
|
||||
// }));
|
||||
|
||||
// describe('add / remove observation', () => {
|
||||
// it('should add one empty observation into controller observations collection and call _setIconAdd()', () => {
|
||||
// controller.ticketObservations = [];
|
||||
// spyOn(controller, '_setIconAdd').and.callThrough();
|
||||
// controller.addObservation();
|
||||
|
||||
// expect(controller._setIconAdd).toHaveBeenCalledWith();
|
||||
// expect(controller.ticketObservations.length).toEqual(1);
|
||||
// expect(controller.ticketObservations[0].id).toBe(undefined);
|
||||
// expect(controller.ticketObservations[0].showAddIcon).toBeTruthy();
|
||||
// });
|
||||
|
||||
// it('should remove an observation that occupies the position in the index given and call _setIconAdd()', () => {
|
||||
// let index = 2;
|
||||
// controller.ticketObservations = [
|
||||
// {id: 1, observationTypeFk: 1, description: 'one', showAddIcon: false},
|
||||
// {id: 2, observationTypeFk: 2, description: 'two', showAddIcon: false},
|
||||
// {id: 3, observationTypeFk: 3, description: 'three', showAddIcon: true}
|
||||
// ];
|
||||
|
||||
// spyOn(controller, '_setIconAdd').and.callThrough();
|
||||
|
||||
// controller.removeObservation(index);
|
||||
|
||||
// expect(controller._setIconAdd).toHaveBeenCalledWith();
|
||||
// expect(controller.ticketObservations.length).toEqual(2);
|
||||
// expect(controller.ticketObservations[0].showAddIcon).toBeFalsy();
|
||||
// expect(controller.ticketObservations[1].showAddIcon).toBeTruthy();
|
||||
// expect(controller.ticketObservations[index]).toBe(undefined);
|
||||
// });
|
||||
// });
|
||||
|
||||
// describe('_equalObservations()', () => {
|
||||
// it('should return true if two observations are equals independent of control attributes', () => {
|
||||
// let observationOne = {id: 1, observationTypeFk: 1, description: 'one', showAddIcon: true};
|
||||
// let observationTwo = {id: 1, observationTypeFk: 1, description: 'one', showAddIcon: false};
|
||||
// let equals = controller._equalObservations(observationOne, observationTwo);
|
||||
|
||||
// expect(equals).toBeTruthy();
|
||||
// });
|
||||
|
||||
// it('should return false if two observations aint equals independent of control attributes', () => {
|
||||
// let observationOne = {id: 1, observationTypeFk: 1, description: 'one', showAddIcon: true};
|
||||
// let observationTwo = {id: 1, observationTypeFk: 1, description: 'two', showAddIcon: true};
|
||||
// let equals = controller._equalObservations(observationOne, observationTwo);
|
||||
|
||||
// expect(equals).toBeFalsy();
|
||||
// });
|
||||
// });
|
||||
|
||||
// describe('get Observations()', () => {
|
||||
// it('should perform a GET query to receive the ticket observations', () => {
|
||||
// let res = [{id: 1, observationTypeFk: 1, description: 'one'}];
|
||||
|
||||
// $httpBackend.whenGET(`/ticket/api/TicketObservations?filter={"where":{},"include":["observationType"]}`).respond(res);
|
||||
// $httpBackend.expectGET(`/ticket/api/TicketObservations?filter={"where":{},"include":["observationType"]}`);
|
||||
// controller.getObservations();
|
||||
// $httpBackend.flush();
|
||||
// });
|
||||
// });
|
||||
|
||||
// describe('submit()', () => {
|
||||
// it("should return an error message 'The observation type must be unique'", () => {
|
||||
// controller.$scope.form = {};
|
||||
// spyOn(controller.vnApp, 'showMessage').and.callThrough();
|
||||
// controller.ticketObservations = [
|
||||
// {id: 1, observationTypeFk: 1, description: 'one', itemFk: 1},
|
||||
// {observationTypeFk: 1, description: 'one', itemFk: 1}
|
||||
// ];
|
||||
// controller.oldObservations = {1: {id: 1, observationTypeFk: 1, description: 'one', itemFk: 1}};
|
||||
// controller.submit();
|
||||
|
||||
// expect(controller.vnApp.showMessage).toHaveBeenCalledWith('The observation type must be unique');
|
||||
// });
|
||||
|
||||
// it("should perfom a query to delete observations", () => {
|
||||
// controller.$scope.form = {$setPristine: () => {}};
|
||||
// controller.oldObservations = {1: {id: 1, observationTypeFk: 1, description: 'one'}};
|
||||
// controller.ticketObservations = [];
|
||||
// controller.removedObservations = [1];
|
||||
|
||||
// $httpBackend.whenGET(`/ticket/api/TicketObservations?filter={"where":{},"include":["observationType"]}`).respond([]);
|
||||
// $httpBackend.expectPOST(`/ticket/api/TicketObservations/crudTicketObservations`).respond('ok!');
|
||||
// controller.submit();
|
||||
// $httpBackend.flush();
|
||||
// });
|
||||
|
||||
// it("should perfom a query to update observations", () => {
|
||||
// controller.$scope.form = {$setPristine: () => {}};
|
||||
// controller.ticketObservations = [{id: 1, observationTypeFk: 1, description: 'number one!'}];
|
||||
// controller.oldObservations = {1: {id: 1, observationTypeFk: 1, description: 'one'}};
|
||||
|
||||
// $httpBackend.whenGET(`/ticket/api/TicketObservations?filter={"where":{},"include":["observationType"]}`).respond([]);
|
||||
// $httpBackend.expectPOST(`/ticket/api/TicketObservations/crudTicketObservations`).respond('ok!');
|
||||
// controller.submit();
|
||||
// $httpBackend.flush();
|
||||
// });
|
||||
|
||||
// it("should perfom a query to create new observation", () => {
|
||||
// controller.$scope.form = {$setPristine: () => {}};
|
||||
// controller.ticketObservations = [{observationTypeFk: 2, description: 'two'}];
|
||||
|
||||
// $httpBackend.whenGET(`/ticket/api/TicketObservations?filter={"where":{},"include":["observationType"]}`).respond([]);
|
||||
// $httpBackend.expectPOST(`/ticket/api/TicketObservations/crudTicketObservations`).respond('ok!');
|
||||
// controller.submit();
|
||||
// $httpBackend.flush();
|
||||
// });
|
||||
|
||||
// it("should return a message 'No changes to save' when there are no changes to apply", () => {
|
||||
// controller.$scope.form = {$setPristine: () => {}};
|
||||
// spyOn(controller.vnApp, 'showMessage').and.callThrough();
|
||||
// controller.oldObservations = [
|
||||
// {id: 1, observationTypeFk: 1, description: 'one', showAddIcon: false},
|
||||
// {id: 2, observationTypeFk: 2, description: 'two', showAddIcon: true}
|
||||
// ];
|
||||
// controller.ticketObservations = [];
|
||||
// controller.submit();
|
||||
|
||||
// expect(controller.vnApp.showMessage).toHaveBeenCalledWith('No changes to save');
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
// });
|
|
@ -0,0 +1,26 @@
|
|||
module.exports = Self => {
|
||||
Self.remoteMethod('getVolumes', {
|
||||
description: 'Returns the volumes of a ticket',
|
||||
accessType: 'READ',
|
||||
accepts: [{
|
||||
arg: 'id',
|
||||
type: 'number',
|
||||
required: true,
|
||||
description: 'ticket id',
|
||||
http: {source: 'path'}
|
||||
}],
|
||||
returns: {
|
||||
type: 'object'
|
||||
},
|
||||
http: {
|
||||
path: `/:id/getVolumes`,
|
||||
verb: 'GET'
|
||||
}
|
||||
});
|
||||
|
||||
Self.getVolumes = async ticketFk => {
|
||||
let query = `SELECT vn.ticketVolume(?) AS ticketVolumes`;
|
||||
let response = await Self.rawSql(query, [ticketFk]);
|
||||
return response[0];
|
||||
};
|
||||
};
|
|
@ -0,0 +1,16 @@
|
|||
// const getDebt = require('../getDebt');
|
||||
|
||||
// describe('client getDebt()', () => {
|
||||
// it('should call the getDebt method', done => {
|
||||
// let clientFk = 109;
|
||||
// let self = jasmine.createSpyObj('self', ['remoteMethod', 'rawSql']);
|
||||
// self.rawSql.and.returnValue(Promise.resolve([{debt: 100}]));
|
||||
// getDebt(self);
|
||||
// self.getDebt(clientFk)
|
||||
// .then(result => {
|
||||
// expect(result.debt).toEqual(100);
|
||||
// done();
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
|
Loading…
Reference in New Issue