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); }
// 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)); } }
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) ); }
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" ); }
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" ); }
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" ); }
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) ); }
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) ); }
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" ); }