Ejemplo n.º 1
0
            public void Should_set_MachineDirection_From_ForwardDirection_value(bool?forwardDirection, TICMachineDirection expectedState)
            {
                var filterResult = new FilterResult(filter: CreateFilter(forwardDirection: forwardDirection));
                var result       = RaptorConverters.ConvertFilter(filterResult);

                Assert.AreEqual(expectedState, result.MachineDirection);
            }
Ejemplo n.º 2
0
            public void Should_return_Default_filter_When_input_filter_is_null()
            {
                var result = RaptorConverters.ConvertFilter(null);

                Assert.IsNotNull(result);
                Assert.IsTrue(TFilterLayerMethod.flmAutoMapReset == result.LayerMethod);
            }
Ejemplo n.º 3
0
            public void Should_set_GCSGuidanceMode_From_AutomaticsType_value(AutomaticsType automaticsType, TGCSAutomaticsMode automaticsMode)
            {
                var filterResult = new FilterResult(filter: CreateFilter(automaticsType: automaticsType));
                var result       = RaptorConverters.ConvertFilter(filterResult);

                Assert.AreEqual(automaticsMode, result.GCSGuidanceMode);
            }
Ejemplo n.º 4
0
            public void Should_set_DesignNameID_From_OnMachineDesignId_value(long machineDesignId, int expectedValue)
            {
                var filterResult = new FilterResult(filter: CreateFilter(machineDesignId));
                var result       = RaptorConverters.ConvertFilter(filterResult);

                Assert.AreEqual(expectedValue, result.DesignNameID);
            }
Ejemplo n.º 5
0
        private ContractExecutionResult ProcessWithRaptor(ExportReport request)
        {
            var raptorFilter = RaptorConverters.ConvertFilter(request.Filter, request.ProjectId, raptorClient);

            bool success = raptorClient.GetProductionDataExport(request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                                                                ASNodeRPC.__Global.Construct_TASNodeRequestDescriptor(request.CallId ?? Guid.NewGuid(), 0,
                                                                                                                      TASNodeCancellationDescriptorType.cdtProdDataExport),
                                                                RaptorConverters.convertToRaptorUserPreferences(request.UserPrefs), (int)request.ExportType, request.CallerId, raptorFilter,
                                                                RaptorConverters.ConvertLift(request.LiftBuildSettings, raptorFilter.LayerMethod),
                                                                request.TimeStampRequired, request.CellSizeRequired, request.RawData, request.RestrictSize, true,
                                                                request.Tolerance, request.IncludeSurveydSurface,
                                                                request.Precheckonly, request.Filename, RaptorConverters.convertToRaptorMachines(request.MachineList), (int)request.CoordType, (int)request.OutputType,
                                                                request.DateFromUTC, request.DateToUTC,
                                                                RaptorConverters.convertToRaptorTranslations(request.Translations),
                                                                RaptorConverters.convertToRaptorProjectExtents(request.ProjectExtents), out var dataexport);

            if (success)
            {
                try
                {
                    return(ExportResult.Create(
                               File.ReadAllBytes(BuildFilePath(request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID, request.CallerId, request.Filename, true)),
                               dataexport.ReturnCode));
                }
                catch (Exception ex)
                {
                    throw new ServiceException(HttpStatusCode.NoContent,
                                               new ContractExecutionResult(ContractExecutionStatesEnum.ValidationError,
                                                                           "Failed to retrieve received export data: " + ex.Message));
                }
            }

            throw CreateServiceException <ExportReportExecutor>(dataexport.ReturnCode);
        }
Ejemplo n.º 6
0
        protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item)
        {
            var request = item as ProjectStatisticsMultiRequest;

            log.LogInformation($"ProjectStatisticsExecutor: {JsonConvert.SerializeObject(request)}, UseTRexGateway: {UseTRexGateway("ENABLE_TREX_GATEWAY_PROJECTSTATISTICS")}");

#if RAPTOR
            if (UseTRexGateway("ENABLE_TREX_GATEWAY_PROJECTSTATISTICS") && request.ProjectUid != null)
#endif
            {
                var tRexRequest =
                    new ProjectStatisticsTRexRequest(request.ProjectUid.Value, request.ExcludedSurveyedSurfaceUids);
                var result = await trexCompactionDataProxy.SendDataPostRequest <ProjectStatisticsResult, ProjectStatisticsTRexRequest>(
                    tRexRequest, $"/sitemodels/statistics", customHeaders);

                if (!result.extents.ValidExtents)
                {
                    result.Empty();
                }
                return(result);
            }
#if RAPTOR
            bool success = raptorClient.GetDataModelStatistics(
                request.ProjectId,
                RaptorConverters.convertSurveyedSurfaceExlusionList(request.ExcludedSurveyedSurfaceIds),
                out var statistics);

            if (success)
            {
                return(ConvertProjectStatistics(statistics));
            }
#endif

            throw CreateServiceException <ProjectStatisticsExecutor>();
        }
Ejemplo n.º 7
0
        private CellPassesV2Result GetRaptorResult(CellPassesRequest request)
        {
            bool   isGridCoord  = request.probePositionGrid != null;
            bool   isLatLgCoord = request.probePositionLL != null;
            double probeX       = isGridCoord ? request.probePositionGrid.x : (isLatLgCoord ? request.probePositionLL.Lon : 0);
            double probeY       = isGridCoord ? request.probePositionGrid.y : (isLatLgCoord ? request.probePositionLL.Lat : 0);

            var raptorFilter = RaptorConverters.ConvertFilter(request.filter, request.ProjectId, raptorClient, overrideAssetIds: new List <long>());

            int code = raptorClient.RequestCellProfile
                           (request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                           RaptorConverters.convertCellAddress(request.cellAddress ?? new CellAddress()),
                           probeX, probeY,
                           isGridCoord,
                           RaptorConverters.ConvertLift(request.liftBuildSettings, raptorFilter.LayerMethod),
                           request.gridDataType,
                           raptorFilter,
                           out var profile);


            if (code == 1)//TICServerRequestResult.icsrrNoError
            {
                return(ConvertRaptorResult(profile));
            }

            return(null);
        }
Ejemplo n.º 8
0
        public void PD_PostProfileProductionDataFailed()
        {
            ProfileProductionDataRequest request = CreateRequest();
            MemoryStream raptorResult            = null;

            Assert.IsTrue(RaptorConverters.DesignDescriptor(request.AlignmentDesign).IsNull(), "A linear profile expected.");

            ProfilesHelper.ConvertProfileEndPositions(request.GridPoints, request.WGS84Points, out TWGS84Point startPt, out var endPt, out bool positionsAreGrid);

            TASNodeServiceRPCVerb_RequestProfile_Args args
                = __Global.Construct_RequestProfile_Args
                      (request.ProjectId.Value,
                      -1, // don't care
                      positionsAreGrid,
                      startPt,
                      endPt,
                      RaptorConverters.ConvertFilter(request.Filter),
                      RaptorConverters.ConvertLift(request.LiftBuildSettings, TFilterLayerMethod.flmAutomatic),
                      RaptorConverters.DesignDescriptor(request.AlignmentDesign),
                      request.ReturnAllPassesAndLayers);

            // Create the mock PDSClient with successful result...
            var mockRaptorClient = new Mock <IASNodeClient>();
            var mockLogger       = new Mock <ILoggerFactory>();
            var mockConfigStore  = new Mock <IConfigurationStore>();

            mockRaptorClient.Setup(prj => prj.GetProfile(It.IsAny <TASNodeServiceRPCVerb_RequestProfile_Args>() /*args*/)).Returns(raptorResult);

            // Create an executor...
            var executor = RequestExecutorContainerFactory.Build <ProfileProductionDataExecutor>(mockLogger.Object, mockRaptorClient.Object, configStore: mockConfigStore.Object);

            Assert.ThrowsExceptionAsync <ServiceException>(async() => await executor.ProcessAsync(request));
        }
Ejemplo n.º 9
0
        public void CompactionCellDatumExecutorNoResult()
        {
            var request =
                new CellDatumRequest(0, null, DisplayMode.CompactionCoverage, null, null, null, null, null);

            TCellProductionData data = new TCellProductionData();

            var raptorClient = new Mock <IASNodeClient>();
            var configStore  = new Mock <IConfigurationStore>();

            raptorClient.Setup(x => x.GetCellProductionData(
                                   request.ProjectId.Value,
                                   (int)RaptorConverters.convertDisplayMode(request.DisplayMode),
                                   request.GridPoint != null ? request.GridPoint.x : 0.0,
                                   request.GridPoint != null ? request.GridPoint.y : 0.0,
                                   It.IsAny <TWGS84Point>(),
                                   request.LLPoint == null,
                                   It.IsAny <TICFilterSettings>(),
                                   It.IsAny <TICLiftBuildSettings>(),
                                   It.IsAny <TVLPDDesignDescriptor>(),
                                   out data))
            .Returns(false);

            var executor = RequestExecutorContainerFactory
                           .Build <CompactionCellDatumExecutor>(logger, raptorClient.Object, configStore: configStore.Object);

            Assert.ThrowsExceptionAsync <ServiceException>(async() => await executor.ProcessAsync(request));
        }
Ejemplo n.º 10
0
        public void CompactionCellDatumExecutorSuccessNoNECoordinates()
        {
            var request =
                new CellDatumRequest(0, null, DisplayMode.CCV, new WGSPoint(0.84, -1.75), null, null, null, null);

            TCellProductionData data = new TCellProductionData
            {
                DisplayMode = (int)request.DisplayMode,
                Value       = 500,
                ReturnCode  = 0
            };

            var raptorClient = new Mock <IASNodeClient>();
            var configStore  = new Mock <IConfigurationStore>();

            raptorClient.Setup(x => x.GetCellProductionData(
                                   request.ProjectId.Value,
                                   (int)RaptorConverters.convertDisplayMode(request.DisplayMode),
                                   request.GridPoint != null ? request.GridPoint.x : 0.0,
                                   request.GridPoint != null ? request.GridPoint.y : 0.0,
                                   It.IsAny <TWGS84Point>(),
                                   request.LLPoint == null,
                                   It.IsAny <TICFilterSettings>(),
                                   It.IsAny <TICLiftBuildSettings>(),
                                   It.IsAny <TVLPDDesignDescriptor>(),
                                   out data))
            .Returns(true);

            var executor = RequestExecutorContainerFactory
                           .Build <CompactionCellDatumExecutor>(logger, raptorClient.Object, configStore: configStore.Object);

            Assert.ThrowsExceptionAsync <ServiceException>(async() => await executor.ProcessAsync(request), "On Cell Datum request. Failed to process coordinate conversion request.");
        }
Ejemplo n.º 11
0
            public void Should_set_ElevationType_From_ElevationType_value(ElevationType elevationType, TICElevationType expectedElevationType)
            {
                var filterResult = new FilterResult(filter: CreateFilter(elevationType: elevationType));
                var result       = RaptorConverters.ConvertFilter(filterResult);

                Assert.AreEqual(expectedElevationType, result.ElevationType);
            }
Ejemplo n.º 12
0
            public void Should_set_VibeState_From_VibeStateOn_value(bool vibeStateOn, TICVibrationState expectedState)
            {
                var filterResult = new FilterResult(filter: CreateFilter(vibeStateOn: vibeStateOn));
                var result       = RaptorConverters.ConvertFilter(filterResult);

                Assert.AreEqual(expectedState, result.VibeState);
            }
Ejemplo n.º 13
0
 protected virtual CellDatumResult ConvertCellDatumResult(TCellProductionData result)
 {
     return(new CellDatumResult(
                RaptorConverters.convertDisplayMode((TICDisplayMode)result.DisplayMode),
                (CellDatumReturnCode)result.ReturnCode,
                result.ReturnCode == 0 ? result.Value : (double?)null,
                result.TimeStampUTC));
 }
Ejemplo n.º 14
0
 protected override CellDatumResult ConvertCellDatumResult(TCellProductionData result)
 {
     return(new CompactionCellDatumResult(
                RaptorConverters.convertDisplayMode((TICDisplayMode)result.DisplayMode),
                (CellDatumReturnCode)result.ReturnCode,
                result.ReturnCode == 0 ? result.Value : (double?)null,
                result.TimeStampUTC,
                _northing,
                _easting));
 }
Ejemplo n.º 15
0
        public void CompactionReportStationOffsetExecutor_Raptor_NoResult()
        {
            var userPreferences = new UserPreferenceData {
                Language = "en-US"
            };
            var request = CompactionReportStationOffsetRequest.CreateRequest(
                33, null, null, 0, null, true, true, true, true, true, true, null, null, 0, 0, 0, null, userPreferences, "New Zealand Standard Time");
            var filterSettings          = RaptorConverters.ConvertFilter(request.Filter);
            var cutfillDesignDescriptor = RaptorConverters.DesignDescriptor(request.DesignFile);
            var alignmentDescriptor     = RaptorConverters.DesignDescriptor(request.AlignmentFile);
            var TASNodeUserPreference   = ExportRequestHelper.ConvertToRaptorUserPreferences(request.UserPreferences, request.ProjectTimezone);

            var options = RaptorConverters.convertOptions(null, request.LiftBuildSettings, 0,
                                                          request.Filter?.LayerType ?? FilterLayerMethod.None, DisplayMode.Height, false);

            var mockConfigStore = new Mock <IConfigurationStore>();

            mockConfigStore.Setup(x => x.GetValueBool("ENABLE_TREX_GATEWAY_STATIONOFFSET")).Returns(false);

            MemoryStream responseData;

            var raptorClient = new Mock <IASNodeClient>();

            var args = ASNode.StationOffsetReport.RPC.__Global.Construct_StationOffsetReport_Args(
                request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                (int)CompactionReportType.StationOffset,
                ASNodeRPC.__Global.Construct_TASNodeRequestDescriptor(Guid.NewGuid(), 0,
                                                                      TASNodeCancellationDescriptorType.cdtProdDataReport),
                TASNodeUserPreference,
                alignmentDescriptor,
                cutfillDesignDescriptor,
                request.StartStation,
                request.EndStation,
                request.Offsets,
                request.CrossSectionInterval,
                request.ReportElevation,
                request.ReportCutFill,
                request.ReportCMV,
                request.ReportMDP,
                request.ReportPassCount,
                request.ReportTemperature,
                (int)GridReportOption.Unused,
                0, 0, 0, 0, 0, 0, 0, // Northings, Eastings and Direction values are not used on Station Offset report.
                filterSettings,
                RaptorConverters.ConvertLift(request.LiftBuildSettings, filterSettings.LayerMethod),
                options
                );

            raptorClient.Setup(x => x.GetReportStationOffset(args, out responseData)).Returns(0); // icsrrUnknownError
            var executor = RequestExecutorContainerFactory
                           .Build <CompactionReportStationOffsetExecutor>(_logger, raptorClient.Object, configStore: mockConfigStore.Object);

            Assert.ThrowsExceptionAsync <ServiceException>(async() => await executor.ProcessAsync(request));
        }
Ejemplo n.º 16
0
            public void Should_return_filter_with_correct_startUTC_When_overrideStartUTC_is_set()
            {
                var filter           = CreateFilter();
                var filterResult     = new FilterResult(filter: filter);
                var overrideStartUTC = new DateTime(2019, 1, 1);

                var result = RaptorConverters.ConvertFilter(filterResult, overrideStartUTC: overrideStartUTC);

                Assert.AreEqual(overrideStartUTC, result.StartTime.Value);
                Assert.IsNotNull(filter.StartUtc);
                Assert.AreNotEqual(filter.StartUtc.Value, result.StartTime.Value);
            }
Ejemplo n.º 17
0
        protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item)
        {
            try
            {
                var request = CastRequestObjectTo <CutFillDetailsRequest>(item);
#if RAPTOR
                if (UseTRexGateway("ENABLE_TREX_GATEWAY_CUTFILL"))
                {
#endif
                var trexRequest = new TRexCutFillDetailsRequest(
                    request.ProjectUid.Value,
                    request.CutFillTolerances,
                    request.Filter,
                    request.DesignDescriptor,
                    AutoMapperUtility.Automapper.Map <OverridingTargets>(request.LiftBuildSettings),
                    AutoMapperUtility.Automapper.Map <LiftSettings>(request.LiftBuildSettings));
                return(await trexCompactionDataProxy.SendDataPostRequest <CompactionCutFillDetailedResult, TRexCutFillDetailsRequest>(trexRequest, "/cutfill/details", customHeaders));

#if RAPTOR
            }

            var filter            = RaptorConverters.ConvertFilter(request.Filter, request.ProjectId, raptorClient);
            var designDescriptor  = RaptorConverters.DesignDescriptor(request.DesignDescriptor);
            var liftBuildSettings =
                RaptorConverters.ConvertLift(request.LiftBuildSettings, TFilterLayerMethod.flmNone);

            var raptorResult = raptorClient.GetCutFillDetails(request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                                                              ASNodeRPC.__Global.Construct_TASNodeRequestDescriptor(Guid.NewGuid(), 0, TASNodeCancellationDescriptorType.cdtCutfillDetailed),
                                                              new TCutFillSettings
            {
                Offsets          = request.CutFillTolerances,
                DesignDescriptor = designDescriptor
            }
                                                              ,
                                                              filter,
                                                              liftBuildSettings,
                                                              out var cutFillDetails);

            if (raptorResult == TASNodeErrorStatus.asneOK)
            {
                return(new CompactionCutFillDetailedResult(cutFillDetails.Percents));
            }

            throw CreateServiceException <CompactionCutFillExecutor>((int)raptorResult);
#endif
            }
            finally
            {
                ContractExecutionStates.ClearDynamic();
            }
        }
Ejemplo n.º 18
0
            public void Should_set_Machines_From_AssetIDs_list_When_ContributingMachines_is_null_or_empty(bool setContributingMachines)
            {
                var assetIds = new List <long> {
                    1, 2, 3, 5, 8, 13
                };
                var contributingMachines = setContributingMachines
          ? new List <MachineDetails>()
          : null;

                var filterResult = FilterResult.CreateFilterForCCATileRequest(assetIDs: assetIds, contributingMachines: contributingMachines);
                var result       = RaptorConverters.ConvertFilter(filterResult);

                Assert.IsTrue(result.Machines.Length == assetIds.Count);
            }
Ejemplo n.º 19
0
        private ContractExecutionResult ProcessWithRaptor(CompactionReportStationOffsetRequest request)
        {
            var filterSettings          = RaptorConverters.ConvertFilter(request.Filter, request.ProjectId, raptorClient);
            var cutfillDesignDescriptor = RaptorConverters.DesignDescriptor(request.DesignFile);
            var alignmentDescriptor     = RaptorConverters.DesignDescriptor(request.AlignmentFile);
            var userPreferences         =
                ExportRequestHelper.ConvertToRaptorUserPreferences(request.UserPreferences, request.ProjectTimezone);

            var options = RaptorConverters.convertOptions(null, request.LiftBuildSettings, 0,
                                                          request.Filter?.LayerType ?? FilterLayerMethod.None, DisplayMode.Height, false);

            log.LogDebug($"{nameof(ProcessWithRaptor)}: About to call GetReportStationOffset");

            var args = ASNode.StationOffsetReport.RPC.__Global.Construct_StationOffsetReport_Args(
                request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                (int)CompactionReportType.StationOffset,
                ASNodeRPC.__Global.Construct_TASNodeRequestDescriptor(Guid.NewGuid(), 0,
                                                                      TASNodeCancellationDescriptorType.cdtProdDataReport),
                userPreferences,
                alignmentDescriptor,
                cutfillDesignDescriptor,
                request.StartStation,
                request.EndStation,
                request.Offsets,
                request.CrossSectionInterval,
                request.ReportElevation,
                request.ReportCutFill,
                request.ReportCMV,
                request.ReportMDP,
                request.ReportPassCount,
                request.ReportTemperature,
                (int)GridReportOption.Unused,
                0, 0, 0, 0, 0, 0, 0, // Northings, Eastings and Direction values are not used on Station Offset report.
                filterSettings,
                RaptorConverters.ConvertLift(request.LiftBuildSettings, filterSettings.LayerMethod),
                options
                );

            int raptorResult = raptorClient.GetReportStationOffset(args, out var responseData);

            if (raptorResult == 1) // icsrrNoError
            {
                return(responseData.Length > 0
          ? ConvertStationOffsetResult(request, responseData)
          : CreateNullStationOffsetReturnedResult());
            }

            throw CreateServiceException <CompactionReportStationOffsetExecutor>();
        }
Ejemplo n.º 20
0
        private CompactionProfileResult <CompactionProfileCell> ProcessProductionDataWithRaptor(
            CompactionProfileProductionDataRequest request)
        {
            MemoryStream memoryStream;

            var filter              = RaptorConverters.ConvertFilter(request.Filter, request.ProjectId, raptorClient);
            var designDescriptor    = RaptorConverters.DesignDescriptor(request.CutFillDesignDescriptor);
            var alignmentDescriptor = RaptorConverters.DesignDescriptor(request.AlignmentDesign);
            var liftBuildSettings   =
                RaptorConverters.ConvertLift(request.LiftBuildSettings, TFilterLayerMethod.flmNone);

            ProfilesHelper.ConvertProfileEndPositions(request.GridPoints, request.WGS84Points, out var startPt, out var endPt,
                                                      out var positionsAreGrid);

            if (request.IsAlignmentDesign)
            {
                var args
                    = ASNode.RequestAlignmentProfile.RPC.__Global.Construct_RequestAlignmentProfile_Args
                          (request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                          ProfilesHelper.PROFILE_TYPE_NOT_REQUIRED,
                          request.StartStation ?? ValidationConstants3D.MIN_STATION,
                          request.EndStation ?? ValidationConstants3D.MIN_STATION,
                          alignmentDescriptor,
                          filter,
                          liftBuildSettings,
                          designDescriptor,
                          request.ReturnAllPassesAndLayers);

                memoryStream = raptorClient.GetAlignmentProfile(args);
            }
            else
            {
                var args
                    = ASNode.RequestProfile.RPC.__Global.Construct_RequestProfile_Args
                          (request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                          ProfilesHelper.PROFILE_TYPE_HEIGHT,
                          positionsAreGrid,
                          startPt,
                          endPt,
                          filter,
                          liftBuildSettings,
                          designDescriptor,
                          request.ReturnAllPassesAndLayers);

                memoryStream = raptorClient.GetProfile(args);
            }

            return(memoryStream != null?ConvertProfileResult(memoryStream, request.LiftBuildSettings) : null);
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Processes the summary CMV request by passing the request to Raptor and returning the result.
        /// </summary>
        protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item)
        {
            try
            {
                var request = CastRequestObjectTo <CMVRequest>(item);
#if RAPTOR
                if (configStore.GetValueBool("ENABLE_TREX_GATEWAY_CMV") ?? false)
                {
#endif
                await PairUpAssetIdentifiers(request.ProjectUid.Value, request.Filter);
                await PairUpImportedFileIdentifiers(request.ProjectUid.Value, filter1 : request.Filter);

                var cmvSummaryRequest = new CMVSummaryRequest(
                    request.ProjectUid.Value,
                    request.Filter,
                    request.CmvSettings.CmvTarget,
                    request.CmvSettings.OverrideTargetCMV,
                    request.CmvSettings.MaxCMVPercent,
                    request.CmvSettings.MinCMVPercent, AutoMapperUtility.Automapper.Map <LiftSettings>(request.LiftBuildSettings));
                log.LogDebug($"{nameof(SummaryCMVExecutor)} trexRequest {JsonConvert.SerializeObject(cmvSummaryRequest)}");

                return(await trexCompactionDataProxy.SendDataPostRequest <CMVSummaryResult, CMVSummaryRequest>(cmvSummaryRequest, "/cmv/summary", customHeaders));

#if RAPTOR
            }

            var raptorFilter = RaptorConverters.ConvertFilter(request.Filter, request.ProjectId, raptorClient, request.OverrideStartUTC, request.OverrideEndUTC, request.OverrideAssetIds);

            var raptorResult = raptorClient.GetCMVSummary(request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                                                          ASNodeRPC.__Global.Construct_TASNodeRequestDescriptor(request.CallId ?? Guid.NewGuid(), 0, TASNodeCancellationDescriptorType.cdtCMVSummary),
                                                          ConvertSettings(request.CmvSettings),
                                                          raptorFilter,
                                                          RaptorConverters.ConvertLift(request.LiftBuildSettings, raptorFilter.LayerMethod),
                                                          out var cmvSummary);

            if (raptorResult == TASNodeErrorStatus.asneOK)
            {
                return(ConvertResult(cmvSummary));
            }

            throw CreateServiceException <SummaryCMVExecutor>((int)raptorResult);
#endif
            }
            finally
            {
                ContractExecutionStates.ClearDynamic();
            }
        }
Ejemplo n.º 22
0
            public void Should_set_PassCountRange_From_PassCountRange_values(int?passCountRangeMin, int?passCountRangeMax)
            {
                var filterResult = new FilterResult(filter: CreateFilter(passCountRangeMin: passCountRangeMin, passCountRangeMax: passCountRangeMax));
                var result       = RaptorConverters.ConvertFilter(filterResult);

                if (!passCountRangeMin.HasValue || !passCountRangeMax.HasValue)
                {
                    Assert.AreEqual(0, result.PassCountRangeMin);
                    Assert.AreEqual(0, result.PassCountRangeMax);

                    return;
                }

                Assert.AreEqual(passCountRangeMin, result.PassCountRangeMin);
                Assert.AreEqual(passCountRangeMax, result.PassCountRangeMax);
            }
Ejemplo n.º 23
0
            public void Should_set_TemperatureRange_From_TemperatureRange_values(double?temperatureRangeMin, double?temperatureRangeMax)
            {
                var filterResult = new FilterResult(filter: CreateFilter(temperatureRangeMin: temperatureRangeMin, temperatureRangeMax: temperatureRangeMax));
                var result       = RaptorConverters.ConvertFilter(filterResult);

                if (!temperatureRangeMin.HasValue || !temperatureRangeMax.HasValue)
                {
                    Assert.AreEqual(4096, result.TemperatureRangeMin);
                    Assert.AreEqual(4096, result.TemperatureRangeMax);

                    return;
                }

                Assert.AreEqual((ushort)(temperatureRangeMin * 10), result.TemperatureRangeMin);
                Assert.AreEqual((ushort)(temperatureRangeMax * 10), result.TemperatureRangeMax);
            }
Ejemplo n.º 24
0
        protected virtual bool GetCellDatumData(CellDatumRequest request, out TCellProductionData data)
        {
            var raptorFilter = RaptorConverters.ConvertFilter(request.Filter, request.ProjectId, raptorClient);

            return(raptorClient.GetCellProductionData
                       (request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                       (int)RaptorConverters.convertDisplayMode(request.DisplayMode),
                       request.GridPoint?.x ?? 0,
                       request.GridPoint?.y ?? 0,
                       request.LLPoint != null ? RaptorConverters.ConvertWGSPoint(request.LLPoint) : new TWGS84Point(),
                       request.LLPoint == null,
                       raptorFilter,
                       RaptorConverters.ConvertLift(request.LiftBuildSettings, raptorFilter.LayerMethod),
                       RaptorConverters.DesignDescriptor(request.Design),
                       out data));
        }
Ejemplo n.º 25
0
        /// <summary>
        /// Sends a POST request to Production Data Server (PDS) client.
        /// </summary>
        /// <param name="item">POST request description.</param>
        /// <param name="surveyedSurfaces">Returned list of Surveyed Surfaces.</param>
        /// <returns>True if the processed request from PDS was successful, false - otherwise.</returns>
        protected override bool SendRequestToPdsClient(object item, out TSurveyedSurfaceDetails[] surveyedSurfaces)
        {
            var request = CastRequestObjectTo <SurveyedSurfaceRequest>(item);

            surveyedSurfaces = null;

            var args = ASNode.GroundSurface.RPC.__Global
                       .Construct_GroundSurface_Args(
                request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                request.SurveyedSurface.Id,
                request.SurveyedUtc,
                RaptorConverters.DesignDescriptor(request.SurveyedSurface)
                );

            return(raptorClient.StoreGroundSurfaceFile(args));
        }
Ejemplo n.º 26
0
        protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item)
        {
            try
            {
                var request = CastRequestObjectTo <CMVChangeSummaryRequest>(item);
#if RAPTOR
                if (UseTRexGateway("ENABLE_TREX_GATEWAY_CMV"))
                {
#endif
                await PairUpAssetIdentifiers(request.ProjectUid.Value, request.Filter);
                await PairUpImportedFileIdentifiers(request.ProjectUid.Value, filter1 : request.Filter);

                var cmvChangeDetailsRequest = new CMVChangeDetailsRequest(
                    request.ProjectUid.Value,
                    request.Filter,
                    request.CMVChangeSummaryValues,
                    AutoMapperUtility.Automapper.Map <OverridingTargets>(request.LiftBuildSettings),
                    AutoMapperUtility.Automapper.Map <LiftSettings>(request.LiftBuildSettings));
                return(await trexCompactionDataProxy.SendDataPostRequest <CMVChangeSummaryResult, CMVChangeDetailsRequest>(cmvChangeDetailsRequest, "/cmv/percentchange", customHeaders));

#if RAPTOR
            }
            new TASNodeCMVChangeResult();

            TASNodeCMVChangeSettings settings = new TASNodeCMVChangeSettings(request.CMVChangeSummaryValues);

            var raptorResult = raptorClient.GetCMVChangeSummary(request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                                                                ASNodeRPC.__Global.Construct_TASNodeRequestDescriptor(request.CallId ?? Guid.NewGuid(), 0,
                                                                                                                      TASNodeCancellationDescriptorType.cdtCMVChange),
                                                                settings,
                                                                RaptorConverters.ConvertFilter(request.Filter, request.ProjectId, raptorClient, overrideAssetIds: new List <long>()),
                                                                RaptorConverters.ConvertLift(request.LiftBuildSettings, TFilterLayerMethod.flmAutomatic),
                                                                out var result);

            if (raptorResult == TASNodeErrorStatus.asneOK)
            {
                return(ConvertResult(result));
            }

            throw CreateServiceException <CMVChangeSummaryExecutor>((int)raptorResult);
#endif
            }
            finally
            {
                ContractExecutionStates.ClearDynamic();
            }
        }
Ejemplo n.º 27
0
        protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item)
        {
            var request = CastRequestObjectTo <TemperatureDetailsRequest>(item);

            var temperatureTargets = request.Targets.Select(t => (int)t).ToArray(); // already converted to 10ths

#if RAPTOR
            if (UseTRexGateway("ENABLE_TREX_GATEWAY_TEMPERATURE"))
            {
#endif
            var temperatureDetailsRequest = new TemperatureDetailRequest(
                request.ProjectUid.Value,
                request.Filter,
                temperatureTargets,
                AutoMapperUtility.Automapper.Map <OverridingTargets>(request.LiftBuildSettings),
                AutoMapperUtility.Automapper.Map <LiftSettings>(request.LiftBuildSettings));

            var temperatureDetailsResult = await trexCompactionDataProxy.SendDataPostRequest <TemperatureDetailResult, TemperatureDetailRequest>(temperatureDetailsRequest, "/temperature/details", customHeaders);

            return(new CompactionTemperatureDetailResult(temperatureDetailsResult));

#if RAPTOR
        }

        var filter            = RaptorConverters.ConvertFilter(request.Filter, request.ProjectId, raptorClient);
        var liftBuildSettings =
            RaptorConverters.ConvertLift(request.LiftBuildSettings, TFilterLayerMethod.flmNone);

        var raptorResult = raptorClient.GetTemperatureDetails(request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                                                              ASNodeRPC.__Global.Construct_TASNodeRequestDescriptor(Guid.NewGuid(), 0, TASNodeCancellationDescriptorType.cdtTemperatureDetailed),
                                                              new TTemperatureDetailSettings
        {
            TemperatureList = temperatureTargets,
        }
                                                              ,
                                                              filter,
                                                              liftBuildSettings,
                                                              out var temperatureDetails);

        if (raptorResult == TASNodeErrorStatus.asneOK)
        {
            return(new CompactionTemperatureDetailResult(temperatureDetails.Percents));
        }

        throw CreateServiceException <DetailedTemperatureExecutor>((int)raptorResult);
#endif
        }
Ejemplo n.º 28
0
        /// <summary>
        /// Processes the detailed pass counts request by passing the request to Raptor and returning the result.
        /// </summary>
        protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item)
        {
            try
            {
                var request = CastRequestObjectTo <PassCounts>(item);
#if RAPTOR
                if (UseTRexGateway("ENABLE_TREX_GATEWAY_PASSCOUNT"))
                {
#endif
                await PairUpAssetIdentifiers(request.ProjectUid.Value, request.Filter);
                await PairUpImportedFileIdentifiers(request.ProjectUid.Value, filter1 : request.Filter);

                var pcDetailsRequest = new PassCountDetailsRequest(
                    request.ProjectUid.Value,
                    request.Filter,
                    request.passCountSettings.passCounts,
                    AutoMapperUtility.Automapper.Map <OverridingTargets>(request.liftBuildSettings),
                    AutoMapperUtility.Automapper.Map <LiftSettings>(request.liftBuildSettings));
                log.LogDebug($"{nameof(DetailedPassCountExecutor)} trexRequest {JsonConvert.SerializeObject(pcDetailsRequest)}");

                return(await trexCompactionDataProxy.SendDataPostRequest <PassCountDetailedResult, PassCountDetailsRequest>(pcDetailsRequest, "/passcounts/details", customHeaders));

#if RAPTOR
            }

            var raptorFilter = RaptorConverters.ConvertFilter(request.Filter, request.ProjectId, raptorClient, request.OverrideStartUTC, request.OverrideEndUTC, request.OverrideAssetIds);
            var raptorResult = raptorClient.GetPassCountDetails(request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                                                                ASNodeRPC.__Global.Construct_TASNodeRequestDescriptor((request.CallId ?? Guid.NewGuid()), 0,
                                                                                                                      TASNodeCancellationDescriptorType.cdtPassCountDetailed),
                                                                request.passCountSettings != null ? ConvertSettings(request.passCountSettings) : new TPassCountSettings(),
                                                                raptorFilter,
                                                                RaptorConverters.ConvertLift(request.liftBuildSettings, raptorFilter.LayerMethod),
                                                                out var passCountDetails);

            if (raptorResult == TASNodeErrorStatus.asneOK)
            {
                return(ConvertResult(passCountDetails, request.liftBuildSettings));
            }

            throw CreateServiceException <DetailedPassCountExecutor>((int)raptorResult);
#endif
            }
            finally
            {
                ContractExecutionStates.ClearDynamic();
            }
        }
Ejemplo n.º 29
0
        /// <summary>
        /// Processes the summary MDP request by passing the request to Raptor and returning the result.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="item"></param>
        /// <returns>a CMVSummaryResult if successful</returns>
        protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item)
        {
            try
            {
                var request = CastRequestObjectTo <MDPRequest>(item);
#if RAPTOR
                if (configStore.GetValueBool("ENABLE_TREX_GATEWAY_MDP") ?? false)
                {
#endif
                var mdpSummaryRequest = new MDPSummaryRequest(
                    request.ProjectUid.Value,
                    request.Filter,
                    request.MdpSettings.MdpTarget,
                    request.MdpSettings.OverrideTargetMDP,
                    request.MdpSettings.MaxMDPPercent,
                    request.MdpSettings.MinMDPPercent,
                    AutoMapperUtility.Automapper.Map <LiftSettings>(request.LiftBuildSettings));

                return(await trexCompactionDataProxy.SendDataPostRequest <MDPSummaryResult, MDPSummaryRequest>(mdpSummaryRequest, "/mdp/summary", customHeaders));

#if RAPTOR
            }

            string fileSpaceName = FileDescriptorExtensions.GetFileSpaceId(configStore, log);

            var raptorFilter = RaptorConverters.ConvertFilter(request.Filter, request.ProjectId, raptorClient, request.OverrideStartUtc, request.OverrideEndUtc, request.OverrideAssetIds, fileSpaceName);
            var raptorResult = raptorClient.GetMDPSummary(request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                                                          ASNodeRPC.__Global.Construct_TASNodeRequestDescriptor((request.CallId ?? Guid.NewGuid()), 0, TASNodeCancellationDescriptorType.cdtMDPSummary),
                                                          ConvertSettings(request.MdpSettings),
                                                          raptorFilter,
                                                          RaptorConverters.ConvertLift(request.LiftBuildSettings, raptorFilter.LayerMethod),
                                                          out var mdpSummary);

            if (raptorResult == TASNodeErrorStatus.asneOK)
            {
                return(ConvertResult(mdpSummary));
            }

            throw CreateServiceException <SummaryMDPExecutor>((int)raptorResult);
#endif
            }
            finally
            {
                ContractExecutionStates.ClearDynamic();
            }
        }
Ejemplo n.º 30
0
        private ProfileResult PerformProductionDataProfilePost(ProfileProductionDataRequest request)
        {
            MemoryStream memoryStream;

            if (request.IsAlignmentDesign)
            {
                var args = ASNode.RequestAlignmentProfile.RPC.__Global.Construct_RequestAlignmentProfile_Args(
                    request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                    ProfilesHelper.PROFILE_TYPE_NOT_REQUIRED,
                    request.StartStation ?? ValidationConstants3D.MIN_STATION,
                    request.EndStation ?? ValidationConstants3D.MIN_STATION,
                    RaptorConverters.DesignDescriptor(request.AlignmentDesign),
                    RaptorConverters.ConvertFilter(request.Filter, request.ProjectId, raptorClient),
                    RaptorConverters.ConvertLift(request.LiftBuildSettings, TFilterLayerMethod.flmAutomatic),
                    RaptorConverters.DesignDescriptor(request.AlignmentDesign),
                    request.ReturnAllPassesAndLayers);

                memoryStream = raptorClient.GetAlignmentProfile(args);
            }
            else
            {
                ProfilesHelper.ConvertProfileEndPositions(
                    request.GridPoints,
                    request.WGS84Points,
                    out VLPDDecls.TWGS84Point startPt,
                    out VLPDDecls.TWGS84Point endPt,
                    out bool positionsAreGrid);

                var args = ASNode.RequestProfile.RPC.__Global.Construct_RequestProfile_Args(
                    request.ProjectId ?? VelociraptorConstants.NO_PROJECT_ID,
                    ProfilesHelper.PROFILE_TYPE_NOT_REQUIRED,
                    positionsAreGrid,
                    startPt,
                    endPt,
                    RaptorConverters.ConvertFilter(request.Filter, request.ProjectId, raptorClient),
                    RaptorConverters.ConvertLift(request.LiftBuildSettings, TFilterLayerMethod.flmAutomatic),
                    RaptorConverters.DesignDescriptor(request.AlignmentDesign),
                    request.ReturnAllPassesAndLayers);

                memoryStream = raptorClient.GetProfile(args);
            }

            return(memoryStream != null
        ? ConvertProfileResult(memoryStream, request.CallId ?? Guid.NewGuid())
        : null); // TODO: return appropriate result
        }