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
}
}