91 lines
2.4 KiB
JavaScript
91 lines
2.4 KiB
JavaScript
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: '<'
|
|
}
|
|
});
|