eletrotupi / tcc/ api/src/controllers/medicineRegimens.ts1177778ae361b58371a1dabb3aeec3b0b03e0ff9
1.9 KB | 67 lines Raw
1
import { Response, NextFunction } from 'express';
2
import { AuthenticatedRequest } from '@app/middleware/auth';
3
import { CreateMedicineRegimenSchema, UpdateMedicineRegimenSchema } from '@app/schemas';
4
import {
5
  getMedicineRegimensByUserId,
6
  createMedicineRegimen,
7
  updateMedicineRegimen,
8
  deactivateMedicineRegimen,
9
} from '@app/services/medicineRegimen.service';
10

11
export const MedicineRegimensController = {
12
  index: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
13
    try {
14
      const regimens = await getMedicineRegimensByUserId(Number(req.userId));
15

16
      return res.status(200).json({ regimens });
17
    } catch (err) {
18
      next(err);
19
    }
20
  },
21

22
  create: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
23
    try {
24
      const parsed = CreateMedicineRegimenSchema.safeParse(req.body.regimen);
25

26
      if (!parsed.success) {
27
        return res.status(400).json({ errors: parsed.error!.issues });
28
      }
29

30
      const regimen = await createMedicineRegimen(req.userId!, parsed.data);
31

32
      return res.status(201).json({ regimen });
33
    } catch (err) {
34
      next(err);
35
    }
36
  },
37

38
  update: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
39
    try {
40
      const parsed = UpdateMedicineRegimenSchema.safeParse(req.body.regimen);
41

42
      if (!parsed.success) {
43
        return res.status(400).json({ errors: parsed.error!.issues });
44
      }
45

46
      const regimen = await updateMedicineRegimen(
47
        req.userId!,
48
        Number(req.params.id),
49
        parsed.data,
50
      );
51

52
      return res.status(200).json({ regimen });
53
    } catch (err) {
54
      next(err);
55
    }
56
  },
57

58
  destroy: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
59
    try {
60
      await deactivateMedicineRegimen(req.userId!, Number(req.params.id));
61

62
      return res.status(200).json({});
63
    } catch (err) {
64
      next(err);
65
    }
66
  },
67
};