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);
        }