Suppression des propriétés de navigation dans InquiryEntity qui provoquaient une NullPointerException et qui étaient inutiles #35

Merged
johnny.ratton merged 1 commits from inquiryEntity into master 1 year ago

@ -95,12 +95,12 @@ namespace API.Controllers
[ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 400)]
public IActionResult CreateInquiry([FromBody] InquiryDTO dto) public IActionResult CreateInquiry([FromBody] InquiryDTO dto)
{ {
if (dto.Title == null || dto.Description == null || dto.Database == null || dto.InquiryTable == null) if (dto.Title == null || dto.Description == null)
{ {
return BadRequest(); return BadRequest();
} }
_logger.LogInformation("[INFORMATION] Une enquête a été créé : title - {title}, description - {description}, isUser - {isUser}, database - {database}, inquiryTable - {inquiryTable}", dto.Title, dto.Description, dto.IsUser, dto.Database, dto.InquiryTable); _logger.LogInformation("[INFORMATION] Une enquête a été créé : title - {title}, description - {description}, isUser - {isUser}", dto.Title, dto.Description, dto.IsUser);
return Created(nameof(GetInquiries), _inquiryDataService.CreateInquiry(dto.Title, dto.Description, dto.IsUser, dto.Database, dto.InquiryTable)); return Created(nameof(GetInquiries), _inquiryDataService.CreateInquiry(dto.Title, dto.Description, dto.IsUser));
} }
[HttpPut("inquiry/{id}")] [HttpPut("inquiry/{id}")]

@ -6,9 +6,9 @@ namespace API.Service;
public class InquiryDataServiceApi(IInquiryService<InquiryEntity> inquiryService) : IInquiryService<InquiryEntity> public class InquiryDataServiceApi(IInquiryService<InquiryEntity> inquiryService) : IInquiryService<InquiryEntity>
{ {
public InquiryEntity CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId) public InquiryEntity CreateInquiry(string title, string description, bool isUser)
{ {
return inquiryService.CreateInquiry(title, description, isUser, tableId, solutionId); return inquiryService.CreateInquiry(title, description, isUser);
} }
public bool DeleteInquiry(int id) public bool DeleteInquiry(int id)

@ -68,23 +68,19 @@ public class InquiryDataService : IInquiryService<InquiryEntity>
updatingInquiry.Title = inquiry.Title; updatingInquiry.Title = inquiry.Title;
updatingInquiry.Description = inquiry.Description; updatingInquiry.Description = inquiry.Description;
updatingInquiry.IsUser = inquiry.IsUser; updatingInquiry.IsUser = inquiry.IsUser;
updatingInquiry.IdInquiryTable = inquiry.IdInquiryTable;
updatingInquiry.IdDatabase = inquiry.IdDatabase;
// Permet d'indiquer en Db que l'entité a été modifiée. // Permet d'indiquer en Db que l'entité a été modifiée.
DbContext.Entry(updatingInquiry).State = EntityState.Modified; DbContext.Entry(updatingInquiry).State = EntityState.Modified;
DbContext.SaveChangesAsync(); DbContext.SaveChangesAsync();
return updatingInquiry; return updatingInquiry;
} }
public InquiryEntity CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId) public InquiryEntity CreateInquiry(string title, string description, bool isUser)
{ {
var newInquiryEntity = new InquiryEntity() var newInquiryEntity = new InquiryEntity()
{ {
Title = title, Title = title,
Description = description, Description = description,
IsUser = isUser, IsUser = isUser
IdDatabase = tableId,
IdInquiryTable = solutionId,
}; };
DbContext.Inquiries.Add(newInquiryEntity); DbContext.Inquiries.Add(newInquiryEntity);
DbContext.SaveChangesAsync(); DbContext.SaveChangesAsync();

@ -10,25 +10,18 @@ public class InquiryDTO
public bool IsUser { get; set; } public bool IsUser { get; set; }
public int Database { get; set; } public InquiryDTO(int id, string title, string description, bool isUser)
public int InquiryTable { get; set; }
public InquiryDTO(int id, string title, string description, bool isUser, int database, int inquiryTable)
{ {
Id = id; Id = id;
Title = title; Title = title;
Description = description; Description = description;
IsUser = isUser; IsUser = isUser;
Database = database;
InquiryTable = inquiryTable;
} }
public InquiryDTO(string title, string description, bool isUser, int database, int inquiryTable) public InquiryDTO(string title, string description, bool isUser)
{ {
Title = title; Title = title;
Description = description; Description = description;
IsUser = isUser; IsUser = isUser;
Database = database;
InquiryTable = inquiryTable;
} }
} }

@ -1,15 +1,15 @@
namespace Entities; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Entities;
public class InquiryEntity public class InquiryEntity
{ {
[Key]
public int Id { get; } public int Id { get; }
public string Title { get; set; } public string Title { get; set; }
public string Description { get; set; } public string Description { get; set; }
public bool IsUser { get; set; } public bool IsUser { get; set; }
public int IdDatabase { get; set; }
public InquiryTableEntity Database { get; set; }
public int IdInquiryTable { get; set; }
public SolutionEntity InquiryTable { get; set; }
public InquiryEntity() public InquiryEntity()
{ {
@ -20,36 +20,19 @@ public class InquiryEntity
Id = id; Id = id;
} }
public InquiryEntity(int id, string title, string description, bool isUser, InquiryTableEntity database, public InquiryEntity(string title, string description, bool isUser)
SolutionEntity inquiryTable)
{
Id = id;
Title = title;
Description = description;
IsUser = isUser;
Database = database;
InquiryTable = inquiryTable;
}
public InquiryEntity(string title, string description, bool isUser, InquiryTableEntity database,
SolutionEntity inquiryTable)
{ {
Id = 0; Id = 0;
Title = title; Title = title;
Description = description; Description = description;
IsUser = isUser; IsUser = isUser;
Database = database;
InquiryTable = inquiryTable;
} }
public InquiryEntity(int id, string title, string description, bool isUser, int database, public InquiryEntity(int id, string title, string description, bool isUser)
int inquiryTable)
{ {
Id = id; Id = id;
Title = title; Title = title;
Description = description; Description = description;
IsUser = isUser; IsUser = isUser;
IdDatabase = database;
IdInquiryTable = inquiryTable;
} }
} }

@ -6,18 +6,14 @@ public class Inquiry
public string Title { get; set; } public string Title { get; set; }
public string Description { get; set; } public string Description { get; set; }
public bool IsUser { get; set; } public bool IsUser { get; set; }
public int Database { get; set; }
public int InquiryTable { get; set; }
public Inquiry() { } public Inquiry() { }
public Inquiry(int id, string title, string description, bool isUser, int database, int inquiryTable) public Inquiry(int id, string title, string description, bool isUser)
{ {
Id = id; Id = id;
Title = title; Title = title;
Description = description; Description = description;
IsUser = isUser; IsUser = isUser;
Database = database;
InquiryTable = inquiryTable;
} }
} }

@ -10,5 +10,5 @@ public interface IInquiryDataService : IInquiryService<InquiryDTO>
public InquiryDTO GetInquiryByTitle(string title); public InquiryDTO GetInquiryByTitle(string title);
public bool DeleteInquiry(int id); public bool DeleteInquiry(int id);
public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry); public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry);
public InquiryDTO CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId); public InquiryDTO CreateInquiry(string title, string description, bool isUser);
} }

@ -9,5 +9,5 @@ public interface IInquiryService<TInquiry>
public TInquiry GetInquiryByTitle(string title); public TInquiry GetInquiryByTitle(string title);
public bool DeleteInquiry(int id); public bool DeleteInquiry(int id);
public TInquiry UpdateInquiry(int id, TInquiry inquiry); public TInquiry UpdateInquiry(int id, TInquiry inquiry);
public TInquiry CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId); public TInquiry CreateInquiry(string title, string description, bool isUser);
} }

@ -60,9 +60,9 @@ public class InquiryDataService : IInquiryDataService
return inquiryEntity.FromEntityToDTO(); return inquiryEntity.FromEntityToDTO();
} }
public InquiryDTO CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId) public InquiryDTO CreateInquiry(string title, string description, bool isUser)
{ {
var newInquiryEntity = new InquiryDTO(title, description, isUser, tableId, solutionId); var newInquiryEntity = new InquiryDTO(title, description, isUser);
DbContext.Inquiries.Add(newInquiryEntity.FromDTOToEntity()); DbContext.Inquiries.Add(newInquiryEntity.FromDTOToEntity());
DbContext.SaveChangesAsync(); DbContext.SaveChangesAsync();
return newInquiryEntity; return newInquiryEntity;
@ -90,8 +90,6 @@ public class InquiryDataService : IInquiryDataService
updatingInquiry.Title = inquiry.Title; updatingInquiry.Title = inquiry.Title;
updatingInquiry.Description = inquiry.Description; updatingInquiry.Description = inquiry.Description;
updatingInquiry.IsUser = inquiry.IsUser; updatingInquiry.IsUser = inquiry.IsUser;
updatingInquiry.IdDatabase = inquiry.Database;
updatingInquiry.IdInquiryTable = inquiry.InquiryTable;
DbContext.SaveChangesAsync(); DbContext.SaveChangesAsync();
return updatingInquiry.FromEntityToDTO(); return updatingInquiry.FromEntityToDTO();
} }

@ -8,37 +8,32 @@ public static class InquiryMapper
{ {
public static Inquiry FromDTOToModel(this InquiryDTO InqDto) public static Inquiry FromDTOToModel(this InquiryDTO InqDto)
{ {
return new Inquiry(InqDto.Id, InqDto.Title, InqDto.Description, InqDto.IsUser, InqDto.Database, return new Inquiry(InqDto.Id, InqDto.Title, InqDto.Description, InqDto.IsUser);
InqDto.InquiryTable);
} }
public static Inquiry FromEntityToModel(this InquiryEntity InqEntity) public static Inquiry FromEntityToModel(this InquiryEntity InqEntity)
{ {
return new Inquiry(InqEntity.Id, InqEntity.Title, InqEntity.Description, InqEntity.IsUser, return new Inquiry(InqEntity.Id, InqEntity.Title, InqEntity.Description, InqEntity.IsUser);
InqEntity.Database.OwnerId, InqEntity.InquiryTable.OwnerId);
} }
public static InquiryEntity FromModelToEntity(this Inquiry Inq) public static InquiryEntity FromModelToEntity(this Inquiry Inq)
{ {
return new InquiryEntity(Inq.Id, Inq.Title, Inq.Description, Inq.IsUser, new InquiryTableEntity(Inq.Database), return new InquiryEntity(Inq.Id, Inq.Title, Inq.Description, Inq.IsUser);
new SolutionEntity(Inq.InquiryTable));
} }
public static InquiryEntity FromDTOToEntity(this InquiryDTO InqDto) public static InquiryEntity FromDTOToEntity(this InquiryDTO InqDto)
{ {
return new InquiryEntity(InqDto.Id, InqDto.Title, InqDto.Description, InqDto.IsUser, return new InquiryEntity(InqDto.Id, InqDto.Title, InqDto.Description, InqDto.IsUser);
new InquiryTableEntity(InqDto.Database), new SolutionEntity(InqDto.InquiryTable));
} }
public static InquiryDTO FromModelToDTO(this Inquiry Inq) public static InquiryDTO FromModelToDTO(this Inquiry Inq)
{ {
return new InquiryDTO(Inq.Id, Inq.Title, Inq.Description, Inq.IsUser, Inq.Database, Inq.InquiryTable); return new InquiryDTO(Inq.Id, Inq.Title, Inq.Description, Inq.IsUser);
} }
public static InquiryDTO FromEntityToDTO(this InquiryEntity InqEntity) public static InquiryDTO FromEntityToDTO(this InquiryEntity InqEntity)
{ {
return new InquiryDTO(InqEntity.Id, InqEntity.Title, InqEntity.Description, InqEntity.IsUser, return new InquiryDTO(InqEntity.Id, InqEntity.Title, InqEntity.Description, InqEntity.IsUser);
InqEntity.Database.OwnerId, InqEntity.InquiryTable.OwnerId);
} }
} }

@ -62,8 +62,8 @@ public class StubbedContext : UserDbContext
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<InquiryEntity>().HasData( modelBuilder.Entity<InquiryEntity>().HasData(
new InquiryEntity(1, "L'enquête de la carotte", "La description de l'inquiry1", true, 1, 1), 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, 2, 2), new InquiryEntity(2, "L'enquête sur les orang outan", "The new description", false),
new InquiryEntity(3, "L'enquête sur les parapluies", "Il pleuvait", false, 3, 3)); new InquiryEntity(3, "L'enquête sur les parapluies", "Il pleuvait", false));
} }
} }

@ -251,7 +251,7 @@ using (var context = new UserDbContext(options))
var database = Convert.ToInt32(Console.ReadLine()); var database = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Veuillez saisir l'id de la solution :"); Console.WriteLine("Veuillez saisir l'id de la solution :");
var solution = Convert.ToInt32(Console.ReadLine()); var solution = Convert.ToInt32(Console.ReadLine());
var res = inquiryController.CreateInquiry(new InquiryDTO(title, description, false, database, solution)); var res = inquiryController.CreateInquiry(new InquiryDTO(title, description, false));
if (res.GetType() == typeof(CreatedResult)) if (res.GetType() == typeof(CreatedResult))
{ {
Console.WriteLine("\nEnquête créée avec succès"); Console.WriteLine("\nEnquête créée avec succès");
@ -390,7 +390,7 @@ using (var context = new UserDbContext(options))
var database = Convert.ToInt32(Console.ReadLine()); var database = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Veuillez saisir un commentaire :"); Console.WriteLine("Veuillez saisir un commentaire :");
var inquiryTable = Convert.ToInt32(Console.ReadLine()); var inquiryTable = Convert.ToInt32(Console.ReadLine());
var retour = inquiryController.UpdateInquiry(id, new InquiryDTO(id, title, description, bool.Parse(isUser), database, inquiryTable)); var retour = inquiryController.UpdateInquiry(id, new InquiryDTO(id, title, description, bool.Parse(isUser)));
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 !");

@ -164,7 +164,7 @@ using (var db = new StubbedContext(options))
Console.WriteLine(sol.MurdererFirstName); Console.WriteLine(sol.MurdererFirstName);
var inquirySolution = await inquiries.FirstOrDefaultAsync(i => i.Title == "L'enquête sur les orang outan"); var inquirySolution = await inquiries.FirstOrDefaultAsync(i => i.Title == "L'enquête sur les orang outan");
var i = inquirySolution.InquiryTable; var i = inquirySolution.Id;
foreach (var pptt in typeof(SolutionEntity).GetProperties() foreach (var pptt in typeof(SolutionEntity).GetProperties()
.Where(p => p.CanWrite && p.Name != nameof(SolutionEntity.Owner))) .Where(p => p.CanWrite && p.Name != nameof(SolutionEntity.Owner)))
{ {
@ -176,9 +176,7 @@ using (var db = new StubbedContext(options))
var newInquiry = new InquiryEntity( var newInquiry = new InquiryEntity(
"La nouvelle enquete", "La nouvelle enquete",
"La description de la nouvelle enquete", "La description de la nouvelle enquete",
true, true);
null,
null);
if (!inquiries.Any(inquiry => inquiry.Title == newInquiry.Title)) if (!inquiries.Any(inquiry => inquiry.Title == newInquiry.Title))
{ {
inquiries.Add(newInquiry); inquiries.Add(newInquiry);

Loading…
Cancel
Save