public void SuppData_FillSuppDataInfo(SuppData_PricingResponse pricingResponse) { var SuppDataId = pricingResponse.SuppDataAvaibility?.SuppData.Id; if (SuppDataId == null) { pricingResponse.AddMessageErrorInternal("SuppDataId is null!"); return; } var SuppDataInfo = _dictionarySuppData.GetSuppData(SuppDataId.Value); if (SuppDataInfo == null) { pricingResponse.AddMessageErrorInternal("Ошибка получения информации из Dictionaries."); return; } pricingResponse.SuppDataAvaibility.SuppData = SuppDataInfo; foreach (var room in pricingResponse.SuppDataAvaibility.Rooms) { FillImportantInformation(room, SuppDataInfo); FillArrivalAndDepartureTime(room, SuppDataInfo); } }
/// <summary> /// /// </summary> /// <param name="responses"></param> /// <returns></returns> public SuppData_PricingResponse SuppData_ComposeSuppDataPricingResults(List <SuppData_PricingResponse> responses) { if (responses == null || responses.Count == 0) { return(new SuppData_PricingResponse { ErrorMessage = "1|Результатов не вернулось", Success = false }); } if (responses.Count == 1) { return(responses.First()); } var response = new SuppData_PricingResponse(); response.AddMessages(responses.Where(r => r.Messages != null).SelectMany(e => e.Messages)); response.Success = responses.Any(n => n.SuppDataAvaibility != null && !n.HasErrors); var successResponses = responses.Where(n => n.SuppDataAvaibility != null).ToArray(); if (!successResponses.Any()) { return(response); } var firstResponse = successResponses.First(); responses.Remove(firstResponse); var rates = new List <SuppData_PricingRoom>(); if (firstResponse.SuppDataAvaibility.Rooms != null) { rates.AddRange(firstResponse.SuppDataAvaibility.Rooms); } var firstDirectContractDetailsList = firstResponse.SuppDataAvaibility.AddiditionalInfo.DirectContractDetailsList; foreach (var pricingResponse in responses) { var responseDirectContractDetails = pricingResponse.SuppDataAvaibility?.AddiditionalInfo?.DirectContractDetailsList; if (responseDirectContractDetails != null && responseDirectContractDetails.Any()) { foreach (var contractDetail in responseDirectContractDetails) { if (!firstDirectContractDetailsList.Contains(contractDetail)) { firstDirectContractDetailsList.Add(contractDetail); } } } if (pricingResponse?.SuppDataAvaibility?.Rooms != null) { rates.AddRange(pricingResponse.SuppDataAvaibility.Rooms); } } firstResponse.SuppDataAvaibility.Rooms = rates.OrderBy(n => n.TotalPrice?.Amount ?? 0).ToList(); response.SuppDataAvaibility = firstResponse.SuppDataAvaibility; return(response); }