public IEnumerable <TrainAvailableChairsRequest> TrainAvailableChairsRequestBuilder(GetRoutesResponse routesResponse) { List <TrainAvailableChairsRequestItem> requestItems = new List <TrainAvailableChairsRequestItem>(); foreach (Route route in routesResponse.Data.Routes) { foreach (Train train in route.Train) { if (int.TryParse(train.Trainno, out int trainNumber) && DateTime.TryParseExact(train.DepartureTime, "dd/MM/yyyy HH:mm:ss", null, DateTimeStyles.None, out DateTime departureTime) && int.TryParse(train.OrignStation, out int originStation) && int.TryParse(train.DestinationStation, out int destinationStation)) { TrainAvailableChairsRequestItem requestItem = new TrainAvailableChairsRequestItem() { trainNumber = trainNumber, trainDate = departureTime.Date, fromStation = originStation, destStation = destinationStation }; requestItems.Add(requestItem); } } } List <TrainAvailableChairsRequest> requests = new List <TrainAvailableChairsRequest>(); for (int i = 0; i < requestItems.Count; i += 17) { TrainAvailableChairsRequest request = new TrainAvailableChairsRequest() { lstTrainAvailableChairsQuery = requestItems.GetRange(i, Math.Min(17, requestItems.Count - i)).ToArray() }; requests.Add(request); } return(requests); }
public async Task <TrainAvailableChairsResponse> TrainAvailableChairs(TrainAvailableChairsRequest request) { string json = JsonConvert.SerializeObject(request); string encodedJson = json.Replace("\"", "%22"); NameValueCollection parameters = HttpUtility.ParseQueryString(string.Empty); parameters["method"] = "TrainAvailableChairs"; parameters["jsonObj"] = encodedJson; UriBuilder ub = new UriBuilder() { Path = "_layouts/15/SolBox/TrainAvailableChairsHandler.ashx", Query = HttpUtility.UrlDecode(parameters.ToString()) }; string uri = ub.Uri.PathAndQuery; HttpClient client = _clientFactory.CreateClient("RailApi"); using (HttpResponseMessage response = await client.PostAsync(uri, null)) { response.EnsureSuccessStatusCode(); TrainAvailableChairsResponse result = await response.Content.ReadAsAsync <TrainAvailableChairsResponse>(); if (result.clsResult.returnCode != 1) { throw new Exception(result.clsResult.returnDescription); } return(result); } }