private static List <DailyWeatherBE> OpenWeatherResponseModelToListWeatherDTO(OpenWeatherResponseModel responseModel, ResolutionContext context) { var result = new List <DailyWeatherBE>(); var hourlyDetailsByDay = responseModel.HourlyDetails.GroupBy(x => x.DateTime.Date); foreach (var detailByDay in hourlyDetailsByDay) { var hourlyDetails = detailByDay.ToList(); var dailyWeatherDTO = new DailyWeatherBE { ProviderType = WeatherProviderType.OpenWeatherMap, DateTime = detailByDay.Key, HourlyDetails = context.Mapper.Map <List <HourlyDetailWeatherBE> >(hourlyDetails), TemperatureMin = hourlyDetails.Min(x => x.MainInfoResponse.TempMin), TemperatureMax = hourlyDetails.Min(x => x.MainInfoResponse.TempMax), Pressure = hourlyDetails.Average(x => x.MainInfoResponse.Pressure) }; dailyWeatherDTO.PrecipType = dailyWeatherDTO.HourlyDetails.Any(x => x.PrecipType == PrecipType.Rain) ? PrecipType.Rain : PrecipType.NoPrecipitation; result.Add(dailyWeatherDTO); } return(result); }
private static object PrecipSpanConverter(DailyWeatherBE value) { if (value.HourlyDetails.Any(x => x.PrecipType != PrecipType.NoPrecipitation)) { return(new PrecipSpanDTO { PrecipType = value.PrecipType, StartPrecip = value.HourlyDetails.Where(x => x.PrecipType != PrecipType.NoPrecipitation) .Min(x => x.DateTime), EndPrecip = value.HourlyDetails.Where(x => x.PrecipType != PrecipType.NoPrecipitation) .Max(x => x.DateTime) }); } return(null); }