private List <ForecastDto> ConvertToDTO(response xmlObjs, IList <string> icaos) { var dtos = new List <ForecastDto>(); ForecastDto forecast = null; if (xmlObjs.data?.TAF != null) { foreach (var tafXML in xmlObjs.data.TAF) { forecast = dtos.Where(o => o.ICAO == tafXML.station_id).FirstOrDefault(); if (forecast == null) { forecast = new ForecastDto(); ParseIdentifier(forecast, tafXML); ParseGeographicData(forecast, tafXML); dtos.Add(forecast); } var tafDTO = new TAFDto(); ParseTAFData(tafDTO, tafXML); ParseForecastData(tafDTO, tafXML.forecast); forecast.TAF.Add(tafDTO); } } return(dtos); }
private void ParseTAFData(TAFDto dto, TAF xml) { dto.RawTAF = xml.raw_text; dto.IssuedTime = ParserHelpers.ParseDateTime(xml.issue_time); dto.Remarks = xml.remarks; dto.ValidTimeEnd = ParserHelpers.ParseDateTime(xml.valid_time_to); dto.ValidTimeStart = ParserHelpers.ParseDateTime(xml.valid_time_from); dto.BulletinTime = ParserHelpers.ParseDateTime(xml.bulletin_time); }
private void ParseForecastData(TAFDto dto, forecast[] xml) { var lineNumber = 0; foreach (var line in xml) { var lineDto = new TAFLineDto(); lineDto.Altimeter = ParserHelpers.GetValue(line.altim_in_hgSpecified, line.altim_in_hg); lineDto.ForecastTimeEnd = ParserHelpers.ParseDateTime(line.fcst_time_to); lineDto.ForecastTimeStart = ParserHelpers.ParseDateTime(line.fcst_time_from); if (line.sky_condition != null) { lineDto.SkyCondition.AddRange(line.sky_condition .Select(sc => GetSkyCondition(sc))); } // First line may not have an change type if (lineNumber > 0 && !String.IsNullOrWhiteSpace(line.change_indicator)) { lineDto.ChangeIndicator = ChangeIndicatorType.GetByName(line.change_indicator); } if (line.icing_condition != null) { lineDto.IcingHazards.AddRange(line.icing_condition .Where(ic => !String.IsNullOrWhiteSpace(ic.icing_intensity)) .Select(ic => GetHazard(ic))); } if (line.turbulence_condition != null) { lineDto.TurbulenceHazards.AddRange(line.turbulence_condition .Where(tb => !String.IsNullOrWhiteSpace(tb.turbulence_intensity)) .Select(tb => GetHazard(tb))); } lineDto.VerticalVisibility = ParserHelpers.GetValue( line.vert_vis_ftSpecified, line.vert_vis_ft); lineDto.Visibility = ParserHelpers.GetValue( line.visibility_statute_miSpecified, line.visibility_statute_mi); lineDto.Weather = line.wx_string; lineDto.Wind = GetWind(line); lineDto.WindShear = GetWindSheer(line); dto.TAFLine.Add(lineDto); lineNumber++; } }