Merge terminé entre la branche master et filtrage ! (CRUD pour 5 entités, flitrage, servicesAPI et servicesEF, injection de dépendances, ProducesResponseType, Fix des routes où il manquait des paramètres, Supression du IDataService inutile actuellement...
continuous-integration/drone/push Build is failing Details

pull/32/head
Erwan MENAGER 1 year ago
parent 1ec49061a9
commit e0cefa8264

@ -37,7 +37,7 @@ namespace API.Controllers
return Ok(_inquiryDataService.GetInquiries(page, number, orderCriteria)); return Ok(_inquiryDataService.GetInquiries(page, number, orderCriteria));
} }
[HttpGet("inquiry/id/{id}")] [HttpGet("inquiry/{id}")]
[ProducesResponseType(typeof(InquiryDTO), 200)] [ProducesResponseType(typeof(InquiryDTO), 200)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult GetInquiryById(int id) public IActionResult GetInquiryById(int id)
@ -54,7 +54,7 @@ namespace API.Controllers
} }
} }
[HttpGet("inquiry/title/{title}")] [HttpGet("inquiry/{title}")]
[ProducesResponseType(typeof(InquiryDTO), 200)] [ProducesResponseType(typeof(InquiryDTO), 200)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult GetInquiryByTitle(string title) public IActionResult GetInquiryByTitle(string title)
@ -103,7 +103,7 @@ namespace API.Controllers
return Created(nameof(GetInquiries), _inquiryDataService.CreateInquiry(dto.Title, dto.Description, dto.IsUser, dto.Database, dto.InquiryTable)); return Created(nameof(GetInquiries), _inquiryDataService.CreateInquiry(dto.Title, dto.Description, dto.IsUser, dto.Database, dto.InquiryTable));
} }
[HttpPut] [HttpPut("inquiry/{id}")]
[ProducesResponseType(typeof(InquiryDTO), 200)] [ProducesResponseType(typeof(InquiryDTO), 200)]
[ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]

@ -38,7 +38,7 @@ namespace API.Controllers
return Ok(_lessonDataService.GetLessons(page, number, orderCriteria)); return Ok(_lessonDataService.GetLessons(page, number, orderCriteria));
} }
[HttpGet("lesson/id/{id}")] [HttpGet("lesson/{id}")]
[ProducesResponseType(typeof(LessonDTO), 200)] [ProducesResponseType(typeof(LessonDTO), 200)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult GetLessonById(int id) public IActionResult GetLessonById(int id)
@ -55,7 +55,7 @@ namespace API.Controllers
} }
} }
[HttpGet("lesson/title/{title}")] [HttpGet("lesson/{title}")]
[ProducesResponseType(typeof(LessonDTO), 200)] [ProducesResponseType(typeof(LessonDTO), 200)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult GetLessonByTitle(string title) public IActionResult GetLessonByTitle(string title)
@ -104,7 +104,7 @@ namespace API.Controllers
return Created(nameof(GetLessons), _lessonDataService.CreateLesson(dto.Title, dto.LastPublisher, dto.LastEdit)); return Created(nameof(GetLessons), _lessonDataService.CreateLesson(dto.Title, dto.LastPublisher, dto.LastEdit));
} }
[HttpPut] [HttpPut("lesson/{id}")]
[ProducesResponseType(typeof(LessonDTO), 200)] [ProducesResponseType(typeof(LessonDTO), 200)]
[ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]

@ -38,7 +38,7 @@ namespace API.Controllers
return Ok(_paragraphDataService.GetParagraphs(page, number, orderCriteria)); return Ok(_paragraphDataService.GetParagraphs(page, number, orderCriteria));
} }
[HttpGet("paragraph/id/{id}")] [HttpGet("paragraph/{id}")]
[ProducesResponseType(typeof(ParagraphDTO), 200)] [ProducesResponseType(typeof(ParagraphDTO), 200)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult GetParagraphById(int id) public IActionResult GetParagraphById(int id)
@ -54,7 +54,7 @@ namespace API.Controllers
} }
} }
[HttpGet("paragraph/title/{title}")] [HttpGet("paragraph/{title}")]
[ProducesResponseType(typeof(ParagraphDTO), 200)] [ProducesResponseType(typeof(ParagraphDTO), 200)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult GetParagraphByTitle(string title) public IActionResult GetParagraphByTitle(string title)
@ -102,7 +102,7 @@ namespace API.Controllers
return Created(nameof(GetParagraphs), _paragraphDataService.CreateParagraph(dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment, dto.LessonId)); return Created(nameof(GetParagraphs), _paragraphDataService.CreateParagraph(dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment, dto.LessonId));
} }
[HttpPut] [HttpPut("paragraph/{id}")]
[ProducesResponseType(typeof(ParagraphDTO), 200)] [ProducesResponseType(typeof(ParagraphDTO), 200)]
[ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]

@ -38,7 +38,7 @@ namespace API.Controllers
return Ok(_successDataService.GetSuccesses(page, number, orderCriteria)); return Ok(_successDataService.GetSuccesses(page, number, orderCriteria));
} }
[HttpGet("success/user/{id}")] [HttpGet("success/{id}")]
[ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(SuccessDTO), 200)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult GetSuccessByUserId(int userId) public IActionResult GetSuccessByUserId(int userId)
@ -54,7 +54,7 @@ namespace API.Controllers
} }
} }
[HttpGet("success/inquiry/{inquiryId}")] [HttpGet("success/{inquiryId}")]
[ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(SuccessDTO), 200)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult GetSuccessByInquiryId(int inquiryId) public IActionResult GetSuccessByInquiryId(int inquiryId)
@ -102,7 +102,7 @@ namespace API.Controllers
return Created(nameof(GetSuccesses), _successDataService.CreateSuccess(dto.UserId, dto.InquiryId, dto.IsFinished)); return Created(nameof(GetSuccesses), _successDataService.CreateSuccess(dto.UserId, dto.InquiryId, dto.IsFinished));
} }
[HttpPut] [HttpPut("success/{id}")]
[ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(SuccessDTO), 200)]
[ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]

@ -3,11 +3,12 @@ using Asp.Versioning;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Shared; using Shared;
using Model.OrderCriteria;
namespace API.Controllers namespace API.Controllers
{ {
[Route("api/v{version:apiVersion}/[controller]")] [Route("api/v{version:apiVersion}/[controller]")]
[Authorize] //[Authorize]
[ApiVersion("1.0")] [ApiVersion("1.0")]
[ApiController] [ApiController]
public class UserController(ILogger<UserController> logger, IUserService<UserDTO> userService) : ControllerBase public class UserController(ILogger<UserController> logger, IUserService<UserDTO> userService) : ControllerBase
@ -15,9 +16,9 @@ namespace API.Controllers
[HttpGet("users/{page}/{number}")] [HttpGet("users/{page}/{number}")]
[ProducesResponseType(typeof(UserDTO), 200)] [ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 204)] [ProducesResponseType(typeof(string), 204)]
public IActionResult GetUsers(int page, int number) public IActionResult GetUsers(int page, int number, UserOrderCriteria orderCriteria)
{ {
var users = userService.GetUsers(page, number).ToList(); var users = userService.GetUsers(page, number, orderCriteria).ToList();
if (users.Count == 0) if (users.Count == 0)
{ {
logger.LogError("[ERREUR] Aucun utilisateur trouvé."); logger.LogError("[ERREUR] Aucun utilisateur trouvé.");
@ -28,7 +29,7 @@ namespace API.Controllers
return Ok(users); return Ok(users);
} }
[HttpGet("user/id/{id}")] [HttpGet("user/{id}")]
[ProducesResponseType(typeof(UserDTO), 200)] [ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult GetUserById(int id) public IActionResult GetUserById(int id)
@ -45,7 +46,7 @@ namespace API.Controllers
} }
} }
[HttpGet("user/username/{username}")] [HttpGet("user/{username}")]
[ProducesResponseType(typeof(UserDTO), 200)] [ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult GetUserByUsername(string username) public IActionResult GetUserByUsername(string username)
@ -62,7 +63,7 @@ namespace API.Controllers
} }
} }
[HttpDelete("user/id/{id}")] [HttpDelete("user/{id}")]
[ProducesResponseType(typeof(UserDTO), 200)] [ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult DeleteUser(int id) public IActionResult DeleteUser(int id)
@ -98,7 +99,7 @@ namespace API.Controllers
userService.CreateUser(dto.Username, dto.Password, dto.Email, dto.IsAdmin)); userService.CreateUser(dto.Username, dto.Password, dto.Email, dto.IsAdmin));
} }
[HttpPut] [HttpPut("user/{id}")]
[ProducesResponseType(typeof(UserDTO), 200)] [ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]

@ -20,8 +20,22 @@ builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer(); builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(); builder.Services.AddSwaggerGen();
builder.Services.AddScoped<IUserService<UserEntity>, DbDataManager.Service.UserDataService>(); builder.Services.AddScoped<IUserService<UserEntity>, DbDataManager.Service.UserDataService>();
builder.Services.AddScoped<IUserService<UserDTO>, Shared.UserDataService>();
builder.Services.AddScoped<IInquiryService<InquiryEntity>, DbDataManager.Service.InquiryDataService>(); builder.Services.AddScoped<IInquiryService<InquiryEntity>, DbDataManager.Service.InquiryDataService>();
builder.Services.AddScoped<IInquiryService<InquiryDTO>, Shared.InquiryDataService>();
builder.Services.AddScoped<IParagraphService<ParagraphEntity>, DbDataManager.Service.ParagraphDataService>();
builder.Services.AddScoped<IParagraphService<ParagraphDTO>, Shared.ParagraphDataService>();
builder.Services.AddScoped<ISuccessService<SuccessEntity>, DbDataManager.Service.SuccessDataService>();
builder.Services.AddScoped<ISuccessService<SuccessDTO>, Shared.SuccessDataService>();
builder.Services.AddScoped<ILessonService<LessonEntity>, DbDataManager.Service.LessonDataService>();
builder.Services.AddScoped<ILessonService<LessonDTO>, Shared.LessonDataService>();
builder.Services.AddDbContext<DbContext, UserDbContext>(); builder.Services.AddDbContext<DbContext, UserDbContext>();
builder.Services.AddDbContext<WebAPIDbContext>(options => options.UseInMemoryDatabase("appDb")); builder.Services.AddDbContext<WebAPIDbContext>(options => options.UseInMemoryDatabase("appDb"));
builder.Services.AddIdentityApiEndpoints<IdentityUser>().AddEntityFrameworkStores<WebAPIDbContext>(); builder.Services.AddIdentityApiEndpoints<IdentityUser>().AddEntityFrameworkStores<WebAPIDbContext>();

@ -1,4 +1,5 @@
using Entities; using Entities;
using Model.OrderCriteria;
using Shared; using Shared;
namespace API.Service; namespace API.Service;
@ -15,9 +16,9 @@ public class InquiryDataServiceApi(IInquiryService<InquiryEntity> inquiryService
return inquiryService.DeleteInquiry(id); return inquiryService.DeleteInquiry(id);
} }
public IEnumerable<InquiryEntity> GetInquiries(int page, int number) public IEnumerable<InquiryEntity> GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria)
{ {
var inquiries = inquiryService.GetInquiries(page, number); var inquiries = inquiryService.GetInquiries(page, number, orderCriteria);
return inquiries.Select(i => i).ToList(); return inquiries.Select(i => i).ToList();
} }

@ -6,9 +6,9 @@ namespace API.Service;
public class LessonDataServiceApi(ILessonService<LessonEntity> lessonService) : ILessonService<LessonEntity> public class LessonDataServiceApi(ILessonService<LessonEntity> lessonService) : ILessonService<LessonEntity>
{ {
public IEnumerable<LessonEntity> GetLessons(int page, int number) public IEnumerable<LessonEntity> GetLessons(int page, int number, LessonOrderCriteria orderCriteria)
{ {
var lessonsEntities = lessonService.GetLessons(page, number); var lessonsEntities = lessonService.GetLessons(page, number, orderCriteria);
return lessonsEntities.Select(e => e).ToList(); return lessonsEntities.Select(e => e).ToList();
} }

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

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

@ -1,13 +1,14 @@
using Entities; using Entities;
using Model.OrderCriteria;
using Shared; using Shared;
namespace API.Service; namespace API.Service;
public class UserDataServiceApi(IUserService<UserEntity> userService) : IUserService<UserEntity> public class UserDataServiceApi(IUserService<UserEntity> userService) : IUserService<UserEntity>
{ {
public IEnumerable<UserEntity> GetUsers(int page, int number) public IEnumerable<UserEntity> GetUsers(int page, int number, UserOrderCriteria orderCriteria)
{ {
var usersEntities = userService.GetUsers(page, number); var usersEntities = userService.GetUsers(page, number, orderCriteria);
return usersEntities.Select(e => e).ToList(); return usersEntities.Select(e => e).ToList();
} }

@ -1,37 +1,93 @@
using Entities; using DbContextLib;
using Entities;
using Microsoft.EntityFrameworkCore;
using Model.OrderCriteria;
using Shared; using Shared;
namespace DbDataManager.Service; namespace DbDataManager.Service;
public class InquiryDataService : IInquiryService<InquiryEntity> public class InquiryDataService : IInquiryService<InquiryEntity>
{ {
public InquiryEntity CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId) private UserDbContext DbContext { get; set; }
public InquiryDataService(UserDbContext context)
{ {
throw new NotImplementedException(); DbContext = context;
context.Database.EnsureCreated();
} }
public bool DeleteInquiry(int id) public InquiryEntity GetInquiryById(int id)
{ {
throw new NotImplementedException(); var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Id == id);
if (inquiryEntity == null)
{
throw new ArgumentException("Impossible de trouver l'enquête", nameof(id));
}
return inquiryEntity;
} }
public IEnumerable<InquiryEntity> GetInquiries(int page, int number) public InquiryEntity GetInquiryByTitle(string title)
{ {
throw new NotImplementedException(); var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Title == title);
if (inquiryEntity == null)
{
throw new ArgumentException("Impossible de trouver l'enquête", nameof(title));
}
return inquiryEntity;
} }
public InquiryEntity GetInquiryById(int id) public IEnumerable<InquiryEntity> GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria)
{ {
throw new NotImplementedException(); return DbContext.Inquiries.Skip((page - 1) * number).Take(number).ToList()
.Select(u => u);
} }
public InquiryEntity GetInquiryByTitle(string title) public bool DeleteInquiry(int id)
{ {
throw new NotImplementedException(); var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Id == id);
if (inquiryEntity == null)
{
return false;
}
DbContext.Inquiries.Remove(inquiryEntity);
DbContext.SaveChangesAsync();
return true;
} }
public InquiryEntity UpdateInquiry(int id, InquiryEntity inquiry) public InquiryEntity UpdateInquiry(int id, InquiryEntity inquiry)
{ {
throw new NotImplementedException(); 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.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()
{
Title = title,
Description = description,
IsUser = isUser,
IdDatabase = tableId,
IdInquiryTable = solutionId,
};
DbContext.Inquiries.Add(newInquiryEntity);
DbContext.SaveChangesAsync();
return newInquiryEntity;
} }
} }

@ -1,37 +1,89 @@
using Entities; using DbContextLib;
using Entities;
using Microsoft.EntityFrameworkCore;
using Model.OrderCriteria;
using Shared; using Shared;
namespace DbDataManager.Service; namespace DbDataManager.Service;
public class LessonDataService : ILessonService<LessonEntity> public class LessonDataService : ILessonService<LessonEntity>
{ {
public LessonEntity CreateLesson(string title, string lastPublisher, DateOnly? lastEdit) private UserDbContext DbContext { get; set; }
{
throw new NotImplementedException();
}
public bool DeleteLesson(int id) public LessonDataService(UserDbContext context)
{ {
throw new NotImplementedException(); DbContext = context;
context.Database.EnsureCreated();
} }
public LessonEntity GetLessonById(int id) public LessonEntity GetLessonById(int id)
{ {
throw new NotImplementedException(); 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;
} }
public LessonEntity GetLessonByTitle(string title) public LessonEntity GetLessonByTitle(string title)
{ {
throw new NotImplementedException(); 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;
}
public IEnumerable<LessonEntity> GetLessons(int page, int number, LessonOrderCriteria orderCriteria)
{
return DbContext.Lessons.Skip((page - 1) * number).Take(number).ToList()
.Select(u => u);
} }
public IEnumerable<LessonEntity> GetLessons(int page, int number) public bool DeleteLesson(int id)
{ {
throw new NotImplementedException(); var lessonEntity = DbContext.Lessons.FirstOrDefault(u => u.Id == id);
if (lessonEntity == null)
{
return false;
}
DbContext.Lessons.Remove(lessonEntity);
DbContext.SaveChangesAsync();
return true;
} }
public LessonEntity UpdateLesson(int id, LessonEntity lesson) public LessonEntity UpdateLesson(int id, LessonEntity lesson)
{ {
throw new NotImplementedException(); var updatingLesson = DbContext.Lessons.FirstOrDefault(u => u.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;
DbContext.SaveChangesAsync();
return updatingLesson;
}
public LessonEntity CreateLesson(string title, string lastPublisher, DateOnly? lastEdit)
{
var newLessonEntity = new LessonEntity()
{
Title = title,
LastPublisher = lastPublisher,
LastEdit = lastEdit,
};
DbContext.Lessons.Add(newLessonEntity);
DbContext.SaveChangesAsync();
return newLessonEntity;
} }
} }

@ -0,0 +1,95 @@
using DbContextLib;
using Entities;
using Microsoft.EntityFrameworkCore;
using Model.OrderCriteria;
using Shared;
namespace DbDataManager.Service;
public class ParagraphDataService : IParagraphService<ParagraphEntity>
{
private UserDbContext DbContext { get; set; }
public ParagraphDataService(UserDbContext context)
{
DbContext = context;
context.Database.EnsureCreated();
}
public ParagraphEntity 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;
}
public ParagraphEntity 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;
}
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);
if (paragraphEntity == null)
{
return false;
}
DbContext.Paragraphs.Remove(paragraphEntity);
DbContext.SaveChangesAsync();
return true;
}
public ParagraphEntity UpdateParagraph(int id, ParagraphEntity paragraph)
{
var updatingParagraph = DbContext.Paragraphs.FirstOrDefault(u => u.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;
DbContext.SaveChangesAsync();
return updatingParagraph;
}
public ParagraphEntity CreateParagraph(string title, string content, string info, string query, string comment, int lessonId)
{
var newParagraphEntity = new ParagraphEntity()
{
Title = title,
Content = content,
Info = info,
Query = query,
Comment = comment,
LessonId = lessonId
};
DbContext.Paragraphs.Add(newParagraphEntity);
DbContext.SaveChangesAsync();
return newParagraphEntity;
}
}

@ -0,0 +1,89 @@
using DbContextLib;
using Entities;
using Microsoft.EntityFrameworkCore;
using Model.OrderCriteria;
using Shared;
namespace DbDataManager.Service;
public class SuccessDataService : ISuccessService<SuccessEntity>
{
private UserDbContext DbContext { get; set; }
public SuccessDataService(UserDbContext context)
{
DbContext = context;
context.Database.EnsureCreated();
}
public SuccessEntity GetSuccessByUserId(int id)
{
var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id);
if (successEntity == null)
{
throw new ArgumentException("Impossible de trouver le succès avec l'user id", nameof(id));
}
return successEntity;
}
public SuccessEntity GetSuccessByInquiryId(int id)
{
var successEntity = DbContext.Successes.FirstOrDefault(u => u.InquiryId == id);
if (successEntity == null)
{
throw new ArgumentException("Impossible de trouver le succès avec l'inquiry id", nameof(id));
}
return successEntity;
}
public IEnumerable<SuccessEntity> GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria)
{
return DbContext.Successes.Skip((page - 1) * number).Take(number).ToList()
.Select(u => u);
}
public bool DeleteSuccess(int id)
{
var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id);
if (userEntity == null)
{
return false;
}
DbContext.Successes.Remove(userEntity);
DbContext.SaveChangesAsync();
return true;
}
public SuccessEntity UpdateSuccess(int id, SuccessEntity success)
{
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));
}
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;
}
public SuccessEntity CreateSuccess(int userId, int inquiryId, bool isFinished)
{
var newSuccessEntity = new SuccessEntity()
{
UserId = userId,
InquiryId = inquiryId,
IsFinished = isFinished,
};
DbContext.Successes.Add(newSuccessEntity);
DbContext.SaveChangesAsync();
return newSuccessEntity;
}
}

@ -1,6 +1,7 @@
using DbContextLib; using DbContextLib;
using Entities; using Entities;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Model.OrderCriteria;
using Shared; using Shared;
namespace DbDataManager.Service; namespace DbDataManager.Service;
@ -37,7 +38,7 @@ public class UserDataService : IUserService<UserEntity>
return userEntity; return userEntity;
} }
public IEnumerable<UserEntity> GetUsers(int page, int number) public IEnumerable<UserEntity> GetUsers(int page, int number, UserOrderCriteria orderCriteria)
{ {
return DbContext.Users.Skip((page - 1) * number).Take(number).ToList() return DbContext.Users.Skip((page - 1) * number).Take(number).ToList()
.Select(u => u); .Select(u => u);

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

@ -1,10 +0,0 @@
using Entities;
using Model;
using Dto;
namespace Shared
{
public interface IDataService
{
}
}

@ -3,7 +3,7 @@ using Model.OrderCriteria;
namespace Shared; namespace Shared;
public interface IInquiryDataService : IDataService public interface IInquiryDataService : IInquiryService<InquiryDTO>
{ {
public IEnumerable<InquiryDTO> GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria); public IEnumerable<InquiryDTO> GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria);
public InquiryDTO GetInquiryById(int id); public InquiryDTO GetInquiryById(int id);

@ -1,8 +1,10 @@
namespace Shared; using Model.OrderCriteria;
namespace Shared;
public interface IInquiryService<TInquiry> public interface IInquiryService<TInquiry>
{ {
public IEnumerable<TInquiry> GetInquiries(int page, int number); public IEnumerable<TInquiry> GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria);
public TInquiry GetInquiryById(int id); public TInquiry GetInquiryById(int id);
public TInquiry GetInquiryByTitle(string title); public TInquiry GetInquiryByTitle(string title);
public bool DeleteInquiry(int id); public bool DeleteInquiry(int id);

@ -3,7 +3,7 @@ using Model.OrderCriteria;
namespace Shared; namespace Shared;
public interface ILessonDataService : IDataService public interface ILessonDataService : ILessonService<LessonDTO>
{ {
public IEnumerable<LessonDTO> GetLessons(int page, int number, LessonOrderCriteria orderCriteria); public IEnumerable<LessonDTO> GetLessons(int page, int number, LessonOrderCriteria orderCriteria);
public LessonDTO GetLessonById(int id); public LessonDTO GetLessonById(int id);

@ -1,8 +1,10 @@
namespace Shared; using Model.OrderCriteria;
namespace Shared;
public interface ILessonService<TLesson> public interface ILessonService<TLesson>
{ {
public IEnumerable<TLesson> GetLessons(int page, int number); public IEnumerable<TLesson> GetLessons(int page, int number, LessonOrderCriteria orderCriteria);
public TLesson GetLessonById(int id); public TLesson GetLessonById(int id);
public TLesson GetLessonByTitle(string title); public TLesson GetLessonByTitle(string title);
public bool DeleteLesson(int id); public bool DeleteLesson(int id);

@ -3,7 +3,7 @@ using Model.OrderCriteria;
namespace Shared; namespace Shared;
public interface IParagraphDataService : IDataService public interface IParagraphDataService : IParagraphService<ParagraphDTO>
{ {
public IEnumerable<ParagraphDTO> GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria); public IEnumerable<ParagraphDTO> GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria);
public ParagraphDTO GetParagraphById(int id); public ParagraphDTO GetParagraphById(int id);

@ -0,0 +1,14 @@
using Model.OrderCriteria;
namespace Shared
{
public interface IParagraphService<TParagraph>
{
public IEnumerable<TParagraph> GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria);
public TParagraph GetParagraphById(int id);
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);
}
}

@ -3,7 +3,7 @@ using Model.OrderCriteria;
namespace Shared; namespace Shared;
public interface ISuccessDataService public interface ISuccessDataService : ISuccessService<SuccessDTO>
{ {
public IEnumerable<SuccessDTO> GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria); public IEnumerable<SuccessDTO> GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria);
public SuccessDTO GetSuccessByUserId(int id); public SuccessDTO GetSuccessByUserId(int id);

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

@ -3,7 +3,7 @@ using Model.OrderCriteria;
namespace Shared; namespace Shared;
public interface IUserDataService : IDataService public interface IUserDataService : IUserService<UserDTO>
{ {
public IEnumerable<UserDTO> GetUsers(int page, int number, UserOrderCriteria orderCriteria); public IEnumerable<UserDTO> GetUsers(int page, int number, UserOrderCriteria orderCriteria);
public UserDTO GetUserById(int id); public UserDTO GetUserById(int id);

@ -1,8 +1,10 @@
namespace Shared using Model.OrderCriteria;
namespace Shared
{ {
public interface IUserService<TUser> public interface IUserService<TUser>
{ {
public IEnumerable<TUser> GetUsers(int page, int number); public IEnumerable<TUser> GetUsers(int page, int number, UserOrderCriteria orderCriteria);
public TUser GetUserById(int id); public TUser GetUserById(int id);
public TUser GetUserByUsername(string username); public TUser GetUserByUsername(string username);
public bool DeleteUser(int id); public bool DeleteUser(int id);

@ -6,7 +6,7 @@ using Model.OrderCriteria;
using Shared; using Shared;
using Shared.Mapper; using Shared.Mapper;
namespace Services; namespace Shared;
public class ParagraphDataService : IParagraphDataService public class ParagraphDataService : IParagraphDataService
{ {

Loading…
Cancel
Save