public ServiceResult <NightlyRatePlan> MakeReservationNighlyPlan(ReservationDataTransferObject reservation)
        {
            var ratePlan = _nightlyRatePlanRepository.All()
                           .Include(r => r.Seasons)
                           .Include(r => r.RatePlanRooms)
                           .ThenInclude(r => r.Room)
                           .First(r => r.Id == reservation.RatePlanId);
            var canReserve = ratePlan.Seasons
                             .Any(s => s.StartDate <= reservation.ReservationStart && s.EndDate >= reservation.ReservationEnd);
            var room = ratePlan.RatePlanRooms
                       .First(r => r.RoomId == reservation.RoomId && r.RatePlanId == reservation.RatePlanId);
            var isRoomAvailable = room.Room.Amount > 0 &&
                                  room.Room.MaxAdults > reservation.AmountOfChildren &&
                                  room.Room.MaxChildren >= reservation.AmountOfChildren;

            if (canReserve && isRoomAvailable)
            {
                room.Room.Amount -= 1;
                _nightlyRatePlanRepository.SaveChanges();
                var days = (reservation.ReservationEnd - reservation.ReservationStart).TotalDays;
                return(ServiceResult <NightlyRatePlan> .SuccessResult(new NightlyRatePlan
                {
                    Price = days * ratePlan.Price
                }));
            }
            return(ServiceResult <NightlyRatePlan> .ErrorResult("Bad Request"));
        }
        public IActionResult Post([FromBody] ReservationDataTransferObject reservationModel)
        {
            var reservationServiceResult = _reservationService.MakeReservationNighlyPlan(reservationModel);

            if (reservationServiceResult.ResponseCode != ResponseCode.Success)
            {
                return(BadRequest(reservationServiceResult.Error));
            }
            return(Ok(reservationServiceResult.Result));
        }