agmission/Development/server/controllers/partner.js

82 lines
1.8 KiB
JavaScript

'use strict';
const Partner = require('../model/partner'),
{ AppParamError } = require('../helpers/app_error'),
{ Errors } = require('../helpers/constants'),
assert = require('assert');
// Create a new partner
async function createPartner_post(req, res) {
const input = req.body;
assert(input && input.name, AppParamError.create());
const partner = new Partner({
name: input.name,
description: input.description || '',
});
const newPartner = await partner.save();
res.json(newPartner);
}
// Get all partners
async function getPartners_get(req, res) {
const partners = await Partner.find().lean();
res.json(partners);
}
// Get a specific partner by ID
async function getPartnerById_get(req, res) {
const partnerId = req.params?.id;
assert(partnerId, AppParamError.create());
const partner = await Partner.findById(partnerId).lean();
if (!partner) AppParamError.throw(Errors.NOT_FOUND);
res.json(partner);
}
// Update a partner
async function updatePartner_put(req, res) {
const partnerId = req.params?.id;
const input = req.body;
assert(partnerId, AppParamError.create());
const partner = await Partner.findByIdAndUpdate(
partnerId,
{
name: input.name,
code: input.code,
description: input.description,
active: input.active,
},
{ new: true, runValidators: true }
);
if (!partner) AppParamError.throw(Errors.NOT_FOUND);
res.json(partner);
}
// Delete a partner
async function deletePartner(req, res) {
const partnerId = req.params.id;
assert(partnerId, AppParamError.create());
const partner = await Partner.findByIdAndDelete(partnerId);
if (!partner) AppParamError.throw(Errors.NOT_FOUND);
res.json({ ok: true });
}
module.exports = {
createPartner_post,
getPartners_get,
getPartnerById_get,
updatePartner_put,
deletePartner,
};