Merge branch 'master' into MethodeExtensions

MethodeExtensions
Victor GABORIT 1 year ago
commit 3d216e05bb

@ -47,7 +47,7 @@ namespace API.Controllers
try try
{ {
_logger.LogInformation("[INFORMATION] Le succès avec l'id de l'utilisateur {id} a été trouvé.", id); _logger.LogInformation("[INFORMATION] Le succès avec l'id de l'utilisateur {id} a été trouvé.", id);
return Ok(_successDataService.GetSuccessByUserId(id)); return Ok(_successDataService.GetSuccessesByUserId(id));
} }
catch (ArgumentException) catch (ArgumentException)
{ {
@ -65,7 +65,7 @@ namespace API.Controllers
{ {
_logger.LogInformation("[INFORMATION] Utilisateur avec l'id de l'enquête {inquiryId} a été trouvé.", _logger.LogInformation("[INFORMATION] Utilisateur avec l'id de l'enquête {inquiryId} a été trouvé.",
id); id);
return Ok(_successDataService.GetSuccessByInquiryId(id)); return Ok(_successDataService.GetSuccessesByInquiryId(id));
} }
catch (ArgumentException) catch (ArgumentException)
{ {
@ -74,20 +74,20 @@ namespace API.Controllers
} }
} }
[HttpDelete("success/{id:int}")] [HttpDelete("success/{idUser:int}/{idInquiry:int}")]
[ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(SuccessDTO), 200)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult DeleteSuccess(int id) public IActionResult DeleteSuccess(int idUser, int idInquiry)
{ {
var success = _successDataService.DeleteSuccess(id); var success = _successDataService.DeleteSuccess(idUser, idInquiry);
if (success) if (success)
{ {
_logger.LogInformation("[INFORMATION] Le succès avec l'id {id} a été supprimé.", id); _logger.LogInformation("[INFORMATION] Le succès avec l'id {id} a été supprimé.", idUser);
return Ok(_successDataService.DeleteSuccess(id)); return Ok(success);
} }
else else
{ {
_logger.LogError("[ERREUR] Aucun succès trouvé avec l'id {id}.", id); _logger.LogError("[ERREUR] Aucun succès trouvé avec l'id {id}.", idUser);
return NotFound(); return NotFound();
} }
} }
@ -108,35 +108,34 @@ namespace API.Controllers
_successDataService.CreateSuccess(dto.UserId, dto.InquiryId, dto.IsFinished)); _successDataService.CreateSuccess(dto.UserId, dto.InquiryId, dto.IsFinished));
} }
[HttpPut("success/{id:int}")] [HttpPut("success/{idUser:int}/{idInquiry:int}")]
[ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(SuccessDTO), 200)]
[ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult UpdateSuccess(int id, [FromBody] SuccessDTO successDTO) public IActionResult UpdateSuccess(int idUser, int idInquiry, [FromBody] SuccessDTO successDTO)
{ {
if (id != successDTO.UserId) if (idUser != successDTO.UserId || idInquiry != successDTO.InquiryId)
{ {
_logger.LogError( _logger.LogError(
"[ERREUR] Problème ID - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.", id); "[ERREUR] Problème ID - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.", idUser);
return BadRequest(); return BadRequest();
} }
if (!ModelState.IsValid) if (!ModelState.IsValid)
{ {
_logger.LogError( _logger.LogError(
"[ERREUR] Problème controlleur - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.", "[ERREUR] Problème controlleur - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.",
id); idUser);
return BadRequest(); return BadRequest();
} }
if (successDTO != null) if (successDTO != null)
{ {
_logger.LogInformation( _logger.LogInformation(
"[INFORMATION] La mise à jour du succès avec l'id de l'utilisateur {id} a été effectuée", id); "[INFORMATION] La mise à jour du succès avec l'id de l'utilisateur {id} a été effectuée", idUser);
return Ok(_successDataService.UpdateSuccess(id, successDTO)); return Ok(_successDataService.UpdateSuccess(idUser,idInquiry, successDTO));
} }
_logger.LogError("[ERREUR] Aucun succès trouvé avec l'id de l'utilisateur {id}.", id); _logger.LogError("[ERREUR] Aucun succès trouvé avec l'id de l'utilisateur {id}.", idUser);
return NotFound(); return NotFound();
} }
} }

@ -14,14 +14,14 @@ public class SuccessDataServiceApi(ISuccessService<SuccessEntity> sucessService)
return successesEntities.Select(e => e.FromEntityToDTO()).ToList(); return successesEntities.Select(e => e.FromEntityToDTO()).ToList();
} }
public SuccessDTO GetSuccessByUserId(int id) => sucessService.GetSuccessByUserId(id).FromEntityToDTO(); public IEnumerable<SuccessDTO> GetSuccessesByUserId(int id) => sucessService.GetSuccessesByUserId(id).Select(s => s.FromEntityToDTO());
public SuccessDTO GetSuccessByInquiryId(int id) => sucessService.GetSuccessByInquiryId(id).FromEntityToDTO(); public IEnumerable<SuccessDTO> GetSuccessesByInquiryId(int id) => sucessService.GetSuccessesByInquiryId(id).Select(s => s.FromEntityToDTO());
public bool DeleteSuccess(int id) => sucessService.DeleteSuccess(id); public bool DeleteSuccess(int idUser, int idInquiry) => sucessService.DeleteSuccess(idUser, idInquiry);
public SuccessDTO UpdateSuccess(int id, SuccessDTO success) => public SuccessDTO UpdateSuccess(int idUser, int idInquiry, SuccessDTO success) =>
sucessService.UpdateSuccess(id, success.FromDTOToEntity()).FromEntityToDTO(); sucessService.UpdateSuccess(idUser, idInquiry, success.FromDTOToEntity()).FromEntityToDTO();
public SuccessDTO CreateSuccess(int userId, int inquiryId, bool isFinished) => public SuccessDTO CreateSuccess(int userId, int inquiryId, bool isFinished) =>
sucessService.CreateSuccess(userId, inquiryId, isFinished).FromEntityToDTO(); sucessService.CreateSuccess(userId, inquiryId, isFinished).FromEntityToDTO();

@ -12,7 +12,6 @@ namespace DbContextLib
public DbSet<InquiryEntity> Inquiries { get; set; } public DbSet<InquiryEntity> Inquiries { get; set; }
public DbSet<InquiryTableEntity> InquiryTables { get; set; } public DbSet<InquiryTableEntity> InquiryTables { get; set; }
public DbSet<LessonEntity> Lessons { get; set; } public DbSet<LessonEntity> Lessons { get; set; }
public DbSet<ContentLessonEntity> ContentLessons { get; set; }
public DbSet<ParagraphEntity> Paragraphs { get; set; } public DbSet<ParagraphEntity> Paragraphs { get; set; }
public DbSet<SolutionEntity> Solutions { get; set; } public DbSet<SolutionEntity> Solutions { get; set; }
public DbSet<SuccessEntity> Successes { get; set; } public DbSet<SuccessEntity> Successes { get; set; }
@ -31,7 +30,9 @@ namespace DbContextLib
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {
modelBuilder.Entity<ContentLessonEntity>().HasKey(c => c.LessonId); // Permet d'avoir les champs de la classe mère dans les classes filles et de ne pas avoir de table pour la classe mère
modelBuilder.Entity<ContentLessonEntity>().UseTpcMappingStrategy();
modelBuilder.Entity<SuccessEntity>().HasKey(s => s.UserId); modelBuilder.Entity<SuccessEntity>().HasKey(s => s.UserId);
modelBuilder.Entity<SuccessEntity>().HasKey(s => s.InquiryId); modelBuilder.Entity<SuccessEntity>().HasKey(s => s.InquiryId);
modelBuilder.Entity<InquiryEntity>().HasKey(s => s.Id); modelBuilder.Entity<InquiryEntity>().HasKey(s => s.Id);

@ -40,55 +40,53 @@ public class SuccessDataService : ISuccessService<SuccessEntity>
return successes; return successes;
} }
public SuccessEntity GetSuccessByUserId(int id) public IEnumerable<SuccessEntity> GetSuccessesByUserId(int id)
{ {
var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); var successes = DbContext.Successes.Where(u => u.UserId == id);
if (userEntity == null) if (successes == null)
{ {
throw new ArgumentException("Impossible de trouver le succès", nameof(id)); throw new ArgumentException("Impossible de trouver le succès", nameof(id));
} }
return userEntity; return successes;
} }
public SuccessEntity GetSuccessByInquiryId(int id) public IEnumerable<SuccessEntity> GetSuccessesByInquiryId(int id)
{ {
var userEntity = DbContext.Successes.FirstOrDefault(u => u.InquiryId == id); var successes = DbContext.Successes.Where(u => u.InquiryId == id);
if (userEntity == null) if (successes == null)
{ {
throw new ArgumentException("Impossible de trouver le succès", nameof(id)); throw new ArgumentException("Impossible de trouver le succès", nameof(id));
} }
return userEntity; return successes;
} }
public bool DeleteSuccess(int id) public bool DeleteSuccess(int idUser, int idInquiry)
{ {
var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == idUser && u.InquiryId == idInquiry);
if (successEntity == null) if (successEntity == null)
{ {
return false; return false;
} }
DbContext.Successes.Remove(successEntity); DbContext.Successes.Remove(successEntity);
DbContext.SaveChangesAsync(); DbContext.SaveChangesAsync();
return true; return true;
} }
public SuccessEntity UpdateSuccess(int id, SuccessEntity success) public SuccessEntity UpdateSuccess(int idUser, int idInquiry, SuccessEntity success)
{ {
var updatingSuccess = DbContext.Successes.FirstOrDefault(u => u.UserId == id); var updatingSuccess = DbContext.Successes.FirstOrDefault(u => u.UserId == idUser && u.InquiryId == idInquiry);
if (updatingSuccess == null) if (updatingSuccess == null)
{ {
throw new ArgumentException("Impossible de trouver le succès", nameof(id)); throw new ArgumentException("Impossible de trouver le succès", nameof(idUser));
} }
/*foreach (var pptt in typeof(SuccessEntity).GetProperties().Where(p =>
foreach (var pptt in typeof(SuccessEntity).GetProperties().Where(p =>
p.CanWrite && p.Name != nameof(SuccessEntity.UserId) && p.Name != nameof(SuccessEntity.InquiryId))) p.CanWrite && p.Name != nameof(SuccessEntity.UserId) && p.Name != nameof(SuccessEntity.InquiryId)))
{ {
pptt.SetValue(updatingSuccess, pptt.GetValue(success)); pptt.SetValue(updatingSuccess, pptt.GetValue(success));
} }*/
updatingSuccess.IsFinished = success.IsFinished;
DbContext.SaveChangesAsync(); DbContext.SaveChangesAsync();
return updatingSuccess; return updatingSuccess;
} }
@ -101,8 +99,12 @@ public class SuccessDataService : ISuccessService<SuccessEntity>
InquiryId = inquiryId, InquiryId = inquiryId,
IsFinished = isFinished, IsFinished = isFinished,
}; };
var success = DbContext.Successes.Where(s => s.UserId == userId && s.InquiryId == inquiryId);
if (success == null)
{
DbContext.Successes.Add(newSuccessEntity); DbContext.Successes.Add(newSuccessEntity);
DbContext.SaveChangesAsync(); DbContext.SaveChangesAsync();
}
return newSuccessEntity; return newSuccessEntity;
} }
} }

@ -5,6 +5,7 @@ public class BlackListDTO
public string Email { get; set; } public string Email { get; set; }
public DateOnly ExpirationDate { get; set; } public DateOnly ExpirationDate { get; set; }
public BlackListDTO() {}
public BlackListDTO(string email, DateOnly expirationDate) public BlackListDTO(string email, DateOnly expirationDate)
{ {
Email = email; Email = email;

@ -11,6 +11,7 @@ public class InquiryDTO
public bool IsUser { get; set; } public bool IsUser { get; set; }
public InquiryDTO() { } public InquiryDTO() { }
public InquiryDTO(){}
public InquiryDTO(int id, string title, string description, bool isUser) public InquiryDTO(int id, string title, string description, bool isUser)
{ {
Id = id; Id = id;

@ -2,14 +2,13 @@
namespace Entities; namespace Entities;
[Table("ContentLesson")]
public abstract class ContentLessonEntity public abstract class ContentLessonEntity
{ {
public int Id { get; set; } public int Id { get; set; }
public string ContentContent { get; set; } public string ContentContent { get; set; }
public string ContentTitle { get; set; } public string ContentTitle { get; set; }
[ForeignKey(nameof(Lesson))] public int LessonId { get; set; } [ForeignKey(nameof(Lesson))] public virtual int LessonId { get; set; }
public LessonEntity Lesson { get; set; } = null!; public virtual LessonEntity Lesson { get; set; } = null!;
protected ContentLessonEntity() protected ContentLessonEntity()
{ {

@ -5,10 +5,10 @@ namespace Shared
public interface ISuccessService<TSuccess> public interface ISuccessService<TSuccess>
{ {
public IEnumerable<TSuccess> GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria); public IEnumerable<TSuccess> GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria);
public TSuccess GetSuccessByUserId(int id); public IEnumerable<TSuccess> GetSuccessesByUserId(int id);
public TSuccess GetSuccessByInquiryId(int id); public IEnumerable<TSuccess> GetSuccessesByInquiryId(int id);
public bool DeleteSuccess(int id); public bool DeleteSuccess(int idUser, int idInquiry);
public TSuccess UpdateSuccess(int id, TSuccess success); public TSuccess UpdateSuccess(int idUser, int idInquiry, TSuccess success);
public TSuccess CreateSuccess(int userId, int inquiryId, bool isFinished); public TSuccess CreateSuccess(int userId, int inquiryId, bool isFinished);
} }
} }

@ -1,5 +1,4 @@
using System.Runtime.CompilerServices; using System.Security.Cryptography;
using System.Security.Cryptography;
using DbContextLib; using DbContextLib;
using Entities; using Entities;
using Microsoft.AspNetCore.Cryptography.KeyDerivation; using Microsoft.AspNetCore.Cryptography.KeyDerivation;
@ -59,9 +58,26 @@ public class StubbedContext : UserDbContext
modelBuilder.Entity<SolutionEntity>().HasData( modelBuilder.Entity<SolutionEntity>().HasData(
new SolutionEntity(1, "Maxime", "Sapountzis", "La cuisine", "Le couteau", "Parce que c'est Maxime"), new SolutionEntity(1, "Maxime", "Sapountzis", "La cuisine", "Le couteau", "Parce que c'est Maxime"),
new SolutionEntity(2, "Johnny", "Ratton", "La cuisine", "Le couteau", "Parce que il est ra****"), new SolutionEntity(2, "Johnny", "Ratton", "La cuisine", "Le couteau", "Parce que il est fou"),
new SolutionEntity(3, "Erwan", "Menager", "La salle de bain", "L'arachide", "Parce que c'est Erwan")); new SolutionEntity(3, "Erwan", "Menager", "La salle de bain", "L'arachide", "Parce que c'est Erwan"));
modelBuilder.Entity<LessonEntity>().HasData(
new LessonEntity(1, "La cuisine", "Maxime", new DateOnly(2021, 10, 10)),
new LessonEntity(2, "La salle de bain", "Erwan", new DateOnly(2021, 10, 10)),
new LessonEntity(3, "La chambre", "Johnny", new DateOnly(2021, 10, 10)),
new LessonEntity(4, "Le salon", "Clement", new DateOnly(2021, 10, 10)));
modelBuilder.Entity<ParagraphEntity>().HasData(
new ParagraphEntity(1, "Le premier paragraphe", "Le contenu du premier paragraphe", "Attention", "La query",
"Le commentaire", 1),
new ParagraphEntity(2, "Le deuxième paragraphe", "Le contenu du deuxième paragraphe", "Attention",
"La query", "Le commentaire", 1),
new ParagraphEntity(3, "Le troisième paragraphe", "Le contenu du troisième paragraphe", "Attention",
"query", "commentaire", 2),
new ParagraphEntity(4, "Le quatrième paragraphe", "Le contenu du quatrième paragraphe", "Attention",
"La query", "Le commentaire", 3),
new ParagraphEntity(5, "Le cinquième paragraphe", "Le contenu du quatrième paragraphe", "Attention",
"La query", "Le commentaire", 4));
modelBuilder.Entity<InquiryEntity>().HasData( modelBuilder.Entity<InquiryEntity>().HasData(
new InquiryEntity(1, "L'enquête de la carotte", "La description de l'inquiry1", true), new InquiryEntity(1, "L'enquête de la carotte", "La description de l'inquiry1", true),
new InquiryEntity(2, "L'enquête sur les orang outan", "The new description", false), new InquiryEntity(2, "L'enquête sur les orang outan", "The new description", false),

@ -520,13 +520,13 @@ using (var context = new UserDbContext(options))
{ {
Console.WriteLine("Succès trouvé !\n"); Console.WriteLine("Succès trouvé !\n");
Console.WriteLine("Veuillez saisir l'identifiant de l'utilisateur lié au succès :"); Console.WriteLine("Veuillez saisir l'identifiant de l'utilisateur lié au succès :");
var userId = Console.ReadLine(); var userId = int.Parse(Console.ReadLine());
Console.WriteLine("Veuillez saisir l'identifiant de l'enquête lié au succès :"); Console.WriteLine("Veuillez saisir l'identifiant de l'enquête lié au succès :");
var inquiryId = Console.ReadLine(); var inquiryId = int.Parse(Console.ReadLine());
Console.WriteLine("Veuillez saisir si l'enquête est terminée (0/1) :"); Console.WriteLine("Veuillez saisir si l'enquête est terminée (0/1) :");
var isFinished = Console.ReadLine(); var isFinished = Console.ReadLine();
var retour = successController.UpdateSuccess(id, var retour = successController.UpdateSuccess(userId, inquiryId,
new SuccessDTO(int.Parse(userId), int.Parse(inquiryId), bool.Parse(isFinished))); new SuccessDTO(userId, inquiryId, bool.Parse(isFinished)));
if (retour.GetType() == typeof(OkObjectResult)) if (retour.GetType() == typeof(OkObjectResult))
{ {
Console.WriteLine("Mise à jour effectué avec succès !"); Console.WriteLine("Mise à jour effectué avec succès !");
@ -606,8 +606,10 @@ using (var context = new UserDbContext(options))
void DeleteSuccess() void DeleteSuccess()
{ {
Console.WriteLine("Quel est l'identifiant de l'utilisateur lié au succès à supprimer ?"); Console.WriteLine("Quel est l'identifiant de l'utilisateur lié au succès à supprimer ?");
var id = int.Parse(Console.ReadLine()); var idUser = int.Parse(Console.ReadLine());
var res = successController.DeleteSuccess(id); Console.WriteLine("Quel est l'identifiant de l'enquête lié au succès à supprimer ?");
var idInquiry = int.Parse(Console.ReadLine());
var res = successController.DeleteSuccess(idUser,idInquiry);
if (res.GetType() == typeof(OkObjectResult)) if (res.GetType() == typeof(OkObjectResult))
{ {
Console.WriteLine("La suppression a été effectuée avec succès !"); Console.WriteLine("La suppression a été effectuée avec succès !");

Loading…
Cancel
Save