From 4d080946a6e8f0211c1bd7203051c93db3597fa0 Mon Sep 17 00:00:00 2001 From: Antony Kurniawan Date: Thu, 16 Oct 2025 10:05:38 +0700 Subject: [PATCH] add crud m_status --- controllers/status.controller.js | 73 +++++++++++++++++++++++++ services/status.service.js | 92 ++++++++++++++++++++++++++++++++ 2 files changed, 165 insertions(+) create mode 100644 controllers/status.controller.js create mode 100644 services/status.service.js diff --git a/controllers/status.controller.js b/controllers/status.controller.js new file mode 100644 index 0000000..859be33 --- /dev/null +++ b/controllers/status.controller.js @@ -0,0 +1,73 @@ +const StatusService = require('../services/status.service'); +const { setResponse, setResponsePaging, checkValidate } = require('../helpers/utils'); +const { insertStatusSchema, updateStatusSchema } = require('../validate/status.schema'); + +class StatusController { + // Get all status + static async getAll(req, res) { + const queryParams = req.query; + + const results = await StatusService.getAllStatus(queryParams); + const response = await setResponsePaging(queryParams, results, 'Status found'); + + res.status(response.statusCode).json(response); + } + + // Get status by ID + static async getById(req, res) { + const { id } = req.params; + + const results = await StatusService.getStatusById(id); + const response = await setResponse(results, 'Status found'); + + res.status(response.statusCode).json(response); + } + + // Create status + static async create(req, res) { + const { error, value } = await checkValidate(insertStatusSchema, req); + + if (error) { + return res.status(400).json(setResponse(error, 'Validation failed', 400)); + } + + value.userId = req.user.user_id; + + const results = await StatusService.createStatus(value); + const response = await setResponse(results, 'Status created successfully'); + + return res.status(response.statusCode).json(response); + } + + // Update status + static async update(req, res) { + const { id } = req.params; + + console.log("REQ BODY:", req.body); + + const { error, value } = await checkValidate(updateStatusSchema, req); + + if (error) { + return res.status(400).json(setResponse(error, 'Validation failed', 400)); + } + + value.userId = req.user.user_id; + + const results = await StatusService.updateStatus(id, value); + const response = await setResponse(results, 'Status updated successfully'); + + res.status(response.statusCode).json(response); + } + + // Soft delete status + static async delete(req, res) { + const { id } = req.params; + + const results = await StatusService.deleteStatus(id, req.user.user_id); + const response = await setResponse(results, 'Status deleted successfully'); + + res.status(response.statusCode).json(response); + } +} + +module.exports = StatusController; diff --git a/services/status.service.js b/services/status.service.js new file mode 100644 index 0000000..cfc3113 --- /dev/null +++ b/services/status.service.js @@ -0,0 +1,92 @@ +const { + getAllStatusDb, + getStatusByIdDb, + createStatusDb, + updateStatusDb, + deleteStatusDb, + checkStatusNumberExistsDb +} = require('../db/status.db'); +const { ErrorHandler } = require('../helpers/error'); + +class StatusService { + // Get all status + static async getAllStatus(param) { + try { + const results = await getAllStatusDb(param); + + results.data.map(element => { + }); + + return results; + } catch (error) { + throw new ErrorHandler(error.statusCode, error.message); + } + } + + // Get status by ID + static async getStatusById(id) { + try { + const result = await getStatusByIdDb(id); + + if (result.length < 1) throw new ErrorHandler(404, 'Status not found'); + + return result; + } catch (error) { + throw new ErrorHandler(error.statusCode, error.message); + } + } + + static async createStatus(data) { + try { + if (!data || typeof data !== 'object') data = {}; + + if (data.status_number) { + const exists = await checkStatusNumberExistsDb(data.status_number); + if (exists) throw new ErrorHandler(400, 'Status number already exists'); + } + + const result = await createStatusDb(data); + return result; + } catch (error) { + throw new ErrorHandler(error.statusCode || 500, error.message); + } + } + + // Update status + static async updateStatus(id, data) { + try { + if (!data || typeof data !== 'object') data = {}; + + const dataExist = await getStatusByIdDb(id); + + if (dataExist.length < 1) { + throw new ErrorHandler(404, 'Status not found'); + } + + const result = await updateStatusDb(id, data); + + return result; + } catch (error) { + throw new ErrorHandler(error.statusCode, error.message); + } + } + + // Soft delete status + static async deleteStatus(id, userId) { + try { + const dataExist = await getStatusByIdDb(id); + + if (dataExist.length < 1) { + throw new ErrorHandler(404, 'Status not found'); + } + + const result = await deleteStatusDb(id, userId); + + return result; + } catch (error) { + throw new ErrorHandler(error.statusCode, error.message); + } + } +} + +module.exports = StatusService;