routes_bill_route.js

/**
 * @fileoverview Routes pour la gestion des factures
 * @module routes/bill
 */

const express = require('express')
const router = express.Router()
const { getBills, createBill, deleteBill, getBillsById, updateBill, deleteManyBills } = require('../controller/bill_controller')
const { verifyToken } = require('../controller/authentification_controller')
const upload = require('../middleware/upload')

/**
 * Route GET pour obtenir toutes les factures
 * @name GET/bills
 * @function
 * @memberof module:routes/bill
 * @inner
 * @param {string} path - Chemin de la route '/'
 * @param {callback} verifyToken - Middleware de vérification du token
 * @param {callback} getBills - Gestionnaire pour récupérer toutes les factures
 */
router.get('/', verifyToken, getBills)

/**
 * Route GET pour obtenir une facture par son ID
 * @name GET/bills/:id
 * @function
 * @memberof module:routes/bill
 * @inner
 * @param {string} path - Chemin de la route '/:_id'
 * @param {callback} verifyToken - Middleware de vérification du token
 * @param {callback} getBillsById - Gestionnaire pour récupérer une facture par ID
 */
router.get('/:_id', verifyToken, getBillsById)

/**
 * Route POST pour créer une nouvelle facture
 * @name POST/bills
 * @function
 * @memberof module:routes/bill
 * @inner
 * @param {string} path - Chemin de la route '/'
 * @param {callback} verifyToken - Middleware de vérification du token
 * @param {callback} upload.single - Middleware pour le téléchargement de fichier
 * @param {callback} createBill - Gestionnaire pour créer une facture
 */
router.post('/', verifyToken, upload.single('proof'), createBill)

/**
 * Route DELETE pour supprimer plusieurs factures
 * @name DELETE/bills/many
 * @function
 * @memberof module:routes/bill
 * @inner
 * @param {string} path - Chemin de la route '/many'
 * @param {callback} verifyToken - Middleware de vérification du token
 * @param {callback} deleteManyBills - Gestionnaire pour supprimer plusieurs factures
 */
router.delete('/many', verifyToken, deleteManyBills)

/**
 * Route DELETE pour supprimer une facture
 * @name DELETE/bills/:bill
 * @function
 * @memberof module:routes/bill
 * @inner
 * @param {string} path - Chemin de la route '/:_bill'
 * @param {callback} verifyToken - Middleware de vérification du token
 * @param {callback} deleteBill - Gestionnaire pour supprimer une facture
 */
router.delete('/:_bill', verifyToken, deleteBill)

/**
 * Route PUT pour mettre à jour une facture
 * @name PUT/bills/:id
 * @function
 * @memberof module:routes/bill
 * @inner
 * @param {string} path - Chemin de la route '/:_id'
 * @param {callback} verifyToken - Middleware de vérification du token
 * @param {callback} upload.single - Middleware pour le téléchargement de fichier
 * @param {callback} updateBill - Gestionnaire pour mettre à jour une facture
 */
router.put('/:_id', verifyToken, upload.single('proof'), updateBill)

module.exports = router