Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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));
        }