示例#1
0
 public CheckRateRS doCheck(CheckRateRQ checkRateRQ)
 {
     try
     {
         HotelApiPaths.CHECK_AVAIL checkRate = new HotelApiPaths.CHECK_AVAIL();
         CheckRateRS response = callRemoteApi <CheckRateRS, CheckRateRQ>(checkRateRQ, checkRate, null, this.version);
         return(response);
     } catch (HotelSDKException e)
     {
         throw e;
     }
 }
示例#2
0
        static void Main(string[] args)
        {
            try
            {
                HotelApiClient client = new HotelApiClient();
                StatusRS       status = client.status();

                if (status != null && status.error == null)
                {
                    Console.WriteLine("StatusRS: " + status.status);
                }
                else if (status != null && status.error != null)
                {
                    Console.WriteLine("StatusRS: " + status.status + " " + status.error.code + ": " + status.error.message);
                    return;
                }
                else if (status == null)
                {
                    Console.WriteLine("StatusRS: Is not available.");
                    return;
                }

                List <Tuple <string, string> > param;


                Availability avail = new Availability();
                avail.checkIn     = DateTime.Now.AddDays(10);
                avail.checkOut    = DateTime.Now.AddDays(13);
                avail.destination = "PMI";
                avail.zone        = 90;
                avail.language    = "CAS";
                avail.shiftDays   = 2;
                AvailRoom room = new AvailRoom();
                room.adults   = 1;
                room.children = 1;
                room.details  = new List <RoomDetail>();
                room.adultOf(30);
                room.childOf(4);
                room.numberOfRooms = 1;
                avail.rooms.Add(room);
                room          = new AvailRoom();
                room.adults   = 2;
                room.children = 0;
                room.details  = new List <RoomDetail>();
                room.adultOf(30);
                room.adultOf(30);
                room.numberOfRooms = 2;
                avail.rooms.Add(room);
                avail.payed = Availability.Pay.AT_WEB;
                //avail.ofTypes = new HashSet<hotel_api_model.auto.common.SimpleTypes.AccommodationType>();
                //avail.ofTypes.Add(hotel_api_model.auto.common.SimpleTypes.AccommodationType.HOTEL);
                //avail.ofTypes.Add(hotel_api_model.auto.common.SimpleTypes.AccommodationType.APARTMENT);

                //avail.minCategory = 4;
                //avail.limitHotelsTo = 10;
                //avail.numberOfTripAdvisorReviewsHigherThan = 2;
                //avail.tripAdvisorScoreHigherThan = 2

                //avail.matchingKeywords = new HashSet<int>();
                //avail.matchingKeywords.Add(34);
                //avail.matchingKeywords.Add(81);
                //avail.keywordsMatcher = Availability.Matcher.ALL;

                //avail.includeHotels = new List<int>();
                //avail.includeHotels.Add(111637);
                //avail.includeHotels.Add(2818);
                //avail.includeHotels.Add(138465);
                //avail.includeHotels.Add(164471);

                //avail.excludeHotels = new List<int>();
                //avail.excludeHotels.Add(187013);
                //avail.excludeHotels.Add(188330);

                //avail.useGiataCodes = false;
                //avail.limitHotelsTo = 250;
                //avail.limitRoomsPerHotelTo = 5;
                //avail.limitRatesPerRoomTo = 5;
                //avail.ratesHigherThan = 50;
                //avail.ratesLowerThan = 350;

                //avail.hbScoreHigherThan = 3;
                //avail.hbScoreLowerThan = 5;
                //avail.numberOfHBReviewsHigherThan = 50;

                //avail.tripAdvisorScoreHigherThan = 1;
                //avail.tripAdvisorScoreLowerThan = 4;
                //avail.numberOfHBReviewsHigherThan = 50;

                //avail.withinThis = new Availability.Circle() { latitude = 2.646633999999949, longitude = 39.57119, radiusInKilometers = 50 };
                //avail.withinThis = new Availability.Square() { northEastLatitude = 45.37680856570233, northEastLongitude = -2.021484375, southWestLatitude = 38.548165423046584, southWestLongitude = 8.658203125 };

                //avail.includeBoards = new List<string>();
                //avail.includeBoards.Add("R0-E10");
                //avail.includeBoards.Add("BB-E10");
                //avail.excludeBoards = new List<string>();
                //avail.excludeBoards.Add("RO");

                //avail.includeRoomCodes = new List<string>();
                //avail.includeRoomCodes.Add("DBL.ST");
                //avail.includeRoomCodes.Add("DBL.SU");
                ////avail.includeRoomCodes.AddRange(new string[]{ "DBL.ST", "DBL.SU" });
                //avail.excludeRoomCodes = new List<string>();
                //avail.excludeRoomCodes.Add("TPL.ST");

                AvailabilityRQ availabilityRQ = avail.toAvailabilityRQ();
                if (availabilityRQ == null)
                {
                    throw new Exception("Availability RQ can't be null", new ArgumentNullException());
                }

                Console.WriteLine("Availability Request:");
                Console.WriteLine(JsonConvert.SerializeObject(availabilityRQ, Formatting.Indented, new JsonSerializerSettings()
                {
                    DefaultValueHandling = DefaultValueHandling.Ignore
                }));

                AvailabilityRS responseAvail = client.doAvailability(availabilityRQ);

                if (responseAvail != null && responseAvail.hotels != null && responseAvail.hotels.hotels != null && responseAvail.hotels.hotels.Count > 0)
                {
                    Console.WriteLine(string.Format("Availability answered with {0} hotels!", responseAvail.hotels.hotels.Count));
                    Console.WriteLine(JsonConvert.SerializeObject(responseAvail, Formatting.Indented, new JsonSerializerSettings()
                    {
                        DefaultValueHandling = DefaultValueHandling.Ignore
                    }));

                    //  ***********************************
                    //  Try to check reservation with rate
                    //  ***********************************

                    Hotel  firstHotel = responseAvail.hotels.hotels.First();
                    string rateKey    = string.Empty;

                    for (int r = 0; r < firstHotel.rooms.Count && String.IsNullOrEmpty(rateKey); r++)
                    {
                        for (int rk = 0; firstHotel.rooms[r].rates != null && rk < firstHotel.rooms[r].rates.Count && String.IsNullOrEmpty(rateKey); rk++)
                        {
                            rateKey = firstHotel.rooms[r].rates[rk].rateKey;
                        }
                    }

                    if (String.IsNullOrEmpty(rateKey))
                    {
                        Console.WriteLine("No hotel available");
                        return;
                    }

                    Console.WriteLine("Checking reservation with rate " + rateKey);

                    ConfirmRoom confirmRoom = new ConfirmRoom();
                    confirmRoom.details = new List <RoomDetail>();
                    confirmRoom.detailed(RoomDetail.GuestType.ADULT, 30, "NombrePasajero1", "ApellidoPasajero1", 1);
                    confirmRoom.detailed(RoomDetail.GuestType.ADULT, 30, "NombrePasajero2", "ApellidoPasajero2", 1);

                    BookingCheck bookingCheck = new BookingCheck();
                    bookingCheck.addRoom(rateKey, confirmRoom);
                    CheckRateRQ checkRateRQ = bookingCheck.toCheckRateRQ();

                    if (checkRateRQ != null)
                    {
                        CheckRateRS responseRate = client.doCheck(checkRateRQ);
                        if (responseRate != null && responseRate.error == null)
                        {
                            Console.WriteLine("CheckRate Response:");
                            Console.WriteLine(JsonConvert.SerializeObject(responseRate, Formatting.Indented, new JsonSerializerSettings()
                            {
                                DefaultValueHandling = DefaultValueHandling.Ignore
                            }));

                            com.hotelbeds.distribution.hotel_api_sdk.helpers.Booking booking = new com.hotelbeds.distribution.hotel_api_sdk.helpers.Booking();
                            booking.createHolder("Rosetta", "Pruebas");
                            booking.clientReference = "SDK Test";
                            booking.remark          = "***SDK***TESTING";

                            //NOTE: ONLY LIBERATE (PAY AT HOTEL MODEL) USES PAYMENT DATA NODES. FOR OTHER PRICING MODELS THESE NODES MUST NOT BE USED.
                            booking.cardType       = "VI";
                            booking.cardNumber     = "4444333322221111";
                            booking.expiryDate     = "0620";
                            booking.cardCVC        = "0620";
                            booking.email          = "*****@*****.**";
                            booking.phoneNumber    = "654654654";
                            booking.cardHolderName = "AUTHORISED";

                            booking.addRoom(rateKey, confirmRoom);
                            BookingRQ bookingRQ = booking.toBookingRQ();
                            if (bookingRQ != null)
                            {
                                BookingRS responseBooking = client.confirm(bookingRQ);
                                Console.WriteLine("Booking Response:");
                                if (responseBooking != null)
                                {
                                    Console.WriteLine(JsonConvert.SerializeObject(responseBooking, Formatting.Indented, new JsonSerializerSettings()
                                    {
                                        DefaultValueHandling = DefaultValueHandling.Ignore
                                    }));
                                }
                                else
                                {
                                    Console.WriteLine("ResponseBooking Object Response is null");
                                }

                                if (responseBooking != null && responseBooking.error == null && responseBooking.booking != null)
                                {
                                    Console.WriteLine("Confirmation succedded. Canceling reservation with id " + responseBooking.booking.reference);
                                    param = new List <Tuple <string, string> >
                                    {
                                        new Tuple <string, string>("${bookingId}", responseBooking.booking.reference),
                                        //new Tuple<string, string>("${bookingId}", "1-3087550"),
                                        new Tuple <string, string>("${flag}", "C")
                                    };


                                    BookingCancellationRS bookingCancellationRS = client.Cancel(param);

                                    if (bookingCancellationRS != null)
                                    {
                                        Console.WriteLine("Id cancelled: " + responseBooking.booking.reference);
                                        Console.WriteLine(JsonConvert.SerializeObject(bookingCancellationRS, Formatting.Indented, new JsonSerializerSettings()
                                        {
                                            DefaultValueHandling = DefaultValueHandling.Ignore
                                        }));
                                        Console.ReadLine();

                                        Console.WriteLine("Getting detail after cancelation of id " + responseBooking.booking.reference);
                                        param = new List <Tuple <string, string> >
                                        {
                                            new Tuple <string, string>("${bookingId}", responseBooking.booking.reference)
                                        };
                                        BookingDetailRS bookingDetailRS = client.Detail(param);
                                        if (bookingDetailRS != null)
                                        {
                                            Console.WriteLine(JsonConvert.SerializeObject(bookingDetailRS, Formatting.Indented, new JsonSerializerSettings()
                                            {
                                                DefaultValueHandling = DefaultValueHandling.Ignore
                                            }));
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            Console.WriteLine("No hotel available");
                        }
                    }
                }
                else
                {
                    Console.WriteLine("No availability!");
                }

                Console.WriteLine("Requesting booking list...");

                param = new List <Tuple <string, string> >
                {
                    new Tuple <string, string>("${start}", DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd")),
                    new Tuple <string, string>("${end}", DateTime.Now.ToString("yyyy-MM-dd")),
                    new Tuple <string, string>("${includeCancelled}", "true"),
                    new Tuple <string, string>("${filterType}", "CREATION"),
                    new Tuple <string, string>("${from}", "1"),
                    new Tuple <string, string>("${to}", "25"),
                };

                BookingListRS bookingListRS = client.List(param);
                if (bookingListRS != null)
                {
                    Console.WriteLine(JsonConvert.SerializeObject(bookingListRS, Formatting.Indented, new JsonSerializerSettings()
                    {
                        DefaultValueHandling = DefaultValueHandling.Ignore
                    }));
                    foreach (com.hotelbeds.distribution.hotel_api_model.auto.model.Booking booking in bookingListRS.bookings.bookings)
                    {
                        param = new List <Tuple <string, string> >
                        {
                            new Tuple <string, string>("${bookingId}", booking.reference)
                        };
                        BookingDetailRS bookingDetailRS = client.Detail(param);
                        if (bookingDetailRS != null)
                        {
                            Console.WriteLine(JsonConvert.SerializeObject(bookingDetailRS, Formatting.Indented, new JsonSerializerSettings()
                            {
                                DefaultValueHandling = DefaultValueHandling.Ignore
                            }));
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: " + e.Message + " " + e.StackTrace);
            }
            Console.ReadLine();
        }
示例#3
0
        private string GetRateTable(string RPH, CheckRateRS hpr, List <Rate> lstRate, string hcode, string searchid, string curcode, double admarkup, double clmarkup, double addiscount, double cldiscount, double roomtaxprice, string b2c_idn, int norooms)// DataRow dr,
        {
            string       rvalue               = "";
            List <Rooms> lstRooms             = new List <Rooms>();
            Room         objRoom              = new Room();
            double       rrate                = 0.00;
            double       adroommarkup         = 0.00;
            double       roombaseamount       = 0.00;
            double       roomamountwithouttax = 0.00;
            double       adroompercmarkup     = 0.00;
            double       clroompercmarkup     = 0.00;
            double       adroomperdiscount    = 0.00;
            double       clroomperdiscount    = 0.00;
            double       clroommarkup         = 0.00;
            double       finalroommarkup      = 0.00;
            double       finalroomdiscount    = 0.00;
            double       adroomdiscount       = 0.00;
            double       clroomdiscount       = 0.00;


            DataTable dts        = HotelDBLayer.GetSearch(searchid);
            DateTime  checkindt  = Convert.ToDateTime(hpr.Hotel.CheckIn);
            DateTime  checkoutdt = Convert.ToDateTime(hpr.Hotel.CheckOut);

            norooms = Convert.ToInt32(dts.Rows[0]["Rooms"].ToString());

            double dc = 0.0;

            try
            { dc = (Convert.ToDateTime(checkoutdt.ToString()) - Convert.ToDateTime(checkindt.ToString())).TotalDays; }
            catch { }

            DateTime startweekdate = checkindt.AddDays(-(int)checkindt.DayOfWeek);
            DateTime endweekdate   = checkoutdt.AddDays(-(int)checkoutdt.DayOfWeek).AddDays(6);

            double  noofdays  = (endweekdate - startweekdate).TotalDays;
            decimal noofweeks = Decimal.Ceiling(Convert.ToDecimal(noofdays) / 7);

            string strtable = "<table width='100%' border='0' cellspacing='0' cellpadding='0' class='week-table-main'>";

            strtable += "<tbody><tr><td>";
            strtable += "<table width='100%' border='0' cellspacing='0' cellpadding='0' class='week-days'>";
            strtable += "<tbody><tr><td>&nbsp;</td><td>Sun</td><td>mon</td><td>tue</td><td>wed</td><td>thu</td><td>fri</td> <td>sat</td> </tr></tbody></table>";
            strtable += "</td></tr><tr><td> <table width='100%' border='0' cellspacing='0' cellpadding='0' class='price-details'><tbody>";

            DataRow[] hpraterangerow = null;
            try
            {
                // hpraterangerow = hpr.HP_RateRange.Select("HotelPricingID='" + hotelpricingrow[0]["HotelPricingID"].ToString() + "'");
            }
            catch
            {
            }

            DataTable dtr = new DataTable();

            dtr.Columns.Add("id");
            dtr.Columns.Add("amount");
            dtr.Columns.Add("taxes");
            dtr.Columns.Add("surcharges");
            dtr.Columns.Add("expdate", typeof(DateTime));
            dtr.Columns.Add("effedate", typeof(DateTime));
            dtr.Columns.Add("hid");


            int r = 1;

            foreach (var rate in lstRate)
            {
                double troomspricepernightwithmarkup = 0.00;



                // eachroomsprice = Convert.ToDouble(troomsprice / norooms);
                rrate = Convert.ToDouble(Convert.ToDouble(Convert.ToDouble(lstRate[r - 1].Net) / dc).ToString("0.00"));

                string avgpnignt = Convert.ToDouble(rrate).ToString();

                //string avgroompernight = (Convert.ToDouble(avgpnignt) / dc).ToString("0.00");

                roombaseamount = Convert.ToDouble(avgpnignt);

                DataTable     dtwt     = new DataTable();
                SqlConnection sqlconwt = new SqlConnection(con);
                try
                {
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection  = sqlconwt;
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = "p_SreTS_HDR";
                    cmd.Parameters.AddWithValue("@B2C_IDN", b2c_idn);
                    cmd.Parameters.AddWithValue("@Hotelcode", hcode);
                    cmd.Parameters.AddWithValue("@GDS", "HB");
                    cmd.Parameters.AddWithValue("@IsLoginCust", "Y");
                    SqlDataAdapter sa = new SqlDataAdapter(cmd);
                    sa.Fill(dtwt);
                }
                catch
                {
                }

                if (dtwt.Rows.Count > 0)
                {
                    string Ts_mode = string.Empty;
                    Ts_mode = dtwt.Rows[0]["TS_Mode"].ToString();
                    if (Ts_mode == "Fixed")
                    {
                        adroommarkup   = Convert.ToDouble(dtwt.Rows[0]["TS_Markup"].ToString());
                        adroomdiscount = Convert.ToDouble(dtwt.Rows[0]["TS_Discount"].ToString());
                    }
                    else if (Ts_mode == "Percentage")
                    {
                        adroompercmarkup = Convert.ToDouble(dtwt.Rows[0]["TS_Markup"].ToString());
                        adroommarkup     = ((roombaseamount / 100.00) * adroompercmarkup);

                        adroomperdiscount = Convert.ToDouble(dtwt.Rows[0]["TS_Discount"].ToString());
                        adroomdiscount    = (((roombaseamount) / 100.00) * adroomperdiscount);
                    }
                    else
                    {
                        adroommarkup   = 0.00;
                        adroomdiscount = 0.00;
                    }

                    string Cl_Mode = string.Empty;
                    Cl_Mode = dtwt.Rows[0]["Cl_Mode"].ToString();
                    if (Cl_Mode == "Fixed")
                    {
                        clmarkup   = Convert.ToDouble(dtwt.Rows[0]["Cl_Markup"].ToString());
                        cldiscount = Convert.ToDouble(dtwt.Rows[0]["Cl_Discount"].ToString());
                    }
                    else if (Cl_Mode == "Percentage")
                    {
                        clroompercmarkup = Convert.ToDouble(dtwt.Rows[0]["Cl_Markup"].ToString());
                        clroommarkup     = (((roombaseamount) / (100)) * clroompercmarkup);

                        clroomperdiscount = Convert.ToDouble(dtwt.Rows[0]["Cl_Discount"].ToString());
                        clroomdiscount    = ((roombaseamount / 100.00) * clroomperdiscount);
                    }
                    else
                    {
                        clmarkup = 0.00;
                    }

                    finalroommarkup      = adroommarkup + clroommarkup;
                    finalroomdiscount    = adroomdiscount + clroomdiscount;
                    roombaseamount       = roombaseamount + (finalroommarkup - finalroomdiscount);
                    roomamountwithouttax = (Convert.ToDouble(roombaseamount));
                    // roombaseamount = (Convert.ToDouble(roomamountwithouttax) + Convert.ToDouble(tax));
                    troomspricepernightwithmarkup = troomspricepernightwithmarkup + (Convert.ToDouble(roomamountwithouttax));
                }
                DataRow drp = dtr.NewRow();
                drp[0] = 0;
                drp[1] = troomspricepernightwithmarkup.ToString("0.00"); //roomdescrow[0]["RatePernight"];
                drp[2] = 0;
                drp[3] = 0;
                drp[4] = "2019-" + checkoutdt.ToString("MM-dd");
                drp[5] = "2019-" + checkindt.ToString("MM-dd");
                drp[6] = 1;
                dtr.Rows.Add(drp);
                strtable += "<tr><td>Room" + (r) + "</td>";
                for (int i = 0; i < noofweeks; i++)
                {
                    strtable += "<tr><td>Week" + (i + 1) + "</td>";
                    for (int j = 0; j < 7; j++)
                    {
                        DateTime chkdate = startweekdate.AddDays((7 * i) + j);
                        if (checkoutdt == chkdate)
                        {
                            strtable += "<td>&nbsp;</td>";
                        }
                        else
                        {
                            var perDays = rate.Net.ToString();
                            var perDay  = Convert.ToDouble(perDays) / dc;


                            strtable += "<td>" + "$" + GetDayRate(dtr, r, chkdate.ToString("MM-dd-yyyy")) + "</td>";
                        }
                    }
                    strtable += "</tr>";
                }
                r++;
            }
            strtable += "</tbody> </table> </td> </tr> </tbody></table>";

            return(strtable);
        }
示例#4
0
        public checkresult Get(string searchid, string hcode, string ratekey, string b2c_idn)
        {
            double admarkup     = 0.00;
            double adroommarkup = 0.00;

            double adpercmarkup  = 0.00;
            double clpercmarkup  = 0.00;
            double adperdiscount = 0.00;
            double clperdiscount = 0.00;
            double clmarkup      = 0.00;
            double finalmarkup   = 0.00;
            double finaldiscount = 0.00;
            double addiscount    = 0.00;
            double cldiscount    = 0.00;
            double baseamount    = 0.00;

            double roombaseamount       = 0.00;
            double roomamountwithouttax = 0.00;
            double roomamountwithtax    = 0.00;

            double           adroompercmarkup  = 0.00;
            double           clroompercmarkup  = 0.00;
            double           adroomperdiscount = 0.00;
            double           clroomperdiscount = 0.00;
            double           clroommarkup      = 0.00;
            double           finalroommarkup   = 0.00;
            double           finalroomdiscount = 0.00;
            double           adroomdiscount    = 0.00;
            double           clroomdiscount    = 0.00;
            double           rrate;
            double           roomtaxprice                  = 0.00;
            double           eachroomavgtaxprice           = 0.00;
            double           roomcancellationprice         = 0.00;
            double           troomspricepernightwithmarkup = 0.00;
            double           eachroomspernihgtpricewmrk    = 0.00;
            string           ratetable         = string.Empty;
            double           allroomsprice     = 0.00;
            string           filePathRQ        = string.Empty;
            ManageHDetAj     mhd               = new ManageHDetAj();
            string           Result            = string.Empty;
            AvailabilityRS   objAvailabilityRS = new AvailabilityRS();
            CheckRateRS      objCheckRateRS    = new CheckRateRS();
            List <upselling> lstupselling      = new List <upselling>();
            Rooms            objRooms          = new Rooms();
            Room             objupsellingRoom  = new Room();
            checkresult      objchkres         = new checkresult();

            DataTable dssearch = HotelDBLayer.GetSearch(searchid);
            int       rooms    = Convert.ToInt32(dssearch.Rows[0]["Rooms"]);

            checkrates(searchid, hcode, ratekey, b2c_idn);
            string[] ratekeys      = ratekey.Split(',');
            string   ratekey_split = ratekeys[0].Substring(ratekeys[0].Length - 4);

            try
            {
                ClsFevicons objfavicons;
                objfavicons = new ClsFevicons();
                CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
                // TextInfo = cultureInfo.TextInfo;
                //string filePathRQ = Path.Combine(HttpRuntime.AppDomainAppPath, "HotelXML/" + searchid + "_propertydesc_" + hotelcode + "_" + CurrencyCode + "-RS.xml");
                filePathRQ = Path.Combine(HttpRuntime.AppDomainAppPath, "Checkrates_tbluexml/" + searchid + "_" + ratekey_split + "_checkrate-RS.xml");

                if (File.Exists(filePathRQ))
                {
                    XmlDataDocument xmldoc = new XmlDataDocument();
                    FileStream      fs     = new FileStream(filePathRQ, FileMode.Open, FileAccess.Read);
                    xmldoc.Load(fs);
                    fs.Close();
                    XmlNode       xnod         = xmldoc.DocumentElement;
                    XmlSerializer deserializer = new XmlSerializer(typeof(CheckRateRS));
                    StreamReader  reader       = new StreamReader(filePathRQ);
                    objCheckRateRS = (CheckRateRS)deserializer.Deserialize(reader);

                    if (objCheckRateRS.Error == null)
                    {
                        double dc = 0.0;
                        try
                        { dc = (Convert.ToDateTime(objCheckRateRS.Hotel.CheckOut.ToString()) - Convert.ToDateTime(objCheckRateRS.Hotel.CheckIn.ToString())).TotalDays; }
                        catch { }
                        string cancleplFrom   = "";
                        string cancleplamount = "";
                        foreach (Room objrooms in objCheckRateRS.Hotel.Rooms.Room)
                        {
                            Rates objrates = new Rates();
                            objrates = objrooms.Rates;
                            List <Rate> lstRate = objrates.Rate;

                            if (lstRate != null && lstRate.Count > 0)
                            {
                                for (int r = 0; r < lstRate.Count; r++)
                                {
                                    // eachroomsprice = Convert.ToDouble(troomsprice / norooms);
                                    rrate = Convert.ToDouble(Convert.ToDouble(Convert.ToDouble(lstRate[r].Net) / dc).ToString("0.00"));

                                    string avgpnignt = Convert.ToDouble(rrate).ToString();

                                    //string avgroompernight = (Convert.ToDouble(avgpnignt) / dc).ToString("0.00");

                                    roombaseamount = Convert.ToDouble(avgpnignt);

                                    DataTable     dtwt     = new DataTable();
                                    SqlConnection sqlconwt = new SqlConnection(con);
                                    try
                                    {
                                        SqlCommand cmd = new SqlCommand();
                                        cmd.Connection  = sqlconwt;
                                        cmd.CommandType = CommandType.StoredProcedure;
                                        cmd.CommandText = "p_SreTS_HDR";
                                        cmd.Parameters.AddWithValue("@B2C_IDN", b2c_idn);
                                        cmd.Parameters.AddWithValue("@Hotelcode", hcode);
                                        cmd.Parameters.AddWithValue("@GDS", "HB");
                                        cmd.Parameters.AddWithValue("@IsLoginCust", "Y");
                                        SqlDataAdapter sa = new SqlDataAdapter(cmd);
                                        sa.Fill(dtwt);
                                    }
                                    catch
                                    {
                                    }

                                    if (dtwt.Rows.Count > 0)
                                    {
                                        string Ts_mode = string.Empty;
                                        Ts_mode = dtwt.Rows[0]["TS_Mode"].ToString();
                                        if (Ts_mode == "Fixed")
                                        {
                                            adroommarkup   = Convert.ToDouble(dtwt.Rows[0]["TS_Markup"].ToString());
                                            adroomdiscount = Convert.ToDouble(dtwt.Rows[0]["TS_Discount"].ToString());
                                        }
                                        else if (Ts_mode == "Percentage")
                                        {
                                            adroompercmarkup = Convert.ToDouble(dtwt.Rows[0]["TS_Markup"].ToString());
                                            adroommarkup     = ((roombaseamount / 100.00) * adroompercmarkup);

                                            adroomperdiscount = Convert.ToDouble(dtwt.Rows[0]["TS_Discount"].ToString());
                                            adroomdiscount    = (((roombaseamount) / 100.00) * adroomperdiscount);
                                        }
                                        else
                                        {
                                            adroommarkup   = 0.00;
                                            adroomdiscount = 0.00;
                                        }


                                        string Cl_Mode = string.Empty;
                                        Cl_Mode = dtwt.Rows[0]["Cl_Mode"].ToString();
                                        if (Cl_Mode == "Fixed")
                                        {
                                            clmarkup   = Convert.ToDouble(dtwt.Rows[0]["Cl_Markup"].ToString());
                                            cldiscount = Convert.ToDouble(dtwt.Rows[0]["Cl_Discount"].ToString());
                                        }
                                        else if (Cl_Mode == "Percentage")
                                        {
                                            clroompercmarkup = Convert.ToDouble(dtwt.Rows[0]["Cl_Markup"].ToString());
                                            clroommarkup     = (((roombaseamount) / (100)) * clroompercmarkup);

                                            clroomperdiscount = Convert.ToDouble(dtwt.Rows[0]["Cl_Discount"].ToString());
                                            clroomdiscount    = ((roombaseamount / 100.00) * clroomperdiscount);
                                        }
                                        else
                                        {
                                            clmarkup = 0.00;
                                        }

                                        finalroommarkup      = adroommarkup + clroommarkup;
                                        finalroomdiscount    = adroomdiscount + clroomdiscount;
                                        roombaseamount       = roombaseamount + (finalroommarkup - finalroomdiscount);
                                        roomamountwithouttax = (Convert.ToDouble(roombaseamount));
                                        // roombaseamount = (Convert.ToDouble(roomamountwithouttax) + Convert.ToDouble(tax));
                                        troomspricepernightwithmarkup = troomspricepernightwithmarkup + (Convert.ToDouble(roomamountwithouttax));
                                        allroomsprice = allroomsprice + Convert.ToDouble(lstRate[r].Net);
                                    }



                                    if (lstRate[r].Taxes != null && lstRate[r].Taxes.Tax.Amount != null)
                                    {
                                        roomtaxprice = roomtaxprice + Convert.ToDouble(lstRate[r].Taxes.Tax.Amount.ToString());
                                    }

                                    try
                                    {
                                        if (lstRate[r].CancellationPolicies != null && lstRate[r].CancellationPolicies.CancellationPolicy.Amount != null)
                                        {
                                            roomcancellationprice = roomcancellationprice + Convert.ToDouble(lstRate[r].CancellationPolicies.CancellationPolicy.Amount.ToString());
                                        }
                                    }
                                    catch
                                    {
                                        //cancleplamount = "NO Cancellation amount";
                                    }
                                }
                                eachroomspernihgtpricewmrk = (troomspricepernightwithmarkup / rooms);
                                eachroomavgtaxprice        = Convert.ToDouble(roomtaxprice / rooms);
                                //lstRate.Add(dr.Rates.Rate.Where(n => n.BoardCode == boardCode && (n.ChildrenAges.Contains(',') ? n.ChildrenAges.Split(',')[0].ToString() : n.ChildrenAges) == (childAges.Contains(',') ? childAges.Split(',')[0].ToString() : childAges)).FirstOrDefault());


                                //foreach (Rate drrt in lstRate)
                                //{
                                //var roomamt = rooms[i].Room[i].Rates.Rate[n].Net;

                                string ratetype = lstRate[0].RateType;


                                string ratecommentid = string.Empty;
                                try
                                {
                                    ratecommentid = lstRate[0].RateCommentsId;
                                }
                                catch
                                {
                                }


                                try
                                {
                                    cancleplFrom = lstRate[0].CancellationPolicies.CancellationPolicy.From.ToString();
                                }
                                catch
                                {
                                }
                                try
                                {
                                    cancleplamount = roomcancellationprice.ToString("0.00");//roomcancellationprice.ToString();
                                }
                                catch
                                {
                                    //cancleplamount = "NO Cancellation amount";
                                }
                                ratetable = GetRateTable(hcode, objCheckRateRS, lstRate, hcode, searchid, "USD", adroommarkup, clroommarkup, adroomdiscount, clroomdiscount, roomtaxprice, b2c_idn, rooms);//HttpUtility.HtmlEncode(
                            }
                        }

                        //objchkres.amount = Convert.ToDouble(Convert.ToDouble(objCheckRateRS.Hotel.Rooms.Room[0].Rates.Rate[0].Net) / dc).ToString("0.00");

                        objchkres.amount           = eachroomspernihgtpricewmrk.ToString("0.00");
                        objchkres.allroomstamount  = allroomsprice.ToString("0.00");
                        objchkres.cancellationamt  = cancleplamount;
                        objchkres.cancellationfrom = cancleplFrom;
                        objchkres.roomdetailstable = ratetable;


                        try
                        {
                            //List<Tax> lsttax = new List<Tax>();
                            //foreach (var lttax in objCheckRateRS.Hotel.Rooms.Room[0].Rates.Rate[0].Taxes.Tax)
                            //{
                            if (objCheckRateRS.Hotel.Rooms.Room[0].Rates.Rate[0].Taxes.Tax.Amount != null)
                            {
                                objchkres.Tax = eachroomavgtaxprice.ToString();//Convert.ToDouble(Convert.ToDouble(objCheckRateRS.Hotel.Rooms.Room[0].Rates.Rate[0].Taxes.Tax.Amount)).ToString("0.00");
                            }
                            else
                            {
                                objchkres.Tax = "0.00";
                            }
                            //}
                        }
                        catch
                        {
                            objchkres.Tax = "0.00";
                        }


                        //HotelListGenerate.CreateTables(dtBPIadd);
                        //HotelListGenerate.FillHStable(xnod, dtBPIadd);//yogi
                    }
                    else
                    {
                        objchkres.Message = "Fare Not Available";
                    }
                }
            }
            catch
            {
                objchkres.Message = "Fare Not Available";
            }
            return(objchkres);
        }
        //
        // GET: /BedBankBook/

        public ActionResult Index(FormCollection collection)
        {
            Hotel          hotelfiltered = new Hotel();
            HotelApiClient client        = new HotelApiClient();
            StatusRS       status        = client.status();
            List <Hotel>   hotels        = new List <Hotel>();

            if (status != null && status.error == null)
            {
                #region Commented
                //List<Tuple<string, string>> param;
                //Availability avail = new Availability();
                //avail.checkIn = Convert.ToDateTime(collection["checkIn"]);
                //avail.checkOut = Convert.ToDateTime(collection["checkOut"]);

                //var address = collection["add"];
                //ViewBag.checkIn = avail.checkIn;
                //ViewBag.checkOut = avail.checkOut;
                //avail.language = "CAS";
                //avail.shiftDays = 2;
                //AvailRoom room = new AvailRoom();
                //room.adults = Convert.ToInt32(collection["totalTravellers"]);
                //ViewBag.totalTravellers = room.adults;
                //room.children = 0;

                //room.details = new List<RoomDetail>();
                //room.adultOf(30);
                //avail.rooms.Add(room);
                //room = new AvailRoom();
                //room.children = 0;
                //room.details = new List<RoomDetail>();
                //room.adultOf(30);
                //avail.rooms.Add(room);
                //avail.payed = Availability.Pay.AT_HOTEL;


                #region Availability Request
                //AvailabilityRQ ar = new AvailabilityRQ();
                //ar.stay = new Stay(Convert.ToDateTime(collection["checkIn"]), Convert.ToDateTime(collection["checkOut"]), 0, true);

                //ar.occupancies = new List<Occupancy>();
                //ar.occupancies.Add(new Occupancy
                //{
                //    adults = Convert.ToInt32(collection["totalTravellers"]),
                //    //rooms = 1,
                //    rooms = 1,
                //    children = 0,
                //    paxes = new List<Pax>()
                //    {
                //        new Pax
                //        {
                //             age = 35,
                //             type = com.hotelbeds.distribution.hotel_api_model.auto.common.SimpleTypes.HotelbedsCustomerType.AD,
                //             name = "Munna",
                //             surname = "Singh"
                //        }
                //    }
                //});

                //ar.geolocation = new GeoLocation();
                //ar.geolocation.latitude = Convert.ToDouble(collection["LatOrg"]);
                //ar.geolocation.longitude = Convert.ToDouble(collection["LanOrg"]);

                //ViewBag.Lat = ar.geolocation.latitude;
                //ViewBag.Lan = ar.geolocation.longitude;
                //ar.geolocation.radius = 100;
                //ViewBag.radius = ar.geolocation.radius;

                //ar.geolocation.unit = com.hotelbeds.distribution.hotel_api_model.util.UnitMeasure.UnitMeasureType.km;

                #endregion Availability Request

                #endregion Commented

                #region Hotels Available
                //AvailabilityRS responseAvail = client.doAvailability(ar);
                //if (responseAvail != null && responseAvail.hotels != null && responseAvail.hotels.hotels != null && responseAvail.hotels.hotels.Count > 0)
                //{
                //    int hotelsAvailable = responseAvail.hotels.hotels.Count;
                //    hotels = responseAvail.hotels.hotels;
                //    int hotelcode = Convert.ToInt32(collection["hotelcode"]);
                //    ViewBag.HotelCode = hotelcode;
                //    ViewBag.TotalTravellers = Convert.ToInt32(collection["ddlTotalGuest"]);

                //    Hotel firstHotel = responseAvail.hotels.hotels.Where(ahotel => ahotel.code == hotelcode).FirstOrDefault();

                //    string rateKeySent = collection["rateKey"];
                //    string paymenttype = string.Empty;
                //    string rateKey = string.Empty;

                //    rateKey = rateKeySent;

                //    //paymenttype = firstHotel.rooms.SelectMany(y => y.rates)
                //    //    .Single(r => r.rateKey == rateKeySent).paymentType.ToString();

                //    foreach (var room1 in firstHotel.rooms)
                //    {
                //        foreach (var bbb in room1.rates)
                //        {
                //            if (rateKeySent == bbb.rateKey)
                //            {
                //                paymenttype = bbb.paymentType.ToString();
                //                continue;
                //            }
                //        }
                //    }



                #region Rate Key Available
                //if (!String.IsNullOrEmpty(rateKey))
                //{

                //    ConfirmRoom confirmRoom = new ConfirmRoom();
                //    confirmRoom.details = new List<RoomDetail>();
                //    confirmRoom.detailed(RoomDetail.GuestType.ADULT, 30, "Munna", "Singh", 1);
                //    string rateKeySent1 = collection["rateKey"];

                //    BookingCheck bookingCheck = new BookingCheck();
                //    bookingCheck.addRoom(rateKeySent1, confirmRoom);
                //    CheckRateRQ checkRateRQ = bookingCheck.toCheckRateRQ();

                //    //var vvv = client.doCheck(checkRateRQ

                //    #region if check rate is available
                //    if (checkRateRQ != null)
                //        {
                //            CheckRateRS responseRate = client.doCheck(checkRateRQ);
                //            if (responseRate.error != null)
                //                ViewBag.ErrorGot = responseRate.error.message;
                //            if (responseRate != null && responseRate.error == null)
                //            {
                //            BookingRQ bookingRQ = null;
                //            BookingRS responseBooking = null;
                //            if (responseRate.hotel.rooms[0].rates[0].paymentType.ToString() != "AT_WEB")
                //            {
                //                com.hotelbeds.distribution.hotel_api_sdk.helpers.Booking booking = new com.hotelbeds.distribution.hotel_api_sdk.helpers.Booking();
                //                booking.createHolder("Rosetta", "Pruebas");
                //                booking.clientReference = "SDK Test";
                //                booking.remark = "***SDK***TESTING";
                //                //NOTE: ONLY LIBERATE (PAY AT HOTEL MODEL) USES PAYMENT DATA NODES. FOR OTHER PRICING MODELS THESE NODES MUST NOT BE USED.
                //                booking.cardType = "VI";
                //                booking.cardNumber = "4444333322221111";
                //                booking.expiryDate = "0620";
                //                booking.cardCVC = "620";
                //                booking.email = "*****@*****.**";
                //                booking.phoneNumber = "654654654";
                //                booking.cardHolderName = "Munna Kumar Singh";

                //                booking.addRoom(rateKey, confirmRoom);

                //                #region BookingRQ
                //                bookingRQ = booking.toBookingRQ();

                //                responseBooking = client.confirm(bookingRQ);
                //            }

                //            if (bookingRQ == null)
                //            {
                //                if (paymenttype.ToString() == "AT_WEB")
                //                {
                //                    BookingRQ br = new BookingRQ();
                //                    br.rooms = new List<BookingRoom>();
                //                    br.rooms.Add(new BookingRoom
                //                    {
                //                        rateKey = rateKey,
                //                        paxes = new List<Pax>
                //                        {
                //                            Capacity = 1

                //                        }
                //                    });
                //                    br.remark = "***SDK***TESTING";
                //                    br.holder = new Holder();
                //                    br.holder.name = "Munna";
                //                    br.holder.surname = "Singh";

                //                    br.clientReference = "Client reference";

                //                    responseBooking = client.confirm(br);
                //                }
                //            }
                //            if (bookingRQ != null)
                //            {
                //                #region AT WEB
                //                if (paymenttype.ToString() == "AT_WEB")
                //                {
                //                    BookingRQ br = new BookingRQ();
                //                    br.rooms = new List<BookingRoom>();
                //                    br.rooms.Add(new BookingRoom
                //                    {
                //                        rateKey = rateKey,
                //                        paxes = new List<Pax>
                //                        {
                //                            Capacity = 1
                //                        }
                //                    });
                //                    br.remark = "***SDK***TESTING";
                //                    br.holder = new Holder();
                //                    br.holder.name = "Test";
                //                    br.holder.surname = "Surname";

                //                    br.clientReference = "Client reference";

                //                    responseBooking = client.confirm(br);

                //                }
                //                #endregion
                //                //"Booking Response"
                //                if (responseBooking != null)
                //                {
                //                    if (responseBooking.error != null)
                //                        ViewBag.ErrorGot = responseBooking.error.message;
                //                    else
                //                    {
                //                        ViewBag.BookingRef = responseBooking.booking.reference;
                //                    }
                //                    //if (responseBooking.booking.reference == null)

                //                }
                //                    //"Confirmation succedded. Canceling reservation with id "
                //                    #region Confirmation Succeeded
                //                    if (responseBooking != null && responseBooking.error == null && responseBooking.booking != null)
                //                    {
                //                        Console.WriteLine("Confirmation succedded. Canceling reservation with id " + responseBooking.booking.reference);
                //                        param = new List<Tuple<string, string>>
                //                        {
                //                            new Tuple<string, string>("${bookingId}", responseBooking.booking.reference),
                //                            //new Tuple<string, string>("${bookingId}", "1-3087550"),
                //                            new Tuple<string, string>("${flag}", "C")
                //                        };

                //                        BookingCancellationRS bookingCancellationRS = client.Cancel(param);

                //                        #region Cancel Booking
                //                        if (bookingCancellationRS != null)
                //                        {
                //                            //Console.WriteLine("Id cancelled: " + responseBooking.booking.reference);
                //                            ViewBag.BookCancelled = "cancelled" + responseBooking.booking.reference;

                //                        }
                //                        #endregion
                //                    }
                //                    #endregion
                //                }
                //                #endregion
                //            }
                //        }
                //        #endregion



                //}
                #endregion
                //}
                #endregion

                #region Rate Key Available
                //if (!String.IsNullOrEmpty(rateKey))
                //{
                string paymenttype = "";
                List <Tuple <string, string> > param;
                ConfirmRoom confirmRoom = new ConfirmRoom();
                confirmRoom.details = new List <RoomDetail>();
                confirmRoom.detailed(RoomDetail.GuestType.ADULT, 30, "Munna", "Singh", 1);
                string rateKeySent1 = collection["rateKey"];

                BookingCheck bookingCheck = new BookingCheck();
                bookingCheck.addRoom(rateKeySent1, confirmRoom);
                CheckRateRQ checkRateRQ = bookingCheck.toCheckRateRQ();

                #region if check rate is available
                if (checkRateRQ != null)
                {
                    CheckRateRS responseRate = client.doCheck(checkRateRQ);
                    if (responseRate.error != null)
                    {
                        ViewBag.ErrorGot = responseRate.error.message;
                    }
                    if (responseRate != null && responseRate.error == null)
                    {
                        BookingRQ bookingRQ       = null;
                        BookingRS responseBooking = null;
                        if (responseRate.hotel.rooms[0].rates[0].paymentType.ToString() != "AT_WEB")
                        {
                            com.hotelbeds.distribution.hotel_api_sdk.helpers.Booking booking = new com.hotelbeds.distribution.hotel_api_sdk.helpers.Booking();
                            booking.createHolder("Rosetta", "Pruebas");
                            booking.clientReference = "SDK Test";
                            booking.remark          = "***SDK***TESTING";
                            //NOTE: ONLY LIBERATE (PAY AT HOTEL MODEL) USES PAYMENT DATA NODES. FOR OTHER PRICING MODELS THESE NODES MUST NOT BE USED.
                            booking.cardType       = "VI";
                            booking.cardNumber     = "4444333322221111";
                            booking.expiryDate     = "0620";
                            booking.cardCVC        = "620";
                            booking.email          = "*****@*****.**";
                            booking.phoneNumber    = "654654654";
                            booking.cardHolderName = "Munna Kumar Singh";

                            booking.addRoom(rateKeySent1, confirmRoom);

                            #region BookingRQ
                            bookingRQ = booking.toBookingRQ();

                            responseBooking = client.confirm(bookingRQ);
                            var Request  = XMLSerializer.Serialize <BookingRQ>(bookingRQ);
                            var Response = XMLSerializer.Serialize <BookingRS>(responseBooking);
                        }

                        if (bookingRQ == null)
                        {
                            if (responseRate.hotel.rooms[0].rates[0].paymentType.ToString() == "AT_WEB")
                            {
                                BookingRQ br = new BookingRQ();
                                br.rooms = new List <BookingRoom>();
                                br.rooms.Add(new BookingRoom
                                {
                                    rateKey = rateKeySent1,
                                    paxes   = new List <Pax>
                                    {
                                        Capacity = 1
                                    }
                                });
                                br.remark         = "***SDK***TESTING";
                                br.holder         = new Holder();
                                br.holder.name    = "Munna";
                                br.holder.surname = "Singh";

                                br.clientReference = "Client reference";

                                responseBooking = client.confirm(br);
                                var Request  = XMLSerializer.Serialize <BookingRQ>(br);
                                var Response = XMLSerializer.Serialize <BookingRS>(responseBooking);
                            }
                        }
                        if (bookingRQ != null)
                        {
                            #region AT WEB
                            if (paymenttype.ToString() == "AT_WEB")
                            {
                                BookingRQ br = new BookingRQ();
                                br.rooms = new List <BookingRoom>();
                                br.rooms.Add(new BookingRoom
                                {
                                    rateKey = rateKeySent1,
                                    paxes   = new List <Pax>
                                    {
                                        Capacity = 1
                                    }
                                });
                                br.remark         = "***SDK***TESTING";
                                br.holder         = new Holder();
                                br.holder.name    = "Test";
                                br.holder.surname = "Surname";

                                br.clientReference = "Client reference";

                                responseBooking = client.confirm(br);
                            }
                            #endregion
                        }
                        #endregion

                        //"Booking Response"
                        if (responseBooking != null)
                        {
                            if (responseBooking.error != null)
                            {
                                ViewBag.ErrorGot = responseBooking.error.message;
                            }
                            else
                            {
                                ViewBag.BookingRef = responseBooking.booking.reference;
                            }
                            //if (responseBooking.booking.reference == null)
                        }
                        //"Confirmation succedded. Canceling reservation with id "
                        #region Confirmation Succeeded
                        if (responseBooking != null && responseBooking.error == null && responseBooking.booking != null)
                        {
                            Console.WriteLine("Confirmation succedded. Canceling reservation with id " + responseBooking.booking.reference);
                            param = new List <Tuple <string, string> >
                            {
                                new Tuple <string, string>("${bookingId}", responseBooking.booking.reference),
                                //new Tuple<string, string>("${bookingId}", "1-3087550"),
                                new Tuple <string, string>("${flag}", "C")
                            };

                            BookingCancellationRS bookingCancellationRS = client.Cancel(param);

                            #region Cancel Booking
                            if (bookingCancellationRS != null)
                            {
                                //Console.WriteLine("Id cancelled: " + responseBooking.booking.reference);
                                ViewBag.BookCancelled = "cancelled" + responseBooking.booking.reference;
                            }
                            #endregion
                        }
                        #endregion
                    }
                }
                #endregion

                //}
                #endregion
            }

            return(View());
        }