fastcheck/server/src/routes/userNote.routes.ts
2026-04-08 13:58:46 -04:00

277 lines
6.8 KiB
TypeScript

import express from 'express';
import { UserNoteController } from '../controllers/userNoteController';
import { authenticate } from '../middleware/auth.middleware';
import { tenantFilter } from '../middleware/tenant.middleware';
import { requirePermission, Permission } from '../middleware/permissions.middleware';
const router = express.Router();
/**
* @swagger
* tags:
* name: User Notes
* description: User notes management operations
*/
/**
* @swagger
* components:
* schemas:
* UserNote:
* type: object
* properties:
* _id:
* type: string
* example: "507f1f77bcf86cd799439011"
* userId:
* type: string
* example: "507f1f77bcf86cd799439012"
* tenantId:
* type: string
* example: "507f1f77bcf86cd799439013"
* rut:
* type: string
* example: "12345678-9"
* note:
* type: string
* example: "Esta empresa tiene un buen historial crediticio"
* createdAt:
* type: string
* format: date-time
* example: "2024-03-20T15:30:00Z"
* updatedAt:
* type: string
* format: date-time
* example: "2024-03-20T15:30:00Z"
* CreateUserNote:
* type: object
* required:
* - rut
* - note
* properties:
* rut:
* type: string
* example: "12345678-9"
* note:
* type: string
* example: "Esta empresa tiene un buen historial crediticio"
* maxLength: 2000
* UpdateUserNote:
* type: object
* required:
* - note
* properties:
* note:
* type: string
* example: "Nota actualizada sobre la empresa"
* maxLength: 2000
*/
/**
* @swagger
* /api/user-notes/rut/{rut}:
* get:
* summary: Get all notes for a specific RUT
* tags: [User Notes]
* security:
* - bearerAuth: []
* parameters:
* - in: path
* name: rut
* required: true
* schema:
* type: string
* description: Company RUT
* responses:
* 200:
* description: List of notes for the RUT
* content:
* application/json:
* schema:
* type: array
* items:
* $ref: '#/components/schemas/UserNote'
* 400:
* description: Bad request
* 401:
* description: Unauthorized
* 500:
* description: Internal server error
*/
router.get('/rut/:rut',
authenticate,
tenantFilter,
requirePermission(Permission.RUT_READ),
UserNoteController.getNotesByRut
);
/**
* @swagger
* /api/user-notes:
* post:
* summary: Create a new note
* tags: [User Notes]
* security:
* - bearerAuth: []
* requestBody:
* required: true
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/CreateUserNote'
* responses:
* 201:
* description: Note created successfully
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/UserNote'
* 400:
* description: Bad request
* 401:
* description: Unauthorized
* 500:
* description: Internal server error
*/
router.post('/',
authenticate,
tenantFilter,
requirePermission(Permission.RUT_READ),
UserNoteController.createNote
);
/**
* @swagger
* /api/user-notes/{id}:
* put:
* summary: Update a note
* tags: [User Notes]
* security:
* - bearerAuth: []
* parameters:
* - in: path
* name: id
* required: true
* schema:
* type: string
* description: Note ID
* requestBody:
* required: true
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/UpdateUserNote'
* responses:
* 200:
* description: Note updated successfully
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/UserNote'
* 400:
* description: Bad request
* 401:
* description: Unauthorized
* 404:
* description: Note not found
* 500:
* description: Internal server error
*/
router.put('/:id',
authenticate,
tenantFilter,
requirePermission(Permission.RUT_READ),
UserNoteController.updateNote
);
/**
* @swagger
* /api/user-notes/{id}:
* delete:
* summary: Delete a note
* tags: [User Notes]
* security:
* - bearerAuth: []
* parameters:
* - in: path
* name: id
* required: true
* schema:
* type: string
* description: Note ID
* responses:
* 200:
* description: Note deleted successfully
* 401:
* description: Unauthorized
* 404:
* description: Note not found
* 500:
* description: Internal server error
*/
router.delete('/:id',
authenticate,
tenantFilter,
requirePermission(Permission.RUT_READ),
UserNoteController.deleteNote
);
/**
* @swagger
* /api/user-notes/user/my-notes:
* get:
* summary: Get all notes created by the current user
* tags: [User Notes]
* security:
* - bearerAuth: []
* parameters:
* - in: query
* name: page
* schema:
* type: integer
* default: 1
* description: Page number
* - in: query
* name: limit
* schema:
* type: integer
* default: 10
* description: Number of items per page
* responses:
* 200:
* description: List of user notes with pagination
* content:
* application/json:
* schema:
* type: object
* properties:
* notes:
* type: array
* items:
* $ref: '#/components/schemas/UserNote'
* pagination:
* type: object
* properties:
* page:
* type: integer
* limit:
* type: integer
* total:
* type: integer
* pages:
* type: integer
* 400:
* description: Bad request
* 401:
* description: Unauthorized
* 500:
* description: Internal server error
*/
router.get('/user/my-notes',
authenticate,
tenantFilter,
requirePermission(Permission.RUT_READ),
UserNoteController.getNotesByUser
);
export default router;