public ActionResult EditBulkReservation(Guid id) { TempBulkReservationMasterVM model = new TempBulkReservationMasterVM(); var reservation = reservationRepository.GetTempBulkReservationMasterById(id, LogInManager.LoggedInUserId); if (reservation != null) { model = reservation; if (model.ArrivalDate.HasValue) { if (model.ArrivalDate.Value.DayOfWeek == DayOfWeek.Friday || model.ArrivalDate.Value.DayOfWeek == DayOfWeek.Saturday) { model.IsWeekEndPrice = true; } } #region Room Type //Get Room Type Details. if (model.RoomTypeId.HasValue) { var roomType = roomTypeRepository.GetRoomTypeById(model.RoomTypeId.Value).FirstOrDefault(); if (roomType != null) { model.RoomTypeCode = roomType.RoomTypeCode; } } #endregion var roomTypeList = new SelectList(roomTypeRepository.GetRoomType(string.Empty), "Id", "RoomTypeCode").ToList(); var rateTypeList = new SelectList(rateTypeRepository.GetRateType(string.Empty) .Select( m => new SelectListItem() { Value = m.Id.ToString(), Text = m.RateTypeCode } ), "Value", "Text").ToList(); var reservationTypeList = new SelectList(reservationTypeRepository.GetReservationTypes(), "Id", "Name").ToList(); var marketList = new SelectList( marketRepository.GetMarkets() .Select( m => new SelectListItem() { Value = m.Id.ToString(), Text = !string.IsNullOrWhiteSpace(m.Description) ? m.Description : m.Name } ), "Value", "Text").ToList(); var reservationSourceList = new SelectList( reservationSourceRepository.GetReservationSources() .Select( m => new SelectListItem() { Value = m.Id.ToString(), Text = !string.IsNullOrWhiteSpace(m.Description) ? m.Description : m.Name } ), "Value", "Text").ToList(); var paymentMethodList = paymentMethodRepository.GetPaymentMethods(); var roomFeaturesList = roomFeatureRepository.GetRoomFeatures(); var rtcList = new SelectList(rtcRepository.GetRTC(), "Id", "Code").ToList(); var roomList = new List <SelectListItem>(); if (model.RoomTypeId.HasValue) { roomList = new SelectList(roomRepository.GetRoomDetailsForBulkReservation(model.RoomTypeId.Value, model.Id), "Id", "RoomNo").ToList(); } ViewBag.RateTypeList = rateTypeList; ViewBag.RoomTypeList = roomTypeList; ViewBag.ReservationTypeList = reservationTypeList; ViewBag.MarketList = marketList; ViewBag.ReservationSourceList = reservationSourceList; ViewBag.PaymentMethodList = paymentMethodList; ViewBag.RoomFeaturesList = roomFeaturesList; ViewBag.RtcList = rtcList; ViewBag.RoomList = roomList; double?dblWeekEndPrice = model.Rate; if (model.RoomTypeId.HasValue && model.RateCodeId.HasValue) { var weekEndPrice = rateRepository.GetWeekEndPrice(model.RoomTypeId.Value, model.RateCodeId.Value).FirstOrDefault(); if (weekEndPrice != null) { dblWeekEndPrice = weekEndPrice.Amount; } } ViewBag.WeekEndPrice = dblWeekEndPrice; //Decrypt Credit Card# model.CreditCardNo = Utility.Utility.Decrypt(model.CreditCardNo, Utility.Utility.EncryptionKey); //Original Credit Card# ViewBag.OriginalCreditCardNo = model.CreditCardNo; //Mask Credit Card# model.CreditCardNo = Utility.Utility.MaskCreditCardNo(model.CreditCardNo); return(View(model)); } return(RedirectToAction("BulkReservation")); }
public static double CalculateReservationTotalPrice(Guid reservationId) { ReservationRepository reservationRepository = new ReservationRepository(); RateRepository rateRepository = new RateRepository(); var reservation = reservationRepository.GetReservationById(reservationId, LogInManager.LoggedInUserId).FirstOrDefault(); double dblTotalPrice = 0; if (reservation != null) { int noOfNights; double rate; int? noOfChildren; double?discountAmount; double?discountPercentage; bool blnIsDisocuntInPercentage = false; double totalDiscount = 0; double childrenCharges = 0; noOfNights = reservation.NoOfNight; rate = reservation.Rate.HasValue ? reservation.Rate.Value : 0; noOfChildren = reservation.NoOfChildren; discountAmount = reservation.DiscountAmount; discountPercentage = reservation.DiscountPercentage; if (discountPercentage.HasValue) { blnIsDisocuntInPercentage = true; } double?dblWeekEndPrice = rate; if (reservation.RoomTypeId.HasValue && reservation.RateCodeId.HasValue) { var weekEndPrice = rateRepository.GetWeekEndPrice(reservation.RoomTypeId.Value, reservation.RateCodeId.Value).FirstOrDefault(); if (weekEndPrice != null) { dblWeekEndPrice = weekEndPrice.Amount; } } int totalNoOfDays = noOfNights; DateTime dtStartDate = reservation.ArrivalDate.Value; for (int i = 1; i <= totalNoOfDays; i++) { double discount = 0; rate = reservation.Rate.HasValue ? reservation.Rate.Value : 0; if (dtStartDate.DayOfWeek == DayOfWeek.Friday || dtStartDate.DayOfWeek == DayOfWeek.Saturday) { rate = dblWeekEndPrice.HasValue ? dblWeekEndPrice.Value : rate; } if (blnIsDisocuntInPercentage) { if (discountPercentage.HasValue && discountPercentage.Value > 0) { discount = (rate * discountPercentage.Value) / 100; } } else { if (discountAmount.HasValue) { discount = discountAmount.Value; } } totalDiscount = totalDiscount + discount; dblTotalPrice += (1 * rate); // Each night (1, 2, 3 etc...). Here 1 = current night dtStartDate = dtStartDate.AddDays(1); } //Deduct Discount from total price. if (totalDiscount > 0) { dblTotalPrice = (dblTotalPrice - totalDiscount); } //Default 5 Euro for the one children. if (noOfChildren.HasValue) { childrenCharges = (noOfChildren.Value * (double)Constants.CHILDREN_CHARGE); } //dblTotalPrice = (noOfNights * rate) + childrenCharges; dblTotalPrice += childrenCharges; //Append Add-Ons Price. var addOnsDetails = reservationRepository.GetReservationAddOnsMapping(reservation.Id, null, LogInManager.LoggedInUserId); if (addOnsDetails != null && addOnsDetails.Count > 0) { var totalAddOnsPrice = addOnsDetails.Where(m => m.AddOnsPrice.HasValue).Sum(m => m.AddOnsPrice); dblTotalPrice += (totalAddOnsPrice.HasValue) ? totalAddOnsPrice.Value : 0; } //Append Package Price. var packageDetails = reservationRepository.GetReservationPackageMapping(reservation.Id, null, LogInManager.LoggedInUserId); if (packageDetails != null && packageDetails.Count > 0) { var totalPackagePrice = packageDetails.Where(m => m.TotalAmount.HasValue).Sum(m => m.TotalAmount); dblTotalPrice += (totalPackagePrice.HasValue) ? totalPackagePrice.Value : 0; } } return(Math.Round(dblTotalPrice, 2)); }