/// <summary> Получить коммерческие предложения по текущему туру тендера </summary> /// <param name="tenderData"> Данные тендера </param> public List <TenderLotItemOffer> GetTenderRoundOffers(TenderData tenderData) { List <Task> tasks = new List <Task>(); List <TenderLotItemOffer> allOffers = new List <TenderLotItemOffer>(); foreach (TenderLot lot in tenderData.TenderLots) { foreach (TenderLotItem lotItem in lot.LotItems) { Task <HttpResponseMessage> requestResult = HttpClient.GetAsync($"tender/getoffers?uuid={lotItem.TenderItemUuid.ToString().ToUpper()}"); TenderLot tenderLot = lot; TenderLotItem tenderLotItem = lotItem; tasks.Add(requestResult.ContinueWith(x => FinishInitialization(x, tenderLot, tenderLotItem, allOffers))); } } Task.WaitAll(tasks.ToArray());
static void FinishInitialization(Task <HttpResponseMessage> requestResult, TenderLot lot, TenderLotItem lotItem, List <TenderLotItemOffer> allOffers) { HttpResponseMessage response = requestResult.Result; response.EnsureSuccessStatusCode(); String result = response.Content.ReadAsStringAsync().Result; result = Regex.Replace(result, @"(?<![\\])\\(?![bfnrt""\\])", @"\\"); #if DEBUG result = JToken.Parse(result).ToString(Formatting.Indented); #endif List <TenderLotItemOffer> offers = null; try { offers = JsonConvert.DeserializeObject <List <TenderLotItemOffer> >(result); foreach (var item in offers) { foreach (var answer in item.TenderCriteriaAnswers) { answer.TenderLotItemUuid = lotItem.TenderItemUuid; answer.TenderLotItemName = lotItem.Name; lotItem.Offers.Clear(); lotItem.Offers.AddRange(offers); answer.TenderLotNo = lot.LotNumber; answer.SupplierId = item.SupplierId; answer.SupplierName = item.SupplierName; answer.SupplierEdrpou = item.Edrpou; if (!String.IsNullOrEmpty(answer.FileUrl)) { String queryValue = HttpUtility.ParseQueryString(new Uri(answer.FileUrl).Query).GetValues("uuid").FirstOrDefault(); answer.FileUuid = String.IsNullOrEmpty(queryValue) ? null : ((Guid?)new Guid(queryValue)); } } } allOffers.AddRange(offers); } catch (JsonSerializationException ex) { var requestRes = JsonConvert.DeserializeObject <RequestResult <List <TenderLotItemOffer> > >(result); if (requestRes.IsSuccess == false) { offers = new List <TenderLotItemOffer>(); } } }