Merge résolu
continuous-integration/drone/push Build is passing Details

testConsoleEF
Clement CHIEU 1 year ago
commit e87ae93507

@ -13,16 +13,17 @@ namespace API.Controllers
[ApiController]
public class InquiriesController : Controller
{
private IInquiryDataService _inquiryDataService;
private readonly IInquiryService<InquiryDTO> _inquiryDataService;
private readonly ILogger<InquiriesController> _logger;
public InquiriesController(IInquiryDataService inquiryDataService, ILogger<InquiriesController> logger)
public InquiriesController(IInquiryService<InquiryDTO> inquiryDataService, ILogger<InquiriesController> logger)
{
_inquiryDataService = inquiryDataService;
_logger = logger;
}
[HttpGet("inquiries/{page}/{number}/{orderCriteria}")]
[HttpGet("inquiries/{page:int}/{number:int}/{orderCriteria}")]
[ProducesResponseType(typeof(InquiryDTO), 200)]
[ProducesResponseType(typeof(string), 204)]
public IActionResult GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria)
@ -33,11 +34,12 @@ namespace API.Controllers
_logger.LogError("[ERREUR] Aucune enquête trouvée.");
return StatusCode(204);
}
_logger.LogInformation("[INFORMATION] {nb} Enquête(s) trouvée(s)", nbInquiry);
return Ok(_inquiryDataService.GetInquiries(page, number, orderCriteria));
}
[HttpGet("inquiry/{id}")]
[HttpGet("inquiry/{id:int}")]
[ProducesResponseType(typeof(InquiryDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetInquiryById(int id)
@ -54,7 +56,7 @@ namespace API.Controllers
}
}
[HttpGet("inquiry/{title}")]
[HttpGet("inquiry/{title:alpha}")]
[ProducesResponseType(typeof(InquiryDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetInquiryByTitle(string title)
@ -71,7 +73,7 @@ namespace API.Controllers
}
}
[HttpDelete("inquiry/{id}")]
[HttpDelete("inquiry/{id:int}")]
[ProducesResponseType(typeof(InquiryDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult DeleteInquiry(int id)
@ -87,7 +89,6 @@ namespace API.Controllers
_logger.LogError("[ERREUR] Aucune enquête trouvée avec l'id {id}.", id);
return NotFound();
}
}
[HttpPost]
@ -95,15 +96,19 @@ namespace API.Controllers
[ProducesResponseType(typeof(string), 400)]
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();
}
_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);
return Created(nameof(GetInquiries), _inquiryDataService.CreateInquiry(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));
}
[HttpPut("inquiry/{id}")]
[HttpPut("inquiry/{id:int}")]
[ProducesResponseType(typeof(InquiryDTO), 200)]
[ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)]
@ -114,16 +119,20 @@ namespace API.Controllers
_logger.LogError("[ERREUR] Problème ID - La mise à jour de l'enquête avec l'id {id} a échouée.", id);
return BadRequest();
}
if (!ModelState.IsValid)
{
_logger.LogError("[ERREUR] Problème controlleur - La mise à jour de l'enquête avec l'id {id} a échouée.", id);
_logger.LogError(
"[ERREUR] Problème controlleur - La mise à jour de l'enquête avec l'id {id} a échouée.", id);
return BadRequest();
}
if (inquiryDTO != null)
{
_logger.LogInformation("[INFORMATION] La mise à jour de l'enquête avec l'id {id} a été effectuée", id);
return Ok(_inquiryDataService.UpdateInquiry(id, inquiryDTO));
}
_logger.LogError("[ERREUR] Aucune enquête trouvée avec l'id {id}.", id);
return NotFound();
}

@ -13,17 +13,17 @@ namespace API.Controllers
[ApiController]
public class LessonsController : Controller
{
private ILessonDataService _lessonDataService;
private readonly ILessonService<LessonDTO> _lessonDataService;
private readonly ILogger<LessonsController> _logger;
public LessonsController(ILessonDataService lessonDataService, ILogger<LessonsController> logger)
public LessonsController(ILessonService<LessonDTO> lessonDataService, ILogger<LessonsController> logger)
{
_lessonDataService = lessonDataService;
_logger = logger;
}
[HttpGet("lessons/{page}/{number}/{orderCriteria}")]
[HttpGet("lessons/{page:int}/{number:int}/{orderCriteria}")]
[ProducesResponseType(typeof(LessonDTO), 200)]
[ProducesResponseType(typeof(string), 204)]
public IActionResult GetLessons(int page, int number, LessonOrderCriteria orderCriteria)
@ -34,11 +34,12 @@ namespace API.Controllers
_logger.LogError("[ERREUR] Aucune leçon trouvée.");
return StatusCode(204);
}
_logger.LogInformation("[INFORMATION] {nb} Leçon(s) trouvée(s)", nbLesson);
return Ok(_lessonDataService.GetLessons(page, number, orderCriteria));
}
[HttpGet("lesson/{id}")]
[HttpGet("lesson/{id:int}")]
[ProducesResponseType(typeof(LessonDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetLessonById(int id)
@ -55,7 +56,7 @@ namespace API.Controllers
}
}
[HttpGet("lesson/{title}")]
[HttpGet("lesson/{title:alpha}")]
[ProducesResponseType(typeof(LessonDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetLessonByTitle(string title)
@ -72,7 +73,7 @@ namespace API.Controllers
}
}
[HttpDelete("lesson/{id}")]
[HttpDelete("lesson/{id:int}")]
[ProducesResponseType(typeof(LessonDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult DeleteLesson(int id)
@ -88,7 +89,6 @@ namespace API.Controllers
_logger.LogError("[ERREUR] Aucune leçon trouvée avec l'id {id}.", id);
return NotFound();
}
}
[HttpPost]
@ -100,11 +100,15 @@ namespace API.Controllers
{
return BadRequest();
}
_logger.LogInformation("[INFORMATION] Une leçon a été créé : title - {title}, lastPublisher - {publisher}, lastEdit - {lastEdit}", dto.Title, dto.LastPublisher, dto.LastEdit);
return Created(nameof(GetLessons), _lessonDataService.CreateLesson(dto.Title, dto.LastPublisher, dto.LastEdit));
_logger.LogInformation(
"[INFORMATION] Une leçon a été créé : title - {title}, lastPublisher - {publisher}, lastEdit - {lastEdit}",
dto.Title, dto.LastPublisher, dto.LastEdit);
return Created(nameof(GetLessons),
_lessonDataService.CreateLesson(dto.Title, dto.LastPublisher, dto.LastEdit));
}
[HttpPut("lesson/{id}")]
[HttpPut("lesson/{id:int}")]
[ProducesResponseType(typeof(LessonDTO), 200)]
[ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)]
@ -115,16 +119,20 @@ namespace API.Controllers
_logger.LogError("[ERREUR] Problème ID - La mise à jour de la leçon avec l'id {id} a échouée.", id);
return BadRequest();
}
if (!ModelState.IsValid)
{
_logger.LogError("[ERREUR] Problème controlleur - La mise à jour de la leçon avec l'id {id} a échouée.", id);
_logger.LogError("[ERREUR] Problème controlleur - La mise à jour de la leçon avec l'id {id} a échouée.",
id);
return BadRequest();
}
if (lessonDTO != null)
{
_logger.LogInformation("[INFORMATION] La mise à jour de la leçon avec l'id {id} a été effectuée", id);
return Ok(_lessonDataService.UpdateLesson(id, lessonDTO));
}
_logger.LogError("[ERREUR] Aucune leçon trouvée avec l'id {id}.", id);
return NotFound();
}

@ -13,32 +13,34 @@ namespace API.Controllers
[ApiController]
public class ParagraphsController : Controller
{
private IParagraphDataService _paragraphDataService;
private readonly IParagraphService<ParagraphDTO> _paragraphDataService;
private readonly ILogger<ParagraphsController> _logger;
public ParagraphsController(IParagraphDataService paragraphDataService, ILogger<ParagraphsController> logger)
public ParagraphsController(IParagraphService<ParagraphDTO> paragraphDataService,
ILogger<ParagraphsController> logger)
{
_paragraphDataService = paragraphDataService;
_logger = logger;
}
[HttpGet("paragraphs/{page}/{number}/{orderCriteria}")]
[HttpGet("paragraphs/{page:int}/{number:int}/{orderCriteria}")]
[ProducesResponseType(typeof(ParagraphDTO), 200)]
[ProducesResponseType(typeof(string), 204)]
public IActionResult GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria)
{
var nbParagraph = ( _paragraphDataService.GetParagraphs(page, number, orderCriteria)).ToList().Count();
if(nbParagraph == 0)
var nbParagraph = _paragraphDataService.GetParagraphs(page, number, orderCriteria).ToList().Count;
if (nbParagraph == 0)
{
_logger.LogError("[ERREUR] Aucun paragraphe trouvé.");
return StatusCode(204);
}
_logger.LogInformation("[INFORMATION] {nb} Paragraphe(s) trouvé(s)", nbParagraph);
return Ok(_paragraphDataService.GetParagraphs(page, number, orderCriteria));
}
[HttpGet("paragraph/{id}")]
[HttpGet("paragraph/{id:int}")]
[ProducesResponseType(typeof(ParagraphDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetParagraphById(int id)
@ -47,14 +49,15 @@ namespace API.Controllers
{
_logger.LogInformation("[INFORMATION] Le paragraphe avec l'id {id} a été trouvé.", id);
return Ok(_paragraphDataService.GetParagraphById(id));
} catch (ArgumentException)
}
catch (ArgumentException)
{
_logger.LogError("[ERREUR] Aucun paragraphe trouvé avec l'id {id}.", id);
return NotFound();
}
}
[HttpGet("paragraph/{title}")]
[HttpGet("paragraph/{title:alpha}")]
[ProducesResponseType(typeof(ParagraphDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetParagraphByTitle(string title)
@ -63,30 +66,30 @@ namespace API.Controllers
{
_logger.LogInformation("[INFORMATION] Le paragraphe avec le titre {title} a été trouvé.", title);
return Ok(_paragraphDataService.GetParagraphByTitle(title));
}catch (ArgumentException)
}
catch (ArgumentException)
{
_logger.LogError("[ERREUR] Aucun paragraphe trouvé avec le titre {title}.", title);
return NotFound();
}
}
[HttpDelete("paragraph/{id}")]
[HttpDelete("paragraph/{id:int}")]
[ProducesResponseType(typeof(ParagraphDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult DeleteParagraph(int id)
{
var success = _paragraphDataService.DeleteParagraph(id);
if(success)
if (success)
{
_logger.LogInformation("[INFORMATION] Le paragraphe avec l'id {id} a été supprimé.", id);
return Ok(_paragraphDataService.DeleteParagraph(id));
} else
}
else
{
_logger.LogError("[ERREUR] Aucun paragraphe trouvé avec l'id {id}.", id);
return NotFound();
}
}
[HttpPost]
@ -94,35 +97,45 @@ namespace API.Controllers
[ProducesResponseType(typeof(string), 400)]
public IActionResult CreateParagraph([FromBody] ParagraphDTO dto)
{
if (dto.Title == null || dto.Content == null || dto.Info == null || dto.Query == null || dto.Comment == null)
if (dto.Title == null || dto.Content == null || dto.Info == null || dto.Query == null ||
dto.Comment == null)
{
return BadRequest();
}
_logger.LogInformation("[INFORMATION] Un paragraphe a été créé : title - {title}, content - {content}, info - {info}, query - {query}, comment - {comment}", dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment);
return Created(nameof(GetParagraphs), _paragraphDataService.CreateParagraph(dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment, dto.LessonId));
_logger.LogInformation(
"[INFORMATION] Un paragraphe a été créé : title - {title}, content - {content}, info - {info}, query - {query}, comment - {comment}",
dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment);
return Created(nameof(GetParagraphs),
_paragraphDataService.CreateParagraph(dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment,
dto.LessonId));
}
[HttpPut("paragraph/{id}")]
[HttpPut("paragraph/{id:int}")]
[ProducesResponseType(typeof(ParagraphDTO), 200)]
[ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult UpdateParagraph(int id, [FromBody] ParagraphDTO paragraphDTO)
{
if(id != paragraphDTO.Id)
if (id != paragraphDTO.Id)
{
_logger.LogError("[ERREUR] Problème ID - La mise à jour du paragraphe avec l'id {id} a échouée.", id);
return BadRequest();
}
if(!ModelState.IsValid)
if (!ModelState.IsValid)
{
_logger.LogError("[ERREUR] Problème controlleur - La mise à jour du paragraphe avec l'id {id} a échouée.", id);
_logger.LogError(
"[ERREUR] Problème controlleur - La mise à jour du paragraphe avec l'id {id} a échouée.", id);
return BadRequest();
}
if(paragraphDTO != null)
if (paragraphDTO != null)
{
_logger.LogInformation("[INFORMATION] La mise à jour du paragraphe avec l'id {id} a été effectuée", id);
return Ok(_paragraphDataService.UpdateParagraph(id, paragraphDTO));
}
_logger.LogError("[ERREUR] Aucun paragraphe trouvé avec l'id {id}.", id);
return NotFound();
}

@ -13,80 +13,83 @@ namespace API.Controllers
[ApiController]
public class SuccessesController : Controller
{
private ISuccessDataService _successDataService;
private readonly ISuccessService<SuccessDTO> _successDataService;
private readonly ILogger<SuccessesController> _logger;
public SuccessesController(ISuccessDataService successDataService, ILogger<SuccessesController> logger)
public SuccessesController(ISuccessService<SuccessDTO> successDataService, ILogger<SuccessesController> logger)
{
_successDataService = successDataService;
_logger = logger;
}
[HttpGet("successes/{page}/{number}/{orderCriteria}")]
[HttpGet("successes/{page:int}/{number:int}/{orderCriteria}")]
[ProducesResponseType(typeof(SuccessDTO), 200)]
[ProducesResponseType(typeof(string), 204)]
public IActionResult GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria)
{
var nbUser = (_successDataService.GetSuccesses(page, number, orderCriteria)).ToList().Count();
if(nbUser == 0)
var nbUser = _successDataService.GetSuccesses(page, number, orderCriteria).ToList().Count;
if (nbUser == 0)
{
_logger.LogError("[ERREUR] Aucun utilisateur trouvé.");
return StatusCode(204);
}
_logger.LogInformation("[INFORMATION] {nb} Utilisateur(s) trouvé(s)", nbUser);
return Ok(_successDataService.GetSuccesses(page, number, orderCriteria));
}
[HttpGet("success/{id}")]
[HttpGet("success/user/{id:int}")]
[ProducesResponseType(typeof(SuccessDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetSuccessByUserId(int userId)
public IActionResult GetSuccessByUserId(int id)
{
try
{
_logger.LogInformation("[INFORMATION] Le succès avec l'id de l'utilisateur {id} a été trouvé.", userId);
return Ok(_successDataService.GetSuccessByUserId(userId));
} catch (ArgumentException)
_logger.LogInformation("[INFORMATION] Le succès avec l'id de l'utilisateur {id} a été trouvé.", id);
return Ok(_successDataService.GetSuccessByUserId(id));
}
catch (ArgumentException)
{
_logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'utilisateur {id}.", userId);
_logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'utilisateur {id}.", id);
return NotFound();
}
}
[HttpGet("success/{inquiryId}")]
[HttpGet("success/inquiry/{id:int}")]
[ProducesResponseType(typeof(SuccessDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetSuccessByInquiryId(int inquiryId)
public IActionResult GetSuccessByInquiryId(int id)
{
try
{
_logger.LogInformation("[INFORMATION] Utilisateur avec l'id de l'enquête {inquiryId} a été trouvé.", inquiryId);
return Ok(_successDataService.GetSuccessByInquiryId(inquiryId));
}catch (ArgumentException)
_logger.LogInformation("[INFORMATION] Utilisateur avec l'id de l'enquête {inquiryId} a été trouvé.",
id);
return Ok(_successDataService.GetSuccessByInquiryId(id));
}
catch (ArgumentException)
{
_logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'enquête {inquiryId}.", inquiryId);
_logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'enquête {inquiryId}.", id);
return NotFound();
}
}
[HttpDelete("success/{id}")]
[HttpDelete("success/{id:int}")]
[ProducesResponseType(typeof(SuccessDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult DeleteSuccess(int id)
{
var success = _successDataService.DeleteSuccess(id);
if(success)
if (success)
{
_logger.LogInformation("[INFORMATION] Le succès avec l'id {id} a été supprimé.", id);
return Ok(_successDataService.DeleteSuccess(id));
} else
}
else
{
_logger.LogError("[ERREUR] Aucun succès trouvé avec l'id {id}.", id);
return NotFound();
}
}
[HttpPost]
@ -98,31 +101,41 @@ namespace API.Controllers
{
return BadRequest();
}*/
_logger.LogInformation("[INFORMATION] Un succès a été créé : userId - {userId}, inquiryId - {inquiryId}, isFinished - {isFinished}", dto.UserId, dto.InquiryId, dto.IsFinished);
return Created(nameof(GetSuccesses), _successDataService.CreateSuccess(dto.UserId, dto.InquiryId, dto.IsFinished));
_logger.LogInformation(
"[INFORMATION] Un succès a été créé : userId - {userId}, inquiryId - {inquiryId}, isFinished - {isFinished}",
dto.UserId, dto.InquiryId, dto.IsFinished);
return Created(nameof(GetSuccesses),
_successDataService.CreateSuccess(dto.UserId, dto.InquiryId, dto.IsFinished));
}
[HttpPut("success/{id}")]
[HttpPut("success/{id:int}")]
[ProducesResponseType(typeof(SuccessDTO), 200)]
[ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult UpdateSuccess(int id, [FromBody] SuccessDTO successDTO)
{
if(id != successDTO.UserId)
if (id != successDTO.UserId)
{
_logger.LogError("[ERREUR] Problème ID - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.", id);
_logger.LogError(
"[ERREUR] Problème ID - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.", id);
return BadRequest();
}
if(!ModelState.IsValid)
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);
_logger.LogError(
"[ERREUR] Problème controlleur - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.",
id);
return BadRequest();
}
if(successDTO != null)
if (successDTO != null)
{
_logger.LogInformation("[INFORMATION] La mise à jour du succès avec l'id de l'utilisateur {id} a été effectuée", id);
_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));
}
_logger.LogError("[ERREUR] Aucun succès trouvé avec l'id de l'utilisateur {id}.", id);
return NotFound();
}

@ -11,9 +11,9 @@ namespace API.Controllers
[Authorize]
[ApiVersion("1.0")]
[ApiController]
public class UsersController(ILogger<UsersController> logger, IUserDataService userService) : ControllerBase
public class UsersController(ILogger<UsersController> logger, IUserService<UserDTO> userService) : ControllerBase
{
[HttpGet("users/{page}/{number}")]
[HttpGet("users/{page:int}/{number:int}")]
[ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 204)]
public IActionResult GetUsers(int page, int number, UserOrderCriteria orderCriteria)
@ -29,7 +29,7 @@ namespace API.Controllers
return Ok(users);
}
[HttpGet("user/{id}")]
[HttpGet("user/{id:int}")]
[ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetUserById(int id)
@ -46,7 +46,7 @@ namespace API.Controllers
}
}
[HttpGet("user/{username}")]
[HttpGet("user/{username:alpha}")]
[ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetUserByUsername(string username)
@ -63,7 +63,7 @@ namespace API.Controllers
}
}
[HttpDelete("user/{id}")]
[HttpDelete("user/{id:int}")]
[ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult DeleteUser(int id)
@ -72,7 +72,7 @@ namespace API.Controllers
if (success)
{
logger.LogInformation("[INFORMATION] L'utilisateur avec l'id {id} a été supprimé.", id);
return Ok(userService.DeleteUser(id));
return Ok();
}
else
{
@ -99,7 +99,7 @@ namespace API.Controllers
userService.CreateUser(dto.Username, dto.Password, dto.Email, dto.IsAdmin));
}
[HttpPut("user/{id}")]
[HttpPut("user/{id:int}")]
[ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)]

@ -6,9 +6,7 @@ using DbDataManager.Service;
using Dto;
using Entities;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.OpenApi.Models;
using Shared;
@ -21,20 +19,20 @@ builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddScoped<IUserService<UserEntity>, DbDataManager.Service.UserDataService>();
builder.Services.AddScoped<IUserService<UserDTO>, Shared.UserDataService>();
builder.Services.AddScoped<IUserService<UserEntity>, UserDataService>();
builder.Services.AddScoped<IUserService<UserDTO>, UserDataServiceApi>();
builder.Services.AddScoped<IInquiryService<InquiryEntity>, DbDataManager.Service.InquiryDataService>();
builder.Services.AddScoped<IInquiryService<InquiryDTO>, Shared.InquiryDataService>();
builder.Services.AddScoped<IInquiryService<InquiryEntity>, InquiryDataService>();
builder.Services.AddScoped<IInquiryService<InquiryDTO>, InquiryDataServiceApi>();
builder.Services.AddScoped<IParagraphService<ParagraphEntity>, DbDataManager.Service.ParagraphDataService>();
builder.Services.AddScoped<IParagraphService<ParagraphDTO>, Shared.ParagraphDataService>();
builder.Services.AddScoped<IParagraphService<ParagraphEntity>, ParagraphDataService>();
builder.Services.AddScoped<IParagraphService<ParagraphDTO>, ParagraphDataServiceApi>();
builder.Services.AddScoped<ISuccessService<SuccessEntity>, DbDataManager.Service.SuccessDataService>();
builder.Services.AddScoped<ISuccessService<SuccessDTO>, Shared.SuccessDataService>();
builder.Services.AddScoped<ISuccessService<SuccessEntity>, SuccessDataService>();
builder.Services.AddScoped<ISuccessService<SuccessDTO>, SuccessDataServiceApi>();
builder.Services.AddScoped<ILessonService<LessonEntity>, DbDataManager.Service.LessonDataService>();
builder.Services.AddScoped<ILessonService<LessonDTO>, Shared.LessonDataService>();
builder.Services.AddScoped<ILessonService<LessonEntity>, LessonDataService>();
builder.Services.AddScoped<ILessonService<LessonDTO>, LessonDataServiceApi>();
builder.Services.AddDbContext<DbContext, UserDbContext>();
builder.Services.AddDbContext<WebAPIDbContext>(options => options.UseInMemoryDatabase("appDb"));
@ -72,11 +70,11 @@ builder.Services.AddSwaggerGen(option =>
{
Reference = new OpenApiReference
{
Type=ReferenceType.SecurityScheme,
Id="Bearer"
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
}
},
new string[]{}
new string[] { }
}
});
});

@ -1,14 +1,21 @@
using Entities;
using Dto;
using Entities;
using Model.OrderCriteria;
using Shared;
using Shared.Mapper;
namespace API.Service;
public class InquiryDataServiceApi(IInquiryService<InquiryEntity> inquiryService) : IInquiryService<InquiryEntity>
public class InquiryDataServiceApi(IInquiryService<InquiryEntity> inquiryService) : IInquiryService<InquiryDTO>
{
public InquiryEntity CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId)
public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry)
{
return inquiryService.CreateInquiry(title, description, isUser, tableId, solutionId);
return inquiryService.UpdateInquiry(id, inquiry.FromDTOToEntity()).FromEntityToDTO();
}
public InquiryDTO CreateInquiry(string title, string description, bool isUser)
{
return inquiryService.CreateInquiry(title, description, isUser).FromEntityToDTO();
}
public bool DeleteInquiry(int id)
@ -16,18 +23,13 @@ public class InquiryDataServiceApi(IInquiryService<InquiryEntity> inquiryService
return inquiryService.DeleteInquiry(id);
}
public IEnumerable<InquiryEntity> GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria)
public IEnumerable<InquiryDTO> GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria)
{
var inquiries = inquiryService.GetInquiries(page, number, orderCriteria);
return inquiries.Select(i => i).ToList();
return inquiries.Select(i => i.FromEntityToDTO()).ToList();
}
public InquiryEntity GetInquiryById(int id) => inquiryService.GetInquiryById(id);
public InquiryDTO GetInquiryById(int id) => inquiryService.GetInquiryById(id).FromEntityToDTO();
public InquiryEntity GetInquiryByTitle(string title) => inquiryService.GetInquiryByTitle(title);
public InquiryEntity UpdateInquiry(int id, InquiryEntity inquiry)
{
return inquiryService.UpdateInquiry(id, inquiry);
}
public InquiryDTO GetInquiryByTitle(string title) => inquiryService.GetInquiryByTitle(title).FromEntityToDTO();
}

@ -1,26 +1,31 @@
using Entities;
using Dto;
using Entities;
using Model.OrderCriteria;
using Shared;
using Shared.Mapper;
namespace API.Service;
public class LessonDataServiceApi(ILessonService<LessonEntity> lessonService) : ILessonService<LessonEntity>
public class LessonDataServiceApi(ILessonService<LessonEntity> lessonService) : ILessonService<LessonDTO>
{
public IEnumerable<LessonEntity> GetLessons(int page, int number, LessonOrderCriteria orderCriteria)
public IEnumerable<LessonDTO> GetLessons(int page, int number, LessonOrderCriteria orderCriteria)
{
var lessonsEntities = lessonService.GetLessons(page, number, orderCriteria);
return lessonsEntities.Select(e => e).ToList();
return lessonsEntities.Select(e => e.FromEntityToDTO()).ToList();
}
public LessonEntity GetLessonById(int id) => lessonService.GetLessonById(id);
public LessonDTO GetLessonById(int id) => lessonService.GetLessonById(id).FromEntityToDTO();
public LessonEntity GetLessonByTitle(string title) => lessonService.GetLessonByTitle(title);
public LessonDTO GetLessonByTitle(string title) => lessonService.GetLessonByTitle(title).FromEntityToDTO();
public bool DeleteLesson(int id) => lessonService.DeleteLesson(id);
public LessonEntity UpdateLesson(int id, LessonEntity lesson) =>
lessonService.UpdateLesson(id, lesson);
public LessonDTO UpdateLesson(int id, LessonDTO lesson) =>
lessonService.UpdateLesson(id, lesson.FromDTOToEntity()).FromEntityToDTO();
public LessonEntity CreateLesson(string title, string lastPublisher, DateOnly? lastEdit) =>
lessonService.CreateLesson(title, lastPublisher, lastEdit);
public LessonDTO UpdateLesson(int id, LessonEntity lesson) =>
lessonService.UpdateLesson(id, lesson).FromEntityToDTO();
public LessonDTO CreateLesson(string title, string lastPublisher, DateOnly? lastEdit) =>
lessonService.CreateLesson(title, lastPublisher, lastEdit).FromEntityToDTO();
}

@ -1,26 +1,31 @@
using Entities;
using Dto;
using Entities;
using Model.OrderCriteria;
using Shared;
using Shared.Mapper;
namespace API.Service;
public class ParagraphDataServiceApi(IParagraphService<ParagraphEntity> paragraphService) : IParagraphService<ParagraphEntity>
public class ParagraphDataServiceApi(IParagraphService<ParagraphEntity> paragraphService)
: IParagraphService<ParagraphDTO>
{
public IEnumerable<ParagraphEntity> GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria)
public IEnumerable<ParagraphDTO> GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria)
{
var paragraphsEntities = paragraphService.GetParagraphs(page, number, orderCriteria);
return paragraphsEntities.Select(e => e).ToList();
return paragraphsEntities.Select(e => e.FromEntityToDTO()).ToList();
}
public ParagraphEntity GetParagraphById(int id) => paragraphService.GetParagraphById(id);
public ParagraphDTO GetParagraphById(int id) => paragraphService.GetParagraphById(id).FromEntityToDTO();
public ParagraphEntity GetParagraphByTitle(string title) => paragraphService.GetParagraphByTitle(title);
public ParagraphDTO GetParagraphByTitle(string title) =>
paragraphService.GetParagraphByTitle(title).FromEntityToDTO();
public bool DeleteParagraph(int id) => paragraphService.DeleteParagraph(id);
public ParagraphEntity UpdateParagraph(int id, ParagraphEntity paragraph) =>
paragraphService.UpdateParagraph(id, paragraph);
public ParagraphDTO UpdateParagraph(int id, ParagraphDTO paragraph) =>
paragraphService.UpdateParagraph(id, paragraph.FromDTOToEntity()).FromEntityToDTO();
public ParagraphEntity CreateParagraph(string title, string content, string info, string query, string comment, int lessonId) =>
paragraphService.CreateParagraph(title, content, info, query, comment, lessonId);
public ParagraphDTO CreateParagraph(string title, string content, string info, string query, string comment,
int lessonId) =>
paragraphService.CreateParagraph(title, content, info, query, comment, lessonId).FromEntityToDTO();
}

@ -1,26 +1,28 @@
using Entities;
using Dto;
using Entities;
using Model.OrderCriteria;
using Shared;
using Shared.Mapper;
namespace API.Service;
public class SuccessDataServiceApi(ISuccessService<SuccessEntity> sucessService) : ISuccessService<SuccessEntity>
public class SuccessDataServiceApi(ISuccessService<SuccessEntity> sucessService) : ISuccessService<SuccessDTO>
{
public IEnumerable<SuccessEntity> GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria)
public IEnumerable<SuccessDTO> GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria)
{
var successesEntities = sucessService.GetSuccesses(page, number, orderCriteria);
return successesEntities.Select(e => e).ToList();
return successesEntities.Select(e => e.FromEntityToDTO()).ToList();
}
public SuccessEntity GetSuccessByUserId(int id) => sucessService.GetSuccessByUserId(id);
public SuccessDTO GetSuccessByUserId(int id) => sucessService.GetSuccessByUserId(id).FromEntityToDTO();
public SuccessEntity GetSuccessByInquiryId(int id) => sucessService.GetSuccessByInquiryId(id);
public SuccessDTO GetSuccessByInquiryId(int id) => sucessService.GetSuccessByInquiryId(id).FromEntityToDTO();
public bool DeleteSuccess(int id) => sucessService.DeleteSuccess(id);
public SuccessEntity UpdateSuccess(int id, SuccessEntity success) =>
sucessService.UpdateSuccess(id, success);
public SuccessDTO UpdateSuccess(int id, SuccessDTO success) =>
sucessService.UpdateSuccess(id, success.FromDTOToEntity()).FromEntityToDTO();
public SuccessEntity CreateSuccess(int userId, int inquiryId, bool isFinished) =>
sucessService.CreateSuccess(userId, inquiryId, isFinished);
public SuccessDTO CreateSuccess(int userId, int inquiryId, bool isFinished) =>
sucessService.CreateSuccess(userId, inquiryId, isFinished).FromEntityToDTO();
}

@ -1,26 +1,28 @@
using Entities;
using Dto;
using Entities;
using Model.OrderCriteria;
using Shared;
using Shared.Mapper;
namespace API.Service;
public class UserDataServiceApi(IUserService<UserEntity> userService) : IUserService<UserEntity>
public class UserDataServiceApi(IUserService<UserEntity> userService) : IUserService<UserDTO>
{
public IEnumerable<UserEntity> GetUsers(int page, int number, UserOrderCriteria orderCriteria)
public IEnumerable<UserDTO> GetUsers(int page, int number, UserOrderCriteria orderCriteria)
{
var usersEntities = userService.GetUsers(page, number, orderCriteria);
return usersEntities.Select(e => e).ToList();
return usersEntities.Select(e => e.FromEntityToDTO()).ToList();
}
public UserEntity GetUserById(int id) => userService.GetUserById(id);
public UserDTO GetUserById(int id) => userService.GetUserById(id).FromEntityToDTO();
public UserEntity GetUserByUsername(string username) => userService.GetUserByUsername(username);
public UserDTO GetUserByUsername(string username) => userService.GetUserByUsername(username).FromEntityToDTO();
public bool DeleteUser(int id) => userService.DeleteUser(id);
public UserEntity UpdateUser(int id, UserEntity user) =>
userService.UpdateUser(id, user);
public UserDTO UpdateUser(int id, UserDTO user) =>
userService.UpdateUser(id, user.FromDTOToEntity()).FromEntityToDTO();
public UserEntity CreateUser(string username, string password, string email, bool isAdmin) =>
userService.CreateUser(username, password, email, isAdmin);
public UserDTO CreateUser(string username, string password, string email, bool isAdmin) =>
userService.CreateUser(username, password, email, isAdmin).FromEntityToDTO();
}

@ -6,6 +6,8 @@ namespace API
{
public class WebAPIDbContext : IdentityDbContext<IdentityUser>
{
public WebAPIDbContext(DbContextOptions<WebAPIDbContext> options) : base(options) { }
public WebAPIDbContext(DbContextOptions<WebAPIDbContext> options) : base(options)
{
}
}
}

@ -4,7 +4,7 @@
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<RootNamespace>ModelToEntities</RootNamespace>
<RootNamespace>DbDataManager</RootNamespace>
</PropertyGroup>
<ItemGroup>

@ -16,9 +16,33 @@ public class InquiryDataService : IInquiryService<InquiryEntity>
context.Database.EnsureCreated();
}
public IEnumerable<InquiryEntity> GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria)
{
IQueryable<InquiryEntity> query = DbContext.Inquiries.Skip((page - 1) * number).Take(number);
switch (orderCriteria)
{
case InquiryOrderCriteria.None:
break;
case InquiryOrderCriteria.ByTitle:
query = query.OrderBy(s => s.Title);
break;
case InquiryOrderCriteria.ByDescription:
query = query.OrderBy(s => s.Description);
break;
case InquiryOrderCriteria.ByIsUser:
query = query.OrderBy(s => s.IsUser);
break;
default:
break;
}
var inquiries = query.ToList();
return inquiries;
}
public InquiryEntity GetInquiryById(int id)
{
var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Id == id);
var inquiryEntity = DbContext.Inquiries.FirstOrDefault(i => i.Id == id);
if (inquiryEntity == null)
{
throw new ArgumentException("Impossible de trouver l'enquête", nameof(id));
@ -29,7 +53,7 @@ public class InquiryDataService : IInquiryService<InquiryEntity>
public InquiryEntity GetInquiryByTitle(string title)
{
var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Title == title);
var inquiryEntity = DbContext.Inquiries.FirstOrDefault(i => i.Title == title);
if (inquiryEntity == null)
{
throw new ArgumentException("Impossible de trouver l'enquête", nameof(title));
@ -38,10 +62,12 @@ public class InquiryDataService : IInquiryService<InquiryEntity>
return inquiryEntity;
}
public IEnumerable<InquiryEntity> GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria)
public InquiryEntity CreateInquiry(string title, string description, bool isUser)
{
return DbContext.Inquiries.Skip((page - 1) * number).Take(number).ToList()
.Select(u => u);
var newInquiryEntity = new InquiryEntity(title, description, isUser);
DbContext.Inquiries.Add(newInquiryEntity);
DbContext.SaveChangesAsync();
return newInquiryEntity;
}
public bool DeleteInquiry(int id)
@ -65,29 +91,13 @@ public class InquiryDataService : IInquiryService<InquiryEntity>
throw new ArgumentException("Impossible de trouver l'enquête", nameof(id));
}
updatingInquiry.Title = inquiry.Title;
updatingInquiry.Description = inquiry.Description;
updatingInquiry.IsUser = inquiry.IsUser;
updatingInquiry.IdInquiryTable = inquiry.IdInquiryTable;
updatingInquiry.IdDatabase = inquiry.IdDatabase;
// Permet d'indiquer en Db que l'entité a été modifiée.
DbContext.Entry(updatingInquiry).State = EntityState.Modified;
DbContext.SaveChangesAsync();
return updatingInquiry;
}
public InquiryEntity CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId)
{
var newInquiryEntity = new InquiryEntity()
foreach (var pptt in typeof(InquiryEntity).GetProperties()
.Where(p => p.CanWrite && p.Name != nameof(InquiryEntity.Id)))
{
Title = title,
Description = description,
IsUser = isUser,
IdDatabase = tableId,
IdInquiryTable = solutionId,
};
DbContext.Inquiries.Add(newInquiryEntity);
pptt.SetValue(updatingInquiry, pptt.GetValue(inquiry));
}
DbContext.SaveChangesAsync();
return newInquiryEntity;
return updatingInquiry;
}
}

@ -16,6 +16,30 @@ public class LessonDataService : ILessonService<LessonEntity>
context.Database.EnsureCreated();
}
public IEnumerable<LessonEntity> GetLessons(int page, int number, LessonOrderCriteria orderCriteria)
{
IQueryable<LessonEntity> query = DbContext.Lessons.Skip((page - 1) * number).Take(number);
switch (orderCriteria)
{
case LessonOrderCriteria.None:
break;
case LessonOrderCriteria.ByTitle:
query = query.OrderBy(s => s.Title);
break;
case LessonOrderCriteria.ByLastPublisher:
query = query.OrderBy(s => s.LastPublisher);
break;
case LessonOrderCriteria.ByLastEdit:
query = query.OrderBy(s => s.LastEdit);
break;
default:
break;
}
var lessons = query.ToList();
return lessons;
}
public LessonEntity GetLessonById(int id)
{
var lessonEntity = DbContext.Lessons.FirstOrDefault(u => u.Id == id);
@ -38,15 +62,9 @@ public class LessonDataService : ILessonService<LessonEntity>
return lessonEntity;
}
public IEnumerable<LessonEntity> GetLessons(int page, int number, LessonOrderCriteria orderCriteria)
{
return DbContext.Lessons.Skip((page - 1) * number).Take(number).ToList()
.Select(u => u);
}
public bool DeleteLesson(int id)
{
var lessonEntity = DbContext.Lessons.FirstOrDefault(u => u.Id == id);
var lessonEntity = DbContext.Lessons.FirstOrDefault(l => l.Id == id);
if (lessonEntity == null)
{
return false;
@ -59,17 +77,18 @@ public class LessonDataService : ILessonService<LessonEntity>
public LessonEntity UpdateLesson(int id, LessonEntity lesson)
{
var updatingLesson = DbContext.Lessons.FirstOrDefault(u => u.Id == id);
var updatingLesson = DbContext.Lessons.FirstOrDefault(l => l.Id == id);
if (updatingLesson == null)
{
throw new ArgumentException("Impossible de trouver la leçon", nameof(id));
}
updatingLesson.Title = lesson.Title;
updatingLesson.LastPublisher = lesson.LastPublisher;
updatingLesson.LastEdit = lesson.LastEdit;
// Permet d'indiquer en Db que l'entité a été modifiée.
DbContext.Entry(updatingLesson).State = EntityState.Modified;
foreach (var pptt in typeof(LessonEntity).GetProperties()
.Where(p => p.CanWrite && p.Name != nameof(LessonEntity.Id)))
{
pptt.SetValue(updatingLesson, pptt.GetValue(lesson));
}
DbContext.SaveChangesAsync();
return updatingLesson;
}

@ -16,6 +16,36 @@ public class ParagraphDataService : IParagraphService<ParagraphEntity>
context.Database.EnsureCreated();
}
public IEnumerable<ParagraphEntity> GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria)
{
IQueryable<ParagraphEntity> query = DbContext.Paragraphs.Skip((page - 1) * number).Take(number);
switch (orderCriteria)
{
case ParagraphOrderCriteria.None:
break;
case ParagraphOrderCriteria.ByTitle:
query = query.OrderBy(s => s.Title);
break;
case ParagraphOrderCriteria.ByContent:
query = query.OrderBy(s => s.Content);
break;
case ParagraphOrderCriteria.ByInfo:
query = query.OrderBy(s => s.Info);
break;
case ParagraphOrderCriteria.ByQuery:
query = query.OrderBy(s => s.Query);
break;
case ParagraphOrderCriteria.ByComment:
query = query.OrderBy(s => s.Comment);
break;
default:
break;
}
var paragraphs = query.ToList();
return paragraphs;
}
public ParagraphEntity GetParagraphById(int id)
{
var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(u => u.Id == id);
@ -38,15 +68,9 @@ public class ParagraphDataService : IParagraphService<ParagraphEntity>
return paragraphEntity;
}
public IEnumerable<ParagraphEntity> GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria)
{
return DbContext.Paragraphs.Skip((page - 1) * number).Take(number).ToList()
.Select(u => u);
}
public bool DeleteParagraph(int id)
{
var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(u => u.Id == id);
var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(p => p.Id == id);
if (paragraphEntity == null)
{
return false;
@ -59,25 +83,24 @@ public class ParagraphDataService : IParagraphService<ParagraphEntity>
public ParagraphEntity UpdateParagraph(int id, ParagraphEntity paragraph)
{
var updatingParagraph = DbContext.Paragraphs.FirstOrDefault(u => u.Id == id);
var updatingParagraph = DbContext.Paragraphs.FirstOrDefault(p => p.Id == id);
if (updatingParagraph == null)
{
throw new ArgumentException("Impossible de trouver le paragraphe", nameof(id));
}
updatingParagraph.Title = paragraph.Title;
updatingParagraph.Content = paragraph.Content;
updatingParagraph.Info = paragraph.Info;
updatingParagraph.Query = paragraph.Query;
updatingParagraph.Comment = paragraph.Comment;
updatingParagraph.LessonId = paragraph.LessonId;
// Permet d'indiquer en Db que l'entité a été modifiée.
DbContext.Entry(updatingParagraph).State = EntityState.Modified;
foreach (var pptt in typeof(ParagraphEntity).GetProperties().Where(p =>
p.CanWrite && p.Name != nameof(ParagraphEntity.Id) && p.Name != nameof(ParagraphEntity.LessonId)))
{
pptt.SetValue(updatingParagraph, pptt.GetValue(paragraph));
}
DbContext.SaveChangesAsync();
return updatingParagraph;
}
public ParagraphEntity CreateParagraph(string title, string content, string info, string query, string comment, int lessonId)
public ParagraphEntity CreateParagraph(string title, string content, string info, string query, string comment,
int lessonId)
{
var newParagraphEntity = new ParagraphEntity()
{

@ -16,43 +16,61 @@ public class SuccessDataService : ISuccessService<SuccessEntity>
context.Database.EnsureCreated();
}
public SuccessEntity GetSuccessByUserId(int id)
public IEnumerable<SuccessEntity> GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria)
{
var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id);
if (successEntity == null)
IQueryable<SuccessEntity> query = DbContext.Successes.Skip((page - 1) * number).Take(number);
switch (orderCriteria)
{
throw new ArgumentException("Impossible de trouver le succès avec l'user id", nameof(id));
case SuccessOrderCriteria.None:
break;
case SuccessOrderCriteria.ByUserId:
query = query.OrderBy(s => s.UserId);
break;
case SuccessOrderCriteria.ByInquiryId:
query = query.OrderBy(s => s.InquiryId);
break;
case SuccessOrderCriteria.ByIsFinished:
query = query.OrderBy(s => s.IsFinished);
break;
default:
break;
}
return successEntity;
var successes = query.ToList();
return successes;
}
public SuccessEntity GetSuccessByInquiryId(int id)
public SuccessEntity GetSuccessByUserId(int id)
{
var successEntity = DbContext.Successes.FirstOrDefault(u => u.InquiryId == id);
if (successEntity == null)
var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id);
if (userEntity == null)
{
throw new ArgumentException("Impossible de trouver le succès avec l'inquiry id", nameof(id));
throw new ArgumentException("Impossible de trouver le succès", nameof(id));
}
return successEntity;
return userEntity;
}
public IEnumerable<SuccessEntity> GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria)
public SuccessEntity GetSuccessByInquiryId(int id)
{
return DbContext.Successes.Skip((page - 1) * number).Take(number).ToList()
.Select(u => u);
var userEntity = DbContext.Successes.FirstOrDefault(u => u.InquiryId == id);
if (userEntity == null)
{
throw new ArgumentException("Impossible de trouver le succès", nameof(id));
}
return userEntity;
}
public bool DeleteSuccess(int id)
{
var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id);
if (userEntity == null)
var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id);
if (successEntity == null)
{
return false;
}
DbContext.Successes.Remove(userEntity);
DbContext.Successes.Remove(successEntity);
DbContext.SaveChangesAsync();
return true;
}
@ -62,14 +80,15 @@ public class SuccessDataService : ISuccessService<SuccessEntity>
var updatingSuccess = DbContext.Successes.FirstOrDefault(u => u.UserId == id);
if (updatingSuccess == null)
{
throw new ArgumentException("Impossible de trouver le succès avec l'user id", nameof(id));
throw new ArgumentException("Impossible de trouver le succès", nameof(id));
}
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.UserId = success.UserId;
updatingSuccess.InquiryId = success.InquiryId;
updatingSuccess.IsFinished = success.IsFinished;
// Permet d'indiquer en Db que l'entité a été modifiée.
DbContext.Entry(updatingSuccess).State = EntityState.Modified;
DbContext.SaveChangesAsync();
return updatingSuccess;
}

@ -1,6 +1,5 @@
using DbContextLib;
using Entities;
using Microsoft.EntityFrameworkCore;
using Model.OrderCriteria;
using Shared;
@ -8,7 +7,6 @@ namespace DbDataManager.Service;
public class UserDataService : IUserService<UserEntity>
{
private UserDbContext DbContext { get; set; }
public UserDataService(UserDbContext context)
@ -41,8 +39,29 @@ public class UserDataService : IUserService<UserEntity>
public IEnumerable<UserEntity> GetUsers(int page, int number, UserOrderCriteria orderCriteria)
{
return DbContext.Users.Skip((page - 1) * number).Take(number).ToList()
.Select(u => u);
IQueryable<UserEntity> query = DbContext.Users.Skip((page - 1) * number).Take(number);
switch (orderCriteria)
{
case UserOrderCriteria.None:
break;
case UserOrderCriteria.ById:
query = query.OrderBy(s => s.Id);
break;
case UserOrderCriteria.ByUsername:
query = query.OrderBy(s => s.Username);
break;
case UserOrderCriteria.ByEmail:
query = query.OrderBy(s => s.Email);
break;
case UserOrderCriteria.ByIsAdmin:
query = query.OrderBy(s => s.IsAdmin);
break;
default:
break;
}
var users = query.ToList();
return users;
}
public bool DeleteUser(int id)
@ -66,19 +85,19 @@ public class UserDataService : IUserService<UserEntity>
throw new ArgumentException("Impossible de trouver l'utilisateur", nameof(id));
}
updatingUser.Username = user.Username;
updatingUser.Password = user.Password;
updatingUser.Email = user.Email;
updatingUser.IsAdmin = user.IsAdmin;
// Permet d'indiquer en Db que l'entité a été modifiée.
DbContext.Entry(updatingUser).State = EntityState.Modified;
foreach (var pptt in typeof(UserEntity).GetProperties()
.Where(p => p.CanWrite && p.Name != nameof(UserEntity.Id)))
{
pptt.SetValue(updatingUser, pptt.GetValue(user));
}
DbContext.SaveChangesAsync();
return updatingUser;
}
public UserEntity CreateUser(string username, string password, string email, bool isAdmin)
{
var newUserEntity = new UserEntity()
var newUserEntity = new UserEntity
{
Username = username,
Password = password,

@ -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;

@ -2,7 +2,7 @@
public class InquiryDTO
{
public int Id { get;}
public int Id { get; }
public string Title { get; set; }
@ -10,25 +10,19 @@ public class InquiryDTO
public bool IsUser { get; set; }
public int Database { get; set; }
public int InquiryTable { get; set; }
public InquiryDTO(int id, string title, string description, bool isUser, int database, int inquiryTable)
public InquiryDTO(){}
public InquiryDTO(int id, string title, string description, bool isUser)
{
Id = id;
Title = title;
Description = description;
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;
Description = description;
IsUser = isUser;
Database = database;
InquiryTable = inquiryTable;
}
}

@ -2,12 +2,13 @@
public class InquiryTableDTO
{
public int OwnerId { get; set; }
public string DatabaseName { get; set; }
public string ConnectionInfo { get; set; }
public InquiryTableDTO() { }
public InquiryTableDTO()
{
}
public InquiryTableDTO(int ownerId, string databaseName, string connectionInfo)
{

@ -8,7 +8,10 @@ public class LessonDTO
public DateOnly? LastEdit { get; set; }
public ICollection<ContentLessonDTO> Content { get; set; } = new List<ContentLessonDTO>();
public LessonDTO() { }
public LessonDTO()
{
}
public LessonDTO(int id, string title, string lastPublisher, DateOnly? lastEdit)
{
Id = id;

@ -7,7 +7,9 @@ public class NotepadDTO
public int InquiryId { get; set; }
public string Notes { get; set; }
public NotepadDTO() { }
public NotepadDTO()
{
}
public NotepadDTO(int id, int userId, int inquiryId, string notes)
{
@ -16,6 +18,7 @@ public class NotepadDTO
InquiryId = inquiryId;
Notes = notes;
}
public NotepadDTO(int userId, int inquiryId, string notes)
{
UserId = userId;

@ -8,8 +8,13 @@ public class SolutionDTO
public string MurderPlace { get; set; }
public string MurderWeapon { get; set; }
public string Explanation { get; set; }
public SolutionDTO() { }
public SolutionDTO(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation)
public SolutionDTO()
{
}
public SolutionDTO(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace,
string murderWeapon, string explanation)
{
OwnerId = ownerId;
MurdererFirstName = murdererFirstName;
@ -18,7 +23,9 @@ public class SolutionDTO
MurderWeapon = murderWeapon;
Explanation = explanation;
}
public SolutionDTO(string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation)
public SolutionDTO(string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon,
string explanation)
{
MurdererFirstName = murdererFirstName;
MurdererLastName = murdererLastName;

@ -6,7 +6,9 @@ public class SuccessDTO
public int InquiryId { get; set; }
public bool IsFinished { get; set; }
public SuccessDTO() { }
public SuccessDTO()
{
}
public SuccessDTO(int userId, int inquiryId, bool isFinished)
{

@ -8,7 +8,10 @@ public class UserDTO
public string Email { get; set; }
public bool IsAdmin { get; set; }
public UserDTO() { }
public UserDTO()
{
}
public UserDTO(int id, string username, string password, string email, bool isAdmin)
{
Id = id;

@ -6,10 +6,13 @@ namespace Entities;
[Table("BlackList")]
public class BlackListEntity
{
[Key]
public string Email { get; set; }
[Key] public string Email { get; set; }
public DateOnly ExpirationDate { get; set; }
public BlackListEntity() { }
public BlackListEntity()
{
}
public BlackListEntity(string email, DateOnly expirationDate)
{
Email = email;

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

@ -11,16 +11,20 @@ public class InquiryTableEntity
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public int OwnerId { get; set; }
public InquiryEntity Owner { get; set; }
public string DatabaseName { get; set; }
public string ConnectionInfo { get; set; }
public InquiryTableEntity() { }
public InquiryTableEntity()
{
}
public InquiryTableEntity(int inquiryId)
{
OwnerId = inquiryId;
}
public InquiryTableEntity(int inquiryId, string databaseName, string connectionInfo)
{
OwnerId = inquiryId;

@ -11,7 +11,9 @@ public class LessonEntity
public DateOnly? LastEdit { get; set; }
public ICollection<ContentLessonEntity> Content { get; set; } = new List<ContentLessonEntity>();
public LessonEntity() { }
public LessonEntity()
{
}
public LessonEntity(int id, string title, string lastPublisher, DateOnly? lastEdit)
{

@ -7,16 +7,16 @@ public class NotepadEntity
{
public int Id { get; set; }
[ForeignKey(nameof(User))]
public int UserId { get; set; }
[ForeignKey(nameof(User))] public int UserId { get; set; }
public UserEntity User { get; set; }
[ForeignKey(nameof(Inquiry))]
public int InquiryId { get; set; }
[ForeignKey(nameof(Inquiry))] public int InquiryId { get; set; }
public InquiryEntity Inquiry { get; set; }
public string Notes { get; set; }
public NotepadEntity() { }
public NotepadEntity()
{
}
public NotepadEntity(int id, int userId, UserEntity user, int inquiryId, InquiryEntity inquiry, string notes)
{
@ -27,6 +27,7 @@ public class NotepadEntity
Inquiry = inquiry;
Notes = notes;
}
public NotepadEntity(int userId, UserEntity user, int inquiryId, InquiryEntity inquiry, string notes)
{
UserId = userId;

@ -38,9 +38,4 @@ public class ParagraphEntity : ContentLessonEntity
Query = query;
Comment = comment;
}
public object FromEntityToModel()
{
throw new NotImplementedException();
}
}

@ -11,18 +11,25 @@ public class SolutionEntity
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public int OwnerId { get; set; }
public InquiryEntity? Owner { get; set; }
public string? MurdererFirstName { get; set; }
public string? MurdererLastName { get; set; }
public string? MurderPlace { get; set; }
public string? MurderWeapon { get; set; }
public string? Explanation { get; set; }
public SolutionEntity() { }
public string? Explaination { get; set; }
public SolutionEntity()
{
}
public SolutionEntity(int ownerId)
{
OwnerId = ownerId;
}
public SolutionEntity(int ownerId, InquiryEntity? owner, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation)
public SolutionEntity(int ownerId, InquiryEntity? owner, string murdererFirstName, string murdererLastName,
string murderPlace, string murderWeapon, string explaination)
{
OwnerId = ownerId;
Owner = owner;
@ -30,24 +37,28 @@ public class SolutionEntity
MurdererLastName = murdererLastName;
MurderPlace = murderPlace;
MurderWeapon = murderWeapon;
Explanation = explanation;
Explaination = explaination;
}
public SolutionEntity(InquiryEntity? owner, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation)
public SolutionEntity(InquiryEntity? owner, string murdererFirstName, string murdererLastName, string murderPlace,
string murderWeapon, string explaination)
{
Owner = owner;
MurdererFirstName = murdererFirstName;
MurdererLastName = murdererLastName;
MurderPlace = murderPlace;
MurderWeapon = murderWeapon;
Explanation = explanation;
Explaination = explaination;
}
public SolutionEntity(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation)
public SolutionEntity(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace,
string murderWeapon, string explanation)
{
OwnerId = ownerId;
MurdererFirstName = murdererFirstName;
MurdererLastName = murdererLastName;
MurderPlace = murderPlace;
MurderWeapon = murderWeapon;
Explanation = explanation;
Explaination = explanation;
}
}

@ -5,16 +5,16 @@ namespace Entities;
[Table("Success")]
public class SuccessEntity
{
[ForeignKey(nameof(User))]
public int UserId { get; set; }
[ForeignKey(nameof(User))] public int UserId { get; set; }
public UserEntity User { get; set; }
[ForeignKey(nameof(Inquiry))]
public int InquiryId { get; set; }
[ForeignKey(nameof(Inquiry))] public int InquiryId { get; set; }
public InquiryEntity Inquiry { get; set; }
public bool IsFinished { get; set; }
public SuccessEntity() { }
public SuccessEntity()
{
}
public SuccessEntity(int userId, UserEntity user, int inquiryId, InquiryEntity inquiry, bool isFinished)
{

@ -7,6 +7,9 @@ public class BlackList
public BlackList(string email, DateOnly expirationDate)
{
if (email is null or "")
throw new ArgumentException("Email cannot be null or empty");
ArgumentOutOfRangeException.ThrowIfLessThan(expirationDate, DateOnly.FromDateTime(DateTime.Now));
Email = email;
ExpirationDate = expirationDate;
}

@ -6,18 +6,16 @@ public class Inquiry
public string Title { get; set; }
public string Description { 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;
Title = title;
Description = description;
IsUser = isUser;
Database = database;
InquiryTable = inquiryTable;
}
}

@ -6,12 +6,14 @@ public class InquiryTable
public string DatabaseName { get; set; }
public string ConnectionInfo { get; set; }
public InquiryTable() { }
public InquiryTable()
{
}
public InquiryTable(int inquiryId, string databaseName, string connectionInfo)
{
OwnerId = inquiryId;
DatabaseName = databaseName;
ConnectionInfo = connectionInfo;
}
}

@ -7,7 +7,9 @@ public class Notepad
public int InquiryId { get; set; }
public string Notes { get; set; }
public Notepad() { }
public Notepad()
{
}
public Notepad(int id, int userId, int inquiryId, string notes)
{
@ -16,7 +18,8 @@ public class Notepad
InquiryId = inquiryId;
Notes = notes;
}
public Notepad(int userId, int inquiryId, string notes)
public Notepad(int userId, int inquiryId, string notes)
{
UserId = userId;
InquiryId = inquiryId;

@ -2,5 +2,8 @@ namespace Model.OrderCriteria;
public enum InquiryOrderCriteria
{
None, ByTitle, ByDescription, ByIsUser
None,
ByTitle,
ByDescription,
ByIsUser
}

@ -2,5 +2,8 @@ namespace Model.OrderCriteria;
public enum LessonOrderCriteria
{
None, ByTitle, ByLastPublisher, ByLastEdit
None,
ByTitle,
ByLastPublisher,
ByLastEdit
}

@ -2,5 +2,10 @@ namespace Model.OrderCriteria;
public enum ParagraphOrderCriteria
{
None, ByTitle, ByContent, ByInfo, ByQuery, ByComment
None,
ByTitle,
ByContent,
ByInfo,
ByQuery,
ByComment
}

@ -2,5 +2,8 @@ namespace Model.OrderCriteria;
public enum SuccessOrderCriteria
{
None, ByUserId, ByInquiryId, ByIsFinished
None,
ByUserId,
ByInquiryId,
ByIsFinished
}

@ -2,5 +2,9 @@ namespace Model.OrderCriteria;
public enum UserOrderCriteria
{
None, ById, ByUsername, ByEmail, ByIsAdmin
None,
ById,
ByUsername,
ByEmail,
ByIsAdmin
}

@ -8,8 +8,13 @@ public class Solution
public string MurderPlace { get; set; }
public string MurderWeapon { get; set; }
public string Explanation { get; set; }
public Solution() { }
public Solution(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation)
public Solution()
{
}
public Solution(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace,
string murderWeapon, string explanation)
{
OwnerId = ownerId;
MurdererFirstName = murdererFirstName;
@ -18,7 +23,9 @@ public class Solution
MurderWeapon = murderWeapon;
Explanation = explanation;
}
public Solution(string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation)
public Solution(string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon,
string explanation)
{
MurdererFirstName = murdererFirstName;
MurdererLastName = murdererLastName;

@ -6,7 +6,9 @@ public class Success
public int InquiryId { get; set; }
public bool IsFinished { get; set; }
public Success() { }
public Success()
{
}
public Success(int userId, int inquiryId, bool isFinished)
{

@ -8,7 +8,10 @@ public class User
public string Email { get; set; }
public bool IsAdmin { get; set; }
public User() { }
public User()
{
}
public User(int id, string username, string password, string email, bool isAdmin)
{
Id = id;

@ -1,14 +0,0 @@
using Dto;
using Model.OrderCriteria;
namespace Shared;
public interface IInquiryDataService : IInquiryService<InquiryDTO>
{
public IEnumerable<InquiryDTO> GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria);
public InquiryDTO GetInquiryById(int id);
public InquiryDTO GetInquiryByTitle(string title);
public bool DeleteInquiry(int id);
public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry);
public InquiryDTO CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId);
}

@ -9,5 +9,5 @@ public interface IInquiryService<TInquiry>
public TInquiry GetInquiryByTitle(string title);
public bool DeleteInquiry(int id);
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);
}

@ -1,15 +0,0 @@
using Dto;
using Model.OrderCriteria;
namespace Shared;
public interface ILessonDataService : ILessonService<LessonDTO>
{
public IEnumerable<LessonDTO> GetLessons(int page, int number, LessonOrderCriteria orderCriteria);
public LessonDTO GetLessonById(int id);
public LessonDTO GetLessonByTitle(string title);
public bool DeleteLesson(int id);
public LessonDTO UpdateLesson(int id, LessonDTO lesson);
public LessonDTO CreateLesson(string title, string lastPublisher, DateOnly? lastEdit);
}

@ -1,14 +0,0 @@
using Dto;
using Model.OrderCriteria;
namespace Shared;
public interface IParagraphDataService : IParagraphService<ParagraphDTO>
{
public IEnumerable<ParagraphDTO> GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria);
public ParagraphDTO GetParagraphById(int id);
public ParagraphDTO GetParagraphByTitle(string title);
public bool DeleteParagraph(int id);
public ParagraphDTO UpdateParagraph(int id, ParagraphDTO paragraph);
public ParagraphDTO CreateParagraph(string title, string content, string info, string query, string comment, int lessonId);
}

@ -9,6 +9,8 @@ namespace Shared
public TParagraph GetParagraphByTitle(string title);
public bool DeleteParagraph(int id);
public TParagraph UpdateParagraph(int id, TParagraph paragraph);
public TParagraph CreateParagraph(string title, string content, string info, string query, string comment, int lessonId);
public TParagraph CreateParagraph(string title, string content, string info, string query, string comment,
int lessonId);
}
}

@ -1,14 +0,0 @@
using Dto;
using Model.OrderCriteria;
namespace Shared;
public interface ISuccessDataService : ISuccessService<SuccessDTO>
{
public IEnumerable<SuccessDTO> GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria);
public SuccessDTO GetSuccessByUserId(int id);
public SuccessDTO GetSuccessByInquiryId(int id);
public bool DeleteSuccess(int id);
public SuccessDTO UpdateSuccess(int id, SuccessDTO success);
public SuccessDTO CreateSuccess(int userId, int inquiryId, bool isFinished);
}

@ -1,14 +0,0 @@
using Dto;
using Model.OrderCriteria;
namespace Shared;
public interface IUserDataService : IUserService<UserDTO>
{
public IEnumerable<UserDTO> GetUsers(int page, int number, UserOrderCriteria orderCriteria);
public UserDTO GetUserById(int id);
public UserDTO GetUserByUsername(string username);
public bool DeleteUser(int id);
public UserDTO UpdateUser(int id, UserDTO user);
public UserDTO CreateUser(string username, string password, string email, bool isAdmin);
}

@ -1,98 +0,0 @@
using Entities;
using Microsoft.EntityFrameworkCore;
using Dto;
using Model.OrderCriteria;
using DbContextLib;
using Shared.Mapper;
namespace Shared;
public class InquiryDataService : IInquiryDataService
{
private UserDbContext DbContext { get; set; }
public InquiryDataService(UserDbContext context)
{
DbContext = context;
context.Database.EnsureCreated();
}
public IEnumerable<InquiryDTO> GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria)
{
IQueryable<InquiryEntity> query = DbContext.Inquiries.Skip((page - 1) * number).Take(number);
switch (orderCriteria)
{
case InquiryOrderCriteria.None:
break;
case InquiryOrderCriteria.ByTitle:
query = query.OrderBy(s => s.Title);
break;
case InquiryOrderCriteria.ByDescription:
query = query.OrderBy(s => s.Description);
break;
case InquiryOrderCriteria.ByIsUser:
query = query.OrderBy(s => s.IsUser);
break;
default:
break;
}
var inquiries = query.ToList();
return inquiries.Select(s => s.FromEntityToDTO());
}
public InquiryDTO GetInquiryById(int id)
{
var inquiryEntity = DbContext.Inquiries.FirstOrDefault(i => i.Id == id);
if (inquiryEntity == null)
{
throw new ArgumentException("Impossible de trouver l'enquête", nameof(id));
}
return inquiryEntity.FromEntityToDTO();
}
public InquiryDTO GetInquiryByTitle(string title)
{
var inquiryEntity = DbContext.Inquiries.FirstOrDefault(i => i.Title == title);
if (inquiryEntity == null)
{
throw new ArgumentException("Impossible de trouver l'enquête", nameof(title));
}
return inquiryEntity.FromEntityToDTO();
}
public InquiryDTO CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId)
{
var newInquiryEntity = new InquiryDTO(title, description, isUser, tableId, solutionId);
DbContext.Inquiries.Add(newInquiryEntity.FromDTOToEntity());
DbContext.SaveChangesAsync();
return newInquiryEntity;
}
public bool DeleteInquiry(int id)
{
var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Id == id);
if (inquiryEntity == null)
{
return false;
}
DbContext.Inquiries.Remove(inquiryEntity);
DbContext.SaveChangesAsync();
return true;
}
public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry)
{
var updatingInquiry = DbContext.Inquiries.FirstOrDefault(u => u.Id == id);
if (updatingInquiry == null)
{
throw new ArgumentException("Impossible de trouver l'enquête", nameof(id));
}
updatingInquiry.Title = inquiry.Title;
updatingInquiry.Description = inquiry.Description;
updatingInquiry.IsUser = inquiry.IsUser;
updatingInquiry.IdDatabase = inquiry.Database;
updatingInquiry.IdInquiryTable = inquiry.InquiryTable;
DbContext.SaveChangesAsync();
return updatingInquiry.FromEntityToDTO();
}
}

@ -1,103 +0,0 @@
using DbContextLib;
using Entities;
using Microsoft.EntityFrameworkCore;
using Dto;
using Model.OrderCriteria;
using Shared.Mapper;
namespace Shared;
public class LessonDataService : ILessonDataService
{
private UserDbContext DbContext { get; set; }
public LessonDataService(UserDbContext context)
{
DbContext = context;
context.Database.EnsureCreated();
}
public IEnumerable<LessonDTO> GetLessons(int page, int number, LessonOrderCriteria orderCriteria)
{
IQueryable<LessonEntity> query = DbContext.Lessons.Skip((page - 1) * number).Take(number);
switch (orderCriteria)
{
case LessonOrderCriteria.None:
break;
case LessonOrderCriteria.ByTitle:
query = query.OrderBy(s => s.Title);
break;
case LessonOrderCriteria.ByLastPublisher:
query = query.OrderBy(s => s.LastPublisher);
break;
case LessonOrderCriteria.ByLastEdit:
query = query.OrderBy(s => s.LastEdit);
break;
default:
break;
}
var lessons = query.ToList();
return lessons.Select(s => s.FromEntityToDTO());
}
public LessonDTO GetLessonById(int id)
{
var lessonEntity = DbContext.Lessons.FirstOrDefault(u => u.Id == id);
if (lessonEntity == null)
{
throw new ArgumentException("Impossible de trouver la leçon", nameof(id));
}
return lessonEntity.FromEntityToDTO();
}
public LessonDTO GetLessonByTitle(string title)
{
var lessonEntity = DbContext.Lessons.FirstOrDefault(u => u.Title == title);
if (lessonEntity == null)
{
throw new ArgumentException("Impossible de trouver la leçon", nameof(title));
}
return lessonEntity.FromEntityToDTO();
}
public bool DeleteLesson(int id)
{
var lessonEntity = DbContext.Lessons.FirstOrDefault(l => l.Id == id);
if (lessonEntity == null)
{
return false;
}
DbContext.Lessons.Remove(lessonEntity);
DbContext.SaveChangesAsync();
return true;
}
public LessonDTO UpdateLesson(int id, LessonDTO lesson)
{
var updatingLesson = DbContext.Lessons.FirstOrDefault(l => l.Id == id);
if (updatingLesson == null)
{
throw new ArgumentException("Impossible de trouver la leçon", nameof(id));
}
updatingLesson.Title = lesson.Title;
updatingLesson.LastPublisher = lesson.LastPublisher;
updatingLesson.LastEdit = lesson.LastEdit;
DbContext.SaveChangesAsync();
return updatingLesson.FromEntityToDTO();
}
public LessonDTO CreateLesson(string title, string lastPublisher, DateOnly? lastEdit)
{
var newLessonEntity = new LessonDTO()
{
Title = title,
LastPublisher = lastPublisher,
LastEdit = lastEdit,
};
DbContext.Lessons.Add(newLessonEntity.FromDTOToEntity());
DbContext.SaveChangesAsync();
return newLessonEntity;
}
}

@ -6,39 +6,34 @@ namespace Shared.Mapper;
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,
InqDto.InquiryTable);
return new Inquiry(inqDto.Id, inqDto.Title, inqDto.Description, inqDto.IsUser);
}
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,
InqEntity.Database.OwnerId, InqEntity.InquiryTable.OwnerId);
return new Inquiry(inqEntity.Id, inqEntity.Title, inqEntity.Description, inqEntity.IsUser);
}
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),
new SolutionEntity(Inq.InquiryTable));
return new InquiryEntity(inq.Id, inq.Title, inq.Description, inq.IsUser);
}
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,
new InquiryTableEntity(InqDto.Database), new SolutionEntity(InqDto.InquiryTable));
return new InquiryEntity(inqDto.Id, inqDto.Title, inqDto.Description, inqDto.IsUser);
}
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,
InqEntity.Database.OwnerId, InqEntity.InquiryTable.OwnerId);
return new InquiryDTO(inqEntity.Id, inqEntity.Title, inqEntity.Description, inqEntity.IsUser);
}
}

@ -6,29 +6,29 @@ namespace Shared.Mapper;
public static class InquiryTableMapper
{
public static InquiryTable FromDTOToModel(this InquiryTableDTO InqTDto)
public static InquiryTable FromDTOToModel(this InquiryTableDTO inqTDto)
{
return new InquiryTable(InqTDto.OwnerId, InqTDto.ConnectionInfo, InqTDto.DatabaseName);
return new InquiryTable(inqTDto.OwnerId, inqTDto.ConnectionInfo, inqTDto.DatabaseName);
}
public static InquiryTable FromEntityToModel(this InquiryTableEntity InqTEntity)
public static InquiryTable FromEntityToModel(this InquiryTableEntity inqTEntity)
{
return new InquiryTable(InqTEntity.OwnerId, InqTEntity.ConnectionInfo, InqTEntity.DatabaseName);
return new InquiryTable(inqTEntity.OwnerId, inqTEntity.ConnectionInfo, inqTEntity.DatabaseName);
}
public static InquiryTableDTO FromModelToDTO(this InquiryTable InqT)
public static InquiryTableDTO FromModelToDTO(this InquiryTable inqT)
{
return new InquiryTableDTO(InqT.OwnerId, InqT.DatabaseName, InqT.ConnectionInfo);
return new InquiryTableDTO(inqT.OwnerId, inqT.DatabaseName, inqT.ConnectionInfo);
}
public static InquiryTableDTO FromEntityToDTO(this InquiryTableEntity InqTEntity)
public static InquiryTableDTO FromEntityToDTO(this InquiryTableEntity inqTEntity)
{
return new InquiryTableDTO(InqTEntity.OwnerId, InqTEntity.DatabaseName, InqTEntity.ConnectionInfo);
return new InquiryTableDTO(inqTEntity.OwnerId, inqTEntity.DatabaseName, inqTEntity.ConnectionInfo);
}
public static InquiryTableEntity FromModelToEntity(this InquiryTable InqT)
public static InquiryTableEntity FromModelToEntity(this InquiryTable inqT)
{
return new InquiryTableEntity(InqT.OwnerId, InqT.DatabaseName, InqT.ConnectionInfo);
return new InquiryTableEntity(inqT.OwnerId, inqT.DatabaseName, inqT.ConnectionInfo);
}
public static InquiryTableEntity FromDTOToEntity(this InquiryTableDTO dto)

@ -15,7 +15,7 @@ public static class SolutionMapper
public static Solution FromEntityToModel(this SolutionEntity entity)
{
return new Solution(entity.OwnerId, entity.MurdererFirstName, entity.MurdererLastName, entity.MurderPlace,
entity.MurderWeapon, entity.Explanation);
entity.MurderWeapon, entity.Explaination);
}
public static SolutionDTO FromModelToDTO(this Solution model)
@ -27,7 +27,7 @@ public static class SolutionMapper
public static SolutionDTO FromEntityToDTO(this SolutionEntity entity)
{
return new SolutionDTO(entity.OwnerId, entity.MurdererFirstName, entity.MurdererLastName, entity.MurderPlace,
entity.MurderWeapon, entity.Explanation);
entity.MurderWeapon, entity.Explaination);
}
public static SolutionEntity FromModelToEntity(this Solution model)

@ -1,116 +0,0 @@
using Entities;
using Microsoft.EntityFrameworkCore;
using Dto;
using DbContextLib;
using Model.OrderCriteria;
using Shared;
using Shared.Mapper;
namespace Shared;
public class ParagraphDataService : IParagraphDataService
{
private UserDbContext DbContext { get; set; }
public ParagraphDataService(UserDbContext context)
{
DbContext = context;
context.Database.EnsureCreated();
}
public IEnumerable<ParagraphDTO> GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria)
{
IQueryable<ParagraphEntity> query = DbContext.Paragraphs.Skip((page - 1) * number).Take(number);
switch (orderCriteria)
{
case ParagraphOrderCriteria.None:
break;
case ParagraphOrderCriteria.ByTitle:
query = query.OrderBy(s => s.Title);
break;
case ParagraphOrderCriteria.ByContent:
query = query.OrderBy(s => s.Content);
break;
case ParagraphOrderCriteria.ByInfo:
query = query.OrderBy(s => s.Info);
break;
case ParagraphOrderCriteria.ByQuery:
query = query.OrderBy(s => s.Query);
break;
case ParagraphOrderCriteria.ByComment:
query = query.OrderBy(s => s.Comment);
break;
default:
break;
}
var paragraphs = query.ToList();
return paragraphs.Select(s => s.FromEntityToDTO());
}
public ParagraphDTO GetParagraphById(int id)
{
var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(u => u.Id == id);
if (paragraphEntity == null)
{
throw new ArgumentException("Impossible de trouver le paragraphe", nameof(id));
}
return paragraphEntity.FromEntityToDTO();
}
public ParagraphDTO GetParagraphByTitle(string title)
{
var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(u => u.Title == title);
if (paragraphEntity == null)
{
throw new ArgumentException("Impossible de trouver le paragraphe", nameof(title));
}
return paragraphEntity.FromEntityToDTO();
}
public bool DeleteParagraph(int id)
{
var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(p => p.Id == id);
if (paragraphEntity == null)
{
return false;
}
DbContext.Paragraphs.Remove(paragraphEntity);
DbContext.SaveChangesAsync();
return true;
}
public ParagraphDTO UpdateParagraph(int id, ParagraphDTO paragraphDTO)
{
var updatingParagraph = DbContext.Paragraphs.FirstOrDefault(p => p.Id == id);
if (updatingParagraph == null)
{
throw new ArgumentException("Impossible de trouver le paragraphe", nameof(id));
}
updatingParagraph.Title = paragraphDTO.Title;
updatingParagraph.Content = paragraphDTO.Content;
updatingParagraph.Info = paragraphDTO.Info;
updatingParagraph.Query = paragraphDTO.Query;
updatingParagraph.Comment = paragraphDTO.Comment;
DbContext.SaveChangesAsync();
return updatingParagraph.FromEntityToDTO();
}
public ParagraphDTO CreateParagraph(string title, string content, string info, string query, string comment, int lessonId)
{
var newParagraphEntity = new ParagraphDTO()
{
Title = title,
Content = content,
Info = info,
Query = query,
Comment = comment,
LessonId = lessonId
};
DbContext.Paragraphs.Add(newParagraphEntity.FromDTOToEntity());
DbContext.SaveChangesAsync();
return newParagraphEntity;
}
}

@ -1,103 +0,0 @@
using Entities;
using Microsoft.EntityFrameworkCore;
using Dto;
using DbContextLib;
using Model.OrderCriteria;
using Shared.Mapper;
namespace Shared;
public class SuccessDataService : ISuccessDataService
{
private UserDbContext DbContext { get; set; }
public SuccessDataService(UserDbContext context)
{
DbContext = context;
context.Database.EnsureCreated();
}
public IEnumerable<SuccessDTO> GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria)
{
IQueryable<SuccessEntity> query = DbContext.Successes.Skip((page - 1) * number).Take(number);
switch (orderCriteria)
{
case SuccessOrderCriteria.None:
break;
case SuccessOrderCriteria.ByUserId:
query = query.OrderBy(s => s.UserId);
break;
case SuccessOrderCriteria.ByInquiryId:
query = query.OrderBy(s => s.InquiryId);
break;
case SuccessOrderCriteria.ByIsFinished:
query = query.OrderBy(s => s.IsFinished);
break;
default:
break;
}
var successes = query.ToList();
return successes.Select(s => s.FromEntityToDTO());
}
public SuccessDTO GetSuccessByUserId(int id)
{
var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id);
if (userEntity == null)
{
throw new ArgumentException("Impossible de trouver le succès", nameof(id));
}
return userEntity.FromEntityToDTO();
}
public SuccessDTO GetSuccessByInquiryId(int id)
{
var userEntity = DbContext.Successes.FirstOrDefault(u => u.InquiryId == id);
if (userEntity == null)
{
throw new ArgumentException("Impossible de trouver le succès", nameof(id));
}
return userEntity.FromEntityToDTO();
}
public bool DeleteSuccess(int id)
{
var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id);
if (successEntity == null)
{
return false;
}
DbContext.Successes.Remove(successEntity);
DbContext.SaveChangesAsync();
return true;
}
public SuccessDTO UpdateSuccess(int id, SuccessDTO success)
{
var updatingSuccess = DbContext.Successes.FirstOrDefault(u => u.UserId == id);
if (updatingSuccess == null)
{
throw new ArgumentException("Impossible de trouver le succès", nameof(id));
}
updatingSuccess.UserId = success.UserId;
updatingSuccess.InquiryId = success.InquiryId;
updatingSuccess.IsFinished = success.IsFinished;
DbContext.SaveChangesAsync();
return updatingSuccess.FromEntityToDTO();
}
public SuccessDTO CreateSuccess(int userId, int inquiryId, bool isFinished)
{
var newSuccessEntity = new SuccessDTO()
{
UserId = userId,
InquiryId = inquiryId,
IsFinished = isFinished,
};
DbContext.Successes.Add(newSuccessEntity.FromDTOToEntity());
DbContext.SaveChangesAsync();
return newSuccessEntity;
}
}

@ -1,121 +0,0 @@
using Dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Entities;
using Shared.Mapper;
using DbContextLib;
using Model.OrderCriteria;
namespace Shared
{
public class UserDataService : IUserDataService
{
private UserDbContext DbContext { get; set; }
public UserDataService(UserDbContext context)
{
DbContext = context;
context.Database.EnsureCreated();
}
public UserDTO GetUserById(int id)
{
var userEntity = DbContext.Users.FirstOrDefault(u => u.Id == id);
if (userEntity == null)
{
throw new ArgumentException("Impossible de trouver l'utilisateur", nameof(id));
}
return userEntity.FromEntityToDTO();
}
public UserDTO GetUserByUsername(string username)
{
var userEntity = DbContext.Users.FirstOrDefault(u => u.Username == username);
if (userEntity == null)
{
throw new ArgumentException("Impossible de trouver l'utilisateur", nameof(username));
}
return userEntity.FromEntityToDTO();
}
public IEnumerable<UserDTO> GetUsers(int page, int number, UserOrderCriteria orderCriteria)
{
IQueryable<UserEntity> query = DbContext.Users.Skip((page - 1) * number).Take(number);
switch (orderCriteria)
{
case UserOrderCriteria.None:
break;
case UserOrderCriteria.ById:
query = query.OrderBy(s => s.Id);
break;
case UserOrderCriteria.ByUsername:
query = query.OrderBy(s => s.Username);
break;
case UserOrderCriteria.ByEmail:
query = query.OrderBy(s => s.Email);
break;
case UserOrderCriteria.ByIsAdmin:
query = query.OrderBy(s => s.IsAdmin);
break;
default:
break;
}
var users = query.ToList();
return users.Select(s => s.FromEntityToDTO());
}
public bool DeleteUser(int id)
{
var userEntity = DbContext.Users.FirstOrDefault(u => u.Id == id);
if (userEntity == null)
{
return false;
}
DbContext.Users.Remove(userEntity);
DbContext.SaveChangesAsync();
return true;
}
public UserDTO UpdateUser(int id, UserDTO user)
{
var updatingUser = DbContext.Users.FirstOrDefault(u => u.Id == id);
if (updatingUser == null)
{
throw new ArgumentException("Impossible de trouver l'utilisateur", nameof(id));
}
updatingUser.Username = user.Username;
updatingUser.Password = user.Password;
updatingUser.Email = user.Email;
updatingUser.IsAdmin = user.IsAdmin;
DbContext.SaveChangesAsync();
return updatingUser.FromEntityToDTO();
}
public UserDTO CreateUser(string username, string password, string email, bool isAdmin)
{
var newUserEntity = new UserDTO
{
Username = username,
Password = password,
Email = email,
IsAdmin = isAdmin
};
DbContext.Users.Add(newUserEntity.FromDTOToEntity());
DbContext.SaveChangesAsync();
return newUserEntity;
}
}
}

@ -47,11 +47,6 @@ public class StubbedContext : UserDbContext
iterationCount: 100000,
numBytesRequested: 256 / 8)), "Victor.GABORIT@etu.uca.fr", true));
modelBuilder.Entity<InquiryEntity>().HasData(
new InquiryEntity(1, "L'enquête de la carotte", "La description de l'inquiry1", true, 1, 1),
new InquiryEntity(2, "L'enquête sur les orang outan", "The new description", false, 2, 2),
new InquiryEntity(3, "L'enquête sur les parapluies", "Il pleuvait", false, 3, 3));
modelBuilder.Entity<InquiryTableEntity>().HasData(
new InquiryTableEntity(1, "Inquiry1",
"Server=localhost;Database=Inquiry1;Trusted_Connection=True;MultipleActiveResultSets=true"),
@ -82,5 +77,9 @@ public class StubbedContext : UserDbContext
"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),
new InquiryEntity(3, "L'enquête sur les parapluies", "Il pleuvait", false));
}
}

@ -5,7 +5,6 @@ namespace TestAPI
[Fact]
public void Test1()
{
}
}
}

@ -1,20 +1,25 @@
// See https://aka.ms/new-console-template for more information
using API.Controllers;
using API.Service;
using DbContextLib;
using DbDataManager.Service;
using Dto;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Model.OrderCriteria;
using Shared;
using Service_LessonDataService = DbDataManager.Service.LessonDataService;
using Service_ParagraphDataService = DbDataManager.Service.ParagraphDataService;
using Service_SuccessDataService = DbDataManager.Service.SuccessDataService;
using Service_UserDataService = DbDataManager.Service.UserDataService;
var connection = new SqliteConnection("DataSource=:memory:");
connection.Open();
var options = new DbContextOptionsBuilder<UserDbContext>()
.UseSqlite(connection)
.Options;
.UseSqlite(connection)
.Options;
using ILoggerFactory factory = new LoggerFactory();
ILogger<UsersController> userLogger = factory.CreateLogger<UsersController>();
ILogger<InquiriesController> inquiryLogger = factory.CreateLogger<InquiriesController>();
@ -25,11 +30,16 @@ ILogger<SuccessesController> successLogger = factory.CreateLogger<SuccessesContr
using (var context = new UserDbContext(options))
{
var userController = new UsersController(userLogger, new UserDataService(context));
var inquiryController = new InquiriesController(new InquiryDataService(context), inquiryLogger);
var paragraphController = new ParagraphsController(new ParagraphDataService(context), paragraphLogger);
var lessonController = new LessonsController(new LessonDataService(context), lessonLogger);
var successController = new SuccessesController(new SuccessDataService(context), successLogger);
var userController = new UsersController(userLogger, new UserDataServiceApi(new Service_UserDataService(context)));
var inquiryController =
new InquiriesController(new InquiryDataServiceApi(new InquiryDataService(context)), inquiryLogger);
var paragraphController =
new ParagraphsController(new ParagraphDataServiceApi(new Service_ParagraphDataService(context)),
paragraphLogger);
var lessonController =
new LessonsController(new LessonDataServiceApi(new Service_LessonDataService(context)), lessonLogger);
var successController = new SuccessesController(new SuccessDataServiceApi(new Service_SuccessDataService(context)),
successLogger);
void PrintUsers()
{
@ -91,8 +101,8 @@ using (var context = new UserDbContext(options))
Console.WriteLine("Erreur, la requête n'a rien donné.");
return;
}
Console.WriteLine(user.Value as UserDTO);
Console.WriteLine(user.Value as UserDTO);
}
void SearchInquiryByTitle()
@ -105,6 +115,7 @@ using (var context = new UserDbContext(options))
Console.WriteLine("Erreur, la requête n'a rien donné.");
return;
}
Console.WriteLine(inquiry.Value as InquiryDTO);
}
@ -118,8 +129,8 @@ using (var context = new UserDbContext(options))
Console.WriteLine("Erreur, la requête n'a rien donné.");
return;
}
Console.WriteLine(paragraph.Value as ParagraphDTO);
Console.WriteLine(paragraph.Value as ParagraphDTO);
}
void SearchLessonByTitle()
@ -132,8 +143,8 @@ using (var context = new UserDbContext(options))
Console.WriteLine("Erreur, la requête n'a rien donné.");
return;
}
Console.WriteLine(lesson.Value as LessonDTO);
Console.WriteLine(lesson.Value as LessonDTO);
}
void SearchSuccessByUserId()
@ -146,8 +157,8 @@ using (var context = new UserDbContext(options))
Console.WriteLine("Erreur, la requête n'a rien donné.");
return;
}
Console.WriteLine(success.Value as SuccessDTO);
Console.WriteLine(success.Value as SuccessDTO);
}
void SearchUserById()
@ -160,8 +171,8 @@ using (var context = new UserDbContext(options))
Console.WriteLine("Erreur, la requête n'a rien donné.");
return;
}
Console.WriteLine(user.Value as UserDTO);
Console.WriteLine(user.Value as UserDTO);
}
void SearchInquiryById()
@ -174,6 +185,7 @@ using (var context = new UserDbContext(options))
Console.WriteLine("Erreur, la requête n'a rien donné.");
return;
}
Console.WriteLine(inquiry.Value as InquiryDTO);
}
@ -187,8 +199,8 @@ using (var context = new UserDbContext(options))
Console.WriteLine("Erreur, la requête n'a rien donné.");
return;
}
Console.WriteLine(paragraph.Value as ParagraphDTO);
Console.WriteLine(paragraph.Value as ParagraphDTO);
}
void SearchSuccessByInquiryId()
@ -201,8 +213,8 @@ using (var context = new UserDbContext(options))
Console.WriteLine("Erreur, la requête n'a rien donné.");
return;
}
Console.WriteLine(success.Value as SuccessDTO);
Console.WriteLine(success.Value as SuccessDTO);
}
void SearchLessonById()
@ -215,8 +227,8 @@ using (var context = new UserDbContext(options))
Console.WriteLine("Erreur, la requête n'a rien donné.");
return;
}
Console.WriteLine(lesson.Value as LessonDTO);
Console.WriteLine(lesson.Value as LessonDTO);
}
void AddUser()
@ -236,7 +248,6 @@ using (var context = new UserDbContext(options))
{
Console.WriteLine("\nErreur lors de la création de l'utilisateur !");
}
}
void AddInquiry()
@ -251,7 +262,7 @@ using (var context = new UserDbContext(options))
var database = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Veuillez saisir l'id de la solution :");
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))
{
Console.WriteLine("\nEnquête créée avec succès");
@ -285,7 +296,6 @@ using (var context = new UserDbContext(options))
{
Console.WriteLine("\nErreur lors de la création du paragraphe !");
}
}
void AddLesson()
@ -294,7 +304,8 @@ using (var context = new UserDbContext(options))
var title = Console.ReadLine();
Console.WriteLine("Veuillez saisir votre nom :");
var lastPublisher = Console.ReadLine();
var res = lessonController.CreateLesson(new LessonDTO(title, lastPublisher, DateOnly.FromDateTime(DateTime.Now)));
var res = lessonController.CreateLesson(
new LessonDTO(title, lastPublisher, DateOnly.FromDateTime(DateTime.Now)));
if (res.GetType() == typeof(CreatedResult))
{
Console.WriteLine("\nLeçon créée avec succès");
@ -303,7 +314,6 @@ using (var context = new UserDbContext(options))
{
Console.WriteLine("\nErreur lors de la création de la leçon !");
}
}
void AddSuccess()
@ -314,7 +324,8 @@ using (var context = new UserDbContext(options))
var inquiryId = Console.ReadLine();
Console.WriteLine("Veuillez indiquer si l'enquête a été complété (true/false) :");
var isFinished = Console.ReadLine();
var res = successController.CreateSuccess(new SuccessDTO(int.Parse(userId), int.Parse(inquiryId), bool.Parse(isFinished)));
var res = successController.CreateSuccess(new SuccessDTO(int.Parse(userId), int.Parse(inquiryId),
bool.Parse(isFinished)));
if (res.GetType() == typeof(CreatedResult))
{
Console.WriteLine("\nSuccès créé avec succès");
@ -323,7 +334,6 @@ using (var context = new UserDbContext(options))
{
Console.WriteLine("\nErreur lors de la création du succès !");
}
}
void UpdateUser()
@ -346,7 +356,8 @@ using (var context = new UserDbContext(options))
var username = Console.ReadLine();
Console.WriteLine("Veuillez saisir l'email :");
var email = Console.ReadLine();
var retour = userController.UpdateUser(id, new UserDTO(id, username, user.Password, email, user.IsAdmin));
var retour =
userController.UpdateUser(id, new UserDTO(id, username, user.Password, email, user.IsAdmin));
if (retour.GetType() == typeof(OkObjectResult))
{
Console.WriteLine("Mise à jour effectué avec succès !");
@ -361,7 +372,6 @@ using (var context = new UserDbContext(options))
{
Console.WriteLine("Une erreur est survenue lors de la mise à jour !");
}
}
void UpdateInquiry()
@ -390,7 +400,8 @@ using (var context = new UserDbContext(options))
var database = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Veuillez saisir un commentaire :");
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))
{
Console.WriteLine("Mise à jour effectué avec succès !");
@ -405,7 +416,6 @@ using (var context = new UserDbContext(options))
{
Console.WriteLine("Une erreur est survenue lors de la mise à jour !");
}
}
void UpdateParagraph()
@ -436,7 +446,8 @@ using (var context = new UserDbContext(options))
var comment = Console.ReadLine();
Console.WriteLine("Veuillez saisir l'id de la leçon :");
var lesson = Convert.ToInt32(Console.ReadLine());
var retour = paragraphController.UpdateParagraph(id, new ParagraphDTO(id, title, content, info, query, comment, lesson));
var retour = paragraphController.UpdateParagraph(id,
new ParagraphDTO(id, title, content, info, query, comment, lesson));
if (retour.GetType() == typeof(OkObjectResult))
{
Console.WriteLine("Mise à jour effectué avec succès !");
@ -451,7 +462,6 @@ using (var context = new UserDbContext(options))
{
Console.WriteLine("Une erreur est survenue lors de la mise à jour !");
}
}
void UpdateLesson()
@ -474,7 +484,8 @@ using (var context = new UserDbContext(options))
var title = Console.ReadLine();
Console.WriteLine("Veuillez saisir votre nom :");
var lastPublisher = Console.ReadLine();
var retour = lessonController.UpdateLesson(id, new LessonDTO(id, title, lastPublisher, DateOnly.FromDateTime(DateTime.Now)));
var retour = lessonController.UpdateLesson(id,
new LessonDTO(id, title, lastPublisher, DateOnly.FromDateTime(DateTime.Now)));
if (retour.GetType() == typeof(OkObjectResult))
{
Console.WriteLine("Mise à jour effectué avec succès !");
@ -489,7 +500,6 @@ using (var context = new UserDbContext(options))
{
Console.WriteLine("Une erreur est survenue lors de la mise à jour !");
}
}
void UpdateSuccess()
@ -514,7 +524,8 @@ using (var context = new UserDbContext(options))
var inquiryId = 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(id,
new SuccessDTO(int.Parse(userId), int.Parse(inquiryId), bool.Parse(isFinished)));
if (retour.GetType() == typeof(OkObjectResult))
{
Console.WriteLine("Mise à jour effectué avec succès !");
@ -529,7 +540,6 @@ using (var context = new UserDbContext(options))
{
Console.WriteLine("Une erreur est survenue lors de la mise à jour !");
}
}
void DeleteUser()
@ -545,7 +555,6 @@ using (var context = new UserDbContext(options))
{
Console.WriteLine("Erreur lors de la suppression !");
}
}
void DeleteInquiry()
@ -576,7 +585,6 @@ using (var context = new UserDbContext(options))
{
Console.WriteLine("Erreur lors de la suppression !");
}
}
void DeleteLesson()
@ -592,7 +600,6 @@ using (var context = new UserDbContext(options))
{
Console.WriteLine("Erreur lors de la suppression !");
}
}
void DeleteSuccess()
@ -608,7 +615,6 @@ using (var context = new UserDbContext(options))
{
Console.WriteLine("Erreur lors de la suppression !");
}
}
void MenuUsers()
@ -747,6 +753,7 @@ using (var context = new UserDbContext(options))
default:
break;
}
Console.WriteLine("\nAppuyez sur n'importe quelle touche pour continuer...");
Console.ReadKey();
Console.Clear();

@ -164,7 +164,7 @@ using (var db = new StubbedContext(options))
Console.WriteLine(sol.MurdererFirstName);
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()
.Where(p => p.CanWrite && p.Name != nameof(SolutionEntity.Owner)))
{
@ -176,9 +176,7 @@ using (var db = new StubbedContext(options))
var newInquiry = new InquiryEntity(
"La nouvelle enquete",
"La description de la nouvelle enquete",
true,
null,
null);
true);
if (!inquiries.Any(inquiry => inquiry.Title == newInquiry.Title))
{
inquiries.Add(newInquiry);

@ -0,0 +1,21 @@
using Entities;
namespace TestEF.EntitiesTests;
public class ConcreteContentLessonEntity : ContentLessonEntity
{
public ConcreteContentLessonEntity(int id, string contentContent, string contentTitle)
: base(id, contentContent, contentTitle)
{
}
public ConcreteContentLessonEntity(int id, int lessonId, string contentContent, string contentTitle)
: base(id, lessonId, contentContent, contentTitle)
{
}
public ConcreteContentLessonEntity(string contentContent, string contentTitle)
: base(contentContent, contentTitle)
{
}
}

@ -0,0 +1,54 @@
using Model;
namespace TestEF.EntitiesTests;
public class TestBlackListEntity
{
[Fact]
public void Constructor_ShouldSetProperties_WhenCalledWithTwoParameters()
{
// Arrange
string email = "test@example.com";
DateOnly expirationDate = DateOnly.FromDateTime(DateTime.Now.AddDays(10));
// Act
var blackList = new BlackList(email, expirationDate);
// Assert
Assert.Equal(email, blackList.Email);
Assert.Equal(expirationDate, blackList.ExpirationDate);
}
[Fact]
public void Constructor_ShouldThrowArgumentException_WhenEmailIsEmpty()
{
// Arrange
string email = string.Empty;
DateOnly expirationDate = DateOnly.FromDateTime(DateTime.Now.AddDays(10));
// Act & Assert
Assert.Throws<ArgumentException>(() => new BlackList(email, expirationDate));
}
[Fact]
public void Constructor_ShouldThrowArgumentException_WhenEmailIsNull()
{
// Arrange
string email = null;
DateOnly expirationDate = DateOnly.FromDateTime(DateTime.Now.AddDays(10));
// Act & Assert
Assert.Throws<ArgumentException>(() => new BlackList(email, expirationDate));
}
[Fact]
public void Constructor_ShouldThrowArgumentOutOfRangeException_WhenExpirationDateIsInThePast()
{
// Arrange
string email = "test@example.com";
DateOnly expirationDate = DateOnly.FromDateTime(DateTime.Now.AddDays(-1));
// Act & Assert
Assert.Throws<ArgumentOutOfRangeException>(() => new BlackList(email, expirationDate));
}
}

@ -0,0 +1,55 @@
namespace TestEF.EntitiesTests;
public class TestContentLessonEntity
{
[Fact]
public void Constructor_ShouldSetProperties_WhenCalledWithTwoParameters()
{
// Arrange
const string contentContent = "Content";
const string contentTitle = "Title";
// Act
var concreteContentLessonEntity = new ConcreteContentLessonEntity(contentContent, contentTitle);
// Assert
Assert.Equal(contentContent, concreteContentLessonEntity.ContentContent);
Assert.Equal(contentTitle, concreteContentLessonEntity.ContentTitle);
}
[Fact]
public void Constructor_ShouldSetProperties_WhenCalledWithThreeParameters()
{
// Arrange
const int id = 1;
const string contentContent = "Content";
const string contentTitle = "Title";
// Act
var concreteContentLessonEntity = new ConcreteContentLessonEntity(id, contentContent, contentTitle);
// Assert
Assert.Equal(id, concreteContentLessonEntity.Id);
Assert.Equal(contentContent, concreteContentLessonEntity.ContentContent);
Assert.Equal(contentTitle, concreteContentLessonEntity.ContentTitle);
}
[Fact]
public void Constructor_ShouldSetProperties_WhenCalledWithFourParameters()
{
// Arrange
const int id = 1;
const int lessonId = 2;
const string contentContent = "Content";
const string contentTitle = "Title";
// Act
var concreteContentLessonEntity = new ConcreteContentLessonEntity(id, lessonId, contentContent, contentTitle);
// Assert
Assert.Equal(id, concreteContentLessonEntity.Id);
Assert.Equal(lessonId, concreteContentLessonEntity.LessonId);
Assert.Equal(contentContent, concreteContentLessonEntity.ContentContent);
Assert.Equal(contentTitle, concreteContentLessonEntity.ContentTitle);
}
}

@ -0,0 +1,51 @@
using Entities;
namespace TestEF.EntitiesTests;
public class TestInquiryEntity
{
private const int _id = 42;
private const string _title = "Title";
private const string _description = "_description";
private const bool _isUser = true;
[Fact]
public void TestDefaultConstructor()
{
InquiryEntity inquiry = new InquiryEntity();
Assert.Equal(0, inquiry.Id);
Assert.Null(inquiry.Title);
Assert.Null(inquiry.Description);
Assert.False(inquiry.IsUser);
}
[Fact]
public void TestConstructorWithOnlyId()
{
InquiryEntity inquiry = new InquiryEntity(_id);
Assert.Equal(_id, inquiry.Id);
Assert.Null(inquiry.Title);
Assert.Null(inquiry.Description);
Assert.False(inquiry.IsUser);
}
[Fact]
public void TestConstructorWithoutId()
{
InquiryEntity inquiry = new InquiryEntity(_title, _description, _isUser);
Assert.Equal(0, inquiry.Id);
Assert.Equal(_title, inquiry.Title);
Assert.Equal(_description, inquiry.Description);
Assert.True(inquiry.IsUser);
}
[Fact]
public void TestConstructorWithAllAttributes()
{
InquiryEntity inquiry = new InquiryEntity(_id, _title, _description, _isUser);
Assert.Equal(_id, inquiry.Id);
Assert.Equal(_title, inquiry.Title);
Assert.Equal(_description, inquiry.Description);
Assert.True(inquiry.IsUser);
}
}

@ -0,0 +1,52 @@
using Entities;
namespace TestEF;
public class TestInquiryTableEntity
{
private const int _inquiryId = 42;
private static InquiryEntity _inquiry = new InquiryEntity();
private const string _databaseName = "Database";
private const string _connectionInfo = "Connection";
[Fact]
public void TestDefaultConstructor()
{
InquiryTableEntity tableEntity = new InquiryTableEntity();
Assert.Equal(0, tableEntity.OwnerId);
Assert.Null(tableEntity.Owner);
Assert.Null(tableEntity.DatabaseName);
Assert.Null(tableEntity.ConnectionInfo);
}
[Fact]
public void TestConstructorWithOnlyId()
{
InquiryTableEntity tableEntity = new InquiryTableEntity(_inquiryId);
Assert.Equal(_inquiryId, tableEntity.OwnerId);
Assert.Null(tableEntity.Owner);
Assert.Null(tableEntity.DatabaseName);
Assert.Null(tableEntity.ConnectionInfo);
}
[Fact]
public void TestConstructorWithoutId()
{
InquiryTableEntity tableEntity = new InquiryTableEntity(_inquiry, _databaseName, _connectionInfo);
Assert.Equal(0, tableEntity.OwnerId);
Assert.Equal(_inquiry, tableEntity.Owner);
Assert.Equal(_databaseName, tableEntity.DatabaseName);
Assert.Equal(_connectionInfo, tableEntity.ConnectionInfo);
}
[Fact]
public void TestConstructorWithoutNavigationProperty()
{
InquiryTableEntity tableEntity = new InquiryTableEntity(_inquiryId, _databaseName, _connectionInfo);
Assert.Equal(_inquiryId, tableEntity.OwnerId);
Assert.Null(tableEntity.Owner);
Assert.Equal(_databaseName, tableEntity.DatabaseName);
Assert.Equal(_connectionInfo, tableEntity.ConnectionInfo);
}
}

@ -0,0 +1,42 @@
using Entities;
using Microsoft.VisualBasic;
namespace TestEF;
public class TestLessonEntity
{
private const int _id = 42;
private const string _title = "Title";
private const string _lastPublisher = "Last Publisher";
private static DateOnly _lastEdit = new DateOnly();
[Fact]
public void TestDefaultConstructor()
{
LessonEntity lesson = new LessonEntity();
Assert.Equal(0, lesson.Id);
Assert.Null(lesson.Title);
Assert.Null(lesson.LastPublisher);
Assert.Null(lesson.LastEdit);
}
[Fact]
public void TestConstructorWithoutId()
{
LessonEntity lesson = new LessonEntity(_title, _lastPublisher, _lastEdit);
Assert.Equal(0, lesson.Id);
Assert.Equal(_title, lesson.Title);
Assert.Equal(_lastPublisher, lesson.LastPublisher);
Assert.Equal(_lastEdit, lesson.LastEdit);
}
[Fact]
public void TestConstructorWithAllAttributes()
{
LessonEntity lesson = new LessonEntity(_id, _title, _lastPublisher, _lastEdit);
Assert.Equal(_id, lesson.Id);
Assert.Equal(_title, lesson.Title);
Assert.Equal(_lastPublisher, lesson.LastPublisher);
Assert.Equal(_lastEdit, lesson.LastEdit);
}
}

@ -0,0 +1,49 @@
using Entities;
namespace TestEF;
public class TestNotepadEntity
{
private const int _id = 42;
private const int _userId = 42;
private static UserEntity _userEntity = new UserEntity();
private const int _inquiryId = 42;
private static InquiryEntity _inquiryEntity = new InquiryEntity();
private const string _notes = "This is some notes example";
[Fact]
public void TestDefaultConstructor()
{
NotepadEntity notepad = new NotepadEntity();
Assert.Equal(0, notepad.Id);
Assert.Equal(0, notepad.UserId);
Assert.Null(notepad.User);
Assert.Equal(0, notepad.InquiryId);
Assert.Null(notepad.Inquiry);
Assert.Null(notepad.Notes);
}
[Fact]
public void TestConstructorWithoutId()
{
NotepadEntity notepad = new NotepadEntity(_userId, _userEntity, _inquiryId, _inquiryEntity, _notes);
Assert.Equal(0, notepad.Id);
Assert.Equal(_userId, notepad.UserId);
Assert.Equal(_userEntity, notepad.User);
Assert.Equal(_inquiryId, notepad.InquiryId);
Assert.Equal(_inquiryEntity, notepad.Inquiry);
Assert.Equal(_notes, notepad.Notes);
}
[Fact]
public void TestConstructorWithAllAttributes()
{
NotepadEntity notepad = new NotepadEntity(_id, _userId, _userEntity, _inquiryId, _inquiryEntity, _notes);
Assert.Equal(_id, notepad.Id);
Assert.Equal(_userId, notepad.UserId);
Assert.Equal(_userEntity, notepad.User);
Assert.Equal(_inquiryId, notepad.InquiryId);
Assert.Equal(_inquiryEntity, notepad.Inquiry);
Assert.Equal(_notes, notepad.Notes);
}
}

@ -0,0 +1,50 @@
using Entities;
namespace TestEF;
public class TestParagraphEntity
{
private const int _id = 42;
private const string _title = "Title";
private const string _info = "Info";
private const string _content = "Content";
private const string _query = "Query";
private const string _comment = "Comment";
[Fact]
public void TestDefaultConstructor()
{
ParagraphEntity paragraph = new ParagraphEntity();
Assert.Equal(0, paragraph.Id);
Assert.Null(paragraph.Title);
Assert.Null(paragraph.Info);
Assert.Null(paragraph.Content);
Assert.Null(paragraph.Query);
Assert.Null(paragraph.Comment);
}
[Fact]
public void TestConstructorWithoutId()
{
ParagraphEntity paragraph = new ParagraphEntity(_title, _content, _info, _query, _comment);
Assert.Equal(0, paragraph.Id);
Assert.Equal(_title, paragraph.Title);
Assert.Equal(_info, paragraph.Info);
Assert.Equal(_content, paragraph.Content);
Assert.Equal(_query, paragraph.Query);
Assert.Equal(_comment, paragraph.Comment);
}
[Fact]
public void TestConstructorWithAllAttributes()
{
ParagraphEntity paragraph = new ParagraphEntity(_id, _title, _content, _info, _query, _comment, 10);
Assert.Equal(_id, paragraph.Id);
Assert.Equal(_title, paragraph.Title);
Assert.Equal(_info, paragraph.Info);
Assert.Equal(_content, paragraph.Content);
Assert.Equal(_query, paragraph.Query);
Assert.Equal(_comment, paragraph.Comment);
Assert.Equal(10, paragraph.LessonId);
}
}

@ -0,0 +1,92 @@
using Entities;
namespace TestEF;
public class TestSolutionEntity
{
private const string _murdererFirstName = "John";
private const string _murdererLastName = "Doe";
private const string _murderPlace = "WhiteHouse";
private const string _murderWeapon = "Nuclear Bomb";
private const string _explaination = "This is an explaination";
private const int _inquiryId = 42;
private static InquiryEntity _inquiry = new InquiryEntity();
[Fact]
public void TestDefaultConstructor()
{
SolutionEntity solution = new SolutionEntity();
Assert.Equal(0, solution.OwnerId);
Assert.Null(solution.Owner);
Assert.Null(solution.MurdererFirstName);
Assert.Null(solution.MurdererLastName);
Assert.Null(solution.MurderPlace);
Assert.Null(solution.MurderWeapon);
Assert.Null(solution.Explaination);
}
[Fact]
public void TestConstructorWithOnlyId()
{
SolutionEntity solution = new SolutionEntity(_inquiryId);
Assert.Equal(_inquiryId, solution.OwnerId);
Assert.Null(solution.Owner);
Assert.Null(solution.MurdererFirstName);
Assert.Null(solution.MurdererLastName);
Assert.Null(solution.MurderPlace);
Assert.Null(solution.MurderWeapon);
Assert.Null(solution.Explaination);
}
[Fact]
public void TestConstructorWithoutOwnerId()
{
SolutionEntity solution = new SolutionEntity(_inquiry, _murdererFirstName, _murdererLastName, _murderPlace,
_murderWeapon, _explaination);
Assert.Equal(0, solution.OwnerId);
Assert.Equal(_inquiry, solution.Owner);
Assert.Equal(_murdererFirstName, solution.MurdererFirstName);
Assert.Equal(_murdererLastName, solution.MurdererLastName);
Assert.Equal(_murderPlace, solution.MurderPlace);
Assert.Equal(_murderWeapon, solution.MurderWeapon);
Assert.Equal(_explaination, solution.Explaination);
}
[Fact]
public void TestConstructorWithAllAttributes()
{
SolutionEntity solution = new SolutionEntity(_inquiryId, _inquiry, _murdererFirstName, _murdererLastName,
_murderPlace, _murderWeapon, _explaination);
Assert.Equal(_inquiryId, solution.OwnerId);
Assert.Equal(_inquiry, solution.Owner);
Assert.Equal(_murdererFirstName, solution.MurdererFirstName);
Assert.Equal(_murdererLastName, solution.MurdererLastName);
Assert.Equal(_murderPlace, solution.MurderPlace);
Assert.Equal(_murderWeapon, solution.MurderWeapon);
Assert.Equal(_explaination, solution.Explaination);
}
[Fact]
public void Constructor_ShouldSetProperties_WhenCalledWithSixParameters()
{
// Arrange
const int ownerId = 1;
const string murdererFirstName = "John";
const string murdererLastName = "Doe";
const string murderPlace = "WhiteHouse";
const string murderWeapon = "Nuclear Bomb";
const string explanation = "This is an explanation";
// Act
var solutionEntity = new SolutionEntity(ownerId, murdererFirstName, murdererLastName, murderPlace, murderWeapon,
explanation);
// Assert
Assert.Equal(ownerId, solutionEntity.OwnerId);
Assert.Equal(murdererFirstName, solutionEntity.MurdererFirstName);
Assert.Equal(murdererLastName, solutionEntity.MurdererLastName);
Assert.Equal(murderPlace, solutionEntity.MurderPlace);
Assert.Equal(murderWeapon, solutionEntity.MurderWeapon);
Assert.Equal(explanation, solutionEntity.Explaination);
}
}

@ -0,0 +1,58 @@
using Entities;
namespace TestEF;
public class TestSuccessEntity
{
private const int _userId = 42;
private const int _inquiryId = 7;
private const bool _isFinished = true;
[Fact]
public void TestDefaultConstructor()
{
SuccessEntity success = new SuccessEntity();
Assert.Equal(0, success.UserId);
Assert.Null(success.User);
Assert.Equal(0, success.InquiryId);
Assert.Null(success.Inquiry);
Assert.False(success.IsFinished);
}
[Fact]
public void TestConstructorWithIds()
{
SuccessEntity success = new SuccessEntity(_userId, _inquiryId, _isFinished);
Assert.Equal(_userId, success.UserId);
Assert.Null(success.User);
Assert.Equal(_inquiryId, success.InquiryId);
Assert.Null(success.Inquiry);
Assert.True(success.IsFinished);
}
[Fact]
public void TestConstructorWithNavigationProperties()
{
UserEntity user = new UserEntity();
InquiryEntity inquiry = new InquiryEntity();
SuccessEntity success = new SuccessEntity(user, inquiry, _isFinished);
Assert.Equal(0, success.UserId);
Assert.NotNull(success.User);
Assert.Equal(0, success.InquiryId);
Assert.NotNull(success.Inquiry);
Assert.True(success.IsFinished);
}
[Fact]
public void TestConstructorWithAllAttributes()
{
UserEntity user = new UserEntity();
InquiryEntity inquiry = new InquiryEntity();
SuccessEntity success = new SuccessEntity(_userId, user, _inquiryId, inquiry, _isFinished);
Assert.Equal(_userId, success.UserId);
Assert.NotNull(success.User);
Assert.Equal(_inquiryId, success.InquiryId);
Assert.NotNull(success.Inquiry);
Assert.True(success.IsFinished);
}
}

@ -0,0 +1,57 @@
using Entities;
namespace TestEF
{
public class TestUserEntity
{
private const string _username = "username";
private const string _email = "example@email.com";
private const string _password = "password";
private const bool _isAdmin = true;
private const int _id = 42;
[Fact]
public void TestDefaultConstructor()
{
UserEntity user = new UserEntity();
Assert.Equal(0, user.Id);
Assert.Null(user.Username);
Assert.Null(user.Email);
Assert.Null(user.Password);
Assert.False(user.IsAdmin);
}
[Fact]
public void TestConstructorWithOnlyId()
{
UserEntity user = new UserEntity(_id);
Assert.Equal(_id, user.Id);
Assert.Null(user.Username);
Assert.Null(user.Email);
Assert.Null(user.Password);
Assert.False(user.IsAdmin);
}
[Fact]
public void TestConstructorWithoutId()
{
UserEntity user = new UserEntity(_username, _password, _email, _isAdmin);
Assert.Equal(0, user.Id);
Assert.Equal(_username, user.Username);
Assert.Equal(_email, user.Email);
Assert.Equal(_password, user.Password);
Assert.True(user.IsAdmin);
}
[Fact]
public void TestConstructorWithoutAllAttributes()
{
UserEntity user = new UserEntity(_id, _username, _password, _email, _isAdmin);
Assert.Equal(_id, user.Id);
Assert.Equal(_username, user.Username);
Assert.Equal(_email, user.Email);
Assert.Equal(_password, user.Password);
Assert.True(user.IsAdmin);
}
}
}

@ -34,4 +34,11 @@
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DbContextLib\DbContextLib.csproj" />
<ProjectReference Include="..\DbDataManager\DbDataManager.csproj" />
<ProjectReference Include="..\EntityFramework\Entities.csproj" />
<ProjectReference Include="..\StubbedContextLib\StubbedContextLib.csproj" />
</ItemGroup>
</Project>

@ -1,11 +0,0 @@
namespace TestEF
{
public class UnitTest1
{
[Fact]
public void Test1()
{
}
}
}
Loading…
Cancel
Save