eletrotupi / tcc/ api/src/controllers/medicineRegimens.ts12c613c01bc44da902e59329b5ed93393aa84da7
2.1 KB | 78 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
  getTodayMedicineRegimens,
10
} from '@app/services/medicineRegimen.service';
11

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

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

23
  today: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
24
    try {
25
      const regimens = await getTodayMedicineRegimens(req.userId!);
26

27
      return res.status(200).json({ regimens });
28
    } catch (err) {
29
      next(err);
30
    }
31
  },
32

33
  create: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
34
    try {
35
      const parsed = CreateMedicineRegimenSchema.safeParse(req.body.regimen);
36

37
      if (!parsed.success) {
38
        return res.status(400).json({ errors: parsed.error!.issues });
39
      }
40

41
      const regimen = await createMedicineRegimen(req.userId!, parsed.data);
42

43
      return res.status(201).json({ regimen });
44
    } catch (err) {
45
      next(err);
46
    }
47
  },
48

49
  update: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
50
    try {
51
      const parsed = UpdateMedicineRegimenSchema.safeParse(req.body.regimen);
52

53
      if (!parsed.success) {
54
        return res.status(400).json({ errors: parsed.error!.issues });
55
      }
56

57
      const regimen = await updateMedicineRegimen(
58
        req.userId!,
59
        Number(req.params.id),
60
        parsed.data,
61
      );
62

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

69
  destroy: async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
70
    try {
71
      await deactivateMedicineRegimen(req.userId!, Number(req.params.id));
72

73
      return res.status(200).json({});
74
    } catch (err) {
75
      next(err);
76
    }
77
  },
78
};