ca7e905832
Companies can now share their custom formula templates to a platform-wide community library. Other tenants can browse, preview, and import formulas as independent local copies. Includes attribution (source company name), "Inspired by" lineage for re-contributed formulas, import counts, own-formula badge, cascade diagram nullification, and AI assistant + help docs updates. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
36 lines
1.3 KiB
C#
36 lines
1.3 KiB
C#
using AutoMapper;
|
|
using PowderCoating.Core.Entities;
|
|
using PowderCoating.Application.DTOs.Company;
|
|
|
|
namespace PowderCoating.Application.Mappings;
|
|
|
|
public class FormulaLibraryProfile : Profile
|
|
{
|
|
public FormulaLibraryProfile()
|
|
{
|
|
CreateMap<FormulaLibraryItem, FormulaLibraryCardDto>()
|
|
.ForMember(dest => dest.InspiredByName,
|
|
opt => opt.MapFrom(src => src.InspiredBy != null ? src.InspiredBy.Name : null))
|
|
.ForMember(dest => dest.InspiredByCompanyName,
|
|
opt => opt.MapFrom(src => src.InspiredBy != null ? src.InspiredBy.SourceCompanyName : null))
|
|
.ForMember(dest => dest.AlreadyImported, opt => opt.Ignore()); // set by service
|
|
|
|
CreateMap<FormulaLibraryItem, FormulaLibraryDetailDto>()
|
|
.IncludeBase<FormulaLibraryItem, FormulaLibraryCardDto>()
|
|
.ForMember(dest => dest.FieldCount,
|
|
opt => opt.MapFrom(src => CountFields(src.FieldsJson)));
|
|
}
|
|
|
|
private static int CountFields(string fieldsJson)
|
|
{
|
|
try
|
|
{
|
|
var doc = System.Text.Json.JsonDocument.Parse(fieldsJson);
|
|
return doc.RootElement.ValueKind == System.Text.Json.JsonValueKind.Array
|
|
? doc.RootElement.GetArrayLength()
|
|
: 0;
|
|
}
|
|
catch { return 0; }
|
|
}
|
|
}
|