private static byte[] ToChristianSchwarzWkb(IPoint point) { Point wkxPoint = (GeometryUtils.IsZAware(point)) ? new Point(point.X, point.Y, point.Z) : new Point(point.X, point.Y); WkbSerializer serializer = new WkbSerializer(); MemoryStream stream = new MemoryStream(); serializer.Serialize(wkxPoint, stream); return(stream.ToArray()); }
public static void ConfigureApiModels(this IMapperConfigurationExpression mapperConfigurationExpression, IContainerProvider containerProvider) { // Api models to view models mapperConfigurationExpression.CreateMap <ValidationSessionModel, ViewModels.ValidationSessionOverview.ItemViewModel>() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.ValidationSessionID)) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.ValidationSessionName)) .ForMember(dest => dest.Pinned, opt => opt.Ignore()) .ForMember(dest => dest.IsActive, opt => opt.Ignore()) .ForMember(dest => dest.ItemTappedCommand, opt => opt.Ignore()) .ForMember(dest => dest.IsSelected, opt => opt.Ignore()) .ForMember(dest => dest.ItemSelectedCommand, opt => opt.Ignore()) .AfterMap(async(src, dest) => { IAppDataService appDataService = containerProvider.Resolve <IAppDataService>(); dest.Pinned = await appDataService.TryGetValidationSessionByIdAsync(src.ValidationSessionID) != null; }); mapperConfigurationExpression.CreateMap <ValidationSessionDetailModel, ValidationSessionDetailViewModel>() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.ValidationSessionID)) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.ValidationSessionName)) .ForMember(dest => dest.ValidationMethod, opt => opt.MapFrom(src => src.ValidationMethodEnum)); mapperConfigurationExpression.CreateMap <LegendItemModel, ItemViewModel>() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.LegendItemID)) .ForMember(dest => dest.Color, opt => opt.MapFrom(src => Color.FromArgb(src.Red, src.Green, src.Blue))) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.ClassName)) .ForMember(dest => dest.IsActive, opt => opt.Ignore()) .ForMember(dest => dest.ItemTappedCommand, opt => opt.Ignore()) .ForMember(dest => dest.IsSelected, opt => opt.Ignore()) .ForMember(dest => dest.ItemSelectedCommand, opt => opt.Ignore()) .EqualityComparison((source, dest) => dest.Id == source.LegendItemID); mapperConfigurationExpression.CreateMap <IEnumerable <SampleItemModel>, SamplePointsViewModel>() .ForMember(dest => dest.Points, opt => opt.MapFrom(src => src)); mapperConfigurationExpression.CreateMap <SampleItemModel, SamplePointViewModel>() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.SampleItemID)) .ForMember(dest => dest.ValidationSessionId, configuration => { configuration.ResolveUsing( (source, destination, model, context) => (int)context.Items[nameof(ValidationSession.Id)]); }) .ForMember(dest => dest.IsValidated, opt => opt.MapFrom(src => src.Validated)) .ForMember(dest => dest.Longitude, opt => opt.Ignore()) .ForMember(dest => dest.Latitude, opt => opt.Ignore()) .ForMember(dest => dest.Selected, opt => opt.Ignore()) .ForMember(dest => dest.Radius, opt => opt.Ignore()) .ForMember(dest => dest.FillColor, opt => opt.Ignore()) .ForMember(dest => dest.StrokeColor, opt => opt.Ignore()) .ForMember(dest => dest.StrokeWidth, opt => opt.Ignore()) .AfterMap((source, dest) => { Wkx.Point geometry = Geometry.Deserialize <WktSerializer>(source.GeometryString) as Wkx.Point; if (geometry == null) { throw new InvalidOperationException(); } dest.Longitude = geometry.X.Value; dest.Latitude = geometry.Y.Value; }) .EqualityComparison((source, destination) => source.SampleItemID == destination.Id); // View models to api models mapperConfigurationExpression.CreateMap <ViewModels.ValidationUpload.ItemViewModel, ValidationCreateModel>(); }
public static void ConfigureAppDataEntities(this IMapperConfigurationExpression mapperConfigurationExpression, IContainerProvider containerProvider) { // Entities to view models mapperConfigurationExpression.CreateMap <ValidationSession, ViewModels.Main.ItemViewModel>() .ForMember(dest => dest.IsActive, opt => opt.Ignore()) .ForMember(dest => dest.ItemTappedCommand, opt => opt.Ignore()) .ForMember(dest => dest.IsChecked, opt => opt.Ignore()) .ForMember(dest => dest.IsSelected, opt => opt.Ignore()) .ForMember(dest => dest.ItemSelectedCommand, opt => opt.Ignore()); mapperConfigurationExpression.CreateMap <ValidationSession, ViewModels.ValidationSessionOverview.ItemViewModel>() .ForMember(dest => dest.Pinned, opt => opt.Ignore()) .ForMember(dest => dest.IsActive, opt => opt.Ignore()) .ForMember(dest => dest.ItemTappedCommand, opt => opt.Ignore()) .ForMember(dest => dest.IsSelected, opt => opt.Ignore()) .ForMember(dest => dest.ItemSelectedCommand, opt => opt.Ignore()); mapperConfigurationExpression.CreateMap <LegendItem, ItemViewModel>() .ForMember(dest => dest.Color, opt => opt.MapFrom(src => Color.FromArgb(src.Red, src.Green, src.Blue))) .ForMember(dest => dest.IsActive, opt => opt.Ignore()) .ForMember(dest => dest.ItemTappedCommand, opt => opt.Ignore()) .ForMember(dest => dest.IsSelected, opt => opt.Ignore()) .ForMember(dest => dest.ItemSelectedCommand, opt => opt.Ignore()) .EqualityComparison((source, dest) => dest.Id == source.Id); mapperConfigurationExpression.CreateMap <ValidationSession, SamplePointsViewModel>() .ForMember(dest => dest.Points, opt => opt.MapFrom(src => src.SampleItems)); mapperConfigurationExpression.CreateMap <SampleItem, SamplePointViewModel>() .ForMember(dest => dest.Longitude, opt => opt.Ignore()) .ForMember(dest => dest.Latitude, opt => opt.Ignore()) .ForMember(dest => dest.Selected, opt => opt.Ignore()) .ForMember(dest => dest.Radius, opt => opt.Ignore()) .ForMember(dest => dest.FillColor, opt => opt.Ignore()) .ForMember(dest => dest.StrokeColor, opt => opt.Ignore()) .ForMember(dest => dest.StrokeWidth, opt => opt.Ignore()) .ForMember(dest => dest.ValidationSessionId, opt => opt.Ignore()) .ForMember(dest => dest.LegendItemId, opt => opt.Ignore()) .AfterMap((src, dest) => { Wkx.Point geometry = Geometry.Deserialize <WktSerializer>(src.Geometry) as Wkx.Point; if (geometry == null) { throw new InvalidOperationException(); } dest.Longitude = geometry.X.Value; dest.Latitude = geometry.Y.Value; }) .EqualityComparison((source, destination) => source.Id == destination.Id); mapperConfigurationExpression.CreateMap <LocalValidation, ViewModels.ValidationUpload.ItemViewModel>() .ForMember(dest => dest.LegendItemId, opt => opt.MapFrom(src => src.LegendItem == null ? null : (int?)src.LegendItem.Id)) .ForMember(dest => dest.Uploaded, opt => opt.Ignore()) .ForMember(dest => dest.IsActive, opt => opt.Ignore()) .ForMember(dest => dest.ItemTappedCommand, opt => opt.Ignore()) .ForMember(dest => dest.IsSelected, opt => opt.Ignore()) .ForMember(dest => dest.ItemSelectedCommand, opt => opt.Ignore()) .EqualityComparison((source, destination) => source.SampleItem.Id == destination.SampleItemId); // View models to entities mapperConfigurationExpression.CreateMap <ValidationSessionDetailViewModel, ValidationSession>() .ForMember(dest => dest.UserId, opt => opt.Ignore()) .ForMember(dest => dest.User, opt => opt.Ignore()) .ForMember(dest => dest.SampleItems, opt => opt.Ignore()); mapperConfigurationExpression.CreateMap <ItemViewModel, LegendItem>() .ForMember(dest => dest.Red, opt => opt.MapFrom(src => src.Color.R * 255.0)) .ForMember(dest => dest.Green, opt => opt.MapFrom(src => src.Color.G * 255.0)) .ForMember(dest => dest.Blue, opt => opt.MapFrom(src => src.Color.B * 255.0)) .ForMember(dest => dest.ValidationSession, opt => opt.Ignore()) .ForMember(dest => dest.SampleItems, opt => opt.Ignore()) .EqualityComparison((source, dest) => dest.Id == source.Id); mapperConfigurationExpression.CreateMap <SamplePointsViewModel, ValidationSession>(MemberList.Source) .ForMember(dest => dest.SampleItems, opt => opt.MapFrom(src => src.Points)); mapperConfigurationExpression.CreateMap <SamplePointViewModel, SampleItem>() .ForMember(dest => dest.Geometry, configuration => { configuration.ResolveUsing((source, destination) => { Wkx.Point point = new Wkx.Point(source.Longitude, source.Latitude); return(point.SerializeString <WktSerializer>()); }); }) .ForMember(dest => dest.ValidationSession, opt => opt.Ignore()) .ForMember(dest => dest.LegendItem, opt => opt.Ignore()) .ForMember(dest => dest.LocalValidation, opt => opt.Ignore()) .AfterMap((src, dest, context) => { ValidationSession validationSession = (ValidationSession)context.Items[nameof(ValidationSession)]; IDictionary <int, LegendItem> legendItems = (IDictionary <int, LegendItem>)context.Items[nameof(LegendItem)]; dest.ValidationSession = validationSession; dest.LegendItem = legendItems[src.LegendItemId]; }) .EqualityComparison((source, destination) => source.Id == destination.Id); mapperConfigurationExpression.CreateMap <ValidatePageViewModel, LocalValidation>() .ForMember(dest => dest.LegendItem, opt => opt.Ignore()) .ForMember(dest => dest.SampleItem, opt => opt.Ignore()) .ForMember(dest => dest.Uploaded, opt => opt.Ignore()) .AfterMap(async(src, dest, context) => { IAppDataService appDataService = containerProvider.Resolve <IAppDataService>(); dest.SampleItem = await appDataService.GetSampleItemByIdAsync(src.SampleItemId, src.ValidationSessionId); dest.LegendItem = src.SelectedLegendItem != null ? await appDataService.GetLegendItemByIdAsync(src.SelectedLegendItem.Id, src.ValidationSessionId) : null; }); }