Пример #1
0
        public BookingModule()
            : base("api/booking")
        {
            _roomBookingDataAdapter        = new RoomBookingDataAdapter(TheDatabase.Instance());
            _roomTypeDefinitionDataAdapter = new RoomTypeDefinitionDataAdapter(TheDatabase.Instance());

            Get[""] = parameters =>
            {
                var bookings = _roomBookingDataAdapter.ReadAll();

                return(Response.AsJson(bookings));
            };

            Get["/{bookingId}"] = parameters =>
            {
                Guid bookingId = parameters.bookingId;

                var roomBooking = _roomBookingDataAdapter.Read(bookingId);
                if (roomBooking != null)
                {
                    return(Response.AsJson(
                               MapToRoomBookingInfo(roomBooking)));
                }

                return(HttpStatusCode.NotFound);
            };

            Post[""] = parameters =>
            {
                var bookingToCreate = this.Bind <RoomBookingInfo>();
                var roomBooking     = MapToRoomBooking(bookingToCreate);

                var newBookingId = Guid.NewGuid();
                roomBooking.Id     = newBookingId;
                roomBooking.Price  = _roomTypeDefinitionDataAdapter.Read(roomBooking.RoomType).PricePerNight *roomBooking.Duration;
                roomBooking.Status = RoomBookingStatus.Draft;

                _roomBookingDataAdapter.Create(roomBooking);

                return(Response.AsJson(new IdWrapper(newBookingId)));
            };

            Put["/{bookingId}/confirm"] = parameters =>
            {
                Guid bookingId = parameters.bookingId;

                var roomBooking = _roomBookingDataAdapter.Read(bookingId);
                if (roomBooking != null)
                {
                    roomBooking.Status = RoomBookingStatus.ConfirmedByCustomer;
                    _roomBookingDataAdapter.Update(roomBooking);

                    return(HttpStatusCode.OK);
                }

                return(HttpStatusCode.NotFound);
            };
        }
Пример #2
0
        public RoomTypeModule() : base("api/roomtypes")
        {
            _roomTypeDefinitionDataAdapter = new RoomTypeDefinitionDataAdapter(TheDatabase.Instance());

            Get[""] = parameters =>
            {
                var roomTypeViewModels =
                    (from roomTypeDefinition in _roomTypeDefinitionDataAdapter.ReadAll()
                     select new RoomTypeInfo
                     {
                         Id = Convert.ToInt32(roomTypeDefinition.RoomType),
                         Title = roomTypeDefinition.RoomType.ToString(),
                         PricePerNight = roomTypeDefinition.PricePerNight
                     })
                     .ToArray();

                return Response.AsJson(roomTypeViewModels);
            };
        }