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