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 applicationInstanceDTO) { return new ApplicationInstance() { Id = applicationInstanceDTO.id, InstanceId = applicationInstanceDTO.instanceId, AppType = applicationInstanceDTO.appType, MainImageId = applicationInstanceDTO.mainImageId, MainImageUrl = applicationInstanceDTO.mainImageUrl, LoaderImageId = applicationInstanceDTO.loaderImageId, LoaderImageUrl = applicationInstanceDTO.loaderImageUrl, IsDate = applicationInstanceDTO.isDate, IsHour = applicationInstanceDTO.isHour, PrimaryColor = applicationInstanceDTO.primaryColor, SecondaryColor = applicationInstanceDTO.secondaryColor, RoundedValue = applicationInstanceDTO.roundedValue, ScreenPercentageSectionsMainPage = applicationInstanceDTO.screenPercentageSectionsMainPage, IsSectionImageBackground = applicationInstanceDTO.isSectionImageBackground, Languages = applicationInstanceDTO.languages, Configurations = applicationInstanceDTO.configurations, }; } } public enum AppType { Mobile, Tablet, Web, VR } public enum LayoutMainPageType { SimpleGrid, MasonryGrid } }