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