public bool getValidaCambioTarifa(HotelFare oHotelFareAnt, HotelFare oHotelFareNew)
        {
            bool bCambio = false;

            try
            {
                if (oHotelFareAnt.Rooms.Length > 0)
                {
                    for (int i = 0; i < oHotelFareAnt.Rooms.Length; i++)
                    {
                        if (oHotelFareAnt.Rooms[i].RoomTypes.Length > 0)
                        {
                            for (int j = 0; j < oHotelFareAnt.Rooms[i].RoomTypes.Length; j++)
                            {
                                if (oHotelFareAnt.Rooms[i].RoomTypes[j].EffectiveDates.Length > 0)
                                {
                                    for (int k = 0; k < oHotelFareAnt.Rooms[i].RoomTypes[j].EffectiveDates.Length; k++)
                                    {
                                        if (!oHotelFareAnt.Rooms[i].RoomTypes[j].EffectiveDates[k].AmountBeforeTax.Equals(oHotelFareNew.Rooms[i].RoomTypes[j].EffectiveDates[k].AmountBeforeTax))
                                        {
                                            HttpContext.Current.Session["$CambioTarifa"] = oHotelFareNew.Rooms[i].RoomTypes[j].EffectiveDates[k].AmountBeforeTax;
                                            bCambio = true;
                                            break;
                                        }
                                    }
                                }
                                else
                                {
                                    bCambio = true;
                                }
                                if (bCambio)
                                {
                                    break;
                                }
                            }
                        }
                        if (bCambio)
                        {
                            break;
                        }
                    }
                }
                else
                {
                    bCambio = true;
                }
            }
            catch
            {
                bCambio = true;
            }
            return(bCambio);
        }
        public clsResultados getServices()
        {
            clsResultados  cResultados    = new clsResultados();
            clsParametros  cParametros    = new clsParametros();
            StringBuilder  consulta       = new StringBuilder();
            VO_Credentials vo_Credentials = clsCredenciales.Credenciales(Enum_ProveedorWebServices.TotalTrip);

            try
            {
                cResultados.dsResultados = clsSesiones.getReservaHotel();
                VO_HotelValuedAvailRQ vo_HotelValuedAvailRQ = clsSesiones.getParametrosHotel();

                HotelConfirmRQ oHotelConfirmRQ = new HotelConfirmRQ();
                HotelConfirmRS oHotelConfirmRS = new HotelConfirmRS();

                HotelFare oHotelFare = getHotelFare(cResultados.dsResultados);
                oHotelConfirmRQ.HotelFare = oHotelFare;

                oHotelConfirmRQ.Username = vo_Credentials.LoginUser;
                oHotelConfirmRQ.Password = vo_Credentials.PasswordUser;

                HotelConfirmService oHotelConfirmService = new HotelConfirmService();
                oHotelConfirmService.Url = clsEsquema.setConexionWs(oHotelConfirmService.Url);
                string   sRutaGen        = clsValidaciones.XMLDatasetCrea();
                string   sHotelConfirmRQ = "HotelConfirmRQ";
                string   sHotelConfirmRS = "HotelConfirmRS";
                clsCache cCache          = new csCache().cCache();
                try
                {
                    if (cCache != null)
                    {
                        sHotelConfirmRQ += cCache.SessionID;
                        sHotelConfirmRS += cCache.SessionID;
                    }
                }
                catch { }
                try
                {
                    clsXML.ClaseXML(oHotelConfirmRQ, sRutaGen + sHotelConfirmRQ + ".xml");
                }
                catch { }

                oHotelConfirmRS = oHotelConfirmService.HotelConfirm(oHotelConfirmRQ);
                bool bCambioTarifa = getValidaCambioTarifa(oHotelFare, oHotelConfirmRS.HotelFare);

                try
                {
                    clsXML.ClaseXML(oHotelConfirmRS, sRutaGen + sHotelConfirmRS + ".xml");
                }
                catch { }

                cParametros = new clsEsquema().GetDatasetConfirmaReserva(cResultados.dsResultados, oHotelConfirmRS, bCambioTarifa);
                if (!cParametros.Id.Equals(0))
                {
                    clsSesiones.setReservaHotel(cResultados.dsResultados);
                    cResultados.Error = cParametros;
                }
                else
                {
                    cParametros.Id       = 0;
                    cParametros.Message  = cResultados.dsResultados.Tables[clsEsquema.TABLA_ERROR].Rows[0][clsEsquema.COLUMN_MESSAGE].ToString();
                    cParametros.Severity = clsSeveridad.Alta;
                    cParametros.Tipo     = clsTipoError.WebServices;
                    cParametros.Metodo   = "HotelConfirmRQ";
                    consulta.AppendLine("Credenciales: ");
                    try
                    {
                        if (vo_Credentials != null)
                        {
                            consulta.AppendLine("User: "******"Password: "******"Url: " + vo_Credentials.UrlWebServices);
                            if (cCache != null)
                            {
                                consulta.AppendLine("Sesion Local: " + cCache.SessionID.ToString());
                            }
                        }
                    }
                    catch { }
                    cParametros.Info        = consulta.ToString();
                    cParametros.Complemento = "Resultados de Hoteles";
                    cParametros.ViewMessage.Add("No existen resultados para esta búsqueda");
                    cParametros.Sugerencia.Add("Por favor intente de nuevo");
                    cParametros.Code       = "502";
                    cParametros.ValidaInfo = false;
                    cParametros.MessageBD  = true;
                    cParametros.TipoWs     = Enum_ProveedorWebServices.TotalTrip;

                    cResultados.Error = cParametros;
                    ExceptionHandled.Publicar(cParametros);
                }
            }
            catch (Exception Ex)
            {
                cParametros.Id          = 0;
                cParametros.Message     = Ex.Message;
                cParametros.Severity    = clsSeveridad.Alta;
                cParametros.Tipo        = clsTipoError.WebServices;
                cParametros.Metodo      = System.Reflection.MethodBase.GetCurrentMethod().Name;
                cParametros.Complemento = "Confirmacion de reserva de Hoteles";
                cParametros.Source      = Ex.Source;
                consulta.AppendLine("Credenciales: ");
                try
                {
                    if (vo_Credentials != null)
                    {
                        consulta.AppendLine("User: "******"Password: "******"Url: " + vo_Credentials.UrlWebServices);
                        clsCache cCache = new csCache().cCache();
                        if (cCache != null)
                        {
                            consulta.AppendLine("Sesion Local: " + cCache.SessionID.ToString());
                        }
                    }
                }
                catch { }
                cParametros.Info       = consulta.ToString();
                cParametros.StackTrace = Ex.StackTrace;
                cParametros.ViewMessage.Add("La reserva no se confirmo");
                cParametros.Sugerencia.Add("Por favor intente de nuevo");
                cParametros.Code       = "502";
                cParametros.ValidaInfo = false;
                cParametros.MessageBD  = true;
                cParametros.TipoWs     = Enum_ProveedorWebServices.TotalTrip;
                cResultados.Error      = cParametros;
                ExceptionHandled.Publicar(cParametros);
            }
            return(cResultados);
        }
        public HotelFare getHotelFare(DataSet dsData)
        {
            clsParametros  cParametros    = new clsParametros();
            HotelFare      oHotelFare     = new HotelFare();
            StringBuilder  consulta       = new StringBuilder();
            VO_Credentials vo_Credentials = clsCredenciales.Credenciales(Enum_ProveedorWebServices.TotalTrip);

            bool bSoloTT = false;

            try
            {
                bSoloTT = bool.Parse(clsValidaciones.GetKeyOrAdd("bSoloTT", "False"));
            }
            catch { }

            try
            {
                VO_HotelValuedAvailRQ vo_HotelValuedAvailRQ = clsSesiones.getParametrosHotel();


                DataTable dtHotelInfo = dsData.Tables[clsEsquema.TABLA_HOTEL_INFO];
                DataTable dtHotelRoom = dsData.Tables[clsEsquema.TABLA_HOTEL_ROOM];
                DataTable dtPriceDate = dsData.Tables[clsEsquema.TABLA_PRICE];
                if (dtHotelInfo.Rows.Count > 0)
                {
                    string  sWhere          = string.Empty;
                    int     sHotel          = int.Parse(dtHotelInfo.Rows[0][clsEsquema.COLUMN_HOTELCODE].ToString());
                    string  sCityCode       = dtHotelInfo.Rows[0][clsEsquema.COLUMN_DESTINATION_CODE].ToString();
                    decimal dAgencyComision = clsValidaciones.getDecimalNotRound(dtHotelInfo.Rows[0][clsEsquema.COLUMN_AGENCY_COMISION].ToString());
                    decimal dIva            = clsValidaciones.getDecimalNotRound(dtHotelInfo.Rows[0][clsEsquema.COLUMN_IVA].ToString());
                    int     iSource         = int.Parse(dtHotelInfo.Rows[0][clsEsquema.COLUMN_SOURCE].ToString());

                    Hotel oHotel = new Hotel();

                    string sAdulto  = clsValidaciones.GetKeyOrAdd("AdultoHB", "AD");
                    string sInfante = clsValidaciones.GetKeyOrAdd("InfanteHB", "CH");

                    int iRoom = dtHotelRoom.Rows.Count;

                    HotelRoom[] oRoomArray = new HotelRoom[iRoom];


                    oHotel.CityCode  = sCityCode;
                    oHotel.HotelCode = sHotel;
                    oHotel.Source    = iSource;

                    for (int i = 0; i < iRoom; i++)
                    {
                        HotelRoomType[] oHotelRoomTypeArray = new HotelRoomType[1];

                        sWhere = clsEsquema.COLUMN_HOTEL_ROOM_ID + " = " + dtHotelRoom.Rows[i][clsEsquema.COLUMN_HOTEL_ROOM_ID].ToString();
                        HotelRoom     oRoom          = new HotelRoom();
                        HotelRoomType oHotelRoomType = new HotelRoomType();

                        int            iPax      = vo_HotelValuedAvailRQ.lHotelOccupancy[i].Occupancy.lGuestList.Count;
                        HotelRoomPax[] oPaxArray = new HotelRoomPax[iPax];
                        for (int j = 0; j < iPax; j++)
                        {
                            HotelRoomPax oPax = new HotelRoomPax();
                            oPax.Age = vo_HotelValuedAvailRQ.lHotelOccupancy[i].Occupancy.lGuestList[j].Age;
                            if (vo_HotelValuedAvailRQ.lHotelOccupancy[i].Occupancy.lGuestList[j].Type.Equals(sAdulto))
                            {
                                oPax.PaxType = PaxType.Adult;
                            }
                            else
                            {
                                oPax.PaxType = PaxType.Child;
                            }

                            oPax.EmailAddress = "*****@*****.**";
                            oPax.FirstName    = vo_HotelValuedAvailRQ.lHotelOccupancy[i].Occupancy.lGuestList[j].Name;
                            oPax.LastName     = vo_HotelValuedAvailRQ.lHotelOccupancy[i].Occupancy.lGuestList[j].LastName;
                            oPax.PhoneNumber  = "571";

                            oPaxArray[j] = oPax;
                        }
                        oRoom.Paxes = oPaxArray;
                        DataRow[]       drRoomsPrices = dtPriceDate.Select(sWhere);
                        int             iFechas       = drRoomsPrices.Length;
                        EffectiveDate[] eFechasArray  = new EffectiveDate[iFechas];
                        int             k             = 0;
                        foreach (DataRow drRoomPrice in drRoomsPrices)
                        {
                            EffectiveDate eFechas = new EffectiveDate();
                            eFechas.Date              = DateTime.Parse(drRoomPrice[clsEsquema.COLUMN_DATE].ToString());;
                            eFechas.AmountAfterTax    = decimal.Parse(drRoomPrice[clsEsquema.COLUMN_PRICE_AMOUN_AFTER_TAX].ToString());
                            eFechas.AmountBeforeTax   = decimal.Parse(drRoomPrice[clsEsquema.COLUMN_PRICE_AMOUN_BEFORE_TAX].ToString());
                            eFechas.DiscountAfterTax  = decimal.Parse(drRoomPrice[clsEsquema.COLUMN_PRICE_DISCOUNT_AFTER_TAX].ToString());
                            eFechas.DiscountBeforeTax = decimal.Parse(drRoomPrice[clsEsquema.COLUMN_PRICE_DISCOUNT_BEFORE_TAX].ToString());
                            try
                            {
                                eFechas.Currency         = drRoomPrice[clsEsquema.COLUMN_CURRENCY].ToString();
                                eFechas.ProviderCurrency = drRoomPrice[clsEsquema.COLUMN_PROVIDER_CURRENCY].ToString();
                                eFechas.ROE = decimal.Parse(drRoomPrice[clsEsquema.COLUMN_ROE].ToString());
                            }
                            catch { }
                            eFechasArray[k] = eFechas;
                            k++;
                        }
                        oHotelRoomType.EffectiveDates = eFechasArray;
                        oHotelRoomType.InvBlockCode   = dtHotelRoom.Rows[i][clsEsquema.COLUMN_CHARASTERISTIC].ToString();
                        oHotelRoomType.RatePlanType   = dtHotelRoom.Rows[i][clsEsquema.COLUMN_CONFIRM_RATEPLANTYPE].ToString();
                        oHotelRoomType.RoomDesc       = dtHotelRoom.Rows[i][clsEsquema.COLUMN_ROOM_TYPE_TEXT].ToString();
                        oHotelRoomType.RoomRate       = dtHotelRoom.Rows[i][clsEsquema.COLUMN_SHRUI].ToString();
                        oHotelRoomType.RoomType       = dtHotelRoom.Rows[i][clsEsquema.COLUMN_TYPE].ToString();

                        oHotelRoomType.AmountIncludedBoardSurcharge = decimal.Parse(dtHotelRoom.Rows[i][clsEsquema.COLUMN_ROOM_AMOUNT_SURCHARGE].ToString());
                        try
                        {
                            if (!dtHotelRoom.Rows[i][clsEsquema.COLUMN_ROOM_TTL].ToString().Equals("True"))
                            {
                                oHotelRoomType.TTL = DateTime.Parse(dtHotelRoom.Rows[i][clsEsquema.COLUMN_ROOM_TTL].ToString());
                            }
                        }
                        catch { }

                        oHotelRoomTypeArray[0] = oHotelRoomType;
                        oRoom.RoomTypes        = oHotelRoomTypeArray;

                        oRoomArray[i] = oRoom;
                    }

                    oHotelFare.Hot = oHotel;

                    oHotelFare.Rooms            = oRoomArray;
                    oHotelFare.AgencyCommission = dAgencyComision;
                    oHotelFare.Iva = dIva;
                    if (bSoloTT)
                    {
                        oHotelFare.ContentType = ContentType.Exclusive;
                    }
                    else
                    {
                        oHotelFare.ContentType = ContentType.NonExclusive;
                    }
                }
            }
            catch (Exception Ex)
            {
                cParametros.Id          = 0;
                cParametros.Message     = Ex.Message;
                cParametros.Severity    = clsSeveridad.Alta;
                cParametros.Tipo        = clsTipoError.WebServices;
                cParametros.Metodo      = System.Reflection.MethodBase.GetCurrentMethod().Name;
                cParametros.Complemento = "Confirmacion de Hoteles";
                consulta.AppendLine("Credenciales: ");
                try
                {
                    if (vo_Credentials != null)
                    {
                        consulta.AppendLine("User: "******"Password: "******"Url: " + vo_Credentials.UrlWebServices);
                        clsCache cCache = new csCache().cCache();
                        if (cCache != null)
                        {
                            consulta.AppendLine("Sesion Local: " + cCache.SessionID.ToString());
                        }
                    }
                }
                catch { }
                cParametros.Info       = consulta.ToString();
                cParametros.Source     = Ex.Source;
                cParametros.StackTrace = Ex.StackTrace;
                cParametros.ViewMessage.Add("No se confirmo la reserva");
                cParametros.Sugerencia.Add("Por favor intente de nuevo");
                ExceptionHandled.Publicar(cParametros);
            }
            return(oHotelFare);
        }