Пример #1
0
        public async Task TRexExecutor_Manual_Happy_Project_NoValidPosition_Calculated()
        {
            var projectUid        = Guid.NewGuid().ToString();
            var projectAccountUid = Guid.NewGuid().ToString();
            var projectOfInterest = new ProjectData
            {
                ProjectUID         = projectUid,
                ProjectType        = CwsProjectType.AcceptsTagFiles,
                CustomerUID        = projectAccountUid,
                IsArchived         = false,
                ProjectGeofenceWKT = projectBoundary
            };

            var northing = 67.8;
            var easting  = 21.3;
            var getProjectUidsRequest      = new GetProjectUidsRequest(projectUid, "cb450serial", 0, 0, northing, easting);
            var coordinateConversionResult = new CoordinateConversionResult(new TwoDConversionCoordinate[0]);

            var projectForProjectUid = projectOfInterest;

            var platformSerialDevice         = (DeviceData)null;
            var projectListForPlatformSerial = (ProjectDataResult)null;

            var expectedResult = new GetProjectUidsResult(string.Empty, string.Empty, string.Empty);

            await ExecuteManual
                (getProjectUidsRequest, projectForProjectUid,
                platformSerialDevice, projectListForPlatformSerial,
                coordinateConversionResult,
                expectedResult, expectedCode : 3018, expectedMessage : "Manual Import: Unable to determine lat/long from northing/easting position"
                );
        }
Пример #2
0
        private async Task ExecuteManual(GetProjectUidsRequest request, ProjectData projectForProjectUid,
                                         DeviceData platformDevice, ProjectDataResult projectListForPlatform,
                                         CoordinateConversionResult coordinateConversionResult,
                                         GetProjectUidsResult expectedResult, int expectedCode, string expectedMessage
                                         )
        {
            projectProxy.Setup(p => p.GetProject(request.ProjectUid, It.IsAny <HeaderDictionary>())).ReturnsAsync(projectForProjectUid);

            deviceProxy.Setup(d => d.GetDevice(request.PlatformSerial, It.IsAny <HeaderDictionary>())).ReturnsAsync(platformDevice);
            if (platformDevice != null)
            {
                deviceProxy.Setup(d => d.GetProjectsForDevice(platformDevice.DeviceUID, It.IsAny <HeaderDictionary>())).ReturnsAsync(projectListForPlatform);
            }

            if (coordinateConversionResult != null)
            {
                tRexCompactionDataProxy.Setup(x => x.SendDataPostRequest <CoordinateConversionResult, CoordinateConversionRequest>(
                                                  It.IsAny <CoordinateConversionRequest>(),
                                                  It.IsAny <string>(),
                                                  It.IsAny <HeaderDictionary>(), false))
                .ReturnsAsync(coordinateConversionResult);
            }

            var executor = RequestExecutorContainer.Build <ProjectUidsExecutor>(
                _loggerFactory.CreateLogger <ProjectUidsExecutorManualTests>(), ConfigStore, authorization.Object,
                projectProxy.Object, deviceProxy.Object, tRexCompactionDataProxy.Object, requestCustomHeaders);
            var result = await executor.ProcessAsync(request) as GetProjectUidsResult;

            ValidateResult(result, expectedResult, expectedCode, expectedMessage);
        }
Пример #3
0
        public async Task TRexExecutor_Manual_Happy_Project_NoDevice_UsingNE()
        {
            var projectUid        = Guid.NewGuid().ToString();
            var projectAccountUid = Guid.NewGuid().ToString();
            var projectOfInterest = new ProjectData
            {
                ProjectUID         = projectUid,
                ProjectType        = CwsProjectType.AcceptsTagFiles,
                CustomerUID        = projectAccountUid,
                IsArchived         = false,
                ProjectGeofenceWKT = projectBoundary
            };

            var northing = 67.8;
            var easting  = 21.3;
            var getProjectUidsRequest = new GetProjectUidsRequest(projectUid, "cb460Serial", 0, 0, northing, easting);
            // expected convertNEtoLL result
            var points = new[] { new TwoDConversionCoordinate(insideLong.LonDegreesToRadians(), insideLat.LatDegreesToRadians()) };
            var coordinateConversionResult = new CoordinateConversionResult(points);

            var projectForProjectUid = projectOfInterest;

            var platformSerialDevice         = (DeviceData)null;
            var projectListForplatformSerial = (ProjectDataResult)null;

            var expectedResult = new GetProjectUidsResult(projectUid, string.Empty, string.Empty);

            await ExecuteManual
                (getProjectUidsRequest, projectForProjectUid,
                platformSerialDevice, projectListForplatformSerial,
                coordinateConversionResult,
                expectedResult, expectedCode : 0, expectedMessage : "success"
                );
        }
Пример #4
0
        public ContractExecutionResult TRexConvertNEtoLL([FromBody] CoordinateConversionRequest coordinateConversionRequest)
        {
            Logger.LogInformation($"{nameof(TRexConvertNEtoLL)}: coordinateConversionRequest {JsonConvert.SerializeObject(coordinateConversionRequest)}");
            var coordinateConversionResult = new CoordinateConversionResult(new TwoDConversionCoordinate[0]);

            if (coordinateConversionRequest.ProjectUid.HasValue && coordinateConversionRequest.ProjectUid.Value.ToString() == ConstantsUtil.DIMENSIONS_PROJECT_UID)
            {
                var points = new[] { new TwoDConversionCoordinate(180, 15) };
                coordinateConversionResult = new CoordinateConversionResult(points);
            }

            Logger.LogInformation($"{nameof(TRexConvertNEtoLL)}: CoordinateConversionResult {JsonConvert.SerializeObject(coordinateConversionResult)}");
            return(coordinateConversionResult);
        }
Пример #5
0
        public async Task TRexExecutor_Auto_Happy_EC520device_WithProject_UsingNE()
        {
            var projectUid        = Guid.NewGuid().ToString();
            var projectAccountUid = Guid.NewGuid().ToString();
            var projectOfInterest = new ProjectData
            {
                ProjectUID         = projectUid,
                ProjectType        = CwsProjectType.AcceptsTagFiles,
                CustomerUID        = projectAccountUid,
                IsArchived         = false,
                ProjectGeofenceWKT = projectBoundary
            };

            var northing = 67.8;
            var easting  = 21.3;
            var getProjectUidsRequest = new GetProjectUidsRequest(string.Empty, "ec520Serial", 0.0, 0.0, northing, easting);
            // expected convertNEtoLL result
            var points = new [] { new TwoDConversionCoordinate(insideLong.LonDegreesToRadians(), insideLat.LatDegreesToRadians()) };
            var coordinateConversionResult = new CoordinateConversionResult(points);

            var platformSerialDeviceUid  = Guid.NewGuid().ToString();
            var platformSerialAccountUid = Guid.NewGuid().ToString();
            var platformSerialDevice     = new DeviceData {
                CustomerUID = platformSerialAccountUid, DeviceUID = platformSerialDeviceUid
            };
            var projectListForPlatformSerial = new ProjectDataResult()
            {
                ProjectDescriptors = new List <ProjectData>()
                {
                    projectOfInterest
                }
            };

            var expectedResult = new GetProjectUidsResult(projectUid, platformSerialDeviceUid, platformSerialAccountUid);

            await ExecuteAuto
                (getProjectUidsRequest,
                platformSerialDevice, projectListForPlatformSerial,
                coordinateConversionResult,
                expectedResult, expectedCode : 0, expectedMessage : "success"
                );
        }
Пример #6
0
        private async Task <ProjectExtentsResult> FormatProjectExtentsResult(
            Guid projectUid, CoordinateConversionResult coordinateConversionResult)
        {
            Log.LogInformation($"{nameof(FormatProjectExtentsResult)}: {coordinateConversionResult}");
            var project = await((RaptorPrincipal)User).GetProject(projectUid);

            var returnResult = new ProjectExtentsResult
            {
                minLat = coordinateConversionResult.ConversionCoordinates[0].Y,
                minLng = coordinateConversionResult.ConversionCoordinates[0].X,
                maxLat = coordinateConversionResult.ConversionCoordinates[1].Y,
                maxLng = coordinateConversionResult.ConversionCoordinates[1].X
            };

            //In case we have rogue tag files distorting the extents, restrict to project boundary
            var projectPoints = CommonConverters.GeometryToPoints(project.ProjectGeofenceWKT).ToList();
            var projMinLat    = projectPoints.Min(p => p.Lat);
            var projMinLng    = projectPoints.Min(p => p.Lon);
            var projMaxLat    = projectPoints.Max(p => p.Lat);
            var projMaxLng    = projectPoints.Max(p => p.Lon);

            if (returnResult.minLat < projMinLat || returnResult.minLat > projMaxLat ||
                returnResult.maxLat < projMinLat || returnResult.maxLat > projMaxLat ||
                returnResult.minLng < projMinLng || returnResult.minLng > projMaxLng ||
                returnResult.maxLng < projMinLng || returnResult.maxLng > projMaxLng)
            {
                returnResult.minLat = projMinLat;
                returnResult.minLng = projMinLng;
                returnResult.maxLat = projMaxLat;
                returnResult.maxLng = projMaxLng;
            }

            //Convert to degrees to return
            returnResult.minLat = returnResult.minLat.LatRadiansToDegrees();
            returnResult.minLng = returnResult.minLng.LonRadiansToDegrees();
            returnResult.maxLat = returnResult.maxLat.LatRadiansToDegrees();
            returnResult.maxLng = returnResult.maxLng.LonRadiansToDegrees();

            Log.LogInformation("GetProjectExtents result: " + JsonConvert.SerializeObject(returnResult));
            return(returnResult);
        }
Пример #7
0
        public async Task TRexExecutor_Auto_Sad_EC520device_WithProject_NoValidPosition_Calculated()
        {
            var projectUid        = Guid.NewGuid().ToString();
            var projectAccountUid = Guid.NewGuid().ToString();
            var projectOfInterest = new ProjectData
            {
                ProjectUID         = projectUid,
                ProjectType        = CwsProjectType.AcceptsTagFiles,
                CustomerUID        = projectAccountUid,
                IsArchived         = false,
                ProjectGeofenceWKT = projectBoundary
            };

            var northing = 67.8;
            var easting  = 21.3;
            var getProjectUidsRequest      = new GetProjectUidsRequest(string.Empty, "ec520Serial", 0.0, 0.0, northing, easting);
            var coordinateConversionResult = new CoordinateConversionResult(new TwoDConversionCoordinate[0]);

            var platformSerialDeviceUid  = Guid.NewGuid().ToString();
            var platformSerialAccountUid = Guid.NewGuid().ToString();
            var platformSerialDevice     = new DeviceData {
                CustomerUID = platformSerialAccountUid, DeviceUID = platformSerialDeviceUid
            };
            var projectListForPlatformSerial = new ProjectDataResult()
            {
                ProjectDescriptors = new List <ProjectData>()
                {
                    projectOfInterest
                }
            };

            var expectedResult = new GetProjectUidsResult(string.Empty, platformSerialDeviceUid, platformSerialAccountUid);

            await ExecuteAuto
                (getProjectUidsRequest,
                platformSerialDevice, projectListForPlatformSerial,
                coordinateConversionResult,
                expectedResult, expectedCode : 3044, expectedMessage : "No projects found at the location provided"
                );
        }