using adas_core.Domain.Enums; using adas_core.Domain.Models.MongoModels; using adas_core.Infrastructure.Utils.MongoMaps.Interfaz; using MongoDB.Bson; using MongoDB.Bson.Serialization; using MongoDB.Bson.Serialization.Serializers; namespace adas_core.Infrastructure.Utils.MongoMaps; /// /// Provides row-level mapping contributions to the entity mapping process by implementing the IEntityMapContributor interface. /// public class RowMapContributor : IEntityMapContributor { /// /// Registers BSON class maps for , , and , configuring default values, enum string serialization, and null-ignoring behavior for nullable members. Each map is registered only if no class map has already been registered for the corresponding type. /// public void RegisterMaps() { if (!BsonClassMap.IsClassMapRegistered(typeof(RowBoxLayout))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.GrowPriority).SetDefaultValue(1D); cm.MapMember(c => c.Type) .SetDefaultValue(DisplayConfigEnums.CellType.Default) .SetSerializer(new EnumSerializer(BsonType.String)); cm.MapMember(c => c.SubType) .SetDefaultValue(DisplayConfigEnums.WebDisplayCellSubtype.Default) .SetSerializer(new EnumSerializer(BsonType.String)); cm.MapMember(c => c.BgColor).SetIgnoreIfNull(true); cm.MapMember(c => c.PaddingTop).SetIgnoreIfNull(true); cm.MapMember(c => c.PaddingBottom).SetIgnoreIfNull(true); cm.MapMember(c => c.PaddingLeft).SetIgnoreIfNull(true); cm.MapMember(c => c.PaddingRight).SetIgnoreIfNull(true); cm.MapMember(c => c.Observations) .SetDefaultValue(new List()); cm.MapMember(c => c.Direction) .SetDefaultValue(DisplayConfigEnums.DirectionEnum.Row) .SetSerializer(new EnumSerializer(BsonType.String)); }); if (!BsonClassMap.IsClassMapRegistered(typeof(RowDetailsConfig))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.Cells).SetDefaultValue(new List()); cm.MapMember(c => c.Rows).SetDefaultValue(new List()); cm.MapMember(c => c.GrowPriority).SetDefaultValue(1.0); cm.MapMember(c => c.Title).SetIgnoreIfNull(true); cm.MapMember(c => c.DialogConfig).SetIgnoreIfNull(true); cm.MapMember(c => c.Type).SetDefaultValue(DisplayConfigEnums.RowType.Demographic) .SetSerializer(new EnumSerializer(BsonType.String)); }); if (!BsonClassMap.IsClassMapRegistered(typeof(ObservationRowBoxLayout))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.TextRules).SetIgnoreIfNull(true); cm.MapMember(c => c.ChartSettings).SetIgnoreIfNull(true); cm.MapMember(c => c.ShowTitle).SetIgnoreIfNull(true); cm.MapMember(c => c.GrowPriority).SetDefaultValue(1D); cm.MapMember(c => c.Type) .SetDefaultValue(DisplayConfigEnums.CellType.Default) .SetSerializer(new EnumSerializer(BsonType.String)); cm.MapMember(c => c.SubType).SetIgnoreIfNull(true); cm.MapMember(c => c.Name).SetIgnoreIfNull(true); cm.MapMember(c => c.Icon).SetIgnoreIfNull(true); cm.MapMember(c => c.Title).SetIgnoreIfNull(true); cm.MapMember(c => c.GridColumn).SetDefaultValue(1); cm.MapMember(c => c.IsColumn).SetIgnoreIfNull(true); cm.MapMember(c => c.IsStatic).SetIgnoreIfNull(true); cm.MapMember(c => c.GraphConf).SetIgnoreIfNull(true); cm.MapMember(c => c.Names).SetIgnoreIfNull(true); cm.MapMember(c => c.ObservationName).SetIgnoreIfNull(true); cm.MapMember(c => c.ObservationTitle).SetIgnoreIfNull(true); cm.MapMember(c => c.Observations).SetIgnoreIfNull(true); cm.MapMember(c => c.BgColor).SetIgnoreIfNull(true); cm.MapMember(c => c.PaddingTop).SetIgnoreIfNull(true); cm.MapMember(c => c.PaddingBottom).SetIgnoreIfNull(true); cm.MapMember(c => c.PaddingLeft).SetIgnoreIfNull(true); cm.MapMember(c => c.PaddingRight).SetIgnoreIfNull(true); cm.MapMember(c => c.Border).SetIgnoreIfNull(true); cm.MapMember(c => c.BorderRadius).SetIgnoreIfNull(true); cm.MapMember(c => c.ValuePathKey).SetIgnoreIfNull(true); cm.MapMember(c => c.ValuePathNested).SetIgnoreIfNull(true); cm.MapMember(c => c.Size).SetDefaultValue(15.0); cm.MapMember(c => c.Format).SetIgnoreIfNull(true); cm.MapMember(c => c.Length).SetIgnoreIfNull(true); cm.MapMember(c => c.Direction) .SetIgnoreIfNull(true) .SetSerializer(new NullableSerializer( new EnumSerializer(BsonType.String))); }); } }