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>
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
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; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user