Files
PowderCoatingLogix/src/PowderCoating.Application/Mappings/FormulaLibraryProfile.cs
T
spouliot ca7e905832 Add Community Formula Library feature
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>
2026-05-27 21:54:51 -04:00

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; }
}
}