public ActionResult ConfirmReservationSubmit(ReservationParameters model) { model.AcceptTermsAndConditions = (HttpContext.Request.Form["confirm_toc"] != null); ReservationParameters reservationContext = ReservationUtils.GetContextReservation(); Session["PPPUiError"] = null; ValidationUtils.ClearModelErrors(ModelState); reservationContext = ReservationUtils.MapGuestValues(model, reservationContext); // var errors = ValidationUtils.GetGuestViolations(model, reservationContext.MaxOccupancy); var errors = new List <RuleViolation>(); if (!ValidationUtils.ErrorsDetected(ModelState, errors)) { Session["ReservationContext"] = reservationContext; var reservationResponse = ExecuteBook(reservationContext); if (reservationResponse != null && reservationResponse.Errors == null) { OwnerUtils.SetContextToReloadPalett(); Session["ReservationNumber"] = reservationResponse.ConfirmReservation.ReservationNumber; Response.Redirect("/owner/Points-Protection-Plan", false); return(null); } else { ModelState.AddModelError("", "We're sorry, but since you began your search, that villa type is no longer available. Please select BACK to begin a new search."); } } return(base.Index()); }
public ActionResult ResortPreviewDetails() { DebugUtils.StartLogEvent("ReservationController.ResortPreviewDetails"); var model = GetLayoutItem <ResortPreviewDetails>(); ResortDetails resortDetail = null; if (Session["ActiveReservation"] != null) { Reservation activeReservation = (Reservation)Session["ActiveReservation"]; resortDetail = ResortManager.GetResortByProject(activeReservation.ProjectStay); model.ActiveReservation = activeReservation; model.HandicapAccessible = false; ResortService resortService = new ResortService(); var UnitInfo = resortService.GetUnitInfo(model.ActiveReservation.ProjectStay, model.ActiveReservation.AS400UnitType, model.ActiveReservation.UnitNumber); if (UnitInfo != null) { model.HandicapAccessible = (UnitInfo.HandicapAccessible == "1"); } Session["ActiveReservation"] = null; } else { ReservationParameters reservationContext = ReservationUtils.GetContextReservation(); if (reservationContext != null) { resortDetail = ResortManager.FindResort(reservationContext.ResortId); model.ActiveReservation = new BGSitecore.Models.ResortService.ReservationsList.Reservation(); model.ActiveReservation.AS400UnitType = reservationContext.UnitType; model.ActiveReservation.ProjectStay = reservationContext.ProjectNumber.ToString(); model.ActiveReservation.CheckInDate = reservationContext.CheckInDate.ToString("yyyyMMdd"); model.ActiveReservation.CheckOutDate = reservationContext.CheckOutDate.ToString("yyyyMMdd"); model.ActiveReservation.ReservationType = reservationContext.ReservationType; model.ActiveReservation.Points = reservationContext.PointsRequired.ToString(); model.ActiveReservation.MaximumOccupancy = reservationContext.MaxOccupancy.ToString(); model.ActiveReservation.Amount = reservationContext.BT_TotalCost; model.HandicapAccessible = (!string.IsNullOrEmpty(reservationContext.wheelchairaccessible) && (reservationContext.wheelchairaccessible == "1")); } } model.ResortDetail = resortDetail; DebugUtils.EndLogEvent("ReservationController.ResortPreviewDetails"); return(View(model)); }
public bool CanCancelReservation() { bool result = false; if (ActiveReservation != null) { if (ActiveReservation.ReservationType != "Q" && ActiveReservation.ReservationType != "V" && ActiveReservation.ReservationType != "F" && ActiveReservation.ReservationType != "X" && ActiveReservation.ReservationType != "G") { if (!ReservationUtils.isExchangeReservation(ActiveReservation.ExchangeCode)) { DateTime checkinDate = DateTime.Parse(FormatUtils.GetDate(ActiveReservation.CheckInDate)); result = checkinDate >= DateTime.Now; } } } return(result); }
public ActionResult BonusTimeReservationSubmit(ReservationParameters model) { model.AcceptTermsAndConditions = (HttpContext.Request.Form["confirm_toc"] != null); ReservationParameters reservationContext = ReservationUtils.GetContextReservation(); reservationContext.CreditCard_Type = FormatUtils.ConvertCreditCard(model.CreditCard_Type); //Required for the validation var listOfError = ValidationUtils.GetCreditCardViolations(model); listOfError.AddRange(ValidationUtils.GetAddressViolations(model)); listOfError.AddRange(ValidationUtils.GetGuestViolations(model, reservationContext.MaxOccupancy)); Session["ChangedCountry"] = null; if (listOfError.Count > 0) { Session["ChangedCountry"] = model.Address_Country; foreach (var vi in listOfError) { ModelState.AddModelError("", vi.ErrorMessage); } } else { reservationContext = ReservationUtils.MapGuestValues(model, reservationContext); reservationContext = ReservationUtils.MapAddressValues(model, reservationContext); reservationContext = ReservationUtils.MapCreditCardValues(model, reservationContext); var reservationResponse = ExecuteBook(reservationContext); if (reservationResponse != null && reservationResponse.Errors == null) { ReservationUtils.DeleteContextReservation(); //Response.Flush(); Response.Redirect("/owner/reservation-confirmation?type=Future&reservationNo=" + reservationResponse.ConfirmReservation.ReservationNumber, false); HttpContext.ApplicationInstance.CompleteRequest(); return(null); } else { ModelState.AddModelError("", "We're sorry, but since you began your search, that villa type is no longer available. Please select BACK to begin a new search."); } } return(base.Index()); }
public ActionResult PointsProtectionPlan() { var model = GetLayoutItem <PointsProtectionPlan>(); if (Request.QueryString["reservationNo"] == null) { ReservationParameters reservationContext = ReservationUtils.GetContextReservation(); if (reservationContext == null) { ReservationUtils.HandelMissingReservationContext(); } else { model.payment = reservationContext.PPPCost.ToString(); model.points = reservationContext.PointsRequired; } } else { //Get the reservation details from service call BlueGreenContext bgcontext = new BlueGreenContext(); var ActiveReservation = bgcontext.GetActiveReservation(Request.QueryString["reservationNo"], ResortService.RESERVATION_TYPE_FUTURE); model.payment = ActiveReservation.PolicyPrice; model.points = FormatUtils.ConvertStringToInt(ActiveReservation.Points); Session["ReservationNumber"] = ActiveReservation.ReservationNumber; ReservationParameters reservationContext = new ReservationParameters(); reservationContext.PPPCost = Convert.ToDecimal(model.payment); reservationContext.PointsRequired = FormatUtils.ConvertStringToInt(ActiveReservation.Points); Session["ReservationContext"] = reservationContext; } if (Session["PPPUiError"] != null) { var allPreviousError = (List <RuleViolation>)Session["PPPUiError"]; foreach (RuleViolation item in allPreviousError) { ModelState.AddModelError("", item.ErrorMessage); } Session["PPPUiError"] = null; } return(View(model)); }
private BookReservationResponse ExecuteBook(ReservationParameters reservationContext) { // bool statusExecuteBook = false; BlueGreenContext bgContext = new BlueGreenContext(); BookReservationRequest request = new BookReservationRequest(); request.ReservationProjectNumber = reservationContext.ProjectNumber.ToString(); request.OwnerID = reservationContext.OwnerId; request.UnitTypeCode = reservationContext.UnitType; request.CheckInDate = reservationContext.CheckInDate.ToString("MM/dd/yyyy"); request.LengthOfStay = Convert.ToInt16((reservationContext.CheckOutDate - reservationContext.CheckInDate).TotalDays); request.NumberOfAdults = int.Parse(reservationContext.Guest_NumberOfGuest); //TODO get value from context request.AccountNumber = bgContext.GetPrimaryAccountNumber(); request.OwnerProjectNumber = bgContext.GetOwnerAccountProject().ToString(); //Changed to Enclose Special Requests with Special Request for BGO only string specialCharacter = Sitecore.Configuration.Settings.GetSetting("IdentifierForSpecialRequestFromBGO"); request.Comments = (reservationContext.text_SpecialRequests == null) ? "" : specialCharacter + reservationContext.text_SpecialRequests + specialCharacter; if (!string.IsNullOrEmpty(reservationContext.wheelchairaccessible) && reservationContext.wheelchairaccessible == "1") { request.HandicapAccessible = "Y"; request.Comments = "REQHANDICAP " + request.Comments; } if (reservationContext.ReservationType == SearchParameters.RESERVATION_TYPE_BONUSTIME) { request.ReservationType = "B"; request.SiteName = "BonusTime"; } else { request.ReservationType = "P"; request.SiteName = "onlinepoints"; request.Points = reservationContext.PointsRequired; } if (reservationContext.hasCreditcard) { request.Payment = new Models.ResortService.BookReservationRequest.Payment(); request.Payment.CreditCardAuthorization = reservationContext.CreditCard_VerificationNumber; request.Payment.CreditCardName = reservationContext.CreditCard_Name; request.Payment.CreditCardNumber = reservationContext.CreditCard_Number; request.Payment.CreditCardType = FormatUtils.ConvertCreditCard(reservationContext.CreditCard_Type); request.Payment.CreditCardExpirationDate = ReservationUtils.GetExpDate(reservationContext.CreditCard_ExpDateMonth, reservationContext.CreditCard_ExpDateYear); request.Payment.CreditCardTotal = Convert.ToDouble(reservationContext.BT_TotalCost); request.Payment.NonTaxTotal = Convert.ToDouble(Convert.ToDecimal(reservationContext.DailyPrice) * reservationContext.NumberOfNightChanged); } if (reservationContext.hasGuest) { request.Guests = new List <Models.ResortService.BookReservationRequest.Guest>(); var guestOld = new Models.ResortService.BookReservationRequest.Guest(); guestOld.GuestType = "Primary"; guestOld.GuestID = ""; guestOld.FirstName = reservationContext.Guest_FirstName; guestOld.LastName = reservationContext.Guest_LastName; guestOld.Relationship = reservationContext.Guest_Relationship; request.Guests.Add(guestOld); if (!string.IsNullOrEmpty(reservationContext.Guest_Email)) { guestOld.EmailAddresses = new List <Models.ResortService.BookReservationRequest.EmailAddress>(); var email = new Models.ResortService.BookReservationRequest.EmailAddress(); email.AddressType = "Home"; email.Email = reservationContext.Guest_Email; guestOld.EmailAddresses.Add(email); } else { guestOld.EmailAddresses = new List <Models.ResortService.BookReservationRequest.EmailAddress>(); var email = new Models.ResortService.BookReservationRequest.EmailAddress(); email.AddressType = "Home"; email.Email = bgContext.bxgOwner.Email; guestOld.EmailAddresses.Add(email); } if (reservationContext.Guest_AddNew != "AddNew") { if (!string.IsNullOrEmpty(reservationContext.Guest_PhoneNumber)) { guestOld.Phones = new List <Models.ResortService.BookReservationRequest.Phone>(); var phone = new Models.ResortService.BookReservationRequest.Phone(); phone.PhoneNumberType = "Home"; phone.PhoneNumber = reservationContext.Guest_PhoneNumber; guestOld.Phones.Add(phone); } if (!string.IsNullOrEmpty(reservationContext.Guest_City)) { guestOld.Addresses = new List <Models.ResortService.BookReservationRequest.Address>(); var address = new Models.ResortService.BookReservationRequest.Address(); address.AddressLine1 = " "; address.AddressLine2 = " "; address.CountryCode = " "; address.PostalCode = " "; address.AddressType = "Home"; address.City = reservationContext.Guest_City; // Here I'm assuming that no one will select state without city (they are both required fields anyway) if (!string.IsNullOrEmpty(reservationContext.Guest_State)) { address.ProvinceCode = reservationContext.Guest_State; } guestOld.Addresses.Add(address); } } else { var guest = new Models.ResortService.BookReservationRequest.Guest(); guest.GuestType = "GuestOnPrimary"; guest.FirstName = reservationContext.Guest_FirstName; guest.LastName = reservationContext.Guest_LastName; guest.Relationship = reservationContext.Guest_Relationship; guest.GuestID = ""; if (!string.IsNullOrEmpty(reservationContext.Guest_Email)) { guest.EmailAddresses = new List <Models.ResortService.BookReservationRequest.EmailAddress>(); var email = new Models.ResortService.BookReservationRequest.EmailAddress(); email.AddressType = "Home"; email.Email = reservationContext.Guest_Email; guest.EmailAddresses.Add(email); } if (!string.IsNullOrEmpty(reservationContext.Guest_City)) { guest.Addresses = new List <Models.ResortService.BookReservationRequest.Address>(); var address = new Models.ResortService.BookReservationRequest.Address(); address.AddressLine1 = " "; address.AddressLine2 = " "; address.CountryCode = " "; address.PostalCode = " "; address.AddressType = "Home"; address.City = reservationContext.Guest_City; // Here I'm assuming that no one will select state without city (they are both required fields anyway) if (!string.IsNullOrEmpty(reservationContext.Guest_State)) { address.ProvinceCode = reservationContext.Guest_State; } guest.Addresses.Add(address); } if (!string.IsNullOrEmpty(reservationContext.Guest_PhoneNumber)) { guest.Phones = new List <Models.ResortService.BookReservationRequest.Phone>(); var phone = new Models.ResortService.BookReservationRequest.Phone(); phone.PhoneNumberType = "Home"; phone.PhoneNumber = reservationContext.Guest_PhoneNumber; guest.Phones.Add(phone); } request.Guests.Add(guest); } } if (reservationContext.hasAddress) { } if (Session["AgentLoginID"] == null) { request.Agent = "OWNER"; } else { request.Agent = (string)Session["AgentLoginID"]; } ResortService resortService = new ResortService(); var reservationResponse = resortService.BookReservation(request); OwnerWebStats(request, reservationResponse); return(reservationResponse); }
public ActionResult ReservationConfirmation() { var model = GetLayoutItem <ReservationConfirmation>(); BlueGreenContext bgcontext = new BlueGreenContext(); var reservationNo = Request.QueryString["reservationNo"]; if (!string.IsNullOrEmpty(reservationNo)) { var reservationType = Request.QueryString["type"]; model.ActiveReservation = bgcontext.GetActiveReservation(reservationNo, reservationType); model.BxgOwner = bgcontext.bxgOwner; if (model.ActiveReservation != null) { model.taxTotal = ReservationUtils.CalculateReservationTax(model.ActiveReservation); model.ActiveReservation.Amount = model.taxTotal + model.ActiveReservation.AmountDue; model.Guest_NumberOfGuest = model.ActiveReservation.NumberOfAdults; string specialCharacter = Sitecore.Configuration.Settings.GetSetting("IdentifierForSpecialRequestFromBGO"); model.ActiveReservation.Comments = StringUtils.Between(model.ActiveReservation.Comments, specialCharacter, specialCharacter); Session["ActiveReservation"] = model.ActiveReservation; Session["instanceResort"] = ResortUtils.GetResortInfoDetails(FormatUtils.ConvertStringToInt(model.ActiveReservation.ProjectStay), model.ActiveReservation.MaximumOccupancy); //setup session object requied by the Cancel page ReservationHistoryItem tmp = new ReservationHistoryItem(); //This is the object cancel expect in the session DateTime DateConfirmed = DateTime.Parse(FormatUtils.GetDate(model.ActiveReservation.DateConfirmed)); tmp._DateConfirmed = DateConfirmed.ToString("yyyyMMdd"); tmp._Points = model.ActiveReservation.Points; DateTime checkinDate = DateTime.Parse(FormatUtils.GetDate(model.ActiveReservation.CheckInDate)); tmp._CheckInDate = checkinDate.ToString("yyyyMMdd"); tmp._ReservationType = model.ActiveReservation.ReservationType; tmp._NumberOfNights = model.ActiveReservation.NumberOfNights.ToString(); tmp._Amount = model.ActiveReservation.Amount.ToString(); tmp._AmountDue = model.ActiveReservation.AmountDue.ToString(); tmp._ReservationNumber = model.ActiveReservation.ReservationNumber; tmp._ReservationStatus = model.ActiveReservation.ReservationStatus; tmp._GuestFullName = model.ActiveReservation.Guests[0].FullName; tmp._NumberOfAdults = model.ActiveReservation.NumberOfAdults; tmp._MaximumOccupancy = model.ActiveReservation.MaximumOccupancy; tmp._Handicap = model.ActiveReservation.Handicap; var Room = ResortManager.GetRoom(Convert.ToInt16(model.ActiveReservation.ProjectStay), model.ActiveReservation.AS400UnitType); if (Room != null) { tmp._VillaDescription = Room.ViewTitle; } tmp._PolicyStatus = FormatUtils.PolicyStatus(model.ActiveReservation.PolicyStatus, model.ActiveReservation.EligibleDate, reservationType, model.ActiveReservation.ReservationNumber, model.ActiveReservation.ExchangeCode, model.ActiveReservation.ReservationType); Session["ReservationSelected4Details"] = tmp; Session["PPPStatus"] = tmp._PolicyStatus; Session["PPPFee"] = model.ActiveReservation.PolicyPrice; Session["resConfNum"] = model.ActiveReservation.ReservationNumber; //Only get the Guests when reservation is Points if (model.ActiveReservation.ReservationType == "P") { BGSitecore.Services.ResortService resortService = new BGSitecore.Services.ResortService(); var allGuest = resortService.OwnerGuestList(bgcontext.OwnerId); if (allGuest != null && allGuest.Guests != null && allGuest.Guests.Count() > 0) { if (model.allGuest == null) { model.allGuest = new List <BGSitecore.Models.ResortService.ScreeningBookReservationResponse.Guest>(); } foreach (BGSitecore.Models.ResortService.OwnerGuestList.Guest guest in allGuest.Guests) { if (model.ActiveReservation.Guests != null && model.ActiveReservation.Guests.Count > 0) { if (guest.GuestID == model.ActiveReservation.Guests[0].GuestID) { //Email and phone number are not return with the reservation. We need to get those values from the list or guests if (guest.Emails != null && guest.Emails.Count > 0) { model.ActiveReservation.Guests[0].Emails = new List <Models.ResortService.ReservationsList.Email>(); Models.ResortService.ReservationsList.Email email = new Models.ResortService.ReservationsList.Email(); email.EmailAddress = guest.Emails[0].EmailAddress; model.ActiveReservation.Guests[0].Emails.Add(email); } if (guest.Phones != null && guest.Phones.Count > 0) { model.ActiveReservation.Guests[0].Phones = new List <Models.ResortService.ReservationsList.Phone>(); Models.ResortService.ReservationsList.Phone phone = new Models.ResortService.ReservationsList.Phone(); phone.PhoneNumber = guest.Phones[0].PhoneNumber; model.ActiveReservation.Guests[0].Phones.Add(phone); } } } var findExistingGuest = from existingGuest in model.ActiveReservation.Guests where existingGuest.FullName == guest.LastName + " ," + guest.FirstName && existingGuest.GuestID == "0" select existingGuest; if (findExistingGuest != null && findExistingGuest.Count() > 0) { findExistingGuest.First().GuestID = guest.GuestID; } else { model.allGuest.Add(ReservationUtils.MapOwnerGuestToReservationGuest(guest)); } } } } } return(View(model)); } else { return(null); } }
public ActionResult SubmitPPP(BGSitecore.Models.ReservationParameters model) { DebugUtils.StartLogEvent("ReservationController.SubmitPPP"); ReservationParameters reservationContext = ReservationUtils.GetContextReservation(); model.CreditCard_Type = FormatUtils.ConvertCreditCard(reservationContext.CreditCard_Type); if (model.btnSubmit == "action:nocreditcard") { DeclinePointsProtectionRequest request = new DeclinePointsProtectionRequest(); request.SiteName = ""; request.ReservationNumber = Session["ReservationNumber"].ToString(); ResortService service = new ResortService(); var response = service.DeclinePointsProtection(request); var reservationNUmber = Session["ReservationNumber"].ToString(); PPPOwnerWebStats(reservationContext, false); ReservationUtils.DeleteContextReservation(); Response.Redirect("/owner/reservation-confirmation?bv=true&type=Future&reservationNo=" + reservationNUmber, false); return(null); } else { var listOfError = ValidationUtils.GetCreditCardViolations(model); if (listOfError.Count() <= 0) { AcceptPointsProtectionRequest request = new AcceptPointsProtectionRequest(); request.SiteName = "OnlinePoints"; request.ReservationNumber = Session["ReservationNumber"].ToString(); request.Payment = new Models.ResortService.AcceptPointsProtection.Payment(); request.Payment.CreditCardNumber = model.CreditCard_Number; request.Payment.CreditCardExpirationDate = ReservationUtils.GetExpDate(model.CreditCard_ExpDateMonth, model.CreditCard_ExpDateYear); request.Payment.CreditCardType = "V"; // model.CreditCard_Type; request.Payment.CreditCardName = model.CreditCard_Name; request.Payment.CreditCardAuthorization = model.CreditCard_VerificationNumber; request.Payment.CreditCardTotal = Convert.ToString(reservationContext.PPPCost); request.Payment.NonTaxTotal = ""; ResortService service = new ResortService(); var pppResponse = service.AcceptPointsProtection(request); if (pppResponse == null || pppResponse.Errors != null) { //TODO move this message in sitecore listOfError.Add(new RuleViolation("", "", "Unfortunately, we have encountered a technical error while processing Points Protection Plan.Please call 800.456.CLUB(2582) to report the problem and receive assistance.Thank you.")); Session["PPPUiError"] = listOfError; } else { var reservationNUmber = Session["ReservationNumber"].ToString(); PPPOwnerWebStats(reservationContext, true); ReservationUtils.DeleteContextReservation(); DebugUtils.StartLogEvent("ReservationController.SubmitPPP"); Response.Redirect("/owner/reservation-confirmation?bv=true&reservationNo=" + reservationNUmber, false); return(null); } } else { Session["PPPUiError"] = listOfError; } } DebugUtils.StartLogEvent("ReservationController.SubmitPPP"); return(base.Index()); }
public ActionResult SubmitSaveMyPoint(string CCName, string CCNumber, string CVV, string ExpMonth, string ExpYear, string ZipCode, string cctype, bool InternationalZipCode) { SaveMyPointsResponse response = new SaveMyPointsResponse(); ReservationParameters model = new ReservationParameters(); model.CreditCard_ExpDateMonth = ExpMonth; model.CreditCard_ExpDateYear = ExpYear; model.CreditCard_Name = CCName; model.CreditCard_Number = CCNumber; model.CreditCard_VerificationNumber = CVV; model.CreditCard_ZipCode = ZipCode; model.CreditCard_InternationalZipCode = InternationalZipCode; BlueGreenContext bgContext = new BlueGreenContext(); model.CreditCard_Type = FormatUtils.ConvertCreditCard(cctype); var listOfError = ValidationUtils.GetCreditCardViolations(model); if (listOfError.Count() <= 0) { BGSitecore.Models.OwnerService.OwnerSavePointsElectRequest.OwnerSavePointsElectRequest request = new BGSitecore.Models.OwnerService.OwnerSavePointsElectRequest.OwnerSavePointsElectRequest(); request.Identifier = bgContext.OwnerId; request.AgentID = "OWNER"; request.NameOnCard = model.CreditCard_Name; request.Amount = bgContext.GetSavePointsFee; request.CreditCardInfo = new BGSitecore.Models.OwnerService.OwnerSavePointsElectRequest.CreditCardInfo(); request.CreditCardInfo.CreditCardNumber = model.CreditCard_Number; request.CreditCardInfo.CreditCardExpirationDate = ReservationUtils.GetExpDate(model.CreditCard_ExpDateMonth, model.CreditCard_ExpDateYear); request.CreditCardInfo.CreditCardType = model.CreditCard_Type; request.CreditCardInfo.CreditCardCVV = model.CreditCard_VerificationNumber; ProfileService service = new ProfileService(); var pointResponse = service.OwnerSavePointsElect(request); if (pointResponse != null && pointResponse.RetCode == "0") { response.RetCode = "0"; //TODO move this code bgContext.bxgOwner.AnnualPointsExpiration.SavePointsEligible = false; bgContext.bxgOwner.AnnualPointsExpiration.SavePointsFee = "0.00"; bgContext.bxgOwner.AnnualPointsExpiration.SavePointsMessage = ""; //save owner object with updated annualpoints expiration Session["BXGOwner"] = bgContext.bxgOwner; response.AuthorizationNumber = pointResponse.AuthorizationNumber; OwnerUtils.SetContextToReloadPalett(); } else { response.RetCode = "-1"; response.errors = new List <string>(); response.errors.Add("Internal error try again later."); } } else { response.RetCode = "-1"; response.errors = new List <string>(); foreach (var item in listOfError) { response.errors.Add(item.ErrorMessage); } return(Json(response)); } return(Json(response)); }
public bool CanProtectPoints() { return(ReservationUtils.CanProtectPoints(ActiveReservation)); }