diff --git a/src/controllers/employeeController.ts b/src/controllers/employeeController.ts new file mode 100644 index 0000000..e9527a6 --- /dev/null +++ b/src/controllers/employeeController.ts @@ -0,0 +1,92 @@ +import database from "../db"; + +const create = async (request, response) => { + try { + const fieldsToValidate = ['cpf', 'name', 'occupation'] + for (let field of fieldsToValidate) { + if (!request.body.employee[field]) { + return response.status(400).json({ + success: false, + message: `O campo ${field} é obrigatório.` + }); + } + } + return response.json({ + success: true, + employee: await database.employee.create(request.body.employee) + }); + } catch (error) { + console.log('ERROR --> ', error); + return response.status(500).json({ + success: false, + message: 'Ocorreu um erro ao realizar a operação, tente novamente mais tarde.', + error: error.toString() + }); + } +} + +const getAll = async (request, response) => { + try { + return response.json({ + success: true, + employees: await database.employee.findAll() + }); + } catch (error) { + console.log('ERROR ---> ', error); + return response.status(500).json({ + success: false, + message: 'Ocorreu um erro ao realizar a operação, tente novamente mais tarde.', + error: error.toString() + }); + } +} + +const getOne = async (request, response) => { + try { + return response.json({ + success: true, + employee: await database.employee.findByPk(request.params.cpf) + }); + } catch (error) { + console.log('ERROR ---> ', error); + return response.status(500).json({ + success: false, + message: 'Ocorreu um erro ao realizar a operação, tente novamente mais tarde.', + error: error.toString() + }); + } +} + +const edit = async (request, response) => { + try { + await database.employee.update(request.body.employee, { where: { cpf: request.params.cpf } }) + return response.json({ + success: true + }); + } catch (error) { + console.log('ERROR ---> ', error); + return response.status(500).json({ + success: false, + message: 'Ocorreu um erro ao realizar a operação, tente novamente mais tarde.', + error: error.toString() + }); + } +} + +const destroy = async (request, response) => { + try { + await database.employee.destroy({ where: { cpf: request.params.cpf } }) + return response.json({ + success: true + }); + } catch (error) { + console.log('ERROR ---> ', error); + return response.status(500).json({ + success: false, + message: 'Ocorreu um erro ao realizar a operação, tente novamente mais tarde.', + error: error.toString() + }); + } +} + +export default { create, getAll, getOne, edit, destroy } diff --git a/src/routes/employee.ts b/src/routes/employee.ts new file mode 100644 index 0000000..8b3bebe --- /dev/null +++ b/src/routes/employee.ts @@ -0,0 +1,18 @@ +import { Router } from "express"; + +import clientController from '../controllers/employeeController'; + +const routes = Router(); + +routes.post("/", async (request, response) => await clientController.create(request, response)); + +routes.get("/", async (request, response) => await clientController.getAll(request, response)); + +routes.get("/:cpf", async (request, response) => await clientController.getOne(request, response)); + +routes.put("/:cpf", async (request, response) => await clientController.edit(request, response)); + +routes.delete("/:cpf", async (request, response) => await clientController.destroy(request, response)); + + +export default routes; diff --git a/src/routes/index.ts b/src/routes/index.ts index 7d67528..8de8b88 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -1,5 +1,7 @@ import { Router } from "express"; +import employeeRoutes from './employee'; + const routes = Router(); routes.get("/", (request, response) => { @@ -20,4 +22,6 @@ routes.get("/", (request, response) => { }); }); +routes.use('/employee', employeeRoutes); + export default routes;