Add title and image to configuration

This commit is contained in:
Fransolet Thomas 2022-09-17 22:43:24 +02:00
parent afdd538a3b
commit 1725376623
10 changed files with 95 additions and 14 deletions

View File

@ -8,6 +8,9 @@ namespace Manager.Interfaces.DTO
{ {
public string id { get; set; } public string id { get; set; }
public string label { get; set; } public string label { get; set; }
public List<TranslationDTO> title { get; set; }
public string imageId { get; set; } // == ResourceId
public string imageSource { get; set; } // == Image url
public string primaryColor { get; set; } public string primaryColor { get; set; }
public string secondaryColor { get; set; } public string secondaryColor { get; set; }
public List<string> languages { get; set; } // fr, en, de, nl => Sélection dans une liste déjà établie dans l'application ! public List<string> languages { get; set; } // fr, en, de, nl => Sélection dans une liste déjà établie dans l'application !

View File

@ -1,5 +1,4 @@
using DevExpress.Xpo; using System;
using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace Manager.Interfaces.DTO namespace Manager.Interfaces.DTO

View File

@ -5,7 +5,6 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="DevExpress.Xpo" Version="20.1.8" />
<PackageReference Include="MongoDB.Bson" Version="2.12.1" /> <PackageReference Include="MongoDB.Bson" Version="2.12.1" />
</ItemGroup> </ItemGroup>

View File

@ -19,6 +19,16 @@ namespace Manager.Interfaces.Models
[BsonRequired] [BsonRequired]
public string Label { get; set; } public string Label { get; set; }
[BsonElement("Title")]
[BsonRequired]
public List<TranslationDTO> Title { get; set; }
[BsonElement("ImageId")]
public string ImageId { get; set; }
[BsonElement("ImageSource")]
public string ImageSource { get; set; }
[BsonElement("PrimaryColor")] [BsonElement("PrimaryColor")]
public string PrimaryColor { get; set; } public string PrimaryColor { get; set; }
@ -46,6 +56,9 @@ namespace Manager.Interfaces.Models
{ {
id = Id, id = Id,
label = Label, label = Label,
title = Title,
imageId = ImageId,
imageSource = ImageSource,
dateCreation = DateCreation, dateCreation = DateCreation,
primaryColor = PrimaryColor, primaryColor = PrimaryColor,
languages = Languages, languages = Languages,
@ -61,6 +74,9 @@ namespace Manager.Interfaces.Models
{ {
id = Id, id = Id,
label = Label, label = Label,
title= Title,
imageId = ImageId,
imageSource = ImageSource,
dateCreation = DateCreation, dateCreation = DateCreation,
primaryColor = PrimaryColor, primaryColor = PrimaryColor,
languages = Languages, languages = Languages,

View File

@ -9,6 +9,7 @@ using Manager.Services;
using ManagerService.Service.Services; using ManagerService.Service.Services;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Mqtt.Client.AspNetCore.Services; using Mqtt.Client.AspNetCore.Services;
using Newtonsoft.Json; using Newtonsoft.Json;
@ -26,10 +27,12 @@ namespace ManagerService.Controllers
private ResourceDatabaseService _resourceService; private ResourceDatabaseService _resourceService;
private DeviceDatabaseService _deviceService; private DeviceDatabaseService _deviceService;
private readonly ILogger<ConfigurationController> _logger; private readonly ILogger<ConfigurationController> _logger;
private readonly IConfiguration _configuration;
public ConfigurationController(ILogger<ConfigurationController> logger, ConfigurationDatabaseService configurationService, SectionDatabaseService sectionService, ResourceDatabaseService resourceService, DeviceDatabaseService deviceService) public ConfigurationController(IConfiguration configuration, ILogger<ConfigurationController> logger, ConfigurationDatabaseService configurationService, SectionDatabaseService sectionService, ResourceDatabaseService resourceService, DeviceDatabaseService deviceService)
{ {
_logger = logger; _logger = logger;
_configuration = configuration;
_configurationService = configurationService; _configurationService = configurationService;
_sectionService = sectionService; _sectionService = sectionService;
_resourceService = resourceService; _resourceService = resourceService;
@ -107,9 +110,17 @@ namespace ManagerService.Controllers
// Todo add some verification ? // Todo add some verification ?
Configuration configuration = new Configuration(); Configuration configuration = new Configuration();
configuration.Label = newConfiguration.label; configuration.Label = newConfiguration.label;
configuration.Title = new List<TranslationDTO>();
configuration.ImageId = newConfiguration.imageId;
configuration.ImageSource = newConfiguration.imageSource;
configuration.PrimaryColor = newConfiguration.primaryColor; configuration.PrimaryColor = newConfiguration.primaryColor;
configuration.SecondaryColor = newConfiguration.secondaryColor; configuration.SecondaryColor = newConfiguration.secondaryColor;
configuration.Languages = new List<string> { "FR", "NL", "EN", "DE" }; // by default all languages
configuration.Languages = _configuration.GetSection("SupportedLanguages").Get<List<string>>();
//configuration.Languages = new List<string> { "FR", "NL", "EN", "DE" }; // by default all languages
configuration.Title = LanguageInit.Init("Title", configuration.Languages);
configuration.DateCreation = DateTime.Now; configuration.DateCreation = DateTime.Now;
configuration.IsMobile = newConfiguration.isMobile; configuration.IsMobile = newConfiguration.isMobile;
configuration.IsTablet = newConfiguration.isTablet; configuration.IsTablet = newConfiguration.isTablet;
@ -157,6 +168,9 @@ namespace ManagerService.Controllers
// Todo add some verification ? // Todo add some verification ?
configuration.Label = updatedConfiguration.label; configuration.Label = updatedConfiguration.label;
configuration.Title = updatedConfiguration.title;
configuration.ImageId = updatedConfiguration.imageId;
configuration.ImageSource = updatedConfiguration.imageSource;
configuration.PrimaryColor = updatedConfiguration.primaryColor; configuration.PrimaryColor = updatedConfiguration.primaryColor;
configuration.SecondaryColor = updatedConfiguration.secondaryColor; configuration.SecondaryColor = updatedConfiguration.secondaryColor;
configuration.Languages = updatedConfiguration.languages; configuration.Languages = updatedConfiguration.languages;
@ -166,7 +180,7 @@ namespace ManagerService.Controllers
Configuration configurationModified = _configurationService.Update(updatedConfiguration.id, configuration); Configuration configurationModified = _configurationService.Update(updatedConfiguration.id, configuration);
MqttClientService.PublishMessage($"config/{configurationModified.Id}", JsonConvert.SerializeObject(new PlayerMessageDTO() { configChanged = true })); // TODO HANDLE MqttClientService.PublishMessage($"config/{configurationModified.Id}", JsonConvert.SerializeObject(new PlayerMessageDTO() { configChanged = true }));
return new OkObjectResult(configurationModified.ToDTO()); return new OkObjectResult(configurationModified.ToDTO());
} }
@ -216,7 +230,7 @@ namespace ManagerService.Controllers
_deviceService.Update(device.Id, device); _deviceService.Update(device.Id, device);
} }
MqttClientService.PublishMessage($"config/{id}", JsonConvert.SerializeObject(new PlayerMessageDTO() { configChanged = true, isDeleted = true })); // TODO MqttClientService.PublishMessage($"config/{id}", JsonConvert.SerializeObject(new PlayerMessageDTO() { configChanged = true, isDeleted = true }));
return new ObjectResult("The configuration has been deleted") { StatusCode = 202 }; return new ObjectResult("The configuration has been deleted") { StatusCode = 202 };
@ -254,12 +268,18 @@ namespace ManagerService.Controllers
throw new ArgumentNullException("Configuration param is null"); throw new ArgumentNullException("Configuration param is null");
Configuration configuration = _configurationService.GetById(id); Configuration configuration = _configurationService.GetById(id);
if (configuration == null) if (configuration == null)
throw new KeyNotFoundException("Configuration does not exist"); throw new KeyNotFoundException("Configuration does not exist");
List<SectionDTO> sectionDTOs = _sectionService.GetAllFromConfiguration(configuration.Id).Select(s => s.ToDTO()).ToList(); List<SectionDTO> sectionDTOs = _sectionService.GetAllFromConfiguration(configuration.Id).Select(s => s.ToDTO()).ToList();
List<ResourceDTO> resourceDTOs = new List<ResourceDTO>(); List<ResourceDTO> resourceDTOs = new List<ResourceDTO>();
if (configuration.ImageId != null)
{
addResourceToList(resourceDTOs, configuration.ImageId);
}
foreach (var section in sectionDTOs) foreach (var section in sectionDTOs)
{ {
if (section.imageId != null) { if (section.imageId != null) {
@ -400,6 +420,15 @@ namespace ManagerService.Controllers
configuration = new Configuration(); configuration = new Configuration();
configuration.Id = exportConfiguration.id; configuration.Id = exportConfiguration.id;
configuration.Label = exportConfiguration.label; configuration.Label = exportConfiguration.label;
configuration.Title = exportConfiguration.title;
configuration.ImageId = exportConfiguration.imageId;
configuration.ImageSource = exportConfiguration.imageSource;
if (configuration.ImageId != null)
{
createResource(exportConfiguration.resources.Where(r => r.id == configuration.ImageId).FirstOrDefault());
}
configuration.DateCreation = exportConfiguration.dateCreation; configuration.DateCreation = exportConfiguration.dateCreation;
configuration.PrimaryColor = exportConfiguration.primaryColor; configuration.PrimaryColor = exportConfiguration.primaryColor;
configuration.SecondaryColor = exportConfiguration.secondaryColor; configuration.SecondaryColor = exportConfiguration.secondaryColor;

View File

@ -239,7 +239,7 @@ namespace ManagerService.Controllers
Device deviceModified = _deviceService.Update(device.Id, device); Device deviceModified = _deviceService.Update(device.Id, device);
MqttClientService.PublishMessage($"player/{device.Id}", JsonConvert.SerializeObject(new PlayerMessageDTO() { configChanged = true })); // TODO MqttClientService.PublishMessage($"player/{device.Id}", JsonConvert.SerializeObject(new PlayerMessageDTO() { configChanged = true }));
return new OkObjectResult(deviceModified.ToDTO()); return new OkObjectResult(deviceModified.ToDTO());
} }

View File

@ -3,6 +3,7 @@ using Manager.Interfaces.Models;
using Manager.Services; using Manager.Services;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Mqtt.Client.AspNetCore.Services; using Mqtt.Client.AspNetCore.Services;
using Newtonsoft.Json; using Newtonsoft.Json;
@ -21,10 +22,12 @@ namespace ManagerService.Controllers
private SectionDatabaseService _sectionService; private SectionDatabaseService _sectionService;
private ConfigurationDatabaseService _configurationService; private ConfigurationDatabaseService _configurationService;
private readonly ILogger<SectionController> _logger; private readonly ILogger<SectionController> _logger;
private readonly IConfiguration _configuration;
public SectionController(ILogger<SectionController> logger, SectionDatabaseService sectionService, ConfigurationDatabaseService configurationService) public SectionController(IConfiguration configuration, ILogger<SectionController> logger, SectionDatabaseService sectionService, ConfigurationDatabaseService configurationService)
{ {
_logger = logger; _logger = logger;
_configuration = configuration;
_sectionService = sectionService; _sectionService = sectionService;
_configurationService = configurationService; _configurationService = configurationService;
} }
@ -241,14 +244,18 @@ namespace ManagerService.Controllers
section.Description = new List<TranslationDTO>(); section.Description = new List<TranslationDTO>();
section.Order = _sectionService.GetAllFromConfiguration(newSection.configurationId).Count; section.Order = _sectionService.GetAllFromConfiguration(newSection.configurationId).Count;
// Preparation // Preparation
List<string> languages = new List<string> { "FR", "NL", "EN", "DE" };//_configurationService.GetById(newSection.ConfigurationId).Languages; List<string> languages = _configuration.GetSection("SupportedLanguages").Get<List<string>>();
var contentArticle = new List<TranslationDTO>(); var contentArticle = new List<TranslationDTO>();
var mapDTO = new MapDTO(); // For menu dto var mapDTO = new MapDTO(); // For menu dto
var sliderDTO = new SliderDTO(); // For menu dto var sliderDTO = new SliderDTO(); // For menu dto
foreach (var language in languages) section.Title = LanguageInit.Init("Title", languages);
section.Description = LanguageInit.Init("Description", languages);
contentArticle = LanguageInit.Init("Content", languages);
/*foreach (var language in languages)
{ {
TranslationDTO title = new TranslationDTO(); TranslationDTO title = new TranslationDTO();
TranslationDTO description = new TranslationDTO(); TranslationDTO description = new TranslationDTO();
@ -282,7 +289,7 @@ namespace ManagerService.Controllers
section.Title.Add(title); section.Title.Add(title);
section.Description.Add(description); section.Description.Add(description);
contentArticle.Add(content); contentArticle.Add(content);
} }*/
section.Title = section.Title.OrderBy(t => t.language).ToList(); section.Title = section.Title.OrderBy(t => t.language).ToList();
section.Description = section.Description.OrderBy(d => d.language).ToList(); section.Description = section.Description.OrderBy(d => d.language).ToList();
@ -461,7 +468,7 @@ namespace ManagerService.Controllers
Section sectionModified = _sectionService.Update(updatedSection.id, section); Section sectionModified = _sectionService.Update(updatedSection.id, section);
MqttClientService.PublishMessage($"config/{sectionModified.ConfigurationId}", JsonConvert.SerializeObject(new PlayerMessageDTO() { configChanged = true })); // TODO MqttClientService.PublishMessage($"config/{sectionModified.ConfigurationId}", JsonConvert.SerializeObject(new PlayerMessageDTO() { configChanged = true }));
return new OkObjectResult(sectionModified.ToDTO()); return new OkObjectResult(sectionModified.ToDTO());
} }
@ -510,7 +517,7 @@ namespace ManagerService.Controllers
} }
if (updatedSectionsOrder.Count > 0) { if (updatedSectionsOrder.Count > 0) {
MqttClientService.PublishMessage($"config/{updatedSectionsOrder[0].configurationId}", JsonConvert.SerializeObject(new PlayerMessageDTO() { configChanged = true })); // TODO MqttClientService.PublishMessage($"config/{updatedSectionsOrder[0].configurationId}", JsonConvert.SerializeObject(new PlayerMessageDTO() { configChanged = true }));
} }
return new ObjectResult("Sections order has been successfully modified") { StatusCode = 200 }; return new ObjectResult("Sections order has been successfully modified") { StatusCode = 200 };

View File

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Manager.Interfaces.DTO;
using Manager.Interfaces.Models;
using Microsoft.Extensions.Configuration;
using MongoDB.Driver;
namespace Manager.Services
{
public class LanguageInit
{
public static List<TranslationDTO> Init(string label, List<string> languages)
{
List<TranslationDTO> translations = new List<TranslationDTO>();
foreach (var language in languages)
{
translations.Add(new TranslationDTO() { language = language.ToUpper(), value = $"{language} - {label}" });
}
return translations;
}
}
}

View File

@ -139,6 +139,7 @@ namespace ManagerService
services.AddScoped<SectionDatabaseService>(); services.AddScoped<SectionDatabaseService>();
services.AddScoped<ConfigurationDatabaseService>(); services.AddScoped<ConfigurationDatabaseService>();
services.AddScoped<ResourceDatabaseService>(); services.AddScoped<ResourceDatabaseService>();
services.AddScoped<LanguageInit>();
services.AddScoped<DeviceDatabaseService>(); services.AddScoped<DeviceDatabaseService>();
} }

View File

@ -34,5 +34,6 @@
"UserName": "admin", "UserName": "admin",
"Password": "mdlf2021!" "Password": "mdlf2021!"
}, },
"SupportedLanguages": [ "FR", "NL", "EN", "DE", "IT", "ES", "PL", "CN" ],
"Urls": "http://localhost:5002" "Urls": "http://localhost:5002"
} }