diff --git a/server/src/controllers/boatControllers.controllers.ts b/server/src/controllers/boatControllers.controllers.ts index 8d911c7a5af85c873965281cfd45a1635debc149..0416a3611e77a44c56028d26d389ac41c9c4cf1c 100644 --- a/server/src/controllers/boatControllers.controllers.ts +++ b/server/src/controllers/boatControllers.controllers.ts @@ -52,10 +52,40 @@ const deleteBoatById = async (req: Request, res: Response) => { return res.status(500).json({ success: false, error: "serverError" }); } }; + +//create boat +const createBoat = async (req: Request, res: Response) => { + try { + if (!(res.locals.user.role == "coordinator")) { + return res + .status(403) + .json({ success: false, error: "MustBeCoordinator" }); + } + + const newBoatInput = req.body; + + console.log("input von req.body: ", newBoatInput); + + const newBoat = await Boat.create(newBoatInput); + + const { id, name, boattype, status, active, tags } = newBoat; + + if (newBoat) { + return res + .status(201) + .json({ success: true, result: { id, name, boattype, status, active, tags } }); + } + } catch (error) { + console.error(error.message); + return res.status(500).json({ success: false, error: "serverError" }); + } +}; + const boatControllers = { showAllBoatsController, showBoatById, deleteBoatById, + createBoat, }; export default boatControllers; diff --git a/server/src/routes/boatRoutes.routes.ts b/server/src/routes/boatRoutes.routes.ts index 55a817054cd53859d67712d4191fe80910b453b3..e41b8eefdc12bd792af1ecbb10bd71291f0f2ba9 100644 --- a/server/src/routes/boatRoutes.routes.ts +++ b/server/src/routes/boatRoutes.routes.ts @@ -1,16 +1,37 @@ import { Router } from "express"; +import { body } from "express-validator"; import validateToken from "../middleware/validateToken"; import boatControllers from "../controllers/boatControllers.controllers"; +import handleValidationResult from "../middleware/handleValidationResult"; + const boatsRouter = Router(); +//show all boats boatsRouter.get("/api/boat/", boatControllers.showAllBoatsController); + +//show boat by given id boatsRouter.get("/api/boat/:id", boatControllers.showBoatById); + +//delete a boat boatsRouter.delete( "/api/boat/:id", validateToken, boatControllers.deleteBoatById ); +//create boat +boatsRouter.post( + "/api/boat/", + body("name").not().isEmpty(), + body("boattype").not().isEmpty(), + body("status").not().isEmpty(), + body("active").not().isEmpty(), + body("tags").not().isEmpty(), + handleValidationResult, + validateToken, + boatControllers.createBoat +); + export default boatsRouter;