namespace zero.Api.Endpoints.Media; public class MediaMapperProfile : ZeroMapperProfile { protected IMediaFileSystem FileSystem { get; private set; } public MediaMapperProfile(IMediaFileSystem fileSystem) { FileSystem = fileSystem; } public override void Configure(IZeroMapper mapper) { mapper.Define((source, ctx) => new(), Map); mapper.Define((source, ctx) => new(), Map); mapper.Define((source, ctx) => new(), Map); mapper.Define((source, ctx) => new(), Map); mapper.Define((source, ctx) => new(), Map); } protected virtual void Map(zero.Media.Media source, MediaBasic target, IZeroMapperContext ctx) { target.Id = source.Id; target.Name = source.Name; target.ParentId = source.ParentId; target.IsFolder = source.IsFolder; target.Children = 0; target.Size = source.Size; if (source.Path.HasValue()) { target.Source = FileSystem.MapToPublicPath(source.Path); } if (source.ImageMeta != null && source.ImageMeta.Thumbnails.Any()) { string path = source.ImageMeta.Thumbnails.GetValueOrDefault("preview"); target.Preview = path.IsNullOrEmpty() ? null : FileSystem.MapToPublicPath(path); } } protected virtual void Map(zero.Media.Media source, MediaEdit target, IZeroMapperContext ctx) { this.MapDisplayData(source, target); target.IsFolder = source.IsFolder; target.ParentId = source.ParentId; } protected virtual void Map(zero.Media.Media source, MediaFolderEdit target, IZeroMapperContext ctx) { Map(source, (MediaEdit)target, ctx); } protected virtual void Map(zero.Media.Media source, MediaFileEdit target, IZeroMapperContext ctx) { Map(source, (MediaEdit)target, ctx); target.AlternativeText = source.ImageMeta?.AlternativeText; target.Caption = source.Caption; target.Path = source.Path; target.Thumbnails = source.ImageMeta?.Thumbnails; target.Size = source.Size; target.ImageMeta = source.ImageMeta; target.FocalPoint = source.ImageMeta?.FocalPoint; } protected virtual void Map(MediaSave source, zero.Media.Media target, IZeroMapperContext ctx) { this.MapSaveData(source, target); } }