public AvailableTrips getAvailableTrips(int sourceId, int destinationId, String dateofjourney, String URL, String ConsumerKey, String ConsumerSecret)
        {
            dateofjourney = dateofjourney.Split('-')[2] + "-" + dateofjourney.Split('-')[1] + "-" + dateofjourney.Split('-')[0];
            try
            {
                String strResponse = objService.getAvailableTrips(sourceId.ToString(), destinationId.ToString(), dateofjourney, URL, ConsumerKey, ConsumerSecret);
                DataSet ds = convertJsonStringToDataSet(strResponse);

                //Check if response is valid else return error message
                if (ds == null)
                {
                    throw new Exception(strResponse);
                }
                AvailableTrips objAvailableTrips = null;

                if (ds != null && ds.Tables.Count > 0 && ds.Tables["availableTrips"].Rows.Count > 0)
                {
                    objAvailableTrips = new AvailableTrips();
                    #region Loop each trip and add trip details to availabletrips

                    foreach (DataRow item in ds.Tables["availableTrips"].Rows)
                    {
                        DTO.TripDetails objTripDetails = new DTO.TripDetails();
                        objTripDetails.boardingTimes = new BoardingDroppingPoints();
                        objTripDetails.droppingTimes = new BoardingDroppingPoints();

                        objTripDetails.providerName = "REDBUS";
                        objTripDetails.availableSeats = item["availableSeats"].ToString();
                        objTripDetails.busType = item["busType"].ToString();
                        objTripDetails.cancellationPolicy = item["cancellationPolicy"].ToString();
                        objTripDetails.departureTime = Time(item["departureTime"].ToString());

                        #region Boarding & Dropping Points

                        //boarding points
                        DataTable dtBP = ds.Tables["boardingTimes"].Clone();
                        DataRow[] drBPArray = ds.Tables["boardingTimes"].Select("availableTrips_Id = " + item["availableTrips_Id"].ToString());
                        foreach (DataRow drow in drBPArray)
                        {
                            String strBP = "";// objService.getBoardingPoint(drow["bpId"].ToString(), URL, ConsumerKey, ConsumerSecret);
                            BoardingDroppingDetails bp = new BoardingDroppingDetails(drow["bpId"].ToString(), drow["location"].ToString(), Time(drow["time"].ToString()));
                            if (strBP != String.Empty)
                            {
                                bp.address = (String)JObject.Parse(strBP)["address"];
                                bp.landmark = (String)JObject.Parse(strBP)["landmark"];
                                bp.name = (String)JObject.Parse(strBP)["name"];
                            }
                            objTripDetails.boardingTimes.Add(bp);
                        }
                        //dropping points
                        DataTable dtDP = ds.Tables["droppingTimes"].Clone();
                        DataRow[] drDPArray = ds.Tables["droppingTimes"].Select("availableTrips_Id = " + item["availableTrips_Id"].ToString());
                        foreach (DataRow drow in drDPArray)
                        {
                            String strDP = "";// objService.getBoardingPoint(drow["bpId"].ToString(), URL, ConsumerKey, ConsumerSecret);
                            BoardingDroppingDetails dp = new BoardingDroppingDetails(drow["bpId"].ToString(), drow["location"].ToString(), Time(drow["time"].ToString()));
                            if (strDP != String.Empty)
                            {
                                dp.address = (String)JObject.Parse(strDP)["address"];
                                dp.landmark = (String)JObject.Parse(strDP)["landmark"];
                                dp.name = (String)JObject.Parse(strDP)["name"];
                            }
                            objTripDetails.boardingTimes.Add(dp);
                        }

                        #endregion

                        //check if boarding and dropping times are same. If so, show '-'
                        if (item["arrivalTime"].ToString() != item["departureTime"].ToString())
                        {
                            objTripDetails.arrivalTime = Time(item["arrivalTime"].ToString());
                            objTripDetails.duration = Duration(objTripDetails.departureTime, objTripDetails.arrivalTime);
                        }
                        else
                            objTripDetails.arrivalTime = objTripDetails.duration = "-";

                        if (ds.Tables["fares"] == null)
                            objTripDetails.fares = item["fares"].ToString();
                        else
                            objTripDetails.fares = ds.Tables["fares"].Rows[ds.Tables["availableTrips"].Rows.IndexOf(item)]["fares_text"].ToString();
                        objTripDetails.id = item["id"].ToString();
                        objTripDetails.partialCancellationAllowed = item["partialCancellationAllowed"].ToString();
                        objTripDetails.travels = item["travels"].ToString();

                        objTripDetails.sourceId = sourceId;
                        objTripDetails.destinationId = destinationId;

                        objAvailableTrips.Add(objTripDetails);
                    }
                    #endregion
                }
                return objAvailableTrips;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public SeatsInfo getLayoutDetails(int sourceId, int destinationId, String dateOfJourney, String serviceId, String markUpFare, String SeatLayoutId,
              String seatType, String URL, String ConsumerKey)
        {
            SeatsInfo objSeatsLayout = null;

            try
            {
                //Convert mm-dd-yyyy format to API compatible format dd-mm-yyyy
                dateOfJourney = dateOfJourney.Split('-')[1] + "/" + dateOfJourney.Split('-')[0] + "/" + dateOfJourney.Split('-')[2];

                // requestBody = URL + "/server.aspx?Method=GetLayoutDetails&ServiceId=" + serviceId + "&DateofJourney=" + dateOfJourney + "&SorceStationid="+sourceId + "&DestinationStationid=" + destinationId + "&DateofJourney=" + dateOfJourney + "&DateOfReturn=" + dateOfJourney + "&Key=" + ConsumerKey;
                string str = URL + "/Server.aspx?Method=GetLayoutDetails&ServiceId=" + serviceId + "&DateofJourney=" + dateOfJourney + "&LayoutId=" + SeatLayoutId + "&BreathFare=" + markUpFare + "&SeatFare=" + markUpFare + "&Key=" + ConsumerKey;
                requestBody = str;

                DataSet ds = convertXMLtoDataset(getJSONReponse(requestBody));
                DataTable dtBuses = new DataTable();
                dtBuses = ds.Tables[0];

                objSeatsLayout = new SeatsInfo();
                objSeatsLayout.Seats = new List<SeatLayout>();
                if (dtBuses != null)
                {

                    for (int i = 0; i < dtBuses.Rows.Count; i++)
                    {
                        for (int j = 0; j < dtBuses.Columns.Count; j++)
                        {
                            SeatLayout objSeat = new SeatLayout();

                            string seat;
                            //string[] arr = new string[1];
                            seat = dtBuses.Rows[i][j].ToString();
                            if (seat != null && seat != "" && seat != "$")
                            {
                                string[] seatstr = seat.ToString().Split('_');

                                if (seatstr[0].StartsWith("U") || seatstr[0].StartsWith("L"))
                                {

                                    if (Convert.ToString(seatstr[0]).Trim() != "")
                                    {
                                        objSeat.number = seatstr[0].ToString();
                                    }

                                    if (Convert.ToString(seatstr[1]).Trim() != "")
                                    {
                                        if (Convert.ToString(seatstr[1]).Trim() == "1")
                                        {
                                            objSeat.isAvailableSeat = "true";
                                        }
                                        else if (Convert.ToString(seatstr[1]).Trim() == "0")
                                        {
                                            objSeat.isAvailableSeat = "false";
                                            if (Convert.ToString(seatstr[3]).Trim() != "")
                                            {
                                                if (Convert.ToString(seatstr[3]).Trim() == "S")
                                                {
                                                    objSeat.length = 2;
                                                    objSeat.width = 1;
                                                    objSeat.zIndex = 0;
                                                }
                                                else if (Convert.ToString(seatstr[3]).Trim() == "B")
                                                {
                                                    objSeat.length = 2;
                                                    objSeat.width = 1;
                                                    objSeat.zIndex = 0;
                                                }
                                            }
                                        }
                                        if (Convert.ToString(seatstr[2]).Trim() != "")
                                        {
                                            if (Convert.ToString(seatstr[2]).Trim() == "S")
                                            {
                                                objSeat.length = 2;
                                                objSeat.width = 1;
                                                objSeat.zIndex = 0;
                                            }
                                            else if (Convert.ToString(seatstr[2]).Trim() == "B")
                                            {
                                                objSeat.length = 2;
                                                objSeat.width = 1;
                                                objSeat.zIndex = 0;
                                            }
                                        }

                                        if (Convert.ToString(seatstr[3]).Trim() != "")
                                        {
                                            objSeat.fare = seatstr[3].ToString();
                                        }
                                    }
                                }
                                else
                                {

                                    if (Convert.ToString(seatstr[0]).Trim() != "")
                                    {
                                        objSeat.number = seatstr[0].ToString();
                                    }
                                    if (Convert.ToString(seatstr[1]).Trim() != "")
                                    {
                                        if (Convert.ToString(seatstr[1]).Trim() == "1")
                                        {
                                            objSeat.isAvailableSeat = "true";
                                        }
                                        else if (Convert.ToString(seatstr[1]).Trim() == "0")
                                        {
                                            objSeat.isAvailableSeat = "false";
                                            if (Convert.ToString(seatstr[3]).Trim() != "")
                                            {
                                                if (Convert.ToString(seatstr[3]).Trim() == "S")
                                                {
                                                    objSeat.length = 1;
                                                    objSeat.width = 1;
                                                    objSeat.zIndex = 0;
                                                }
                                                else if (Convert.ToString(seatstr[3]).Trim() == "B")
                                                {
                                                    objSeat.length = 2;
                                                    objSeat.width = 1;
                                                    objSeat.zIndex = 0;
                                                }
                                            }

                                        }
                                    }
                                    if (Convert.ToString(seatstr[2]).Trim() != "")
                                    {
                                        if (Convert.ToString(seatstr[2]).Trim() == "S")
                                        {
                                            objSeat.length = 1;
                                            objSeat.width = 1;
                                            objSeat.zIndex = 0;
                                        }
                                        else if (Convert.ToString(seatstr[2]).Trim() == "B")
                                        {
                                            objSeat.length = 2;
                                            objSeat.width = 1;
                                            objSeat.zIndex = 0;
                                        }
                                    }

                                    if (Convert.ToString(seatstr[3]).Trim() != "")
                                    {
                                        objSeat.fare = seatstr[3].ToString();
                                    }
                                }

                                objSeat.row = i + 1;
                                objSeat.column = j + 1;
                                objSeat.id = serviceId;
                                objSeat.isLadiesSeat = "false";
                                objSeatsLayout.Seats.Add(objSeat);
                            }

                        }
                    }

                    #region boarding and dropping points

                    BoardingDroppingPoints bpList = new BoardingDroppingPoints();
                    string strb = URL + "/Server.aspx?Method=GetBoardingPoints&ServiceId=" + serviceId + "&SorceStationid=" + sourceId + "&Key=" + ConsumerKey;
                    DataSet dsb = convertXMLtoDataset(getJSONReponse(strb));
                    DataTable dtBoarding = new DataTable();
                    dtBoarding = dsb.Tables[0];
                    if (dtBoarding != null && dtBoarding.TableName == "BoardingPoints")
                    {

                        for (int i = 0; i < dtBoarding.Rows.Count; i++)
                        {

                            string strBoarding;
                            string strBoardingAddress;
                            strBoarding = dtBoarding.Rows[i]["BoardindPointID"].ToString();
                            strBoardingAddress = dtBoarding.Rows[i]["BoardindPointName"].ToString();
                            if (strBoardingAddress != null && strBoardingAddress != "")
                            {
                                string[] BoardingId = strBoarding.ToString().Split('-');
                                string[] BoardingAddress = strBoardingAddress.ToString().Split('-');
                                BoardingDroppingDetails point = new BoardingDroppingDetails();
                                if (Convert.ToString(BoardingId[0]).Trim() != "")
                                {
                                    point.pointId = BoardingId[0].ToString();
                                }
                                if (Convert.ToString(BoardingAddress[0]).Trim() != "")
                                {
                                    point.location = BoardingId[1].ToString() + "," + BoardingAddress[0].ToString();
                                }
                                if (Convert.ToString(BoardingAddress[1]).Trim() != "")
                                {
                                    point.time = BoardingAddress[1].ToString();
                                }

                                bpList.Add(point);

                            }
                        }
                        if (bpList.Count > 0)
                            objSeatsLayout.boardingTimes = bpList;
                    }
                    else
                    {
                        BoardingDroppingDetails point = new BoardingDroppingDetails();
                        point.pointId = "0";
                        point.location = "No Boarding Points";
                        point.time = "00.00";
                        bpList.Add(point);
                        if (bpList.Count > 0)
                            objSeatsLayout.boardingTimes = bpList;
                    }
                    #endregion
                }

            }
            catch (Exception)
            {

                throw;
            }

            return objSeatsLayout;
        }
        private BoardingDroppingPoints Points(string points,string Travel)
        {
            BoardingDroppingPoints bdPoints = new BoardingDroppingPoints();

            try
            {
                if (points != "")
                {
                    string[] str = new string[1];
                    str[0] = "%&&&%";
                    string[] ssstr = points.Split(str, StringSplitOptions.None);
                    foreach (string st in ssstr)
                    {
                        if (st != "")
                        {
                            //6 - Ameerpet^^Kaveri Travels Near Hotel Imrose,Towards Begumpet (Ph No:9246462060) - 10:15PM
                            string[] strsplit = st.Split('^');
                            string[] strArr = strsplit[0].Split('-');
                            string[] strtime = strsplit[2].Split('-');
                            BoardingDroppingDetails details = new BoardingDroppingDetails();
                            details.pointId = strArr[0].ToString();
                            details.time = strtime[strtime.Length - 1].ToString().Trim().ToString();
                            //string[] strphone = strtime[0].Split('(');
                            details.address = strsplit[2].ToString().Trim().ToString();
                            //details.contactNumbers = strphone[1].ToString().Split(')')[0].Trim().ToString();
                            //for (int i = 1; i < strArr.Length - 1; i++)
                            if (Travel != "Kaveri Kamakshi Travels")
                            {
                                details.name = strArr[1].ToString();
                            }
                            else
                            {
                                details.name = strArr[2].ToString();
                            }
                            // details.name = details.name + strArr[i].ToString();
                            bdPoints.Add(details);

                        }
                    }
                }
            }
            catch (Exception ex)
            {
                // to do
            }
            return bdPoints;
        }