import ngModule from '../module'; import Summary from 'salix/components/summary'; import './style.scss'; class Controller extends Summary { constructor($element, $) { super($element, $); this.ticketFilter = { include: [ { relation: 'ticketState', scope: { fields: ['stateFk', 'code', 'alertLevel'], include: { relation: 'state' } } }, { relation: 'invoiceOut', scope: { fields: ['id'] } }, { relation: 'agencyMode', scope: { fields: ['name'] } }, ] }; } get client() { return this._client; } set client(value) { this._client = value; if (value) { this.loadData(); this.loadTickets(); } } loadData() { this.$http.get(`Clients/${this.client.id}/summary`).then(res => { if (res && res.data) { this.summary = res.data; if (res.data.classifications.length) this.grade = res.data.classifications[0].insurances[0].grade; this.summary.sumRisk = this.sumRisk(); } }); } loadTickets() { this.$.$applyAsync(() => this.$.ticketsModel.refresh()); } get isEmployee() { return this.aclService.hasAny(['employee']); } sumRisk() { let total = 0; this.summary.clientRisks.forEach(risk => { total += risk.amount; }); return total; } claimRate(priceIncreasing) { if (priceIncreasing) return priceIncreasing * 100; } claimingRate(rate) { if (rate) return rate * 100; } stateColor(ticket) { const ticketState = ticket.ticketState; if (!ticketState) return; if (ticketState.code === 'OK') return 'success'; else if (ticketState.code === 'FREE') return 'notice'; else if (ticketState.alertLevel === 1) return 'warning'; else if (ticketState.alertLevel === 0) return 'alert'; } chipColor(date) { const today = new Date(); today.setHours(0, 0, 0, 0); const ticketShipped = new Date(date); ticketShipped.setHours(0, 0, 0, 0); const difference = today - ticketShipped; if (difference == 0) return 'warning'; if (difference < 0) return 'success'; } totalPriceColor(ticket) { const total = parseInt(ticket.totalWithVat); if (total > 0 && total < 50) return 'warning'; } preview(ticket) { this.selectedTicket = ticket; this.$.summary.show(); } } ngModule.vnComponent('vnClientSummary', { template: require('./index.html'), controller: Controller, bindings: { client: '<' } });