public static ProjectDatabaseModel ConvertCwsToWorksOSProject(ProjectDetailResponseModel project, ILogger log) { log.LogInformation($"{nameof(ConvertCwsToWorksOSProject)} project {JsonConvert.SerializeObject(project)}"); var extractedCalibrationFileOk = false; var coordinateSystemFileName = string.Empty; DateTime?coordinateSystemLastActionedUtc = null; if (project.ProjectSettings?.Config != null && project.ProjectSettings.Config.Any()) { extractedCalibrationFileOk = ExtractCalibrationFileDetails(project.ProjectSettings.Config, out coordinateSystemFileName, out coordinateSystemLastActionedUtc); } if (project.ProjectSettings?.Boundary == null || project.ProjectSettings?.TimeZone == null) { log.LogInformation($"{nameof(ConvertCwsToWorksOSProject)} contains no boundary or timezone"); } if (!extractedCalibrationFileOk) { log.LogInformation($"{nameof(ConvertCwsToWorksOSProject)} contains no calibrationFile."); } var projectDatabaseModel = new ProjectDatabaseModel() { ProjectUID = project.ProjectId, CustomerUID = project.AccountId, Name = project.ProjectName, ProjectType = project.ProjectType, UserProjectRole = project.UserProjectRole, ProjectTimeZone = project.ProjectSettings != null?PreferencesTimeZones.IanaToWindows(project.ProjectSettings.TimeZone) : string.Empty, ProjectTimeZoneIana = project.ProjectSettings?.TimeZone, Boundary = project.ProjectSettings?.Boundary != null?GeometryConversion.ProjectBoundaryToWKT(project.ProjectSettings.Boundary) : string.Empty, CoordinateSystemFileName = coordinateSystemFileName, CoordinateSystemLastActionedUTC = coordinateSystemLastActionedUtc, IsArchived = project.Status == ProjectStatus.Archived, LastActionedUTC = project.LastUpdate ?? DateTime.UtcNow }; return(projectDatabaseModel); }
public void MapProjectToV6Result() { var project = new ProjectDatabaseModel { ProjectUID = Guid.NewGuid().ToString(), ProjectType = CwsProjectType.AcceptsTagFiles, Name = "the Name", ProjectTimeZone = "NZ stuff", ProjectTimeZoneIana = "Pacific stuff", CustomerUID = Guid.NewGuid().ToString(), Boundary = "POLYGON((172.595831670724 -43.5427038560109,172.594630041089 -43.5438859356773,172.59329966542 -43.542486101965, 172.595831670724 -43.5427038560109))", CoordinateSystemFileName = "", CoordinateSystemLastActionedUTC = new DateTime(2017, 01, 21), IsArchived = false, LastActionedUTC = new DateTime(2017, 01, 21) }; var result = AutoMapperUtility.Automapper.Map <ProjectV6Descriptor>(project); Assert.Equal(project.ProjectUID, result.ProjectUid); Assert.Equal(new Guid(project.ProjectUID).ToLegacyId(), result.ShortRaptorProjectId); Assert.Equal(project.ProjectType, result.ProjectType); Assert.Equal(project.Name, result.Name); Assert.Equal(project.ProjectTimeZone, result.ProjectTimeZone); Assert.Equal(project.ProjectTimeZoneIana, result.IanaTimeZone); Assert.Equal(project.CustomerUID, result.CustomerUid); Assert.Equal(project.Boundary, result.ProjectGeofenceWKT); Assert.False(result.IsArchived, "IsArchived has not been mapped correctly"); // just make a copy var copyOfProject = AutoMapperUtility.Automapper.Map <ProjectDatabaseModel>(project); Assert.Equal(project.ProjectUID, copyOfProject.ProjectUID); Assert.Equal(project.ShortRaptorProjectId, copyOfProject.ShortRaptorProjectId); }