using ManagerService.Data.SubSection; using ManagerService.DTOs; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace ManagerService.Data { /// /// Defines the link between an application instance and a configuration, /// allowing apps to use one or multiple configurations. /// public class ApplicationInstance { [Key] public string Id { get; set; } [Required] public string InstanceId { get; set; } [Required] public AppType AppType { get; set; } public List Configurations { get; set; } public string MainImageId { get; set; } public string MainImageUrl { get; set; } public string LoaderImageId { get; set; } public string LoaderImageUrl { get; set; } public bool IsDate { get; set; } public bool IsHour { get; set; } public string PrimaryColor { get; set; } public string SecondaryColor { get; set; } public int? RoundedValue { get; set; } public int? ScreenPercentageSectionsMainPage { get; set; } public bool IsSectionImageBackground { get; set; } // => Chose layout of main page public LayoutMainPageType LayoutMainPage { get; set; } = LayoutMainPageType.MasonryGrid; public List Languages { get; set; } // All app must support languages, if not, client's problem public string? SectionEventId { get; set; } [ForeignKey("SectionEventId")] public SectionEvent? SectionEvent { get; set; } // => To Display in large a event with countdown (in mobile app). public ApplicationInstanceDTO ToDTO() { return new ApplicationInstanceDTO() { id = Id, instanceId = InstanceId, appType = AppType, configurations = Configurations, mainImageId = MainImageId, mainImageUrl = MainImageUrl, loaderImageId = LoaderImageId, loaderImageUrl = LoaderImageUrl, isDate = IsDate, isHour = IsHour, primaryColor = PrimaryColor, secondaryColor = SecondaryColor, roundedValue = RoundedValue, screenPercentageSectionsMainPage = ScreenPercentageSectionsMainPage, isSectionImageBackground = IsSectionImageBackground, languages = Languages }; } public ApplicationInstance FromDTO(ApplicationInstanceDTO dto) { InstanceId = dto.instanceId; AppType = dto.appType; MainImageId = dto.mainImageId; MainImageUrl = dto.mainImageUrl; LoaderImageId = dto.loaderImageId; LoaderImageUrl = dto.loaderImageUrl; IsDate = dto.isDate; IsHour = dto.isHour; PrimaryColor = dto.primaryColor; SecondaryColor = dto.secondaryColor; RoundedValue = dto.roundedValue; ScreenPercentageSectionsMainPage = dto.screenPercentageSectionsMainPage; IsSectionImageBackground = dto.isSectionImageBackground; Languages = dto.languages; Configurations = dto.configurations; return this; } } public enum AppType { Mobile, Tablet, Web, VR } public enum LayoutMainPageType { SimpleGrid, MasonryGrid } }