Add new subsection ArticleDTO + add offline and mobile option

This commit is contained in:
Fransolet Thomas 2022-06-11 20:58:43 +02:00
parent 820de792a5
commit 55a612fd0c
10 changed files with 86 additions and 5 deletions

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>

View File

@ -12,5 +12,9 @@ namespace Manager.Interfaces.DTO
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 DateTime dateCreation { get; set; }
public bool isMobile { get; set; } // MyVisit - True if for mobile (MyVisit)
public bool isOffline { get; set; } // MyVisit - True if MyVisit is full offline
/*public string latitude { get; set; } // MyVisit - latitude of visit ? (MyVisit)
public string longitude { get; set; } // MyVisit - True if for mobile (MyVisit)*/
}
}

View File

@ -0,0 +1,19 @@
using Manager.Interfaces.Models;
using System;
using System.Collections.Generic;
using System.Text;
namespace Manager.Interfaces.DTO
{
public class ArticleDTO
{
public List<TranslationDTO> title { get; set; }
public List<TranslationDTO> description { get; set; }
public List<TranslationDTO> content { get; set; }
public string qrCode { get; set; } // MyVisit - QR code identifier int ? String ?
public bool isContentTop { get; set; } // MyVisit - True if content is displayed at top, false otherwise
public string audioId { get; set; } // MyVisit - Audio Identifier
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)
}
}

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>

View File

@ -31,6 +31,12 @@ namespace Manager.Interfaces.Models
[BsonElement("DateCreation")]
public DateTime DateCreation { get; set; }
[BsonElement("IsMobile")]
public bool IsMobile { get; set; }
[BsonElement("IsOffline")]
public bool IsOffline { get; set; }
public ConfigurationDTO ToDTO()
{
return new ConfigurationDTO()
@ -40,7 +46,9 @@ namespace Manager.Interfaces.Models
dateCreation = DateCreation,
primaryColor = PrimaryColor,
languages = Languages,
secondaryColor = SecondaryColor
secondaryColor = SecondaryColor,
isMobile = IsMobile,
isOffline = IsOffline
};
}
@ -53,6 +61,8 @@ namespace Manager.Interfaces.Models
primaryColor = PrimaryColor,
languages = Languages,
secondaryColor = SecondaryColor,
isMobile = IsMobile,
isOffline = IsOffline,
sections = sections,
resources = resources
};

View File

@ -89,6 +89,7 @@ namespace Manager.Interfaces.Models
Video,
Web,
Menu,
Quizz
Quizz,
Article
}
}

View File

@ -111,6 +111,8 @@ namespace ManagerService.Controllers
configuration.SecondaryColor = newConfiguration.secondaryColor;
configuration.Languages = new List<string> { "FR", "NL", "EN", "DE" }; // by default all languages
configuration.DateCreation = DateTime.Now;
configuration.IsMobile = newConfiguration.isMobile;
configuration.IsOffline = newConfiguration.isOffline;
Configuration configurationCreated = _configurationService.Create(configuration);
@ -157,6 +159,8 @@ namespace ManagerService.Controllers
configuration.PrimaryColor = updatedConfiguration.primaryColor;
configuration.SecondaryColor = updatedConfiguration.secondaryColor;
configuration.Languages = updatedConfiguration.languages;
configuration.IsMobile = updatedConfiguration.isMobile;
configuration.IsOffline = updatedConfiguration.isOffline;
Configuration configurationModified = _configurationService.Update(updatedConfiguration.id, configuration);
@ -326,6 +330,16 @@ namespace ManagerService.Controllers
}
}
break;
case SectionType.Article:
ArticleDTO articleDTO = JsonConvert.DeserializeObject<ArticleDTO>(section.data);
foreach (var image in articleDTO.images)
{
if (image.resourceId != null)
{
addResourceToList(resourceDTOs, image.resourceId);
}
}
break;
case SectionType.Menu:
case SectionType.Web:
case SectionType.Video:
@ -388,6 +402,8 @@ namespace ManagerService.Controllers
configuration.PrimaryColor = exportConfiguration.primaryColor;
configuration.SecondaryColor = exportConfiguration.secondaryColor;
configuration.Languages = exportConfiguration.languages;
configuration.IsMobile = exportConfiguration.isMobile;
configuration.IsOffline = exportConfiguration.isOffline;
_configurationService.Create(configuration);
@ -484,6 +500,16 @@ namespace ManagerService.Controllers
}
}
break;
case SectionType.Article:
ArticleDTO articleDTO = JsonConvert.DeserializeObject<ArticleDTO>(section.data);
foreach (var image in articleDTO.images)
{
if (image.resourceId != null)
{
createResource(exportConfiguration.resources.Where(r => r.id == image.resourceId).FirstOrDefault());
}
}
break;
case SectionType.Menu:
case SectionType.Web:
case SectionType.Video:

View File

@ -357,6 +357,17 @@ namespace ManagerService.Controllers
}
section.Data = JsonConvert.SerializeObject(quizzDTO);
break;
case SectionType.Article:
ArticleDTO articleDTO = JsonConvert.DeserializeObject<ArticleDTO>(section.Data);
List<ImageDTO> imagesArticleToKeep = new List<ImageDTO>();
foreach (var image in articleDTO.images)
{
if (image.resourceId != id)
imagesArticleToKeep.Add(image);
}
articleDTO.images = imagesArticleToKeep;
section.Data = JsonConvert.SerializeObject(articleDTO);
break;
}
_sectionService.Update(section.Id, section);

View File

@ -621,5 +621,15 @@ namespace ManagerService.Controllers
{
return new ObjectResult("QuizzDTO") { StatusCode = 200 };
}
/// <summary>
/// Useless, just to generate dto code
/// </summary>
[ProducesResponseType(typeof(ArticleDTO), 200)]
[HttpGet("ArticleDTO")]
public ObjectResult GetArticleDTO()
{
return new ObjectResult("ArticleDTO") { StatusCode = 200 };
}
}
}

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>