Esempio n. 1
0
        public Reservation AddReservation(int roomId, int arrangerId, DateTime requestedAccomodationDate, DateTime requestedCheckOutDate, ReservationStatusEnum reservationStatus, HotelBookingSiteEnum hotelBookingSite, decimal totalCost)
        {
            var newReservation = new Reservation
            {
                UserId = arrangerId,
                ReservationStatusId = reservationStatus,
                AccomodationDate    = requestedAccomodationDate,
                CheckOutDate        = requestedCheckOutDate,
                HotelBookingSiteId  = hotelBookingSite,
                TotalCost           = totalCost
            };

            using (var dbContextTransaction = db.Database.BeginTransaction())
            {
                try
                {
                    db.Reservations.Add(newReservation);
                    db.SaveChanges();
                    db.RoomReservations.Add(new RoomReservation
                    {
                        ReservationId = newReservation.ReservationId,
                        RoomId        = roomId
                    });
                    db.SaveChanges();
                    dbContextTransaction.Commit();
                    return(newReservation);
                }
                catch
                {
                    dbContextTransaction.Rollback();
                    return(null);
                }
            }
        }
Esempio n. 2
0
        public Reservation AddReservation(int roomId, int arrangerId, DateTime requestedAccomodationDate, DateTime requestedCheckOutDate, ReservationStatusEnum reservationStatus, HotelBookingSiteEnum hotelBookingSite)
        {
            var room         = this.roomRepository.GetRoom(roomId);
            var numberOfDays = (int)Math.Ceiling((requestedCheckOutDate - requestedAccomodationDate).TotalDays);
            var totalCost    = Math.Round(numberOfDays * room.Cost, 2);

            return(this.reservationRepository.AddReservation(roomId, arrangerId, requestedAccomodationDate, requestedCheckOutDate, reservationStatus, hotelBookingSite, totalCost));
        }