public async Task <IActionResult> GetAlignmentGeometriesForRendering( [FromQuery] Guid projectUid, [FromQuery] bool convertArcsToChords, [FromQuery] double arcChordTolerance) { Log.LogInformation($"{nameof(GetAlignmentGeometriesForRendering)}: " + Request.QueryString); var fileList = await FileImportProxy.GetFiles(projectUid.ToString(), GetUserId(), Request.Headers.GetCustomHeaders()); fileList = fileList?.Where(f => f.ImportedFileType == ImportedFileType.Alignment && f.IsActivated).ToList(); if (fileList.Count > 0) { var alignmentGeometries = new List <AlignmentGeometry>(); var tasks = new List <Task <ContractExecutionResult> >(); foreach (var file in fileList) { if (Guid.TryParse(file.ImportedFileUid, out var designUid)) { Log.LogInformation($"Processing alignment data. File UID: {designUid}, File Name: {file.Name}"); var request = new AlignmentGeometryRequest(projectUid, designUid, convertArcsToChords, arcChordTolerance, file.Name); request.Validate(); var result = RequestExecutorContainerFactory.Build <AlignmentGeometryExecutor>(LoggerFactory, configStore: ConfigStore, trexCompactionDataProxy: TRexCompactionDataProxy, userId: GetUserId(), fileImportProxy: FileImportProxy).ProcessAsync(request); tasks.Add(result); } else { Log.LogInformation($"Invalid alignment data file UID: {designUid}. File Name: {file.Name}"); } } Task.WaitAll(tasks.ToArray()); foreach (var task in tasks) { alignmentGeometries.Add((task.Result as AlignmentGeometryResult).AlignmentGeometry); } return(StatusCode((int)HttpStatusCode.OK, alignmentGeometries.ToArray())); } Log.LogInformation($"Project {projectUid} does not have any alignment data."); return(NoContent()); }
public async Task <ContractExecutionResult> GetAlignmentGeometryForRendering( [FromQuery] Guid projectUid, [FromQuery] Guid designUid, [FromQuery] string fileName, [FromQuery] bool convertArcsToChords, [FromQuery] double arcChordTolerance) { Log.LogInformation($"{nameof(GetAlignmentGeometryForRendering)}: " + Request.QueryString); var request = new AlignmentGeometryRequest(projectUid, designUid, convertArcsToChords, arcChordTolerance, fileName); request.Validate(); return(await RequestExecutorContainerFactory.Build <AlignmentGeometryExecutor>(LoggerFactory, configStore : ConfigStore, trexCompactionDataProxy : TRexCompactionDataProxy, userId : GetUserId(), fileImportProxy : FileImportProxy).ProcessAsync(request)); }