public string GetAvailableTrips(int sourceId, int destinationId, String dateofjourney, Int16 resultSetIndex, String ConsumerKey, String ConsumerSecret) { try { ClientAPIList objClientAPIList = new ClientAPIList(); BusesAvailabilityResponse objBusesAvailabilityResponse = new BusesAvailabilityResponse(); if (resultSetIndex != 2) { HttpContext.Current.Session["AvailResponse"] = null; HttpRuntime.Cache["bus"] = ""; //Check if Cache already contains the Providers API List //Else get it from database GetAPIProvidersList(ConsumerKey, ConsumerSecret); objClientAPIList = (ClientAPIList)HttpContext.Current.Cache["ClientAPI-" + ConsumerKey]; //Check if atleast one provider is accessible if (objClientAPIList != null && objClientAPIList.Count > 0) { BusesSearchFilter objBusesSearchFilter = new BusesSearchFilter(); threadcount = Convert.ToInt32(objClientAPIList.Count()); thread = new Thread[threadcount]; for (i = 0; i < thread.Count(); i++) { thread[i] = new Thread(() => { if (objClientAPIList[i].ProviderName == "TICKETGOOSE") { int T = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[T], sourceId, destinationId, dateofjourney); if (Tsource_ids.ToString() != "" && TDestination_Ids.ToString() != "") { string[] Tsu = Tsource_ids.Split(','); string[] Tdu = TDestination_Ids.Split(','); string[] TSdr = Tsu.Distinct().ToArray(); string[] TDdr = Tdu.Distinct().ToArray(); foreach (string Tsr in TSdr) { foreach (string Tdr in TDdr) { TSID = Convert.ToInt32(Tsr); TDID = Convert.ToInt32(Tdr); TDate = objBusesSearchFilter.JourneyDate; TURL = objClientAPIList[T].APIURL; TConsumerKey = objClientAPIList[T].ConsumerKey; TCOnsumerSecretKey = objClientAPIList[T].ConsumerSecret; TPID = objClientAPIList[T].ProviderID; Tbus = Ticketgoose(TURL, TConsumerKey, TCOnsumerSecretKey, TPID, TSID, TDID, TDate); if (Tbus != null) { if (Tbus.Count() > 0) { bus = trips(Tbus); HttpRuntime.Cache["bus"] = Tbus; objBusesAvailabilityResponse.providersCount = 10; } } } } } } else if (objClientAPIList[i].ProviderName == "MORNINGSTAR") { int M = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[M], sourceId, destinationId, dateofjourney); if (Msource_ids.ToString() != "" && MDestination_Ids.ToString() != "") { string[] Msu = Msource_ids.Split(','); string[] Mdu = MDestination_Ids.Split(','); string[] MSdr = Msu.Distinct().ToArray(); string[] MDdr = Mdu.Distinct().ToArray(); foreach (string Msr in MSdr) { foreach (string Mdr in MDdr) { MSID = Convert.ToInt32(Msr); MDID = Convert.ToInt32(Mdr); MDate = objBusesSearchFilter.JourneyDate; MURL = objClientAPIList[M].APIURL + "/"; MConsumerKey = objClientAPIList[M].ConsumerKey; MCOnsumerSecretKey = objClientAPIList[M].ConsumerSecret; MPID = objClientAPIList[M].ProviderID; MProviderName = objClientAPIList[M].ProviderName; Tbus = MORNINGSTAR(MURL, MConsumerKey, MCOnsumerSecretKey, MPID, MProviderName, MSID, MDID, MDate); if (Tbus != null) { if (Tbus.Count() > 0) { bus = trips(Tbus); } } } } } } else if (objClientAPIList[i].ProviderName == "BITLA") { //objBusesSearchFilter.SourceID = Sdr.ToString() == "" ? 0 : int.Parse(Sdr.ToString()); //objBusesSearchFilter.DestinationID = Ddr.ToString() == "" ? 0 : Convert.ToInt32(Ddr.ToString()); //objBusesSearchFilter.JourneyDate = dateofjourney; int B = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[B], sourceId, destinationId, dateofjourney); if (source_ids.ToString() != "" && Destination_Ids.ToString() != "") { string[] su = source_ids.Split(','); string[] du = Destination_Ids.Split(','); string[] SSdr = su.Distinct().ToArray(); string[] DDdr = du.Distinct().ToArray(); foreach (string Sdr in SSdr) { foreach (string Ddr in DDdr) { BSID = Convert.ToInt32(Sdr); BDID = Convert.ToInt32(Ddr); BDate = objBusesSearchFilter.JourneyDate; BURL = objClientAPIList[B].APIURL + "/"; BConsumerKey = objClientAPIList[B].ConsumerKey; BCOnsumerSecretKey = objClientAPIList[B].ConsumerSecret; BPID = objClientAPIList[B].ProviderID; BProviderName = objClientAPIList[B].ProviderName; Tbus = BITLA(BURL, BConsumerKey, BCOnsumerSecretKey, BPID, BProviderName, BSID, BDID, BDate); if (Tbus != null) { if (Tbus.Count() > 0) { bus = trips(Tbus); } } } } } } else if (objClientAPIList[i].ProviderName == "KALLADA") { int kD = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[kD], sourceId, destinationId, dateofjourney); if (KDsource_ids.ToString() != "" && KDDestination_Ids.ToString() != "") { string[] KDsu = KDsource_ids.Split(','); string[] KDdu = KDDestination_Ids.Split(','); string[] KSdr = KDsu.Distinct().ToArray(); string[] KDdr = KDdu.Distinct().ToArray(); foreach (string Ksr in KSdr) { foreach (string Kdr in KDdr) { KDSID = Convert.ToInt32(Ksr); KDDID = Convert.ToInt32(Kdr); KDDate = objBusesSearchFilter.JourneyDate; KDURL = objClientAPIList[kD].APIURL; KDConsumerKey = objClientAPIList[kD].ConsumerKey; KDCOnsumerSecretKey = objClientAPIList[kD].ConsumerSecret; KDProviderName = objClientAPIList[kD].ProviderName; Kbus = KALLADA(KDURL, KDConsumerKey, KDCOnsumerSecretKey, KDProviderName, KDSID, KDDID, KDDate); if (Kbus != null) { if (Kbus.Count() > 0) { bus = trips(Kbus); } } } } } } else if (objClientAPIList[i].ProviderName == "SAIANJANA") { int s = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[s], sourceId, destinationId, dateofjourney); if (SSsource_ids.ToString() != "" && SSDestination_Ids.ToString() != "") { string[] SSsu = SSsource_ids.Split(','); string[] SSdu = SSDestination_Ids.Split(','); string[] SSdr = SSsu.Distinct().ToArray(); string[] SDdr = SSdu.Distinct().ToArray(); foreach (string Ssr in SSdr) { foreach (string Sdr in SDdr) { SSID = Convert.ToInt32(Ssr); SDID = Convert.ToInt32(Sdr); SDate = objBusesSearchFilter.JourneyDate; SURL = objClientAPIList[s].APIURL; SConsumerKey = objClientAPIList[s].ConsumerKey; SCOnsumerSecretKey = objClientAPIList[s].ConsumerSecret; SProviderName = objClientAPIList[s].ProviderName; Kbus = SAIANJANA(SURL, SConsumerKey, SCOnsumerSecretKey, SProviderName, SSID, SDID, SDate); if (Kbus != null) { if (Kbus.Count() > 0) { bus = trips(Kbus); } } } } } } else if (objClientAPIList[i].ProviderName == "SVR") { int sv = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[sv], sourceId, destinationId, dateofjourney); if (Ssource_ids.ToString() != "" && SDestination_Ids.ToString() != "") { string[] sssu = Ssource_ids.Split(','); string[] ssdu = SDestination_Ids.Split(','); string[] SSSdr = sssu.Distinct().ToArray(); string[] SSDdr = ssdu.Distinct().ToArray(); foreach (string SSsr in SSSdr) { foreach (string SSdr in SSDdr) { SVSID = Convert.ToInt32(SSsr); SVDID = Convert.ToInt32(SSdr); SVDate = objBusesSearchFilter.JourneyDate; SVURL = objClientAPIList[sv].APIURL; SVConsumerKey = objClientAPIList[sv].ConsumerKey; SVCOnsumerSecretKey = objClientAPIList[sv].ConsumerSecret; SVProviderName = objClientAPIList[sv].ProviderName; Kbus = GETSVR(SVURL, SVConsumerKey, SVCOnsumerSecretKey, SVProviderName, SVSID, SVDID, SVDate); if (Kbus != null) { if (Kbus.Count() > 0) { bus = trips(Kbus); } } } } } } else if (objClientAPIList[i].ProviderName == "RAJESH") { int r = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[r], sourceId, destinationId, dateofjourney); if (Rsource_ids.ToString() != "" && RDestination_Ids.ToString() != "") { string[] Rsu = Rsource_ids.Split(','); string[] Rdu = RDestination_Ids.Split(','); string[] RSdr = Rsu.Distinct().ToArray(); string[] RDdr = Rdu.Distinct().ToArray(); foreach (string Rsr in RSdr) { foreach (string Rdr in RDdr) { RSID = Convert.ToInt32(Rsr); RDID = Convert.ToInt32(Rdr); RDate = objBusesSearchFilter.JourneyDate; RURL = objClientAPIList[r].APIURL; RConsumerKey = objClientAPIList[r].ConsumerKey; RCOnsumerSecretKey = objClientAPIList[r].ConsumerSecret; RProviderName = objClientAPIList[r].ProviderName; Kbus = Rajesh(RURL, RConsumerKey, RCOnsumerSecretKey, RProviderName, RSID, RDID, RDate); if (Kbus != null) { if (Kbus.Count() > 0) { bus = trips(Kbus); //HttpRuntime.Cache["bus"] = Tbus; } } } } } } else if (objClientAPIList[i].ProviderName == "KAVERI") { int k = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[k], sourceId, destinationId, dateofjourney); if (Ksource_ids.ToString() != "" && KDestination_Ids.ToString() != "") { string[] Ksu = Ksource_ids.Split(','); string[] Kdu = KDestination_Ids.Split(','); string[] KSdr = Ksu.Distinct().ToArray(); string[] KDdr = Kdu.Distinct().ToArray(); foreach (string Ksr in KSdr) { foreach (string Kdr in KDdr) { KSID = Convert.ToInt32(Ksr); KDID = Convert.ToInt32(Kdr); KDate = objBusesSearchFilter.JourneyDate; KURL = objClientAPIList[i].APIURL; KConsumerKey = objClientAPIList[k].ConsumerKey; KCOnsumerSecretKey = objClientAPIList[k].ConsumerSecret; KProviderName = objClientAPIList[k].ProviderName; Kbus = KAVERI(KURL, KConsumerKey, KCOnsumerSecretKey, KProviderName, KSID, KDID, KDate); if (Kbus != null) { if (Kbus.Count() > 0) { bus = trips(Kbus); //HttpRuntime.Cache["Kbus"] = Kbus; } } } } } } //easy bus 17-05-2013 else if (objClientAPIList[i].ProviderName == "EASYBUS") { int E = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[E], sourceId, destinationId, dateofjourney); if (Esource_ids.ToString() != "" && EDestination_Ids.ToString() != "") { string[] Esu = Esource_ids.Split(','); string[] Edu = EDestination_Ids.Split(','); string[] ESdr = Esu.Distinct().ToArray(); string[] EDdr = Edu.Distinct().ToArray(); foreach (string Esr in ESdr) { foreach (string Edr in EDdr) { ESID = Convert.ToInt32(Esr); EDID = Convert.ToInt32(Edr); EDate = dateofjourney; EURL = objClientAPIList[E].APIURL; EConsumerKey = objClientAPIList[E].ConsumerKey; ECOnsumerSecretKey = objClientAPIList[E].ConsumerSecret; EProviderName = objClientAPIList[E].ProviderName; Kbus = EASY(EURL, EConsumerKey, ECOnsumerSecretKey, EProviderName, ESID, EDID, EDate); if (Kbus != null) { if (Kbus.Count() > 0) { bus = trips(Kbus); } } } } } } }); // threat initialisation ends if (c == true) { thread[i].Start(); thread[i].Join(500); if (i == thread.Count() - 1) { i = thread.Count() - 1; break; } } } } } if (resultSetIndex != 2) { Found: int j = 0; foreach (var thd in thread) { if (thd.IsAlive) { thd.Join(1000); b = false; } else { j++; } if (j == threadcount) { b = true; i = 0; break; } } if (c == true) { c = false; } if (b == false) { goto Found; } else { b = false; //check if resultset index exceeds accessible providers list call the requested api if (resultSetIndex > 0 && resultSetIndex <= objClientAPIList.Count) { try { // objBusesAvailabilityResponse.availableTrips = GetAvailableTripsByProviderName(objClientAPIList[i], objBusesSearchFilter); objBusesAvailabilityResponse.responseStatus = HttpStatusCode.OK; } catch (Exception ex) { //return the exception objBusesAvailabilityResponse.availableTrips = null; objBusesAvailabilityResponse.responseStatus = HttpStatusCode.BadRequest; objBusesAvailabilityResponse.message = ex.Message; } if (objBusesAvailabilityResponse.providersCount == 10) { objBusesAvailabilityResponse.providersCount = 0; } else { objBusesAvailabilityResponse.providersCount = 0; // objBusesAvailabilityResponse.providersCount = objClientAPIList.Count - resultSetIndex; } } else { objBusesAvailabilityResponse.providersCount = 0; objBusesAvailabilityResponse.responseStatus = HttpStatusCode.BadRequest; } } } if (HttpContext.Current.Session["AvailResponse"] == null) { objBusesAvailabilityResponse.availableTrips = bus; HttpContext.Current.Session["AvailResponse"] = objBusesAvailabilityResponse; HttpRuntime.Cache["bus"] = ""; } else { bump: if (HttpRuntime.Cache["bus"].ToString() != "") { Tbus = (AvailableTrips)HttpRuntime.Cache["bus"]; if (Tbus.Count() > 0) { BusesAvailabilityResponse busback = new BusesAvailabilityResponse(); Tbus = (AvailableTrips)HttpRuntime.Cache["bus"]; busback = (BusesAvailabilityResponse)HttpContext.Current.Session["AvailResponse"]; bus = trips((AvailableTrips)busback.availableTrips); bus = trips(Tbus); busback.availableTrips = bus; busback.responseStatus = HttpStatusCode.OK; busback.providersCount = 0; HttpContext.Current.Session["AvailResponse"] = busback; objBusesAvailabilityResponse.availableTrips = Tbus; objBusesAvailabilityResponse.responseStatus = HttpStatusCode.OK; objBusesAvailabilityResponse.providersCount = 0; HttpRuntime.Cache["bus"] = ""; } } else { objClientAPIList = (ClientAPIList)HttpContext.Current.Cache["ClientAPI-" + ConsumerKey]; if (objClientAPIList[1].ProviderName == "TICKETGOOSE") { goto bump; } else { } } } return JsonConvert.SerializeObject(objBusesAvailabilityResponse); } catch (Exception ex) { throw ex; } }
private AvailableTrips SVR(string SVRAPIURL, string SVRConsumerKey, string SVRConsumerSecret, string SVRProviderName, int SVRsourceid, int SVRdestinationid, string SVRdate) { AvailableTrips objAvailableTrips = new AvailableTrips(); List<object> objlist = new List<object>(); AbhibusAPI clsAbhibusAPI = new AbhibusAPI(); objAvailableTrips = clsAbhibusAPI.getBusAvailability(SVRsourceid , SVRdestinationid , SVRdate , 6 , "0" , SVRAPIURL , SVRConsumerKey , SVRProviderName ); return objAvailableTrips; }
private AvailableTrips Ticketgoose(string TAPIURL, string TConsumerKey, string TConsumerSecret, int TPID, int Tsourceid, int Tdestinationid, string Tdate) { BusesAvailabilityResponse objBusesAvailabilityResponse = new BusesAvailabilityResponse(); BusesSearchFilter objBusesSearchFilter = new BusesSearchFilter(); AvailableTrips objAvailableTrips = new AvailableTrips(); TicketGooseAPI clsTicketGooseAPI = new TicketGooseAPI(); objAvailableTrips = clsTicketGooseAPI.getTripListV2(Tsourceid , Tdestinationid , Tdate , TAPIURL , TConsumerKey , TConsumerSecret, TPID); return objAvailableTrips; }
private AvailableTrips MORNINGSTAR(string MAPIURL, string MConsumerKey, string MConsumerSecret, int MRPID, string MpName, int Msourceid, int Mdestinationid, string Mdate) { AvailableTrips objAvailableTrips = new AvailableTrips(); BitlaAPI clsBitlaAPI = new BitlaAPI(); objAvailableTrips = clsBitlaAPI.MRgetAvailableRoutes(Msourceid , Mdestinationid , Mdate , MAPIURL , MConsumerKey, MRPID, MpName); return objAvailableTrips; }
private AvailableTrips Rajesh(string RAJESHAPIURL, string RAJESHConsumerKey, string RAJESHConsumerSecret, string RAJESHProviderName, int RAJESHsourceid, int RAJESHdestinationid, string RAJESHdate) { AvailableTrips objAvailableTrips = new AvailableTrips(); List<object> objlist = new List<object>(); AbhibusAPI clsAbhibusAPI = new AbhibusAPI(); objAvailableTrips = clsAbhibusAPI.getBusAvailability(RAJESHsourceid , RAJESHdestinationid , RAJESHdate , 6 , "0" , RAJESHAPIURL , RAJESHConsumerKey , RAJESHProviderName); return objAvailableTrips; }
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; } }
private AvailableTrips KAVERI(string KAVERIAPIURL, string KAVERIConsumerKey, string KAVERIConsumerSecret, string KAVERIProviderName, int KAVERIsourceid, int KAVERIdestinationid, string KAVERIdate) { AvailableTrips objAvailableTrips = new AvailableTrips(); AbhibusAPI clsAbhibusAPI = new AbhibusAPI(); objAvailableTrips = clsAbhibusAPI.getBusAvailability(KAVERIsourceid , KAVERIdestinationid , KAVERIdate , 6 , "0" , KAVERIAPIURL , KAVERIConsumerKey , KAVERIProviderName); return objAvailableTrips; }
//easy bus 17-05-2013 private AvailableTrips EASY(string EASYAPIURL, string EASYConsumerKey, string EASYConsumerSecret, string EASYProviderName, int EASYsourceid, int EASYdestinationid, string EASYdate) { AvailableTrips objAvailableTrips = new AvailableTrips(); EasybusAPI clsEasyBusAPI = new EasybusAPI(); objAvailableTrips = clsEasyBusAPI.getAvailableServices(EASYsourceid , EASYdestinationid , EASYdate , EASYAPIURL , EASYConsumerKey , EASYProviderName); return objAvailableTrips; }
/// <summary> /// Method to get available trips for given provider /// </summary> /// <param name="ProviderName"></param> /// <param name="objClientAPIDetails"></param> /// <returns>Returns JSON string with list of available trips</returns> private AvailableTrips GetAvailableTripsByProviderName(ClientAPIDetails objClientAPIDetails, BusesSearchFilter objBusesSearchFilter) { AvailableTrips objAvailableTrips = new AvailableTrips(); List<object> objlist = new List<object>(); switch (objClientAPIDetails.ProviderName) { case "ABHIBUS": case "SVR": case "KALLADA": case "KAVERI": case "RAJESH": case "SAIANJANA": AbhibusAPI clsAbhibusAPI = new AbhibusAPI(); objAvailableTrips = clsAbhibusAPI.getBusAvailability(objBusesSearchFilter.SourceID , objBusesSearchFilter.DestinationID , objBusesSearchFilter.JourneyDate , 6 , "0" , objClientAPIDetails.APIURL , objClientAPIDetails.ConsumerKey , objClientAPIDetails.ProviderName); break; case "BITLA": case "MORNINGSTAR": BitlaAPI clsBitlaAPI = new BitlaAPI(); objAvailableTrips = clsBitlaAPI.getAvailableRoutes(objBusesSearchFilter.SourceID , objBusesSearchFilter.DestinationID , objBusesSearchFilter.JourneyDate , objClientAPIDetails.APIURL , objClientAPIDetails.ConsumerKey, objClientAPIDetails.ProviderID); break; case "TICKETGOOSE": TicketGooseAPI clsTicketGooseAPI = new TicketGooseAPI(); objAvailableTrips = clsTicketGooseAPI.getTripListV2(objBusesSearchFilter.SourceID , objBusesSearchFilter.DestinationID , objBusesSearchFilter.JourneyDate , objClientAPIDetails.APIURL , objClientAPIDetails.ConsumerKey , objClientAPIDetails.ConsumerSecret, objClientAPIDetails.ProviderID); break; //easybus case "EASYBUS": EasybusAPI clsEasyBusAPI = new EasybusAPI(); break; default: break; } return objAvailableTrips; }
public AvailableTrips trips(AvailableTrips objavailtrips) { BusesAvailabilityResponse objBusesAvailabilityResponse = new BusesAvailabilityResponse(); foreach (var t in objavailtrips) { AvailableTrips1 trip = new AvailableTrips1(); trip.arrivalTime = t.arrivalTime; trip.availableSeats = t.availableSeats; trip.boardingTimes = t.boardingTimes; trip.busType = t.busType; trip.cancellationPolicy = t.cancellationPolicy; trip.departureTime = t.departureTime; trip.destinationId = t.destinationId; trip.droppingTimes = t.droppingTimes; trip.duration = t.duration; trip.fares = t.fares; trip.id = t.id; trip.SeatLayoutId = t.SeatLayoutId; trip.partialCancellationAllowed = t.partialCancellationAllowed; trip.providerName = t.providerName; trip.sourceId = t.sourceId; trip.travels = t.travels; tripdetails.Add(trip); } return tripdetails; }
private AvailableTrips BITLA(string BAPIURL, string BConsumerKey, string BConsumerSecret, int BPID, string BPName, int Bsourceid, int Bdestinationid, string Bdate) { AvailableTrips objAvailableTrips = new AvailableTrips(); BitlaAPI clsBitlaAPI = new BitlaAPI(); objAvailableTrips = clsBitlaAPI.getAvailableRoutes(Convert.ToInt32(Bsourceid), Convert.ToInt32(Bdestinationid), Bdate, BAPIURL, BConsumerKey, BPID); return objAvailableTrips; }
public AvailableTrips getAvailableRoutes(int sourceId, int destinationId, String dateOfJourney, String URL, String ConsumerKey, int ProviderID) { try { dateOfJourney = dateOfJourney.Split('-')[2] + "-" + dateOfJourney.Split('-')[1] + "-" + dateOfJourney.Split('-')[0]; if (File.Exists(Path.Combine(HttpRuntime.AppDomainAppPath, "Routes\\" + dateOfJourney + ".xml"))) { DataSet ds = new DataSet(); ds.ReadXml(Path.Combine(HttpRuntime.AppDomainAppPath, "Routes\\" + dateOfJourney + ".xml")); if (ds != null && ds.Tables.Count > 0 && ds.Tables["route"].Rows.Count > 0) { objAvailableTrips = new AvailableTrips(); DataView dv = ds.Tables["route"].DefaultView; dv.RowFilter = "origin_id=" + sourceId + "and destination_id=" + destinationId; foreach (DataRowView item in dv) { //add the routes that match with given source and destinations if (int.Parse(item["origin_id"].ToString()) == sourceId && int.Parse(item["destination_id"].ToString()) == destinationId) { LJ.CLB.DTO.TripDetails objTripDetails = new DTO.TripDetails(); objTripDetails.providerName = "BITLA"; objTripDetails.arrivalTime = CalculateArrivalTime(item["dep_time"].ToString(), item["duration"].ToString()); objTripDetails.availableSeats = item["available_seats"].ToString(); //boardingTimes are fetched in seat layout objTripDetails.busType = item["bus_type"].ToString(); //cancellationPolicy is not valid for bitla objTripDetails.cancellationPolicy = String.Empty; objTripDetails.departureTime = item["dep_time"].ToString(); //droppingTimes are fetched in seat layout objTripDetails.duration = item["duration"].ToString(); objTripDetails.fares = item["fare_str"].ToString(); objTripDetails.id = item["reservation_id"].ToString(); objTripDetails.partialCancellationAllowed = item["is_cancellable"].ToString(); objTripDetails.travels = item["travels"].ToString(); objTripDetails.sourceId = int.Parse(item["origin_id"].ToString()); objTripDetails.destinationId = int.Parse(item["destination_id"].ToString()); trip.Add(objTripDetails); } } } //ignore operator list clsMasters obj = new clsMasters(); DataSet dsignore = obj.GetIgnoreList(ProviderID); if (dsignore != null) { if (dsignore.Tables[0].Rows.Count > 0) { foreach (DataRow row in dsignore.Tables[0].Rows) { trip = trip.Where(e => e.travels != row[3].ToString()).ToList(); } } } foreach (var bt in trip) { LJ.CLB.DTO.TripDetails objTripDetails = new DTO.TripDetails(); objTripDetails.providerName = "BITLA"; objTripDetails.arrivalTime = CalculateArrivalTime(bt.departureTime.ToString(), bt.duration.ToString()); objTripDetails.availableSeats = bt.availableSeats.ToString(); //boardingTimes are fetched in seat layout objTripDetails.busType = bt.busType.ToString(); //cancellationPolicy is not valid for bitla objTripDetails.cancellationPolicy = String.Empty; objTripDetails.departureTime = bt.departureTime.ToString(); //droppingTimes are fetched in seat layout objTripDetails.duration = bt.duration.ToString() + " hrs"; objTripDetails.fares = bt.fares.ToString(); objTripDetails.id = bt.id.ToString(); objTripDetails.partialCancellationAllowed = bt.partialCancellationAllowed.ToString(); objTripDetails.travels = bt.travels.ToString(); objTripDetails.sourceId = int.Parse(bt.sourceId.ToString()); objTripDetails.destinationId = int.Parse(bt.destinationId.ToString()); objAvailableTrips.Add(objTripDetails); } } return objAvailableTrips; } catch (Exception ex) { throw ex; } }
public AvailableTrips getTripListV2(int sourceId, int destinationId, String dateOfJourney, String URL, String ConsumerKey, String ConsumerSecret, int ProviderID) { try { //return ""; //Convert dd-mm-yyyy format to API compatible format dd/mm/yyyy dateOfJourney = dateOfJourney.Replace('-', '/'); client = new TGTravelServiceClient("TGSWS", URL); TripWithArrival response = client.getTripListV2(ConsumerKey, ConsumerSecret, sourceId.ToString(), destinationId.ToString(), dateOfJourney); AvailableTrips objAvailableTrips = null; if (response != null && response.tripList != null && response.tripList.Length > 0) { objAvailableTrips = new AvailableTrips(); #region Loop each trip and add trip details to availabletrips //ignore operator list List<object> oo = new List<object>(); clsMasters obj = new clsMasters(); DataSet ds = obj.GetIgnoreList(ProviderID); if (ds != null) { if (ds.Tables[0].Rows.Count > 0) { AvailableFlights = response.tripList.ToList(); foreach (DataRow row in ds.Tables[0].Rows) { AvailableFlights = AvailableFlights.Where(e => e.provider != row[3].ToString()).ToList(); } } else { AvailableFlights = response.tripList.ToList(); } } //end ignore operator list // List<TripWithArrivalDTO> AvailableFlights = response.tripList.Where(e => e.provider.Except(studentQuery).ToList(); foreach (TripWithArrivalDTO item in AvailableFlights) { //if (item.provider == "SVR Tours & Travels") //{ //} LJ.CLB.DTO.TripDetails objTripDetails = new DTO.TripDetails(); objTripDetails.providerName = "TICKETGOOSE"; //remove seconds and make it to 12hr format if (item.arrivalTime != null) { if (int.Parse(item.arrivalTime.Split(':')[0]) < 12) objTripDetails.arrivalTime = item.arrivalTime.Split(':')[0] + ':' + item.arrivalTime.Split(':')[1] + " AM"; else objTripDetails.arrivalTime = (int.Parse(item.arrivalTime.Split(':')[0]) - 12).ToString() + ':' + item.arrivalTime.Split(':')[1] + " PM"; } else objTripDetails.arrivalTime = "-"; objTripDetails.availableSeats = item.availableSeats; //objTripDetails.boardingTimes = JsonConvert.SerializeObject(item.pickUpPointList); objTripDetails.busType = item.type; //cancellationPolicy is not valid for ticketgoose objTripDetails.cancellationPolicy = String.Empty; //remove seconds and make it to 12hr format if (item.departureTime != null) { if (int.Parse(item.departureTime.Split(':')[0]) < 12) objTripDetails.departureTime = item.departureTime.Split(':')[0] + ':' + item.departureTime.Split(':')[1] + " AM"; else objTripDetails.departureTime = (int.Parse(item.departureTime.Split(':')[0]) - 12).ToString() + ':' + item.departureTime.Split(':')[1] + " PM"; } //objTripDetails.droppingTimes = String.Empty; if (item.departureTime != null && item.arrivalTime != null) //objTripDetails.duration = Duration(objTripDetails.departureTime, objTripDetails.arrivalTime); objTripDetails.duration = Duration(objTripDetails.departureTime, objTripDetails.arrivalTime); if (objTripDetails.duration == null) { objTripDetails.duration = "-"; } objTripDetails.fares = item.fare; objTripDetails.id = item.scheduleId; //partialCancellationAllowed is not valid for ticketkgoose objTripDetails.partialCancellationAllowed = String.Empty; objTripDetails.travels = item.provider; objTripDetails.sourceId = sourceId; objTripDetails.destinationId = destinationId; objAvailableTrips.Add(objTripDetails); } #endregion } return objAvailableTrips; } catch (Exception ex) { return null; } }
public AvailableTrips getAvailableServices(int sourceId, int destinationId, String dateOfJourney, String URL, String ConsumerKey, string providername) { //Convert mm-dd-yyyy format to API compatible format dd-mm-yyyy dateOfJourney = dateOfJourney.Split('-')[1] + "/" + dateOfJourney.Split('-')[0] + "/" + dateOfJourney.Split('-')[2]; try { requestBody = URL + "/server.aspx?Method=GetAvailableServices&TripType=" + 1 + "&SorceStationid=" + sourceId + "&DestinationStationid=" + destinationId + "&DateofJourney=" + dateOfJourney + "&DateOfReturn=" + dateOfJourney + "&Key=" + ConsumerKey; DataSet ds = convertXMLtoDataset(getJSONReponse(requestBody)); DataTable dtBuses = new DataTable(); dtBuses = ds.Tables[0]; AvailableTrips objAvailableTrips = new AvailableTrips(); if (dtBuses != null) { //foreach (DataRow dtRow in dtBuses.Rows) //{ if (dtBuses.TableName!="Respones"|| dtBuses.TableName=="Services") { for (int i = 0; i < dtBuses.Rows.Count; i++) { LJ.CLB.DTO.TripDetails objTripDetails = new DTO.TripDetails(); objTripDetails.providerName = providername; objTripDetails.boardingTimes = null;//String.Empty; objTripDetails.cancellationPolicy = String.Empty; objTripDetails.droppingTimes = null;//String.Empty; objTripDetails.sourceId = int.Parse(sourceId.ToString()); objTripDetails.destinationId = int.Parse(destinationId.ToString()); objTripDetails.partialCancellationAllowed = "false"; int Totalseats = Convert.ToInt32(dtBuses.Rows[i]["CAPACITY"].ToString()); int BookedSeats = Convert.ToInt32(dtBuses.Rows[i]["BOOKEDSEATS"].ToString()); int AvailableSeats = Totalseats - BookedSeats; objTripDetails.id = dtBuses.Rows[i]["SERVICE_ID"].ToString(); objTripDetails.travels = dtBuses.Rows[i]["NOTES"].ToString(); objTripDetails.departureTime = dtBuses.Rows[i]["START_TIME"].ToString(); objTripDetails.arrivalTime = dtBuses.Rows[i]["HALT_TIME"].ToString(); objTripDetails.fares = dtBuses.Rows[i]["Fare"].ToString(); objTripDetails.availableSeats = AvailableSeats.ToString(); objTripDetails.busType = dtBuses.Rows[i]["BUS_TYPE"].ToString(); objTripDetails.SeatLayoutId = dtBuses.Rows[i]["LAYOUT_ID"].ToString(); objTripDetails.duration = Duration(objTripDetails.departureTime, objTripDetails.arrivalTime); objAvailableTrips.Add(objTripDetails); } } // } } return objAvailableTrips; } catch (Exception ex) { throw ex; } }
public string GetAvailableTrips1(int sourceId, int destinationId, String dateofjourney, Int16 resultSetIndex, String ConsumerKey, String ConsumerSecret) { try { ClientAPIList objClientAPIList = new ClientAPIList(); BusesAvailabilityResponse objBusesAvailabilityResponse = new BusesAvailabilityResponse(); //Check if Cache already contains the Providers API List //Else get it from database // if (HttpContext.Current.Cache["ClientAPI-" + ConsumerKey] == null) GetAPIProvidersList(ConsumerKey, ConsumerSecret); objClientAPIList = (ClientAPIList)HttpContext.Current.Cache["ClientAPI-" + ConsumerKey]; //Check if atleast one provider is accessible if (objClientAPIList != null && objClientAPIList.Count > 0) { BusesSearchFilter objBusesSearchFilter = new BusesSearchFilter(); for (int i = 0; i < objClientAPIList.Count; i++) { objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[i], sourceId, destinationId, dateofjourney); //check if resultset index exceeds accessible providers list call the requested api if (resultSetIndex > 0 && resultSetIndex <= objClientAPIList.Count) { //Check if request has valid source and destination ids if (objBusesSearchFilter.SourceID > 0 && objBusesSearchFilter.DestinationID > 0) { //check if valid available trips are fetched try { objBusesAvailabilityResponse.availableTrips = GetAvailableTripsByProviderName(objClientAPIList[i], objBusesSearchFilter); objBusesAvailabilityResponse.responseStatus = HttpStatusCode.OK; } catch (Exception ex) { //return the exception objBusesAvailabilityResponse.availableTrips = null; objBusesAvailabilityResponse.responseStatus = HttpStatusCode.BadRequest; objBusesAvailabilityResponse.message = ex.Message; } } else { //objBusesAvailabilityResponse.availableTrips = "No results found."; // objBusesAvailabilityResponse.responseStatus = HttpStatusCode.NoContent; objBusesAvailabilityResponse.availableTrips = null; } objBusesAvailabilityResponse.providersCount = objClientAPIList.Count - resultSetIndex; } else { //objBusesAvailabilityResponse.availableTrips = "Invalid request. Please correct resultSetIndex value"; objBusesAvailabilityResponse.providersCount = 0; objBusesAvailabilityResponse.responseStatus = HttpStatusCode.BadRequest; } if (objBusesAvailabilityResponse.availableTrips != null) { if (HttpContext.Current.Session["AvailResponse"] == null) { HttpContext.Current.Session["AvailResponse"] = objBusesAvailabilityResponse; bus = trips(objBusesAvailabilityResponse.availableTrips); //HttpContext.Current.Session["AvailResponseTrips"] = bus; //bus = trips(bus); } else { //bus = trips((AvailableTrips)HttpContext.Current.Session["AvailResponseTrips"]); bus = trips(objBusesAvailabilityResponse.availableTrips); } } } /*** Uncomment this if available trips of all providers should be fetched in one go ***/ } else { objBusesAvailabilityResponse.providersCount = 0; objBusesAvailabilityResponse.responseStatus = HttpStatusCode.NoContent; } objBusesAvailabilityResponse.availableTrips = bus; HttpContext.Current.Session["AvailResponse"] = objBusesAvailabilityResponse; return JsonConvert.SerializeObject(objBusesAvailabilityResponse); } catch (Exception ex) { throw ex; } }
private AvailableTrips GETBITLROUTES(BusesSearchFilter objBusesSearchFilter, ClientAPIDetails objClientAPIDetails, int sourceId, int destinationId, String dateofjourney) { ClsBAL bal = new ClsBAL(); bal.ProviderID = objClientAPIDetails.ProviderID; bal.sourceId = sourceId; bal.destionationId = destinationId; DataSet dsProviders = bal.GetAPIID(); //DataSet dsProviders = ExecuteDataSet("SELECT " + objClientAPIDetails.ProviderName + " FROM dbo.tbl_Sources WHERE Source_ID = '" + sourceId + "' " + // "SELECT " + objClientAPIDetails.ProviderName + " FROM dbo.tbl_Sources WHERE Source_ID = '" + destinationId + "'"); if (dsProviders.Tables[0].Rows.Count > 0 && dsProviders.Tables[1].Rows.Count > 0) { if (objClientAPIDetails.ProviderName == "BITLA") { for (int k = 0; k < dsProviders.Tables.Count; k++) { BSID = dsProviders.Tables[0].Rows[k][0].ToString() == "" ? 0 : int.Parse(dsProviders.Tables[0].Rows[k][0].ToString()); BDID = dsProviders.Tables[1].Rows[k][0].ToString() == "" ? 0 : Convert.ToInt32(dsProviders.Tables[1].Rows[k][0]); if (BSID > 0 && BDID > 0) { BDate = dateofjourney; BURL = objClientAPIDetails.APIURL + "/"; BConsumerKey = objClientAPIDetails.ConsumerKey; BCOnsumerSecretKey = objClientAPIDetails.ConsumerSecret; BPID = objClientAPIDetails.ProviderID; BProviderName = objClientAPIDetails.ProviderName; Tbus = BITLA(BURL, BConsumerKey, BCOnsumerSecretKey, BPID, BProviderName, BSID, BDID, BDate); bus = trips(Tbus); } } } } dsProviders.Dispose(); return bus; }
public string GetAvailableTrips2(int sourceId, int destinationId, String dateofjourney, Int16 resultSetIndex, String ConsumerKey, String ConsumerSecret) { try { ClientAPIList objClientAPIList = new ClientAPIList(); BusesAvailabilityResponse objBusesAvailabilityResponse = new BusesAvailabilityResponse(); if (resultSetIndex != 2) { HttpContext.Current.Session["AvailResponse"] = null; HttpRuntime.Cache["bus"] = ""; //Check if Cache already contains the Providers API List //Else get it from database GetAPIProvidersList(ConsumerKey, ConsumerSecret); objClientAPIList = (ClientAPIList)HttpContext.Current.Cache["ClientAPI-" + ConsumerKey]; //Check if atleast one provider is accessible if (objClientAPIList != null && objClientAPIList.Count > 0) { BusesSearchFilter objBusesSearchFilter = new BusesSearchFilter(); threadcount = Convert.ToInt32(objClientAPIList.Count()); thread = new Thread[threadcount]; for (i = 0; i < thread.Count(); i++) { thread[i] = new Thread(() => { if (objClientAPIList[i].ProviderName == "TICKETGOOSE") { int T = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[T], sourceId, destinationId, dateofjourney); if (objBusesSearchFilter.SourceID > 0 && objBusesSearchFilter.DestinationID > 0) { TSID = Convert.ToInt32(objBusesSearchFilter.SourceID); TDID = Convert.ToInt32(objBusesSearchFilter.DestinationID); TDate = objBusesSearchFilter.JourneyDate; TURL = objClientAPIList[T].APIURL; TConsumerKey = objClientAPIList[T].ConsumerKey; TCOnsumerSecretKey = objClientAPIList[T].ConsumerSecret; TPID = objClientAPIList[T].ProviderID; Tbus = Ticketgoose(TURL, TConsumerKey, TCOnsumerSecretKey, TPID, TSID, TDID, TDate); if (Tbus != null) { if (Tbus.Count() > 0) { bus = trips(Tbus); HttpRuntime.Cache["bus"] = Tbus; objBusesAvailabilityResponse.providersCount = 10; } } } } else if (objClientAPIList[i].ProviderName == "MORNINGSTAR") { int M = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[M], sourceId, destinationId, dateofjourney); if (objBusesSearchFilter.SourceID > 0 && objBusesSearchFilter.DestinationID > 0) { MSID = Convert.ToInt32(objBusesSearchFilter.SourceID); MDID = Convert.ToInt32(objBusesSearchFilter.DestinationID); MDate = objBusesSearchFilter.JourneyDate; MURL = objClientAPIList[M].APIURL + "/"; MConsumerKey = objClientAPIList[M].ConsumerKey; MCOnsumerSecretKey = objClientAPIList[M].ConsumerSecret; MPID = objClientAPIList[M].ProviderID; MProviderName = objClientAPIList[M].ProviderName; Tbus = MORNINGSTAR(MURL, MConsumerKey, MCOnsumerSecretKey, MPID, MProviderName, MSID, MDID, MDate); if (Tbus != null) { if (Tbus.Count() > 0) { bus = trips(Tbus); } // b = true; } } } else if (objClientAPIList[i].ProviderName == "BITLA") { int B = i; bus = GETBITLROUTES(objBusesSearchFilter, objClientAPIList[B], sourceId, destinationId, dateofjourney); } else if (objClientAPIList[i].ProviderName == "KALLADA") { int kD = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[kD], sourceId, destinationId, dateofjourney); if (objBusesSearchFilter.SourceID > 0 && objBusesSearchFilter.DestinationID > 0) { KDSID = Convert.ToInt32(objBusesSearchFilter.SourceID); KDDID = Convert.ToInt32(objBusesSearchFilter.DestinationID); KDDate = objBusesSearchFilter.JourneyDate; KDURL = objClientAPIList[kD].APIURL; KDConsumerKey = objClientAPIList[kD].ConsumerKey; KDCOnsumerSecretKey = objClientAPIList[kD].ConsumerSecret; KDProviderName = objClientAPIList[kD].ProviderName; Kbus = KALLADA(KDURL, KDConsumerKey, KDCOnsumerSecretKey, KDProviderName, KDSID, KDDID, KDDate); if (Kbus != null) { if (Kbus.Count() > 0) { bus = trips(Kbus); } } } } else if (objClientAPIList[i].ProviderName == "SAIANJANA") { int s = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[s], sourceId, destinationId, dateofjourney); if (objBusesSearchFilter.SourceID > 0 && objBusesSearchFilter.DestinationID > 0) { SSID = Convert.ToInt32(objBusesSearchFilter.SourceID); SDID = Convert.ToInt32(objBusesSearchFilter.DestinationID); SDate = objBusesSearchFilter.JourneyDate; SURL = objClientAPIList[s].APIURL; SConsumerKey = objClientAPIList[s].ConsumerKey; SCOnsumerSecretKey = objClientAPIList[s].ConsumerSecret; SProviderName = objClientAPIList[s].ProviderName; Kbus = SAIANJANA(SURL, SConsumerKey, SCOnsumerSecretKey, SProviderName, SSID, SDID, SDate); if (Kbus != null) { if (Kbus.Count() > 0) { bus = trips(Kbus); } } } } else if (objClientAPIList[i].ProviderName == "SVR") { int sv = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[sv], sourceId, destinationId, dateofjourney); if (objBusesSearchFilter.SourceID > 0 && objBusesSearchFilter.DestinationID > 0) { SVSID = Convert.ToInt32(objBusesSearchFilter.SourceID); SVDID = Convert.ToInt32(objBusesSearchFilter.DestinationID); SVDate = objBusesSearchFilter.JourneyDate; SVURL = objClientAPIList[sv].APIURL; SVConsumerKey = objClientAPIList[sv].ConsumerKey; SVCOnsumerSecretKey = objClientAPIList[sv].ConsumerSecret; SVProviderName = objClientAPIList[sv].ProviderName; Kbus = GETSVR(SVURL, SVConsumerKey, SVCOnsumerSecretKey, SVProviderName, SVSID, SVDID, SVDate); if (Kbus != null) { if (Kbus.Count() > 0) { bus = trips(Kbus); } } } } else if (objClientAPIList[i].ProviderName == "RAJESH") { int r = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[r], sourceId, destinationId, dateofjourney); if (objBusesSearchFilter.SourceID > 0 && objBusesSearchFilter.DestinationID > 0) { RSID = Convert.ToInt32(objBusesSearchFilter.SourceID); RDID = Convert.ToInt32(objBusesSearchFilter.DestinationID); RDate = objBusesSearchFilter.JourneyDate; RURL = objClientAPIList[r].APIURL; RConsumerKey = objClientAPIList[r].ConsumerKey; RCOnsumerSecretKey = objClientAPIList[r].ConsumerSecret; RProviderName = objClientAPIList[r].ProviderName; Kbus = Rajesh(RURL, RConsumerKey, RCOnsumerSecretKey, RProviderName, RSID, RDID, RDate); if (Kbus != null) { if (Kbus.Count() > 0) { bus = trips(Kbus); //HttpRuntime.Cache["bus"] = Tbus; } } } } else if (objClientAPIList[i].ProviderName == "KAVERI") { int k = i; objBusesSearchFilter = GetCityIDsOfProviders(objBusesSearchFilter, objClientAPIList[k], sourceId, destinationId, dateofjourney); if (objBusesSearchFilter.SourceID > 0 && objBusesSearchFilter.DestinationID > 0) { KSID = Convert.ToInt32(objBusesSearchFilter.SourceID); KDID = Convert.ToInt32(objBusesSearchFilter.DestinationID); KDate = objBusesSearchFilter.JourneyDate; KURL = objClientAPIList[i].APIURL; KConsumerKey = objClientAPIList[k].ConsumerKey; KCOnsumerSecretKey = objClientAPIList[k].ConsumerSecret; KProviderName = objClientAPIList[k].ProviderName; Kbus = KAVERI(KURL, KConsumerKey, KCOnsumerSecretKey, KProviderName, KSID, KDID, KDate); if (Kbus != null) { if (Kbus.Count() > 0) { bus = trips(Kbus); //HttpRuntime.Cache["Kbus"] = Kbus; } } } } }); // threat initialisation ends if (c == true) { thread[i].Start(); thread[i].Join(500); if (i == thread.Count() - 1) { i = thread.Count() - 1; break; } } } } } if (resultSetIndex != 2) { Found: int j = 0; foreach (var thd in thread) { if (thd.IsAlive) { thd.Join(1000); b = false; } else { j++; } if (j == threadcount) { b = true; i = 0; break; } } if (c == true) { c = false; } if (b == false) { goto Found; } else { b = false; //check if resultset index exceeds accessible providers list call the requested api if (resultSetIndex > 0 && resultSetIndex <= objClientAPIList.Count) { try { // objBusesAvailabilityResponse.availableTrips = GetAvailableTripsByProviderName(objClientAPIList[i], objBusesSearchFilter); objBusesAvailabilityResponse.responseStatus = HttpStatusCode.OK; } catch (Exception ex) { //return the exception objBusesAvailabilityResponse.availableTrips = null; objBusesAvailabilityResponse.responseStatus = HttpStatusCode.BadRequest; objBusesAvailabilityResponse.message = ex.Message; } if (objBusesAvailabilityResponse.providersCount == 10) { objBusesAvailabilityResponse.providersCount = 0; } else { objBusesAvailabilityResponse.providersCount = objClientAPIList.Count - resultSetIndex; } } else { objBusesAvailabilityResponse.providersCount = 0; objBusesAvailabilityResponse.responseStatus = HttpStatusCode.BadRequest; } } } if (HttpContext.Current.Session["AvailResponse"] == null) { objBusesAvailabilityResponse.availableTrips = bus; HttpContext.Current.Session["AvailResponse"] = objBusesAvailabilityResponse; HttpRuntime.Cache["bus"] = ""; } else { bump: if (HttpRuntime.Cache["bus"].ToString() != "") { Tbus = (AvailableTrips)HttpRuntime.Cache["bus"]; if (Tbus.Count() > 0) { BusesAvailabilityResponse busback = new BusesAvailabilityResponse(); Tbus = (AvailableTrips)HttpRuntime.Cache["bus"]; busback = (BusesAvailabilityResponse)HttpContext.Current.Session["AvailResponse"]; bus = trips((AvailableTrips)busback.availableTrips); bus = trips(Tbus); busback.availableTrips = bus; busback.responseStatus = HttpStatusCode.OK; busback.providersCount = 0; HttpContext.Current.Session["AvailResponse"] = busback; objBusesAvailabilityResponse.availableTrips = Tbus; objBusesAvailabilityResponse.responseStatus = HttpStatusCode.OK; objBusesAvailabilityResponse.providersCount = 0; HttpRuntime.Cache["bus"] = ""; } } else { objClientAPIList = (ClientAPIList)HttpContext.Current.Cache["ClientAPI-" + ConsumerKey]; if (objClientAPIList[1].ProviderName == "TICKETGOOSE") { goto bump; } else { } } } return JsonConvert.SerializeObject(objBusesAvailabilityResponse); } catch (Exception ex) { throw ex; } }
/// <summary> /// Method for getting all the available buses based on source, destination and date of journey /// </summary> /// <param name="sourceId"></param> /// <param name="destinationId"></param> /// <param name="dateOfJourney"></param> /// <param name="seatCount"></param> /// <param name="seatType">seat/sleeper</param> /// <param name="URL"></param> /// <param name="ConsumerKey"></param> /// <returns></returns> public AvailableTrips getBusAvailability(int sourceId, int destinationId, String dateOfJourney, Int16 seatCount, String seatType, String URL, String ConsumerKey, string providername) { //Convert dd-mm-yyyy format to API compatible format yyyy-mm-dd dateOfJourney = dateOfJourney.Split('-')[2] + "-" + dateOfJourney.Split('-')[1] + "-" + dateOfJourney.Split('-')[0]; try { requestBody = "<?xml version='1.0'?><methodCall>" + "<methodName>select.bustojurney</methodName>" + "<params><param><value><struct>" + "<member><name>jdate</name><value><string>" + dateOfJourney + "</string></value></member>" + "<member><name>sourceid</name><value><string>" + sourceId + "</string></value></member>" + "<member><name>destinationid</name><value><string>" + destinationId + "</string></value></member>" + "<member><name>psgr_count</name><value><string>" + seatCount + "</string></value></member>" + "<member><name>seat_sleeper</name><value><string>" + seatType + "</string></value></member>" + "</struct></value></param></params></methodCall>"; xmlNodes = getXmlNodeList(requestBody, URL, ConsumerKey); AvailableTrips objAvailableTrips = new AvailableTrips(); if (xmlNodes != null) { foreach (XmlNode xNode in xmlNodes) { LJ.CLB.DTO.TripDetails objTripDetails = new DTO.TripDetails(); objTripDetails.providerName = providername; objTripDetails.boardingTimes = null;//String.Empty; objTripDetails.cancellationPolicy = String.Empty; objTripDetails.droppingTimes = null;//String.Empty; objTripDetails.sourceId = int.Parse(sourceId.ToString()); objTripDetails.destinationId = int.Parse(destinationId.ToString()); objTripDetails.partialCancellationAllowed = "false"; XmlNodeList nodeNameList = xNode.SelectNodes("member/name"); XmlNodeList nodeValueList = xNode.SelectNodes("member/value"); for (int i = 0; i < nodeNameList.Count; i++) { switch (nodeNameList.Item(i).InnerText.ToLower()) { case "service_id": objTripDetails.id = nodeValueList.Item(i).InnerText; break; case "traveler_agent": if (nodeValueList.Item(i).InnerText == "") { objTripDetails.travels = "Kallada Tours & Travels"; } else { objTripDetails.travels = nodeValueList.Item(i).InnerText; } break; case "departure_time": objTripDetails.departureTime = nodeValueList.Item(i).InnerText; break; case "arrival_time": objTripDetails.arrivalTime = nodeValueList.Item(i).InnerText; break; case "seat_fare_with_taxes": case "seat_fare": objTripDetails.fares = nodeValueList.Item(i).InnerText; break; case "totalavailableseats": objTripDetails.availableSeats = nodeValueList.Item(i).InnerText; break; case "remaining_seats": objTripDetails.availableSeats = nodeValueList.Item(i).InnerText; break; case "service_type": objTripDetails.busType = nodeValueList.Item(i).InnerText; break; case "boardingpoints": #region Boarding Points string strBP = ""; XmlDocument xmlDocBP = new XmlDocument(); xmlDocBP.LoadXml(nodeValueList.Item(i).InnerXml); XmlNodeList nodesBP = xmlDocBP.GetElementsByTagName("array"); foreach (XmlNode item in nodesBP) { foreach (XmlNode item1 in item.SelectNodes("data/value")) { strBP = (strBP == "") ? item1.InnerText : strBP + "%&&&%" + item1.InnerText; } } //objTripDetails.boardingTimes = strBP; objTripDetails.boardingTimes = Points(strBP, objTripDetails.travels); #endregion break; case "droppingpoints": #region Dropping Points string strDP = "";//nodeValueList.Item(i).InnerXml; XmlDocument xmlDocDP = new XmlDocument(); xmlDocDP.LoadXml(nodeValueList.Item(i).InnerXml); XmlNodeList nodesDP = xmlDocDP.GetElementsByTagName("array"); foreach (XmlNode item in nodesDP) { foreach (XmlNode item1 in item.SelectNodes("data/value")) { strDP = (strDP == "") ? item1.InnerText : strDP + ";" + item1.InnerText; } } objTripDetails.droppingTimes = Points(strDP, objTripDetails.travels); #endregion break; default: break; } } objTripDetails.duration = Duration(objTripDetails.departureTime, objTripDetails.arrivalTime); objAvailableTrips.Add(objTripDetails); } } return objAvailableTrips; } catch (Exception ex) { throw ex; } }