import ngModule from '../../module'; import './style.scss'; import Section from 'salix/components/section'; export default class Controller extends Section { saveBuy(buy) { const missingData = !buy.itemFk || !buy.quantity || !buy.packageFk; if (missingData) return; let options; if (buy.id) { options = { query: `Buys/${buy.id}`, method: 'patch' }; } else { options = { query: `Entries/${this.entry.id}/addBuy`, method: 'post' }; } this.$http[options.method](options.query, buy).then(res => { if (!res.data) return; buy = Object.assign(buy, res.data); this.vnApp.showSuccess(this.$t('Data saved!')); }); } /** * Returns checked instances * * @return {Array} Checked instances */ selectedBuys() { if (!this.buys) return; return this.buys.filter(buy => { return buy.checked; }); } deleteBuys() { const buys = this.selectedBuys(); const actualInstances = buys.filter(buy => buy.id); const params = {buys: actualInstances}; if (actualInstances.length) { this.$http.post(`Buys/deleteBuys`, params).then(() => { this.vnApp.showSuccess(this.$t('Data saved!')); }); } buys.forEach(buy => { const index = this.buys.indexOf(buy); this.buys.splice(index, 1); }); } toggleGroupingMode(buy, mode) { const grouping = 1; const packing = 2; const groupingMode = mode === 'grouping' ? grouping : packing; const newGroupingMode = buy.groupingMode === groupingMode ? 0 : groupingMode; const params = { groupingMode: newGroupingMode }; this.$http.patch(`Buys/${buy.id}`, params).then(() => { buy.groupingMode = newGroupingMode; this.vnApp.showSuccess(this.$t('Data saved!')); }); } itemSearchFunc($search) { return /^\d+$/.test($search) ? {id: $search} : {name: {like: '%' + $search + '%'}}; } } ngModule.vnComponent('vnEntryBuyIndex', { template: require('./index.html'), controller: Controller, bindings: { entry: '<' } });