88 lines
2.4 KiB
JavaScript
88 lines
2.4 KiB
JavaScript
|
|
module.exports = Self => {
|
|
Self.remoteMethodCtx('deleteStowaway', {
|
|
description: 'Deletes an stowaway',
|
|
accessType: 'WRITE',
|
|
accepts: [{
|
|
arg: 'id',
|
|
type: 'number',
|
|
required: true,
|
|
description: 'The ticket id',
|
|
http: {source: 'path'}
|
|
}],
|
|
returns: {
|
|
root: true
|
|
},
|
|
http: {
|
|
path: `/:id/deleteStowaway`,
|
|
verb: 'POST'
|
|
}
|
|
});
|
|
|
|
Self.deleteStowaway = async(ctx, id) => {
|
|
const models = Self.app.models;
|
|
const $t = ctx.req.__; // $translate
|
|
const ticket = await Self.findById(id, {
|
|
include: [{
|
|
relation: 'ship'
|
|
}, {
|
|
relation: 'stowaway'
|
|
}, {
|
|
relation: 'client',
|
|
scope: {
|
|
include: {
|
|
relation: 'salesPersonUser',
|
|
scope: {
|
|
fields: ['id', 'name']
|
|
}
|
|
}
|
|
}
|
|
}]
|
|
});
|
|
|
|
let stowawayFk;
|
|
let shipFk;
|
|
if (ticket.stowaway()) {
|
|
shipFk = ticket.stowaway().shipFk;
|
|
stowawayFk = ticket.stowaway().id;
|
|
} else if (ticket.ship()) {
|
|
shipFk = ticket.ship().shipFk;
|
|
stowawayFk = ticket.ship().id;
|
|
}
|
|
|
|
const stowaway = await models.Stowaway.findOne({
|
|
where: {
|
|
id: stowawayFk,
|
|
shipFk: shipFk
|
|
}
|
|
});
|
|
const result = await stowaway.destroy();
|
|
|
|
const state = await models.State.findOne({
|
|
where: {
|
|
code: 'BOARDING'
|
|
}
|
|
});
|
|
const ticketTracking = await models.TicketTracking.findOne({
|
|
where: {
|
|
ticketFk: shipFk,
|
|
stateFk: state.id
|
|
}
|
|
});
|
|
|
|
await ticketTracking.destroy();
|
|
|
|
const salesPerson = ticket.client().salesPersonUser();
|
|
if (salesPerson) {
|
|
const origin = ctx.req.headers.origin;
|
|
const message = $t('This ticket is not an stowaway anymore', {
|
|
ticketId: stowawayFk,
|
|
ticketUrl: `${origin}/#!/ticket/${stowawayFk}/summary`
|
|
});
|
|
await models.Chat.sendCheckingPresence(ctx, salesPerson.id, message);
|
|
}
|
|
|
|
return result;
|
|
};
|
|
};
|