using Manager.Interfaces.DTO; using MongoDB.Bson.Serialization.Attributes; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Manager.Interfaces.Models { /// /// Section Information /// public class Section { [BsonId] [BsonRepresentation(MongoDB.Bson.BsonType.ObjectId)] public string Id { get; set; } [BsonElement("Label")] [BsonRequired] public string Label { get; set; } // Use in manager [BsonElement("Title")] [BsonRequired] public List Title { get; set; } [BsonElement("Description")] public List Description { get; set; } [BsonElement("Order")] public int Order { get; set; } [BsonElement("ConfigurationId")] [BsonRequired] public string ConfigurationId { get; set; } // Parent id [BsonElement("ImageId")] [BsonRequired] public string ImageId { get; set; } [BsonElement("ImageSource")] [BsonRequired] public string ImageSource { get; set; } [BsonElement("Type")] [BsonRequired] public SectionType Type { get; set; } [BsonElement("IsSubSection")] [BsonRequired] public bool IsSubSection { get; set; } [BsonElement("ParentId")] public string ParentId { get; set; } // only if it's an subsection [BsonElement("DateCreation")] public DateTime DateCreation { get; set; } [BsonElement("Data")] [BsonRequired] public string Data { get; set; } // Json encapsulated section info [BsonElement("InstanceId")] [BsonRequired] public string InstanceId { get; set; } [BsonElement("IsBeacon")] public bool IsBeacon { get; set; } [BsonElement("BeaconId")] public int? BeaconId { get; set; } [BsonElement("Latitude")] public string Latitude { get; set; } [BsonElement("Longitude")] public string Longitude { get; set; } [BsonElement("MeterZoneGPS")] public int? MeterZoneGPS { get; set; } public SectionDTO ToDTO() { return new SectionDTO() { id = Id, label = Label, title = Title.OrderBy(t => t.language).ToList(), description = Description.OrderBy(d => d.language).ToList(), order = Order, type = Type, imageId = ImageId, imageSource = ImageSource, configurationId = ConfigurationId, isSubSection = IsSubSection, parentId = ParentId, data = Data, dateCreation = DateCreation, instanceId = InstanceId, isBeacon = IsBeacon, beaconId = BeaconId, latitude = Latitude, longitude = Longitude, meterZoneGPS = MeterZoneGPS, }; } } public enum SectionType { Map, Slider, Video, Web, Menu, Quizz, Article, PDF, Puzzle, Agenda, Weather } }