Esempio n. 1
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);
        }
Esempio n. 2
0
        // Need to obtain 1 polygon which this device (DeviceTRN) lat/long lies within
        public ProjectDataResult GetIntersectingProjectsForDevice(GetProjectUidsRequest request, DeviceData device, out int errorCode)
        {
            errorCode = 0;
            var deviceProjects = new ProjectDataResult();

            if (device == null || string.IsNullOrEmpty(device.CustomerUID) || string.IsNullOrEmpty(device.DeviceUID))
            {
                return(deviceProjects);
            }

            // returns whatever the cws rules mandate, and any conditions in projectSvc e.g. non-archived and 3dp-enabled type
            try
            {
                deviceProjects = _deviceProxy.GetProjectsForDevice(device.DeviceUID, _mergedCustomHeaders).Result;
                _log.LogDebug($"{nameof(GetIntersectingProjectsForDevice)}: deviceProjects {JsonConvert.SerializeObject(deviceProjects)}");

                if (deviceProjects?.Code != 0 || !deviceProjects.ProjectDescriptors.Any())
                {
                    errorCode = 48;
                    return(deviceProjects);
                }

                var intersectingProjects = new ProjectDataResult();
                foreach (var project in deviceProjects.ProjectDescriptors)
                {
                    if (project.ProjectType.HasFlag(CwsProjectType.AcceptsTagFiles) &&
                        !project.IsArchived)
                    {
                        if (!request.HasLatLong && request.HasNE && request.Northing != null && request.Easting != null)
                        {
                            var convertedLL = this.ConvertNEtoLL(project.ProjectUID, request.Northing.Value, request.Easting.Value).Result;
                            if (convertedLL != null)
                            {
                                request.Longitude = convertedLL.ConversionCoordinates[0].X;
                                request.Latitude  = convertedLL.ConversionCoordinates[0].Y;
                            }
                        }
                        if (request.HasLatLong && PolygonUtils.PointInPolygon(project.ProjectGeofenceWKT, request.Latitude, request.Longitude))
                        {
                            intersectingProjects.ProjectDescriptors.Add(project);
                        }
                    }
                }
                if (!intersectingProjects.ProjectDescriptors.Any())
                {
                    errorCode = 44;
                }
                return(intersectingProjects);
            }
            catch (Exception e)
            {
                throw new ServiceException(HttpStatusCode.InternalServerError,
                                           TagFileProcessingErrorResult.CreateTagFileProcessingErrorResult(false,
                                                                                                           ContractExecutionStatesEnum.InternalProcessingError, 17, "device", e.Message));
            }
        }
Esempio n. 3
0
        public async Task TRexExecutor_Auto_Happy_CBdevice_TooManyProjects()
        {
            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 projectOfInterest2 = new ProjectData
            {
                ProjectUID         = Guid.NewGuid().ToString(),
                ProjectType        = CwsProjectType.AcceptsTagFiles,
                CustomerUID        = projectAccountUid,
                IsArchived         = false,
                ProjectGeofenceWKT = projectBoundary
            };

            var getProjectUidsRequest = new GetProjectUidsRequest(string.Empty, "CB450Serial", insideLat, insideLong);

            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, projectOfInterest2
                }
            };

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

            await ExecuteAuto
                (getProjectUidsRequest,
                platformSerialDevice, projectListForPlatformSerial,
                null,
                expectedResult, expectedCode : 3049, expectedMessage : ContractExecutionStatesEnum.FirstNameWithOffset(49)
                );
        }
Esempio n. 4
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"
                );
        }
Esempio n. 5
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"
                );
        }
Esempio n. 6
0
        public async Task TRexExecutor_Manual_Happy_ProjectAndDevice()
        {
            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 getProjectUidsRequest = new GetProjectUidsRequest(projectUid, "ec520Serial", insideLat, insideLong);
            var projectForProjectUid  = projectOfInterest;

            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 ExecuteManual
                (getProjectUidsRequest, projectForProjectUid,
                platformSerialDevice, projectListForPlatformSerial,
                null,
                expectedResult, expectedCode : 0, expectedMessage : "success"
                );
        }
Esempio n. 7
0
        public async Task TRexExecutor_Auto_Happy_CBdevice_WithNoProject()
        {
            var projectUid        = Guid.NewGuid().ToString();
            var projectAccountUid = Guid.NewGuid().ToString();

            var getProjectUidsRequest = new GetProjectUidsRequest(string.Empty, "cb460serial", 91, 181);

            var platformSerialDeviceUid  = Guid.NewGuid().ToString();
            var platformSerialAccountUid = Guid.NewGuid().ToString();
            var platformSerialDevice     = new DeviceData {
                CustomerUID = platformSerialAccountUid, DeviceUID = platformSerialDeviceUid
            };
            var projectListForPlatformSerial = new ProjectDataResult();

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

            await ExecuteAuto
                (getProjectUidsRequest,
                platformSerialDevice, projectListForPlatformSerial,
                null,
                expectedResult, expectedCode : 3048, expectedMessage : ContractExecutionStatesEnum.FirstNameWithOffset(48)
                );
        }
Esempio n. 8
0
        public async Task TRexExecutor_Manual_Happy_ProjectArchived()
        {
            var projectUid        = Guid.NewGuid().ToString();
            var projectAccountUid = Guid.NewGuid().ToString();
            var projectOfInterest = new ProjectData
            {
                ProjectUID  = projectUid,
                ProjectType = CwsProjectType.AcceptsTagFiles,
                CustomerUID = projectAccountUid,
                IsArchived  = true
            };

            var getProjectUidsRequest = new GetProjectUidsRequest(projectUid, "CB450", 91, 181);
            var projectForProjectUid  = projectOfInterest;

            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 ExecuteManual
                (getProjectUidsRequest, projectForProjectUid,
                platformSerialDevice, projectListForPlatformSerial,
                null,
                expectedResult, expectedCode : 3043, expectedMessage : ContractExecutionStatesEnum.FirstNameWithOffset(43)
                );
        }
Esempio n. 9
0
        public async Task TRexExecutor_Auto_Sad_EC520device_DeviceNotActive()
        {
            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 getProjectUidsRequest = new GetProjectUidsRequest(string.Empty, "cb450serial", 91, 181);

            var platformSerialDeviceUid  = Guid.NewGuid().ToString();
            var platformSerialAccountUid = Guid.NewGuid().ToString();
            var platformSerialDevice     = new DeviceData {
                Code = 100, Message = "Unable to locate device by serialNumber in cws"
            };
            var projectListForPlatformSerial = new ProjectDataResult()
            {
                ProjectDescriptors = new List <ProjectData>()
                {
                    projectOfInterest
                }
            };

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

            await ExecuteAuto
                (getProjectUidsRequest,
                platformSerialDevice, projectListForPlatformSerial,
                null,
                expectedResult, expectedCode : 3100, expectedMessage : "Unable to locate device by serialNumber in cws"
                );
        }