/**
* Module Dependencies
*/
const CardService = require('../services/card.service');
const DescriptionService = require('../services/description.service');
const EmailService = require('../services/email.service');
const TelephoneService = require('../services/telephone.service');
const StripperService = require('../services/stripper.service');
const list = req => new Promise(async (resolve, reject) => {
try {
const queryParams = await StripperService.buildDefaultQuery(req.params.userId, req.query);
resolve(await CardService.list(queryParams));
} catch (err) {
reject(err);
}
});
const create = req => new Promise(async (resolve, reject) => {
try {
let { body } = req;
const fieldMap = await Promise.all([
DescriptionService.findOrCreate(req.params.userId, body.description),
EmailService.findOrCreate(req.params.userId, body.email),
TelephoneService.findOrCreate(req.params.userId, body.telephone),
]);
body = await Object.assign(body, {
description: fieldMap[0].id || null,
email: fieldMap[1].id || null,
telephone: fieldMap[2].id || null,
});
const card = await CardService.create(req.params.userId, body);
resolve(card);
} catch (err) {
reject(err);
}
});
const read = req => new Promise(async (resolve, reject) => {
try {
let card = await CardService.read(req.params.cardId);
card = await StripperService.defaultStrip(card);
resolve(card);
} catch (err) {
reject(err);
}
});
const update = req => new Promise(async (resolve, reject) => {
try {
let { body } = req;
const fieldMap = await Promise.all([
DescriptionService.findOrCreate(req.params.userId, body.description),
EmailService.findOrCreate(req.params.userId, body.email),
TelephoneService.findOrCreate(req.params.userId, body.telephone),
]);
body = await Object.assign(body, {
description: fieldMap[0].id || null,
email: fieldMap[1].id || null,
telephone: fieldMap[2].id || null,
});
const card = await CardService.update(req.params.cardId, body);
resolve(card);
} catch (err) {
reject(err);
}
});
const del = req => new Promise(async (resolve, reject) => {
try {
resolve(await CardService.del(req.params.cardId));
} catch (err) {
reject(err);
}
});
module.exports = {
list,
create,
read,
update,
del,
};
|