Ejemplo n.º 1
0
    function createBooking(req, res, next) {
        log.info('api.bookings: Creating booking from request', req.body);

        var b = new Booking(req.body);

        Promise.join(PriceBand.getPriceForBooking(b),
                     Booking.findAsync(
                        {'arrivalDate': {'$gte': b.arrivalDate}},
                        {_id: 0, arrivalDate: 1, numberOfNights: 1}),
            function(price, bookings) {

                b.price = price;
                b.deposit = Math.ceil(b.price * 0.25);

                if (BookingUtils.hasConflicts(b.toObject(), _.map(bookings, function(e) {
                    return e.toObject();
                })))
                    return res.status(409).send('Conflicts with existing bookings');

                log.info('api.bookings: Creating booking', b);
                return b.saveAsync().then(function(data) {
                    log.info('api.bookings: Booking created successfully');
                    eventer.bookingMade(data);
                    return res.status(201).json({id: data._id});
                });

        }).error(function(err){
          log.error('api.bookings: Failed to create booking', err);
          res.status(500).send(err.message);
        });
    }
Ejemplo n.º 2
0
 function getPriceForBooking(req, res, next) {
     PriceBand.getPriceForBooking(new Booking(req.query))
         .then(function(price) {
             res.set('Cache-Control', 'public, max-age=3600');
             res.json({price: price});
         });
 }