public ActionResult ReverseCheckIn(Guid reservationId, string source = "")
        {
            try
            {
                var reservation = reservationRepository.GetReservationById(reservationId, LogInManager.LoggedInUserId).FirstOrDefault();

                if (reservation != null)
                {
                    #region  Remove Rent Charges

                    var roomRentCharge = additionalChargeRepository.GetAdditionalChargesByCode(AdditionalChargeCode.ROOM_RENT).FirstOrDefault();

                    var reservationCharge = reservationChargeRepository.GetReservationCharges(reservation.Id, roomRentCharge.Id, LogInManager.LoggedInUserId).FirstOrDefault();

                    if (reservationCharge != null)
                    {
                        reservationChargeRepository.DeleteReservationCharges(reservationCharge.Id, LogInManager.LoggedInUserId, LogInManager.LoggedInUserId);
                    }

                    #endregion

                    #region  Remove Reservation Charges

                    reservationChargeRepository.DeleteReservationChargesByReservation(reservation.Id, LogInManager.LoggedInUserId, LogInManager.LoggedInUserId);

                    #endregion

                    #region  Remove Reservation Log (Room Occupied)

                    reservationLogRepository.DeleteReservationLogByReservation(reservation.Id, LogInManager.LoggedInUserId, LogInManager.LoggedInUserId);

                    #endregion

                    #region Update Reservation Check In Flag (FALSE)

                    reservationRepository.UpdateReservationCheckInFlag(reservation.Id, false, LogInManager.LoggedInUserId);

                    #endregion

                    #region  Remove Check In Details

                    checkInCheckOutRepository.DeleteCheckInCheckOutDetailByReservation(reservation.Id, LogInManager.LoggedInUserId, LogInManager.LoggedInUserId);

                    #endregion

                    #region Update Reservation Status (NULL)

                    reservationRepository.UpdateReservationStatus(reservation.Id, null, LogInManager.LoggedInUserId);

                    #endregion

                    #region Update Reservation Total Price

                    double totalPrice = Utility.Utility.CalculateReservationTotalPrice(reservation.Id);

                    //Update Total Price.
                    reservationRepository.UpdateReservationTotalPrice(reservation.Id, totalPrice, LogInManager.LoggedInUserId);

                    #endregion

                    #region Update Reservation Total Balance.

                    double totalGuestBalance = 0;
                    //totalGuestBalance  = Utility.Utility.CalculateTotalBalance(reservation.Id);

                    //Update Total Balance.
                    reservationRepository.UpdateReservationTotalBalance(reservation.Id, totalGuestBalance, LogInManager.LoggedInUserId);

                    #endregion

                    #region Update TrackReservationLog Status = False

                    reservationRepository.UpdateTrackReservationLogStatusByReservationId(reservation.Id, false);

                    #endregion

                    #region Record Activity Log
                    RecordActivityLog.RecordActivity(Pages.CHECKIN, string.Format("Reverse Checked in profile successfully. Name: {0} {1}, Comfirmation #: {2} ", reservation.LastName, reservation.FirstName, reservation.ConfirmationNumber));
                    #endregion

                    return(Json(new
                    {
                        IsSuccess = true,
                        data = new
                        {
                            ReservationId = reservationId
                        }
                    }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(new
                    {
                        IsSuccess = false,
                        errorMessage = "Reverse check in not done successfully."
                    }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception e)
            {
                Utility.Utility.LogError(e, "ReverseCheckIn");
                return(Json(new { IsSuccess = false, errorMessage = e.Message }));
            }
        }
Пример #2
0
        public ActionResult DeleteCharge(Guid id)
        {
            try
            {
                double totalBalance = 0;

                var chargeDetail = reservationChargeRepository.GetReservationChargesById(id, LogInManager.LoggedInUserId).FirstOrDefault();

                if (chargeDetail != null)
                {
                    Guid?reservationId = chargeDetail.ReservationId;

                    double chargeAmount = 0;

                    //Calculate total Amount.
                    int qty = 1;

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

                    chargeAmount = (chargeDetail.Amount.HasValue ? (chargeDetail.Amount.Value * qty) : 0);

                    //Delete Reservation Charge
                    reservationChargeRepository.DeleteReservationCharges(chargeDetail.Id, LogInManager.LoggedInUserId, LogInManager.LoggedInUserId);

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

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

                    if (reservation != null)
                    {
                        totalBalance = reservation.GuestBalance.HasValue ? reservation.GuestBalance.Value : 0;

                        if (totalBalance > chargeAmount)
                        {
                            totalBalance -= chargeAmount;
                        }
                        else
                        {
                            totalBalance = 0;
                        }

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

                    return(Json(new
                    {
                        IsSuccess = true,
                        errorMessage = "Charge details deleted successfully."
                    }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(new
                    {
                        IsSuccess = false,
                        errorMessage = "Charge details not found."
                    }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception e)
            {
                Utility.Utility.LogError(e, "DeleteCharge");
                return(Json(new { IsSuccess = false, errorMessage = e.Message }));
            }
        }