protected void btnLocateBooking_Click(object sender, EventArgs e)
    {
        CancelDetailsEntryInfo objCancelDetailsEntryInfo = new CancelDetailsEntryInfo();

        objCancelDetailsEntryInfo.HotelCode = _CancelDetailsEntryInfo.HotelCode;
        objCancelDetailsEntryInfo.ConfirmationNumber = tbConfirmationNumber.Text.ToUpper().Trim();
        objCancelDetailsEntryInfo.GuestLastName = tbGuestLastName.Text.ToUpper().Trim();
        objCancelDetailsEntryInfo.SelectedConfirmationNumbersToCancel = new string[0];

        _CancelDetailsEntryInfo = objCancelDetailsEntryInfo;

        CancelDetailsCompleted(this, new EventArgs());

        return;
    }
    public void InitCancelDetailsEntryInfo()
    {
        CancelDetailsEntryInfo objCancelDetailsEntryInfo = new CancelDetailsEntryInfo();

        objCancelDetailsEntryInfo.HotelCode = "";
        objCancelDetailsEntryInfo.ConfirmationNumber = "";
        objCancelDetailsEntryInfo.GuestLastName = "";
        objCancelDetailsEntryInfo.SelectedConfirmationNumbersToCancel = new string[0];

        Session["CancelDetailsEntryInfo"] = objCancelDetailsEntryInfo;

        return;
    }
    // General support methods
    public HotelBookingReadSegment[] GetValidatedBookings(CancelDetailsEntryInfo objCancelDetailsEntryInfo)
    {
        HotelBookingReadRS objHotelBookingReadRS = (HotelBookingReadRS)Session["HotelBookingReadRS"];

        DateTime dtLocateDate = TZNet.ToLocal(this.GetTimeZone(objCancelDetailsEntryInfo.HotelCode), DateTime.UtcNow).Date;

        if (objHotelBookingReadRS.Segments == null || objHotelBookingReadRS.Segments.Length == 0)
            return new HotelBookingReadSegment[0];

        List<HotelBookingReadSegment> lHotelBookingReadSegments = new List<HotelBookingReadSegment>();

        for (int si = 0; si < objHotelBookingReadRS.Segments.Length; si++)
        {
            if (objHotelBookingReadRS.Segments[si].BookingReadStatus != BookingReadStatus.Active)
                continue;

            if (objHotelBookingReadRS.Segments[si].ArrivalDate.Date < dtLocateDate.Date)
                continue;

            if (objHotelBookingReadRS.Segments[si].HotelCode != objCancelDetailsEntryInfo.HotelCode)
                continue;

            bool bBookingProfileLocated = false;

            for (int pi = 0; pi < objHotelBookingReadRS.Segments[si].Profiles.Length; pi++)
            {
                if (objHotelBookingReadRS.Segments[si].Profiles[pi].Type == ProfileType.Traveler)
                {
                    if (objHotelBookingReadRS.Segments[si].Profiles[pi].PersonLastName.ToUpper() == objCancelDetailsEntryInfo.GuestLastName.ToUpper())
                    {
                        bBookingProfileLocated = true;
                        break;
                    }

                }

            }

            if (!bBookingProfileLocated)
                continue;

            lHotelBookingReadSegments.Add(objHotelBookingReadRS.Segments[si]);
        }

        return lHotelBookingReadSegments.ToArray();
    }
    private void ValidateCancelDetails(CancelDetailsEntryInfo objCancelDetailsEntryInfo)
    {
        if (objCancelDetailsEntryInfo.HotelCode == null || objCancelDetailsEntryInfo.HotelCode == "")
         this.AddPageError(PageErrorType.ValidationError, (String)GetGlobalResourceObject("SiteErrorMessages", "NoHotelSelection"));

          if (objCancelDetailsEntryInfo.ConfirmationNumber.Trim() == "")
         this.AddPageError(PageErrorType.ValidationError, (String)GetGlobalResourceObject("SiteErrorMessages", "NoConfirmationNumberEntry"));

          if (objCancelDetailsEntryInfo.GuestLastName.Trim() == "")
         this.AddPageError(PageErrorType.ValidationError, (String)GetGlobalResourceObject("SiteErrorMessages", "NoLastNameEntry"));

          return;
    }
    private void ValidateCancellationRequest(CancelDetailsEntryInfo objCancelDetailsEntryInfo)
    {
        if (WbsUiHelper.GetValidatedBookings(objCancelDetailsEntryInfo).Length == 0)
            this.AddPageError(PageErrorType.ValidationError, (String)GetGlobalResourceObject("SiteErrorMessages", "RequestedBookingNotLocated"));

        return;
    }
    protected void Page_PreRenderComplete(object sender, EventArgs e)
    {
        // Language selection

          if (!string.IsNullOrWhiteSpace(Request.QueryString.Get(Constants.DeeplinkParams.Language)))
          {
         LanguageSetup[] objLanguages = WbsUiHelper.GetLanguageSetups();

         for (int i = 0; i < objLanguages.Length; i++)
         {
            if (objLanguages[i].UICulture == Request.QueryString.Get(Constants.DeeplinkParams.Language))
            {
               WbsUiHelper.SelectedCulture = objLanguages[i].Culture;
               WbsUiHelper.SelectedUICulture = objLanguages[i].UICulture;
               break;
            }

         }

          }

          // Profile login account selection

          if (!string.IsNullOrWhiteSpace(Request.QueryString.Get(Constants.DeeplinkParams.Account)))
          {
         List<Profile> lProfiles = new List<Profile>();

         ProfileReadRS objLoginProfileReadRS = (ProfileReadRS)Session[Constants.Sessions.LoginProfileReadRS];

         if (objLoginProfileReadRS.ResponseHeader.Success)
         {
            lProfiles.Add(objLoginProfileReadRS.Profile);

            ProfileIdentifier objLinkedProfileIdentifier = ProfileHelper.GetProfileIdentifier(objLoginProfileReadRS.Profile, ProfileIdentifierType.LinkedProfileID);

            if (objLinkedProfileIdentifier != null)
            {
               ProfileReadRS objLinkedProfileReadRS = (ProfileReadRS)Session[Constants.Sessions.LinkedProfileReadRS];

               if (objLinkedProfileReadRS.ResponseHeader.Success)
               {
                  lProfiles.Add(objLinkedProfileReadRS.Profile);

                  Session[Constants.Sessions.LoginProfiles] = lProfiles.ToArray();
                  Session[Constants.Sessions.IsLoggedIn] = true;
               }

            }

         }

          }

          // Booking stay criteria command

          if (!string.IsNullOrWhiteSpace(Request.QueryString.Get(Constants.DeeplinkParams.Command))
          && Request.QueryString.Get(Constants.DeeplinkParams.Command).Equals(Constants.DeeplinkParams.CmdStayCriteria, StringComparison.InvariantCultureIgnoreCase))
          {
         if (Request.QueryString[Constants.DeeplinkParams.DefaultStayCriteria] == "1")
         {
            DateTime dtCurrentLocal = TZNet.ToLocal(WebconfigHelper.DefaultTimeZone, DateTime.UtcNow).Date;
            dtArrivalDate = dtCurrentLocal.Date;
            dtDepartureDate = dtCurrentLocal.AddDays(1).Date;

            intNumberRooms = 1;

            intAdults[0] = 2;
            intChildren[0] = 0;

            bArrivalDateSpecified = true;
            bDepartureDateSpecified = true;
            bNumberRoomsSpecified = true;
            bAdultsSpecified[0] = true;
            bChildrenSpecified[0] = true;
         }

         if (!string.IsNullOrWhiteSpace(Request.QueryString.Get(Constants.DeeplinkParams.AreaCode)))
         {
            strAreaID = Request.QueryString.Get(Constants.DeeplinkParams.AreaCode);
            bAreaIDSpecified = true;
         }

         if (!string.IsNullOrWhiteSpace(Request.QueryString.Get(Constants.DeeplinkParams.HotelCode)))
         {
            strHotelCode = Request.QueryString.Get(Constants.DeeplinkParams.HotelCode);
            bHotelCodeSpecified = true;
         }

         if (!string.IsNullOrWhiteSpace(Request.QueryString.Get(Constants.DeeplinkParams.ArrivalDate)))
         {
            if (DateTime.TryParse(Request.QueryString.Get(Constants.DeeplinkParams.ArrivalDate), out dtArrivalDate))
               bArrivalDateSpecified = true;
         }

         if (!string.IsNullOrWhiteSpace(Request.QueryString.Get(Constants.DeeplinkParams.DepartureDate)))
         {
            if (DateTime.TryParse(Request.QueryString.Get(Constants.DeeplinkParams.DepartureDate), out dtDepartureDate))
               bDepartureDateSpecified = true;
         }

         if (!string.IsNullOrWhiteSpace(Request.QueryString.Get(Constants.DeeplinkParams.PromotionCode)))
         {
            strPromoCode = Request.QueryString.Get(Constants.DeeplinkParams.PromotionCode);
         }

         if (!string.IsNullOrWhiteSpace(Request.QueryString.Get(Constants.DeeplinkParams.NumberOfRoom)))
         {
            if (Int32.TryParse(Request.QueryString.Get(Constants.DeeplinkParams.NumberOfRoom), out intNumberRooms))
               bNumberRoomsSpecified = true;
         }

         for (int i = 0; i < 8; i++)
         {
            if (!string.IsNullOrWhiteSpace(Request.QueryString[string.Format(Constants.DeeplinkParams.NumberOfAdult, i + 1)]))
            {
               if (Int32.TryParse(Request.QueryString[string.Format(Constants.DeeplinkParams.NumberOfAdult, i + 1)], out intAdults[i]))
                  bAdultsSpecified[i] = true;
            }

            if (!string.IsNullOrWhiteSpace(Request.QueryString[string.Format(Constants.DeeplinkParams.NumberOfChild, i + 1)]))
            {
               if (Int32.TryParse(Request.QueryString[string.Format(Constants.DeeplinkParams.NumberOfChild, i + 1)], out intChildren[i]))
                  bChildrenSpecified[i] = true;
            }

         }

         // Validate query string parameters
         var objStayCriteriaSelection = (StayCriteriaSelection)Session[Constants.Sessions.StayCriteriaSelection];
         if (!IsValidHotelCode())
         {
            Session[Constants.Sessions.CurrentBookingStep] = BookingSteps.SelectHotel;
            RedirectTo("~/Default.aspx");
            return;
         }
         objStayCriteriaSelection.HotelCode = strHotelCode;
         if (!IsValidStayDate())
         {
            Session[Constants.Sessions.CurrentBookingStep] = BookingSteps.SelectStayDate;
            RedirectTo("~/Default.aspx");
            return;
         }
         objStayCriteriaSelection.ArrivalDate = dtArrivalDate;
         objStayCriteriaSelection.DepartureDate = dtDepartureDate;
         if (!IsValidStayPolicy())
         {
            Session[Constants.Sessions.CurrentBookingStep] = BookingSteps.SelectRoomQuantity;
            RedirectTo("~/Pages/CheckAvailability.aspx");
            return;
         }

         objStayCriteriaSelection.PromotionCode = strPromoCode;
         objStayCriteriaSelection.RoomOccupantSelections = new RoomOccupantSelection[intNumberRooms];
         for (int i = 0; i < objStayCriteriaSelection.RoomOccupantSelections.Length; i++)
         {
            objStayCriteriaSelection.RoomOccupantSelections[i] = new RoomOccupantSelection
            {
               RoomRefID = (i + 1).ToString(),
               NumberRooms = 1
            };

            objStayCriteriaSelection.RoomOccupantSelections[i].NumberAdults = intAdults[i];
            objStayCriteriaSelection.RoomOccupantSelections[i].NumberChildren = intChildren[i];

         }

         Session[Constants.Sessions.CurrentBookingStep] = BookingSteps.SelectRoomDetail;
         Session[Constants.Sessions.CurrentRoomDetailStep] = RoomDetailSelectionStep.SelectAdultQuantity;

         Context.Items.Add("DeepLinkNav", "1");
         RedirectTo("~/Pages/CheckAvailability.aspx");
         return;

          }

          // Booking cancellation command

          else if (!string.IsNullOrWhiteSpace(Request.QueryString[Constants.DeeplinkParams.Command]) &&
          Request.QueryString[Constants.DeeplinkParams.Command].Equals(Constants.DeeplinkParams.CmdCancelReservation, StringComparison.InvariantCultureIgnoreCase))
          {
         if (!string.IsNullOrWhiteSpace(Request.QueryString.Get(Constants.DeeplinkParams.HotelCode)))
         {
            strHotelCode = Request.QueryString.Get(Constants.DeeplinkParams.HotelCode);
         }

         CancelDetailsEntryInfo objCancelDetailsEntryInfo = new CancelDetailsEntryInfo
         {
            HotelCode = strHotelCode,
            ConfirmationNumber = "",
            GuestLastName = "",
            SelectedConfirmationNumbersToCancel = new string[0]
         };

         Session[Constants.Sessions.CancelDetailsEntryInfo] = objCancelDetailsEntryInfo;

         RedirectTo("~/Pages/CancelReservation.aspx?DeepLinkNav=1");
         return;
          }

          RedirectTo("~/Default.aspx");
          return;
    }