/// <summary> /// Сохраняет температуры наружного воздуха в указанную территорию. /// </summary> /// <param name="records"></param> /// <param name="territory"></param> /// <param name="missingOnly"></param> /// <returns></returns> public async Task Save(List <TemperatureRecord> records, Territory territory, bool missingOnly) { if (territory == null) { throw new ArgumentNullException(nameof(territory)); } var weatherClient = new WeatherClient(_baseUri.ToString(), _httpClient); IDictionary <DateTimeOffset, TerritoryOutdoorTemperature> existingTemperature = null; if (missingOnly) { // Если импортируются только отсутствующие данные, получаем существующую температуру наружного воздуха. existingTemperature = (await weatherClient.GetAsync(territory.Id)) .ToDictionary(x => x.Date); } var outdoorTemp = new List <TerritoryOutdoorTemperature>(); foreach (var record in records) { if (!missingOnly || !existingTemperature.ContainsKey(record.Date)) { outdoorTemp.Add(new TerritoryOutdoorTemperature { Date = record.Date, Value = record.Temperature }); } } if (outdoorTemp.Count <= 0) { Console.WriteLine("Нет данных для сохранения."); } else { await weatherClient.SetAsync(territory.Id, outdoorTemp); } }