redirect to 1.2.0 + update entities and other for visitNamur

This commit is contained in:
Thomas Fransolet 2023-12-15 17:00:07 +01:00
parent 17f9cd2334
commit cc89f7b717
15 changed files with 43 additions and 182 deletions

View File

@ -10,7 +10,7 @@ namespace Manager.Interfaces.DTO
public string id { get; set; }
public ResourceType type { get; set; }
public string label { get; set; }
public string data { get; set; }
public string url { get; set; } // firebase url
public DateTime dateCreation { get; set; }
public string instanceId { get; set; }
}

View File

@ -6,7 +6,7 @@ namespace Manager.Interfaces.DTO
{
public class AgendaDTO
{
//public string Title { get; set; } // Dictionary<string, object> with all languages
public string source { get; set; } // url to resource id (local) or on internet => JSON file
public string resourceId { get; set; } // url to resource id
public string resourceUrl { get; set; } // url to resource firebase or on internet => JSON file
}
}

View File

@ -11,16 +11,6 @@ namespace Manager.Interfaces.DTO
public bool isContentTop { get; set; } // MyVisit - True if content is displayed at top, false otherwise
public List<TranslationDTO> audioIds { get; set; }
public bool isReadAudioAuto { get; set; } // MyVisit - True for audio play when open the article / false otherwise
public List<ImageDTO> images { get; set; } // Will check if ok or if we need need type of image (simpler)
}
public class ImageDTO
{
public List<TranslationDTO> title { get; set; }
public List<TranslationDTO> description { get; set; }
public string resourceId { get; set; }
public string source { get; set; } // url to resource id (local) or on internet
public int order { get; set; } // Order to show
public ResourceType type { get; set; }
public List<ContentDTO> contents { get; set; }
}
}

View File

@ -6,7 +6,7 @@ namespace Manager.Interfaces.DTO
{
public class PdfDTO
{
//public string Title { get; set; } // Dictionary<string, object> with all languages
public string source { get; set; } // url to resource id (local) or on internet
public string resourceId { get; set; } // url to resource id
public string resourceUrl { get; set; } // url to resource firebase or on internet => JSON file
}
}

View File

@ -9,6 +9,6 @@ namespace Manager.Interfaces.DTO
{
public List<TranslationDTO> messageDebut { get; set; }
public List<TranslationDTO> messageFin { get; set; }
public ImageDTO image { get; set; }
public ContentDTO image { get; set; } // But only image is possible
}
}

View File

@ -31,14 +31,17 @@ namespace Manager.Interfaces.Models
[BsonRequired]
public string InstanceId { get; set; }
public ResourceDTO ToDTO(string data = null) //
[BsonElement("URL")]
public string Url { get; set; } // Firebase url
public ResourceDTO ToDTO()
{
return new ResourceDTO()
{
id = Id,
label = Label,
type = Type,
data = data,
url = Url,
dateCreation = DateCreation,
instanceId = InstanceId
};

View File

@ -1,31 +0,0 @@
using Manager.Interfaces.DTO;
using MongoDB.Bson.Serialization.Attributes;
using System;
using System.Collections.Generic;
using System.Text;
namespace Manager.Interfaces.Models
{
/// <summary>
/// Resource Information
/// </summary>
public class ResourceData
{
[BsonId]
[BsonRepresentation(MongoDB.Bson.BsonType.ObjectId)]
public string Id { get; set; }
[BsonElement("Data")]
[BsonRequired]
public string Data { get; set; }
[BsonElement("ResourceId")]
[BsonRequired]
public string ResourceId { get; set; }
[BsonElement("InstanceId")]
[BsonRequired]
public string InstanceId { get; set; }
}
}

View File

@ -27,12 +27,11 @@ namespace ManagerService.Controllers
private InstanceDatabaseService _instanceService;
private SectionDatabaseService _sectionService;
private ResourceDatabaseService _resourceService;
private ResourceDataDatabaseService _resourceDataService;
private DeviceDatabaseService _deviceService;
private readonly ILogger<ConfigurationController> _logger;
private readonly IConfiguration _configuration;
public ConfigurationController(IConfiguration configuration, ILogger<ConfigurationController> logger, ConfigurationDatabaseService configurationService, InstanceDatabaseService instanceService, SectionDatabaseService sectionService, ResourceDatabaseService resourceService, ResourceDataDatabaseService resourceDataService, DeviceDatabaseService deviceService)
public ConfigurationController(IConfiguration configuration, ILogger<ConfigurationController> logger, ConfigurationDatabaseService configurationService, InstanceDatabaseService instanceService, SectionDatabaseService sectionService, ResourceDatabaseService resourceService, DeviceDatabaseService deviceService)
{
_logger = logger;
_configuration = configuration;
@ -40,7 +39,6 @@ namespace ManagerService.Controllers
_instanceService = instanceService;
_sectionService = sectionService;
_resourceService = resourceService;
_resourceDataService = resourceDataService;
_deviceService = deviceService;
}
@ -409,11 +407,11 @@ namespace ManagerService.Controllers
break;
case SectionType.Article:
ArticleDTO articleDTO = JsonConvert.DeserializeObject<ArticleDTO>(section.data);
foreach (var image in articleDTO.images)
foreach (var content in articleDTO.contents)
{
if (image.resourceId != null)
if (content.resourceId != null)
{
addResourceToList(resourceDTOs, image.resourceId);
addResourceToList(resourceDTOs, content.resourceId);
}
}
@ -606,11 +604,11 @@ namespace ManagerService.Controllers
break;
case SectionType.Article:
ArticleDTO articleDTO = JsonConvert.DeserializeObject<ArticleDTO>(section.data);
foreach (var image in articleDTO.images)
foreach (var content in articleDTO.contents)
{
if (image.resourceId != null)
if (content.resourceId != null)
{
createResource(exportConfiguration.resources.Where(r => r.id == image.resourceId).FirstOrDefault());
createResource(exportConfiguration.resources.Where(r => r.id == content.resourceId).FirstOrDefault());
}
}
break;
@ -655,26 +653,17 @@ namespace ManagerService.Controllers
resource.DateCreation = resourceExport.dateCreation;
//resource.Data = resourceExport.data;
ResourceData resourceData = new ResourceData();
resourceData.ResourceId = resourceExport.id;
resourceData.InstanceId = resourceExport.instanceId;
resourceData.Data = resourceExport.data;
if (!_resourceService.IsExist(resourceExport.id))
_resourceService.Create(resource);
if (!_resourceDataService.IsExist(resourceExport.id))
_resourceDataService.Create(resourceData);
}
}
private List<ResourceDTO> addResourceToList(List<ResourceDTO> resourceDTOs, string resourceId) {
if (!resourceDTOs.Select(r => r.id).Contains(resourceId)) {
Resource resource = _resourceService.GetById(resourceId);
ResourceData resourceData = _resourceDataService.GetByResourceId(resourceId);
if (resource != null && resourceData != null && !resourceDTOs.Any(r => r.id == resource.Id)) {
resourceDTOs.Add(resource.ToDTO(resourceData.Data));
if (resource != null && !resourceDTOs.Any(r => r.id == resource.Id)) {
resourceDTOs.Add(resource.ToDTO());
}
}
return resourceDTOs;

View File

@ -15,6 +15,7 @@ using ManagerService.Helpers;
using ManagerService.Service.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Server.IIS.Core;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using NSwag.Annotations;
@ -28,7 +29,6 @@ namespace ManagerService.Controllers
public class ResourceController : ControllerBase
{
private ResourceDatabaseService _resourceService;
private ResourceDataDatabaseService _resourceDataService;
private SectionDatabaseService _sectionService;
private ConfigurationDatabaseService _configurationService;
private readonly ILogger<ResourceController> _logger;
@ -36,11 +36,10 @@ namespace ManagerService.Controllers
private static int MaxWidth = 1024;
private static int MaxHeight = 1024;
public ResourceController(ILogger<ResourceController> logger, ResourceDatabaseService resourceService, ResourceDataDatabaseService resourceDataService, SectionDatabaseService sectionService, ConfigurationDatabaseService configurationService)
public ResourceController(ILogger<ResourceController> logger, ResourceDatabaseService resourceService, SectionDatabaseService sectionService, ConfigurationDatabaseService configurationService)
{
_logger = logger;
_resourceService = resourceService;
_resourceDataService = resourceDataService;
_sectionService = sectionService;
_configurationService = configurationService;
}
@ -74,11 +73,6 @@ namespace ManagerService.Controllers
{
ResourceDTO resourceDTO = new ResourceDTO();
resourceDTO = resource.ToDTO();
if(resource.Type == ResourceType.ImageUrl)
{
var resourceData = _resourceDataService.GetByResourceId(resource.Id);
resourceDTO.data = resourceData != null ? resourceData.Data : null;
}
resourceDTOs.Add(resourceDTO);
}
@ -110,8 +104,6 @@ namespace ManagerService.Controllers
ResourceDTO resourceDTO = new ResourceDTO();
resourceDTO = resource.ToDTO();
ResourceData resourceData = _resourceDataService.GetByResourceId(id);
resourceDTO.data = resourceData.Data;
/*if (resource.Type == ResourceType.ImageUrl)
{
var resourceData = _resourceDataService.GetByResourceId(resource.Id);
@ -166,12 +158,10 @@ namespace ManagerService.Controllers
try
{
Resource resource = _resourceService.GetById(id);
ResourceData resourceData = _resourceDataService.GetByResourceId(id);
if (resource == null || resourceData == null)
if (resource == null)
throw new KeyNotFoundException("This resource was not found");
var file = Convert.FromBase64String(resourceData.Data);
//var file = Convert.FromBase64String(resourceData.Data);
// RESIZE IMAGE
@ -193,7 +183,7 @@ namespace ManagerService.Controllers
}
}*/
if (resource.Type == ResourceType.Image)
/*if (resource.Type == ResourceType.Image)
{
return new FileContentResult(file, "image/png")
{
@ -208,7 +198,8 @@ namespace ManagerService.Controllers
};
}
return new FileContentResult(file, "image/png");
return new FileContentResult(file, "image/png");*/
return new NotFoundObjectResult("No more supported") { };
}
catch (KeyNotFoundException ex)
{
@ -220,6 +211,7 @@ namespace ManagerService.Controllers
}
}
// OLD VERSION
/// <summary>
/// Upload a specific resource (picture or video)
/// </summary>
@ -272,12 +264,6 @@ namespace ManagerService.Controllers
resource.InstanceId = instanceId;
Resource resourceCreated = _resourceService.Create(resource);
resources.Add(resourceCreated);
ResourceData resourceData = new ResourceData();
resourceData.Data = stringResult;
resourceData.ResourceId = resourceCreated.Id;
resourceData.InstanceId = stringResult;
ResourceData resourceDataCreated = _resourceDataService.Create(resourceData);
}
}
return Ok(resources.Select(r => r.ToDTO()));
@ -321,21 +307,13 @@ namespace ManagerService.Controllers
resource.InstanceId = newResource.instanceId;
resource.Label = newResource.label;
resource.Type = newResource.type;
resource.Url = newResource.url;
resource.DateCreation = DateTime.Now;
//resource.Data = newResource.data;
resource.InstanceId = newResource.instanceId;
Resource resourceCreated = _resourceService.Create(resource);
if(resource.Type == ResourceType.ImageUrl || resource.Type == ResourceType.VideoUrl)
{
ResourceData resourceData = new ResourceData();
resourceData.Data = newResource.data;
resourceData.ResourceId = resourceCreated.Id;
resourceData.InstanceId = newResource.instanceId;
ResourceData resourceDataCreated = _resourceDataService.Create(resourceData);
}
return new OkObjectResult(resourceCreated.ToDTO()); // WITHOUT DATA
}
catch (ArgumentNullException ex)
@ -378,6 +356,7 @@ namespace ManagerService.Controllers
resource.InstanceId = updatedResource.instanceId;
resource.Label = updatedResource.label;
resource.Type = updatedResource.type;
resource.Url = updatedResource.url;
//resource.Data = updatedResource.data; // NOT ALLOWED
Resource resourceModified = _resourceService.Update(updatedResource.id, resource);
@ -416,7 +395,6 @@ namespace ManagerService.Controllers
throw new ArgumentNullException("Resource param is null");
var ressource = _resourceService.GetById(id);
var ressourceData = _resourceDataService.GetByResourceId(id);
if (ressource == null)
throw new KeyNotFoundException("Resource does not exist");
@ -496,13 +474,13 @@ namespace ManagerService.Controllers
break;
case SectionType.Article:
ArticleDTO articleDTO = JsonConvert.DeserializeObject<ArticleDTO>(section.Data);
List<ImageDTO> imagesArticleToKeep = new List<ImageDTO>();
foreach (var image in articleDTO.images)
List<ContentDTO> contentsArticleToKeep = new List<ContentDTO>();
foreach (var content in articleDTO.contents)
{
if (image.resourceId != id)
imagesArticleToKeep.Add(image);
if (content.resourceId != id)
contentsArticleToKeep.Add(content);
}
articleDTO.images = imagesArticleToKeep;
articleDTO.contents = contentsArticleToKeep;
section.Data = JsonConvert.SerializeObject(articleDTO);
break;
}
@ -511,10 +489,6 @@ namespace ManagerService.Controllers
}
_resourceService.Remove(id);
if (ressourceData != null)
{
_resourceDataService.Remove(ressourceData.Id);
}
return new ObjectResult("The resource has been deleted") { StatusCode = 202 };

View File

@ -414,7 +414,7 @@ namespace ManagerService.Controllers
break;
case SectionType.Article:
ArticleDTO articleDTO = new ArticleDTO();
articleDTO.images = new List<ImageDTO>();
articleDTO.contents = new List<ContentDTO>();
articleDTO.content = contentArticle;
articleDTO.audioIds = LanguageInit.Init("Audio", languages, true);

View File

@ -27,9 +27,9 @@ namespace Mqtt.Client.AspNetCore.Services
public MqttClientService(IMqttClientOptions options)
{
var server = "mymuseum.be";
var server = "myinfomate.be";
#if DEBUG
server = "mymuseum.be";//"192.168.31.96";
server = "myinfomate.be";//"192.168.31.96";
#endif
this.options = options;
this.options = new MqttClientOptionsBuilder()

View File

@ -9,7 +9,7 @@ by editing this MSBuild file. In order to learn more about this please visit htt
<DockerPublish>true</DockerPublish>
<RegistryUrl>https://registry.unov.be</RegistryUrl>
<UserName>admin</UserName>
<PublishImageTag>latest</PublishImageTag>
<PublishImageTag>version-2.0.0</PublishImageTag>
<PublishProvider>ContainerRegistry</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>

View File

@ -1,64 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Manager.Interfaces.Models;
using Microsoft.Extensions.Configuration;
using MongoDB.Driver;
namespace Manager.Services
{
public class ResourceDataDatabaseService
{
private readonly IMongoCollection<ResourceData> _ResourcesData;
public ResourceDataDatabaseService(IConfiguration config)
{
var client = new MongoClient(config.GetConnectionString("TabletDb"));
var database = client.GetDatabase("TabletDb");
_ResourcesData = database.GetCollection<ResourceData>("ResourcesData");
}
public List<ResourceData> GetAll(string instanceId)
{
return _ResourcesData.Find(r => r.InstanceId == instanceId).ToList();
}
public ResourceData GetById(string id)
{
return _ResourcesData.Find<ResourceData>(r => r.Id == id).FirstOrDefault();
}
public ResourceData GetByResourceId(string id)
{
return _ResourcesData.Find<ResourceData>(r => r.ResourceId == id).FirstOrDefault();
}
public bool IsExist(string id)
{
return _ResourcesData.Find<ResourceData>(r => r.Id == id).FirstOrDefault() != null ? true : false;
}
public bool IsExistResourceId(string id)
{
return _ResourcesData.Find<ResourceData>(r => r.ResourceId == id).FirstOrDefault() != null ? true : false;
}
public ResourceData Create(ResourceData resource)
{
_ResourcesData.InsertOne(resource);
return resource;
}
public ResourceData Update(string id, ResourceData resourceIn)
{
_ResourcesData.ReplaceOne(r => r.Id == id, resourceIn);
return resourceIn;
}
public void Remove(string id)
{
_ResourcesData.DeleteOne(r => r.Id == id);
}
}
}

View File

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

View File

@ -4,7 +4,8 @@
//"TabletDb": "mongodb://admin:MioTech4ever!@localhost:27017", //PROD - Thomas
//"TabletDb": "mongodb://admin:MioTech4ever!@192.168.31.140:27017" //PROD - Thomas
//"TabletDb": "mongodb://admin:mdlf2021!@localhost:27017" //PROD MDLF
"TabletDb": "mongodb://admin:MyMuseum2022!@51.77.222.154:27017" //PROD MyMuseum
//"TabletDb": "mongodb://admin:MyMuseum2022!@51.77.222.154:27017", //PROD MyMuseum
"TabletDb": "mongodb://admin:MyInfoMate2023!@135.125.232.116:27017" //PROD MyInfoMate
},
"Logging": {
"LogLevel": {
@ -33,7 +34,7 @@
"ClientSettings": {
"Id": "ManagerService",
"UserName": "user1", //admin
"Password": "MyMuseum2023!" //mdlf2021!
"Password": "MyInfoMate2023!" //mdlf2021!
},
"SupportedLanguages": [ "FR", "NL", "EN", "DE", "IT", "ES", "PL", "CN", "AR", "UK" ]
//"Urls": "http://[::]:80"