コード例 #1
0
        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"));
        }
コード例 #2
0
        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));
        }