Exemple #1
0
        public static double CalculateTotalBalance(Guid reservationId)
        {
            double dblTotalBalance = 0;

            ReservationRepository reservationRepository = new ReservationRepository();
            var reservation = reservationRepository.GetReservationById(reservationId, LogInManager.LoggedInUserId).FirstOrDefault();

            ReservationChargeRepository reservationChargeRepository = new ReservationChargeRepository();

            if (reservation != null)
            {
                if (reservation.IsCheckIn == true)
                {
                    //Reservation Charges
                    var reservationCharges = reservationChargeRepository.GetReservationCharges(reservationId, null, LogInManager.LoggedInUserId);
                    if (reservationCharges != null && reservationCharges.Count > 0)
                    {
                        var totalReservationCharges = reservationCharges.Where(m => m.Amount.HasValue)
                                                      .Sum(m => (m.Amount.Value * (m.Qty.HasValue ? m.Qty.Value : 1)));

                        dblTotalBalance += totalReservationCharges;

                        dblTotalBalance = CurrencyManager.ConvertAmountToBaseCurrency(dblTotalBalance, LogInManager.CurrencyCode);
                    }
                }
                else
                {
                    double totalRoomRentCharge = 0;
                    //totalRoomRentCharge = CalculateRoomRentCharges(reservation.NoOfNight, (reservation.Rate.HasValue ? reservation.Rate.Value : 0), reservation.NoOfChildren, reservation.DiscountAmount, reservation.DiscountPercentage, (reservation.DiscountPercentage.HasValue ? true : false));

                    totalRoomRentCharge = CalculateReservationTotalPrice(reservation.Id);

                    dblTotalBalance = totalRoomRentCharge;

                    ////Package Price
                    //var packageDetails = reservationRepository.GetReservationPackageMapping(reservation.Id, null);
                    //if (packageDetails != null && packageDetails.Count > 0)
                    //{
                    //    var totalPackagePrice = packageDetails.Where(m => m.PackagePrice.HasValue).Sum(m => m.PackagePrice);

                    //    dblTotalBalance += (totalPackagePrice.HasValue) ? totalPackagePrice.Value : 0;
                    //}
                }
            }

            return(Math.Round(dblTotalBalance, 2));
        }
Exemple #2
0
        public ActionResult AddCharges(List <ReservationChargeVM> models)
        {
            try
            {
                bool   blnIsChargesInserted = false;
                double totalBalance         = 0;

                var    transactions  = new List <ReservationChargeVM>();
                Guid?  reservationId = null;
                double totalAmount   = 0;

                if (models != null)
                {
                    reservationId = models[0].ReservationId;


                    foreach (var model in models)
                    {
                        string chargeId = string.Empty;

                        model.CreatedBy = LogInManager.LoggedInUserId;
                        model.AdditionalChargeSource = AdditionalChargeSource.ADDITIONAL_CHARGE;

                        double?transactionAmount = 0;
                        double?oldAmount         = 0;
                        if (model.Amount.HasValue)
                        {
                            oldAmount         = model.Amount;
                            transactionAmount = CurrencyManager.ConvertAmountToBaseCurrency(model.Amount, LogInManager.CurrencyCode);
                            model.Amount      = transactionAmount;
                        }

                        chargeId = reservationChargeRepository.AddReservationCharges(model);

                        if (!string.IsNullOrWhiteSpace(chargeId))
                        {
                            //Calculate total Amount.
                            int qty = 1;

                            if (model.Qty.HasValue)
                            {
                                qty = model.Qty.Value;
                            }

                            totalAmount = totalAmount + (transactionAmount.HasValue ? (transactionAmount.Value * qty) : 0);

                            model.Id = Guid.Parse(chargeId);

                            transactions.Add(model);

                            blnIsChargesInserted = true;

                            model.Amount = oldAmount;
                        }
                    }
                }

                if (blnIsChargesInserted)
                {
                    #region Update Reservation Total Balance.
                    var reservation = new ReservationVM();

                    if (reservationId.HasValue)
                    {
                        reservation = reservationRepository.GetReservationById(reservationId.Value, LogInManager.LoggedInUserId).FirstOrDefault();
                    }

                    if (reservation != null)
                    {
                        if (reservation.GuestBalance.HasValue)
                        {
                            totalBalance = reservation.GuestBalance.Value;
                        }


                        totalBalance += totalAmount;

                        //Update Total Balance.
                        reservationRepository.UpdateReservationTotalBalance(reservation.Id, totalBalance, LogInManager.LoggedInUserId);
                    }
                    #endregion

                    return(Json(new
                    {
                        IsSuccess = true,
                        data = new
                        {
                            Transactions = transactions,
                            TotalBalance = totalBalance
                        }
                    }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(new
                    {
                        IsSuccess = false,
                        errorMessage = "Charges not saved successfully."
                    }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception e)
            {
                Utility.Utility.LogError(e, "AddCharges");
                return(Json(new { IsSuccess = false, errorMessage = e.Message }));
            }
        }