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 { public class SectionParcours : Section { public bool ShowMap { get; set; } = true; public string? BaseSectionMapId { get; set; } [ForeignKey(nameof(BaseSectionMapId))] public SectionMap? BaseMap { get; set; } public List GuidedPaths { get; set; } = new(); public override string GetEmbeddableText(string language) => JoinText(new[] { BaseText(language) } .Concat((GuidedPaths ?? new List()) .OrderBy(p => p.Order) .Select(p => p.GetEmbeddableText(language))) .ToArray()); public override IEnumerable GetReferencedResourceIds(string language = null) => BaseResourceIds() .Concat((GuidedPaths ?? new List()) .SelectMany(p => p.GetReferencedResourceIds(language))); public ParcoursDTO ToDTO() { return new ParcoursDTO { 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, showMap = ShowMap, baseSectionMapId = BaseSectionMapId, guidedPaths = GuidedPaths?.Select(gp => gp.ToDTO()).ToList() }; } } }