52 lines
1.6 KiB
JavaScript
52 lines
1.6 KiB
JavaScript
import axios from 'axios';
|
|
|
|
export async function beforeSave(data, getChanges, modelOrigin) {
|
|
try {
|
|
const changes = data.updates;
|
|
if (!changes) return data;
|
|
const patchPromises = [];
|
|
|
|
for (const change of changes) {
|
|
let patchData = {};
|
|
|
|
if ('hasMinPrice' in change.data) {
|
|
patchData.hasMinPrice = change.data?.hasMinPrice;
|
|
delete change.data.hasMinPrice;
|
|
}
|
|
if ('minPrice' in change.data) {
|
|
patchData.minPrice = change.data?.minPrice;
|
|
delete change.data.minPrice;
|
|
}
|
|
|
|
if (Object.keys(patchData).length > 0) {
|
|
const promise = axios
|
|
.get(`${modelOrigin}/findOne`, {
|
|
params: {
|
|
filter: {
|
|
fields: ['itemFk'],
|
|
where: { id: change.where.id },
|
|
},
|
|
},
|
|
})
|
|
.then((row) => {
|
|
return axios.patch(`Items/${row.data.itemFk}`, patchData);
|
|
})
|
|
.catch((error) => {
|
|
console.error('Error processing change: ', change, error);
|
|
});
|
|
|
|
patchPromises.push(promise);
|
|
}
|
|
}
|
|
|
|
await Promise.all(patchPromises);
|
|
|
|
data.updates = changes.filter((change) => Object.keys(change.data).length > 0);
|
|
|
|
return data;
|
|
} catch (error) {
|
|
console.error('Error in beforeSave:', error);
|
|
throw error;
|
|
}
|
|
}
|