예제 #1
0
        private CCAColorPaletteResult ProcessWithRaptor(CCAColorPaletteRequest request)
        {
            TColourPalettes palettes;

            palettes.Transitions = new TColourPalette[0];

            if (raptorClient.GetMachineCCAColourPalettes(request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID, request.assetId, request.startUtc, request.endUtc, request.liftId, out palettes))
            {
                if (palettes.Transitions.Length == 0)
                {
                    throw new ServiceException(HttpStatusCode.BadRequest,
                                               new ContractExecutionResult(ContractExecutionStatesEnum.InternalProcessingError,
                                                                           "Failed to process CCA data colour palettes request sent to Raptor."));
                }

                return(new CCAColorPaletteResult(RaptorConverters.convertColorPalettes(palettes.Transitions)));
            }

            throw new ServiceException(HttpStatusCode.BadRequest,
                                       new ContractExecutionResult(ContractExecutionStatesEnum.InternalProcessingError,
                                                                   "Failed to process CCA data colour palettes request."));
        }
예제 #2
0
        public async Task <CCAColorPaletteResult> Get(
            [FromQuery] long projectId,
            [FromQuery] long assetId,
            [FromQuery] DateTime?startUtc = null,
            [FromQuery] DateTime?endUtc   = null,
            [FromQuery] int?liftId        = null,
            [FromQuery] Guid?assetUid     = null)
        {
            log.LogInformation("Get: " + Request.QueryString);

            var projectUid = await((RaptorPrincipal)User).GetProjectUid(projectId);
            var request    = CCAColorPaletteRequest.CreateCCAColorPaletteRequest(projectId, assetId, startUtc, endUtc, liftId, projectUid, assetUid);

            request.Validate();
            return(await RequestExecutorContainerFactory.Build <CCAColorPaletteExecutor>(logger,
#if RAPTOR
                                                                                         raptorClient,
#endif
                                                                                         configStore : configurationStore,
                                                                                         trexCompactionDataProxy : TRexCompactionDataProxy,
                                                                                         userId : UserId, fileImportProxy : FileImportProxy).ProcessAsync(request) as CCAColorPaletteResult);
        }
예제 #3
0
        public async Task <CompactionDetailPaletteResult> GetCCAPalette(
            [FromQuery] Guid projectUid,
            [FromQuery] Guid filterUid)
        {
            Log.LogInformation($"{nameof(GetCCAPalette)}: " + Request.QueryString);

            var filterTask    = GetCompactionFilter(projectUid, filterUid);
            var projectIdTask = GetLegacyProjectId(projectUid);

            await Task.WhenAll(filterTask, projectIdTask);

            //Quickest for now to use old Landfill executor
            var filter = filterTask.Result;

            if (filter?.ContributingMachines?.Count != 1)
            {
                throw new ServiceException(HttpStatusCode.BadRequest,
                                           new ContractExecutionResult(ContractExecutionStatesEnum.ValidationError,
                                                                       "CCA palette requires one and only one machine filter"));
            }
            var machine = filter.ContributingMachines[0];
            var request = CCAColorPaletteRequest.CreateCCAColorPaletteRequest(projectIdTask.Result, machine.AssetId, filter.StartUtc, filter.EndUtc, filter.LayerNumber, projectUid, machine.AssetUid);

            request.Validate();
            var palette = await RequestExecutorContainerFactory.Build <CCAColorPaletteExecutor>(LoggerFactory,
#if RAPTOR
                                                                                                RaptorClient,
#endif
                                                                                                configStore : ConfigStore,
                                                                                                trexCompactionDataProxy : TRexCompactionDataProxy,
                                                                                                userId : GetUserId(), fileImportProxy : FileImportProxy).ProcessAsync(request) as CCAColorPaletteResult;

            return(CompactionDetailPaletteResult.CreateCompactionDetailPaletteResult(
                       DetailPalette.CreateDetailPalette(
                           palette.Palettes.Select(x => ColorValue.CreateColorValue(x.Color, x.Value)).ToList(),
                           0, null)));//black for too thick
        }