'use strict'; import e = require('express'); import Request = e.Request; import Response = e.Response; import reservationLib from '../lib/reservation'; import { ReservationConstants as rConstants } from '../constants/reservation.constants'; import * as _ from "lodash"; /** * /reservations/reserve * post: * description: Add bulk reservation for instruments * responses: * 200: * description: Response after successfully posting the request * 400: * description: Failed to add a request * 500: * description: Unexpected server error */ async function add(req: Request, res: Response) { try { const reservationObj = new reservationLib(req.params.facilityId || '/', req['user'].username); const listName = req.params.listName; let inputData = req.body; // extracting the instruments object let instruments = _.pull(_.get(req.body, rConstants.INSTRUMENTS, [])); let data = []; // checking the instruments object is not empty if(_.isArray(instruments) && _.isEmpty(instruments)){ res.status(400).json({ error: rConstants.ERR_MSG_INSTRUMENT_EMPTY }); } // adding the instruments objects await Promise.all(instruments.map(async (instrument) => { data.push(await reservationObj.add(req.params.listName, inputData, instrument )); })); res.send(data); } catch (error) { res.status(400).json({ error: error }); } } exports.routes = [ { path: '/:listName/reserve', httpMethod: ['POST'], middleware: [add], accessLevel: 'user' } ];