using Manager.DTOs; using ManagerService.DTOs; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using static ManagerService.Data.SectionText; namespace ManagerService.Data.SubSection { /// /// Section agenda /// public class SectionAgenda : Section { [Required] public bool IsOnlineAgenda { get; set; } = true; [Required] [Column(TypeName = "jsonb")] public List AgendaResourceIds { get; set; } // All json files for all languages public MapProvider? AgendaMapProvider { get; set; } // Default = Google [Required] public List EventAgendas { get; set; } public override string GetEmbeddableText(string language) => JoinText(new[] { BaseText(language) } .Concat((EventAgendas ?? new List()) .Select(e => e.GetEmbeddableText(language))) .ToArray()); public override IEnumerable GetReferencedResourceIds(string language = null) => BaseResourceIds() .Concat(ResourceIdsFromValues(AgendaResourceIds, language)) .Concat((EventAgendas ?? new List()) .SelectMany(e => e.GetReferencedResourceIds())); public AgendaDTO ToDTO() { return new AgendaDTO() { id = Id, label = Label, title = Title.ToList(), description = Description.ToList(), order = Order, type = Type, imageId = ImageId, imageSource = ImageSource, configurationId = ConfigurationId, isSubSection = IsSubSection, parentId = ParentId, dateCreation = DateCreation, instanceId = InstanceId, isBeacon = IsBeacon, beaconId = BeaconId, latitude = Latitude, longitude = Longitude, meterZoneGPS = MeterZoneGPS, resourceIds = AgendaResourceIds, isOnlineAgenda = IsOnlineAgenda, agendaMapProvider = AgendaMapProvider, events = EventAgendas.Select(e => e.ToDTO()).ToList(), }; } } }