public void ValidateMapToCreate() { var boundaryString = "POLYGON((172.6 -43.5,172.6 -43.5003,172.603 -43.5003,172.603 -43.5,172.6 -43.5))"; var csContent = "MDBUTVNDIFYxMC03MCAgICAgICAwICAgMDkvMDEvMjAyMCAxNToxOTExMzExMQ0KMTBUTVVudGl0bGVkIEpvYiAgICAxMjIyMTINCjc4VE0xMQ0KRDVUTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KRDhUTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo2NFRNMzM2LjIwNjU1NTM3MTAwMDAtMTE1LjAyNjI2NzgxODAwMC4wMDAwMDAwMDAwMDAwMDExMTkuNzQ4NDM3ODk2OTAyMTkzLjk3OTQ3Njc1OTAwMC4wMDAwMDAwMDAwMDAwMDEuMDAwMDg2NzIzMDAwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KNjVUTTYzNzgxMzcuMDAwMDAxMDAyOTguMjU3MjIyOTMyODkwDQo0OVRNMzYzNzgxMzcuMDAwMDAwMDAyOTguMjU3MjIzNTYzMDAwMC4wMDAwMDAwMDAwMDAwMDAuMDAwMDAwMDAwMDAwMDAwLjAwMDAwMDAwMDAwMDAwMC4wMDAwMDAwMDAwMDAwMDAuMDAwMDAwMDAwMDAwMDAwLjAwMDAwMDAwMDAwMDAwMC4wMDAwMDAwMDAwMDAwMA0KNTBUTTExOTguNzk3MzM5MDkwNzAyNDkxLjQ4Mjg5MTU0MTgwMC4wMDI2NjA5MDkzMjE4MDAuMDAwMTM3MTYwMjc0MzAwLjAwMTkwNzk5NzAwMDAwMS4wMDAwMTMwMTMwMDAwMA0KQzhUTTRTQ1M5MDAgTG9jYWxpemF0aW9uICAgICAgICAgICAgIFNDUzkwMCBSZWNvcmQgICAgICAgICAgICAgICAgICAgRGF0dW0gZnJvbSBEYXRhIENvbGxlY3RvciAgICAgICANCg=="; var csContentBase64 = "TURCVVRWTkRJRll4TUMwM01DQWdJQ0FnSUNBd0lDQWdNRGt2TURFdk1qQXlNQ0F4TlRveE9URXhNekV4TVEwS01UQlVUVlZ1ZEdsMGJHVmtJRXB2WWlBZ0lDQXhNakl5TVRJTkNqYzRWRTB4TVEwS1JEVlVUU0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBMEtSRGhVVFNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdEUW8yTkZSTk16TTJMakl3TmpVMU5UTTNNVEF3TURBdE1URTFMakF5TmpJMk56Z3hPREF3TUM0d01EQXdNREF3TURBd01EQXdNREV4TVRrdU56UTRORE0zT0RrMk9UQXlNVGt6TGprM09UUTNOamMxT1RBd01DNHdNREF3TURBd01EQXdNREF3TURFdU1EQXdNRGcyTnpJek1EQXdNREFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBMEtOalZVVFRZek56Z3hNemN1TURBd01EQXhNREF5T1RndU1qVTNNakl5T1RNeU9Ea3dEUW8wT1ZSTk16WXpOemd4TXpjdU1EQXdNREF3TURBeU9UZ3VNalUzTWpJek5UWXpNREF3TUM0d01EQXdNREF3TURBd01EQXdNREF1TURBd01EQXdNREF3TURBd01EQXdMakF3TURBd01EQXdNREF3TURBd01DNHdNREF3TURBd01EQXdNREF3TURBdU1EQXdNREF3TURBd01EQXdNREF3TGpBd01EQXdNREF3TURBd01EQXdNQzR3TURBd01EQXdNREF3TURBd01BMEtOVEJVVFRFeE9UZ3VOemszTXpNNU1Ea3dOekF5TkRreExqUTRNamc1TVRVME1UZ3dNQzR3TURJMk5qQTVNRGt6TWpFNE1EQXVNREF3TVRNM01UWXdNamMwTXpBd0xqQXdNVGt3TnprNU56QXdNREF3TVM0d01EQXdNVE13TVRNd01EQXdNQTBLUXpoVVRUUlRRMU01TURBZ1RHOWpZV3hwZW1GMGFXOXVJQ0FnSUNBZ0lDQWdJQ0FnSUZORFV6a3dNQ0JTWldOdmNtUWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdSR0YwZFcwZ1puSnZiU0JFWVhSaElFTnZiR3hsWTNSdmNpQWdJQ0FnSUNBTkNnPT0="; var projectValidation = new ProjectValidation { CustomerUid = new Guid("372854b8-64f8-4fd0-885f-d663503ffbca"), ProjectType = CwsProjectType.AcceptsTagFiles, ProjectName = "Beside Dimensions JeanieTest1", ProjectBoundaryWKT = boundaryString, UpdateType = ProjectUpdateType.Created, CoordinateSystemFileName = "myOne.dc", CoordinateSystemFileContent = System.Text.Encoding.ASCII.GetBytes(csContent) }; var createProjectRequestModel = AutoMapperUtility.Automapper.Map <CreateProjectRequestModel>(projectValidation); Assert.Equal(TRNHelper.MakeTRN(projectValidation.CustomerUid, TRNHelper.TRN_ACCOUNT), createProjectRequestModel.TRN); Assert.Equal(projectValidation.CustomerUid.ToString(), createProjectRequestModel.AccountId); Assert.Equal(projectValidation.ProjectName, createProjectRequestModel.ProjectName); Assert.Equal(projectValidation.ProjectType, createProjectRequestModel.ProjectType); Assert.Null(createProjectRequestModel.Timezone); Assert.Equal(GeometryConversion.MapProjectBoundary(projectValidation.ProjectBoundaryWKT).type, createProjectRequestModel.Boundary.type); Assert.Equal(GeometryConversion.MapProjectBoundary(projectValidation.ProjectBoundaryWKT).coordinates.Count, createProjectRequestModel.Boundary.coordinates.Count); Assert.Equal(GeometryConversion.MapProjectBoundary(projectValidation.ProjectBoundaryWKT).coordinates.ToArray(), createProjectRequestModel.Boundary.coordinates.ToArray()); Assert.Equal(projectValidation.CoordinateSystemFileName, createProjectRequestModel.CalibrationFileName); Assert.Equal(csContentBase64, createProjectRequestModel.CalibrationFileBase64Content); Assert.Equal(csContent, System.Text.Encoding.ASCII.GetString(Convert.FromBase64String(createProjectRequestModel.CalibrationFileBase64Content))); }
public static async Task <CreateProjectResponseModel> CreateCustomerProject(string customerUid, string name = "woteva", string boundary = "POLYGON((172.595831670724 -43.5427038560109,172.594630041089 -43.5438859356773,172.59329966542 -43.542486101965, 172.595831670724 -43.5427038560109))") { var createProjectRequestModel = new CreateProjectRequestModel { AccountId = customerUid, ProjectName = name, Boundary = GeometryConversion.MapProjectBoundary(boundary) }; var response = await CwsProjectClient.CreateProject(createProjectRequestModel); return(response); }
public void MapWKTToCWSFormat() { var cwsCoordinates = new List <List <double[]> > { new List <double[]> { new[] { 150.3, 1.2 }, new[] { 150.4, 1.2 }, new[] { 150.4, 1.3 }, new[] { 150.4, 1.4 }, new[] { 150.3, 1.2 } } }; var expectedProjectBoundary = new ProjectBoundary() { type = "Polygon", coordinates = cwsCoordinates }; var wktPolygon = "POLYGON((150.3 1.2,150.4 1.2,150.4 1.3,150.4 1.4,150.3 1.2))"; var cwsBoundary = GeometryConversion.MapProjectBoundary(wktPolygon); Assert.Equal(expectedProjectBoundary.type, cwsBoundary.type); Assert.Equal(expectedProjectBoundary.coordinates, cwsBoundary.coordinates); }
public static void ConfigureAutomapper() { _automapperConfiguration = new MapperConfiguration( //define mappings <source type, destination type> cfg => { cfg.AllowNullCollections = true; // so that byte[] can be null cfg.CreateMap<ProjectDatabaseModel, ProjectV6Descriptor>() .ForMember(dest => dest.ProjectGeofenceWKT, opt => opt.MapFrom(src => src.Boundary)) .ForMember(dest => dest.IanaTimeZone, opt => opt.MapFrom(src => src.ProjectTimeZoneIana)) .ForMember(dest => dest.ShortRaptorProjectId, opt => opt.MapFrom(src => src.ShortRaptorProjectId)) .ForMember(dest => dest.IsArchived, opt => opt.MapFrom(src => src.IsArchived)); cfg.CreateMap<ImportedFile, ImportedFileDescriptor>() .ForMember(dest => dest.ImportedUtc, opt => opt.MapFrom(src => src.LastActionedUtc)) .ForMember(dest => dest.LegacyFileId, opt => opt.MapFrom(src => src.ImportedFileId)) .ForMember(dest => dest.ImportedFileHistory, opt => opt.MapFrom(src => src.ImportedFileHistory.ImportedFileHistoryItems)) .ForMember(dest => dest.IsActivated, opt => opt.MapFrom(x => true)); cfg.CreateMap<Productivity3D.Project.Abstractions.Models.DatabaseModels.ImportedFileHistoryItem, MasterData.Project.WebAPI.Common.Models.ImportedFileHistoryItem>() .ForMember(dest => dest.FileCreatedUtc, opt => opt.MapFrom(src => src.FileCreatedUtc)) .ForMember(dest => dest.FileUpdatedUtc, opt => opt.MapFrom(src => src.FileUpdatedUtc)); cfg.CreateMap<ImportedFile, UpdateImportedFileEvent>() .ForMember(dest => dest.ImportedFileUID, opt => opt.MapFrom(src => Guid.Parse(src.ImportedFileUid))) .ForMember(dest => dest.ProjectUID, opt => opt.MapFrom(src => Guid.Parse(src.ProjectUid))) .ForMember(dest => dest.ActionUTC, opt => opt.MapFrom(src => src.LastActionedUtc)); // for v5 TBC apis cfg.CreateMap<ProjectDatabaseModel, ProjectDataTBCSingleResult>() .ForMember(dest => dest.IsArchived, opt => opt.MapFrom(src => src.IsArchived)) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name)) .ForMember(dest => dest.ProjectTimeZone, opt => opt.MapFrom(src => src.ProjectTimeZone)) .ForMember(dest => dest.ProjectType, opt => opt.MapFrom(x => 0)) // old standard type .ForMember(dest => dest.ProjectTypeName, opt => opt.MapFrom(x => "Standard")) // old standard type .ForMember(dest => dest.StartDate, opt => opt.MapFrom(x => DateTime.MinValue)) // Obsolete .ForMember(dest => dest.EndDate, opt => opt.MapFrom(x => DateTime.MaxValue)) // Obsolete .ForMember(dest => dest.ProjectUid, opt => opt.MapFrom(src => src.ProjectUID)) .ForMember(dest => dest.ProjectGeofenceWKT, opt => opt.MapFrom(src => src.Boundary)) .ForMember(dest => dest.LegacyProjectId, opt => opt.MapFrom(src => src.ShortRaptorProjectId)) .ForMember(dest => dest.CustomerUid, opt => opt.MapFrom(src => src.CustomerUID)) .ForMember(dest => dest.LegacyCustomerId, opt => opt.MapFrom(src => "0")) // Obsolete .ForMember(dest => dest.Code, opt => opt.Ignore()) .ForMember(dest => dest.Message, opt => opt.Ignore()); cfg.CreateMap<TBCPoint, VSS.MasterData.Models.Models.Point>() .ForMember(dest => dest.y, opt => opt.MapFrom((src => src.Latitude))) .ForMember(dest => dest.x, opt => opt.MapFrom((src => src.Longitude))); // ProjectGeofenceAssociations cfg.CreateMap<GeofenceWithAssociation, GeofenceV4Descriptor>(); // cws clients cfg.CreateMap<ProjectValidation, CreateProjectRequestModel>() .ForMember(dest => dest.TRN, opt => opt.Ignore()) .ForMember(dest => dest.AccountId, opt => opt.MapFrom(src => src.CustomerUid)) .ForMember(dest => dest.ProjectName, opt => opt.MapFrom(src => src.ProjectName)) .ForMember(dest => dest.Timezone, opt => opt.Ignore()) .ForMember(dest => dest.Boundary, opt => opt.MapFrom(src => GeometryConversion.MapProjectBoundary(src.ProjectBoundaryWKT))) .ForMember(dest => dest.ProjectType, opt => opt.MapFrom(src => src.ProjectType)) .ForMember(dest => dest.CalibrationFileName, opt => opt.MapFrom(src => src.CoordinateSystemFileName)) .ForMember(dest => dest.CalibrationFileBase64Content, opt => opt.MapFrom(src => Convert.ToBase64String(src.CoordinateSystemFileContent))) ; cfg.CreateMap<AccountResponseModel, CustomerData>() .ForMember(dest => dest.uid, opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.name, opt => opt.MapFrom(src => src.Name)) .ForMember(dest => dest.type, opt => opt.MapFrom(c => CustomerType.Customer.ToString())) ; cfg.CreateMap<AccountResponseModel, AccountHierarchyCustomer>() .ForMember(dest => dest.CustomerUid, opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.DisplayName, opt => opt.MapFrom(src => src.Name)) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name)) .ForMember(dest => dest.CustomerCode, opt => opt.MapFrom(src => src.Name)) .ForMember(dest => dest.CustomerType, opt => opt.MapFrom(src => "Customer")) .ForMember(dest => dest.Children, opt => opt.Ignore()); cfg.CreateMap<ProjectResponseModel, ProjectData>() .ForMember(dest => dest.ProjectUID, opt => opt.MapFrom(src => src.ProjectId)) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.ProjectName)) .ForMember(dest => dest.CustomerUID, opt => opt.MapFrom(src => src.AccountId)) .ForMember(dest => dest.ProjectGeofenceWKT, opt => opt.MapFrom(src => GeometryConversion.ProjectBoundaryToWKT(src.Boundary))) .ForMember(dest => dest.IanaTimeZone, opt => opt.MapFrom(src => src.Timezone)) .ForMember(dest => dest.CoordinateSystemFileName, opt => opt.Ignore()) .ForMember(dest => dest.CoordinateSystemLastActionedUTC, opt => opt.Ignore()) .ForMember(dest => dest.ProjectTimeZone, opt => opt.Ignore()) .ForMember(dest => dest.ShortRaptorProjectId, opt => opt.Ignore()) .ForMember(dest => dest.ProjectType, opt => opt.MapFrom(src => src.ProjectType)) .ForMember(dest => dest.IsArchived, opt => opt.Ignore()) ; cfg.CreateMap<ProjectValidateDto, ProjectValidation>() .ForMember(dest => dest.CustomerUid, opt => opt.MapFrom(src => TRNHelper.ExtractGuid(src.AccountTrn))) .ForMember(dest => dest.ProjectUid, opt => opt.MapFrom(src => string.IsNullOrEmpty(src.ProjectTrn) ? null : TRNHelper.ExtractGuid(src.ProjectTrn))) .ForMember(dest => dest.ProjectType, opt => opt.MapFrom(src => src.ProjectType)) .ForMember(dest => dest.UpdateType, opt => opt.MapFrom(src => ResolveUpdateType(src.UpdateType))) .ForMember(dest => dest.ProjectName, opt => opt.MapFrom(src => src.ProjectName)) .ForMember(dest => dest.ProjectBoundaryWKT, opt => opt.MapFrom(src => GeometryConversion.ProjectBoundaryToWKT(src.Boundary))) .ForMember(dest => dest.CoordinateSystemFileName, opt => opt.MapFrom(src => src.CoordinateSystemFileName)) .ForMember(dest => dest.CoordinateSystemFileContent, opt => opt.MapFrom(src => src.CoordinateSystemFileContent)) ; } ); _automapper = _automapperConfiguration.CreateMapper(); }