private async Task <WildlifeReportGeometry> PerformSpatialValidationAndConversionAsync(WildlifeReportTyped typedRow) { var submissionRow = _submissionRows[(decimal)typedRow.RowNum]; var wildlifeReport = new WildlifeReportGeometry(typedRow, null); if (typedRow.SpatialData == SpatialData.Gps) { await PerformSpatialGpsValidation(wildlifeReport, submissionRow); SetVarianceWarningDetail(submissionRow, typedRow.HighwayUnique, GetGpsString(typedRow.Latitude, typedRow.Longitude), GetGpsString(typedRow.Latitude, typedRow.Longitude), _thresholdSpLevel); } else if (typedRow.SpatialData == SpatialData.Lrs) { await PerformSpatialLrsValidation(wildlifeReport, submissionRow); SetVarianceWarningDetail(submissionRow, typedRow.HighwayUnique, GetOffsetString(typedRow.Offset), GetOffsetString(typedRow.Offset), _thresholdSpLevel); } return(wildlifeReport); }
private async Task PerformSpatialLrsValidation(WildlifeReportGeometry wildlifeReport, HmrSubmissionRow submissionRow) { var errors = new Dictionary <string, List <string> >(); var typedRow = wildlifeReport.WildlifeReportTyped; var result = await _spatialService.ValidateLrsPointAsync((decimal)typedRow.Offset, typedRow.HighwayUnique, Fields.HighwayUnique, _thresholdSpLevel, errors); if (result.result == SpValidationResult.Fail) { SetErrorDetail(submissionRow, errors, _statusService.FileLocationError); } else if (result.result == SpValidationResult.Success) { typedRow.HighwayUniqueLength = result.rfiSegment.Length; typedRow.HighwayUniqueName = result.rfiSegment.Descr; typedRow.Longitude = result.point.Longitude; typedRow.Latitude = result.point.Latitude; wildlifeReport.Geometry = _geometryFactory.CreatePoint(result.point.ToTopologyCoordinate()); submissionRow.StartVariance = typedRow.Offset - result.snappedOffset; } }