using AutoMapper; using Kurs.Platform.Entities; using System.Text.Json; using System.Collections.Generic; namespace Kurs.Platform.Reports { public class ReportAutoMapperProfile : Profile { public ReportAutoMapperProfile() { CreateMap() .ForMember(dest => dest.Tags, opt => opt.MapFrom(src => ConvertTagsFromJson(src.Tags))) .ForMember(dest => dest.Parameters, opt => opt.MapFrom(src => src.Parameters)); CreateMap() .ForMember(dest => dest.Tags, opt => opt.MapFrom(src => ConvertTagsToJson(src.Tags))) .ForMember(dest => dest.Parameters, opt => opt.Ignore()); CreateMap() .ForMember(dest => dest.Tags, opt => opt.MapFrom(src => ConvertTagsToJson(src.Tags))) .ForMember(dest => dest.Parameters, opt => opt.Ignore()); CreateMap(); CreateMap() .ForMember(dest => dest.Id, opt => opt.Ignore()) .ForMember(dest => dest.ReportTemplateId, opt => opt.Ignore()); CreateMap() .ForMember(dest => dest.ReportTemplateId, opt => opt.Ignore()); CreateMap() .ForMember(dest => dest.Parameters, opt => opt.MapFrom(src => ConvertParametersFromJson(src.Parameters))) .ForMember(dest => dest.Template, opt => opt.MapFrom(src => src.Template)); CreateMap() .ForMember(dest => dest.Parameters, opt => opt.MapFrom(src => ConvertParametersToJson(src.Parameters))) .ForMember(dest => dest.Id, opt => opt.Ignore()) .ForMember(dest => dest.TemplateId, opt => opt.MapFrom(src => src.TemplateId)) .ForMember(dest => dest.TemplateName, opt => opt.Ignore()) .ForMember(dest => dest.GeneratedContent, opt => opt.Ignore()) .ForMember(dest => dest.GeneratedAt, opt => opt.Ignore()); CreateMap(); } private static List ConvertTagsFromJson(string tags) { if (string.IsNullOrEmpty(tags)) return new List(); try { return JsonSerializer.Deserialize>(tags) ?? new List(); } catch { return new List(); } } private static string ConvertTagsToJson(List tags) { return JsonSerializer.Serialize(tags ?? new List()); } private static Dictionary ConvertParametersFromJson(string parameters) { if (string.IsNullOrEmpty(parameters)) return new Dictionary(); try { return JsonSerializer.Deserialize>(parameters) ?? new Dictionary(); } catch { return new Dictionary(); } } private static string ConvertParametersToJson(Dictionary parameters) { return JsonSerializer.Serialize(parameters ?? new Dictionary()); } } }