Merge branch 'master' into MethodeExtensions

MethodeExtensions
Victor GABORIT 1 year ago
commit 3d216e05bb

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

@ -14,14 +14,14 @@ public class SuccessDataServiceApi(ISuccessService<SuccessEntity> sucessService)
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) =>
sucessService.UpdateSuccess(id, success.FromDTOToEntity()).FromEntityToDTO();
public SuccessDTO UpdateSuccess(int idUser, int idInquiry, SuccessDTO success) =>
sucessService.UpdateSuccess(idUser, idInquiry, success.FromDTOToEntity()).FromEntityToDTO();
public SuccessDTO CreateSuccess(int userId, int inquiryId, bool isFinished) =>
sucessService.CreateSuccess(userId, inquiryId, isFinished).FromEntityToDTO();

@ -12,7 +12,6 @@ namespace DbContextLib
public DbSet<InquiryEntity> Inquiries { get; set; }
public DbSet<InquiryTableEntity> InquiryTables { get; set; }
public DbSet<LessonEntity> Lessons { get; set; }
public DbSet<ContentLessonEntity> ContentLessons { get; set; }
public DbSet<ParagraphEntity> Paragraphs { get; set; }
public DbSet<SolutionEntity> Solutions { get; set; }
public DbSet<SuccessEntity> Successes { get; set; }
@ -31,7 +30,9 @@ namespace DbContextLib
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.InquiryId);
modelBuilder.Entity<InquiryEntity>().HasKey(s => s.Id);

@ -40,55 +40,53 @@ public class SuccessDataService : ISuccessService<SuccessEntity>
return successes;
}
public SuccessEntity GetSuccessByUserId(int id)
public IEnumerable<SuccessEntity> GetSuccessesByUserId(int id)
{
var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id);
if (userEntity == null)
var successes = DbContext.Successes.Where(u => u.UserId == id);
if (successes == null)
{
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);
if (userEntity == null)
var successes = DbContext.Successes.Where(u => u.InquiryId == id);
if (successes == null)
{
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)
{
return false;
}
DbContext.Successes.Remove(successEntity);
DbContext.SaveChangesAsync();
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)
{
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)))
{
pptt.SetValue(updatingSuccess, pptt.GetValue(success));
}
}*/
updatingSuccess.IsFinished = success.IsFinished;
DbContext.SaveChangesAsync();
return updatingSuccess;
}
@ -101,8 +99,12 @@ public class SuccessDataService : ISuccessService<SuccessEntity>
InquiryId = inquiryId,
IsFinished = isFinished,
};
var success = DbContext.Successes.Where(s => s.UserId == userId && s.InquiryId == inquiryId);
if (success == null)
{
DbContext.Successes.Add(newSuccessEntity);
DbContext.SaveChangesAsync();
}
return newSuccessEntity;
}
}

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

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

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

@ -5,10 +5,10 @@ namespace Shared
public interface ISuccessService<TSuccess>
{
public IEnumerable<TSuccess> GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria);
public TSuccess GetSuccessByUserId(int id);
public TSuccess GetSuccessByInquiryId(int id);
public bool DeleteSuccess(int id);
public TSuccess UpdateSuccess(int id, TSuccess success);
public IEnumerable<TSuccess> GetSuccessesByUserId(int id);
public IEnumerable<TSuccess> GetSuccessesByInquiryId(int id);
public bool DeleteSuccess(int idUser, int idInquiry);
public TSuccess UpdateSuccess(int idUser, int idInquiry, TSuccess success);
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 Entities;
using Microsoft.AspNetCore.Cryptography.KeyDerivation;
@ -59,9 +58,26 @@ public class StubbedContext : UserDbContext
modelBuilder.Entity<SolutionEntity>().HasData(
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"));
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(
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),

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

Loading…
Cancel
Save