91 lines
3.8 KiB
C#
91 lines
3.8 KiB
C#
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<ReportTemplate, ReportTemplateDto>()
|
|
.ForMember(dest => dest.Tags, opt => opt.MapFrom(src =>
|
|
ConvertTagsFromJson(src.Tags)))
|
|
.ForMember(dest => dest.Parameters, opt => opt.MapFrom(src => src.Parameters));
|
|
|
|
CreateMap<CreateReportTemplateDto, ReportTemplate>()
|
|
.ForMember(dest => dest.Tags, opt => opt.MapFrom(src => ConvertTagsToJson(src.Tags)))
|
|
.ForMember(dest => dest.Parameters, opt => opt.Ignore());
|
|
|
|
CreateMap<UpdateReportTemplateDto, ReportTemplate>()
|
|
.ForMember(dest => dest.Tags, opt => opt.MapFrom(src => ConvertTagsToJson(src.Tags)))
|
|
.ForMember(dest => dest.Parameters, opt => opt.Ignore());
|
|
|
|
CreateMap<ReportParameter, ReportParameterDto>()
|
|
.ForMember(dest => dest.Type, opt => opt.MapFrom(src => (ReportParameterType)src.Type));
|
|
|
|
CreateMap<CreateReportParameterDto, ReportParameter>()
|
|
.ForMember(dest => dest.Type, opt => opt.MapFrom(src => (Entities.ReportParameterType)src.Type))
|
|
.ForMember(dest => dest.Id, opt => opt.Ignore())
|
|
.ForMember(dest => dest.ReportTemplateId, opt => opt.Ignore());
|
|
|
|
CreateMap<UpdateReportParameterDto, ReportParameter>()
|
|
.ForMember(dest => dest.Type, opt => opt.MapFrom(src => (Entities.ReportParameterType)src.Type))
|
|
.ForMember(dest => dest.ReportTemplateId, opt => opt.Ignore());
|
|
|
|
CreateMap<GeneratedReport, GeneratedReportDto>()
|
|
.ForMember(dest => dest.Parameters, opt => opt.MapFrom(src =>
|
|
ConvertParametersFromJson(src.Parameters)))
|
|
.ForMember(dest => dest.Template, opt => opt.MapFrom(src => src.Template));
|
|
|
|
CreateMap<GenerateReportDto, GeneratedReport>()
|
|
.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());
|
|
}
|
|
|
|
private static List<string> ConvertTagsFromJson(string tags)
|
|
{
|
|
if (string.IsNullOrEmpty(tags))
|
|
return new List<string>();
|
|
|
|
try
|
|
{
|
|
return JsonSerializer.Deserialize<List<string>>(tags) ?? new List<string>();
|
|
}
|
|
catch
|
|
{
|
|
return new List<string>();
|
|
}
|
|
}
|
|
|
|
private static string ConvertTagsToJson(List<string> tags)
|
|
{
|
|
return JsonSerializer.Serialize(tags ?? new List<string>());
|
|
}
|
|
|
|
private static Dictionary<string, string> ConvertParametersFromJson(string parameters)
|
|
{
|
|
if (string.IsNullOrEmpty(parameters))
|
|
return new Dictionary<string, string>();
|
|
|
|
try
|
|
{
|
|
return JsonSerializer.Deserialize<Dictionary<string, string>>(parameters) ?? new Dictionary<string, string>();
|
|
}
|
|
catch
|
|
{
|
|
return new Dictionary<string, string>();
|
|
}
|
|
}
|
|
|
|
private static string ConvertParametersToJson(Dictionary<string, string> parameters)
|
|
{
|
|
return JsonSerializer.Serialize(parameters ?? new Dictionary<string, string>());
|
|
}
|
|
}
|
|
}
|