Пример #1
0
        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);
        }
Пример #2
0
        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);
        }