diff --git a/src/controller/company.controller.js b/src/controller/company.controller.js new file mode 100644 index 0000000..76d780d --- /dev/null +++ b/src/controller/company.controller.js @@ -0,0 +1,93 @@ +const Company = require("../models/Company"); + +module.exports = { + /** + * Gets the company data by `id` + */ + getCompanyByID: async (req, res, next) => { + const { id } = req.params; + + if (!id) { + res.status(400).send("Missing id param"); + return; + } + + try { + const companyData = await Company.findById(id); + if (!companyData) { + res.status(404); + return; + } + req.send(companyData); + } catch (error) { + next(error); + } + }, + + /** + * Create a company + */ + createCompany: async (req, res, next) => { + const { name, address, contact_info, business_info } = req.body; + + if (!(name && address)) { + res.status(400).send("Missing params param"); + return; + } + + try { + const companyData = new Company({ + name, + address, + contact_info, + business_info, + }); + + await companyData.save(); + if (!companyData) { + res.status(404); + return; + } + req.send(companyData); + } catch (error) { + next(error); + } + }, + + /** + * Update a companys detail + */ + updateCompanyByID: async (req, res, next) => { + const { id } = req.params; + + if (!id) { + res.status(400).send("Missing id param"); + return; + } + + const { name, address, contact_info, business_info } = req.body; + + if (!(name || address || contact_info || business_info)) { + res.status(400).send("Missing data in body"); + return; + } + + try { + const companyData = await Company.findById(id); + if (!companyData) { + res.status(404); + return; + } + + if (name) companyData.name = name; + if (address) companyData.address = address; + if (contact_info) companyData.contact_info = contact_info; + if (business_info) companyData.business_info = business_info; + + await companyData.save(); + req.send(companyData); + } catch (error) { + next(error); + } + }, +}; diff --git a/src/controller/company.router.js b/src/controller/company.router.js new file mode 100644 index 0000000..faedeb7 --- /dev/null +++ b/src/controller/company.router.js @@ -0,0 +1,19 @@ +const router = require("express").Router(); +const controller = require("./company.controller"); + +/** + * @route /company/:id + */ +router.get("/:id", controller.getCompanyByID); + +/** + * @route /company/ + */ +router.post("/", controller.createCompany); + +/** + * @route /company/ + */ +router.patch("/:id", controller.updateCompanyByID); + +module.exports = router; diff --git a/src/controller/index.js b/src/controller/index.js index bdacacf..7e36972 100644 --- a/src/controller/index.js +++ b/src/controller/index.js @@ -1,7 +1,9 @@ const router = require("express").Router(); const userRouter = require("./user.router"); +const companyRouter = require("./company.router"); router.use("/user", userRouter); +router.use("/company", companyRouter); router.get("/", (req, res) => { res.send("Hello world");