@universis/dining
Version:
Universis api for dining
74 lines (70 loc) • 2.97 kB
JavaScript
import {DataError} from '@themost/common';
// eslint-disable-next-line no-unused-vars
async function beforeSaveAsync(event) {
//
}
async function afterSaveAsync(event) {
// get context
// eslint-disable-next-line no-unused-vars
const context = event.model.context;
// get current status
const actionStatus = await event.model.where('id').equal(event.target.id).select('actionStatus/alternateName').value();
if (actionStatus === 'CompletedActionStatus') {
// set student dining card
const now = new Date();
let academicYear = await event.model.where('id').equal(event.target.id).select('diningRequestEvent/academicYear').value();
let academicPeriod = await event.model.where('id').equal(event.target.id).select('diningRequestEvent/academicPeriod').value();
let validThrough = await event.model.where('id').equal(event.target.id).select('diningRequestEvent/validThrough').value();
if (academicYear == null) {
// get student current academic year
academicYear = await event.model.where('id').equal(event.target.id).select('student/department/currentYear').value();
}
if (academicPeriod == null) {
// get student current academic period
academicPeriod = await event.model.where('id').equal(event.target.id).select('student/department/currentPeriod').value();
}
// get original student
let student = await event.model.where('id').equal(event.target.id).select('student').value();
const studentDiningCard = {
action: event.target.id,
student: student,
academicYear: academicYear,
academicPeriod: academicPeriod,
validFrom: now,
validThrough: validThrough,
active: true
};
// add also DiningPlace location if not supplied
if (event.target.hasOwnProperty('location')===false) {
const department = await event.model.where('id').equal(event.target.id).select('student/department').value();
const location = await context.model('DiningPlace').where('departments/id').equal(department).silent().getItem();
if (location) {
studentDiningCard.location = location;
}
}
// save student dining card
await context.model('StudentDiningCard').silent().save(studentDiningCard);
}
}
/**
* @param {DataEventArgs} event
* @param {Function} callback
*/
export function beforeSave(event, callback) {
return beforeSaveAsync(event).then(() => {
return callback();
}).catch((err) => {
return callback(err);
});
}
/**
* @param {DataEventArgs} event
* @param {Function} callback
*/
export function afterSave(event, callback) {
return afterSaveAsync(event).then(() => {
return callback();
}).catch((err) => {
return callback(err);
});
}