ajout début de la génicité mais il y a des erreurs, pas encore corigées !!!!

Genericite
Victor GABORIT 1 year ago
parent 5f9899276a
commit 08e08687da

@ -13,27 +13,27 @@ namespace API.Controllers
[ApiController]
public class UserController : Controller
{
private IDataService _userDataService;
private IDataService _dataService;
private readonly ILogger<UserController> _logger;
public UserController(IDataService userDataService, ILogger<UserController> logger)
public UserController(IDataService dataService, ILogger<UserController> logger)
{
_userDataService = userDataService;
_dataService = dataService;
_logger = logger;
}
[HttpGet("users/{page}/{number}")]
public async Task<IActionResult> GetUsers(int page, int number)
{
var nbUser = (await _userDataService.GetUsers(page, number)).ToList().Count();
var nbUser = (await _dataService.UserService.GetUsers(page, number)).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(_userDataService.GetUsers(page, number));
return Ok(_dataService.UserService.GetUsers(page, number));
}
[HttpGet("user/id/{id}")]
@ -42,7 +42,7 @@ namespace API.Controllers
try
{
_logger.LogInformation("[INFORMATION] Utilisateur avec l'id {id} a été trouvé.", id);
return Ok(_userDataService.GetUserById(id));
return Ok(_dataService.UserService.GetUserById(id));
} catch (ArgumentException)
{
_logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id {id}.", id);
@ -56,7 +56,7 @@ namespace API.Controllers
try
{
_logger.LogInformation("[INFORMATION] Utilisateur avec l'username {username} a été trouvé.", username);
return Ok(_userDataService.GetUserByUsername(username));
return Ok(_dataService.UserService.GetUserByUsername(username));
}catch (ArgumentException)
{
_logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'username {username}.", username);
@ -68,11 +68,11 @@ namespace API.Controllers
[HttpDelete]
public async Task<IActionResult> DeleteUser(int id)
{
var success = await _userDataService.DeleteUser(id);
var success = await _dataService.UserService.DeleteUser(id);
if(success)
{
_logger.LogInformation("[INFORMATION] L'utilisateur avec l'id {id} a été supprimé.", id);
return Ok(_userDataService.DeleteUser(id));
return Ok(_dataService.UserService.DeleteUser(id));
} else
{
_logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id {id}.", id);
@ -88,9 +88,9 @@ namespace API.Controllers
{
return BadRequest();
}
// return Ok(_userDataService.CreateUser(username, password, email, isAdmin));
_logger.LogInformation("[INFORMATION] Un utilisateur a été créé : username - {username}, password - {password}, email - {email}, isAdmin - {isAdmin}", dto.Username, dto.Password, dto.Email, dto.IsAdmin);
return Created(nameof(GetUsers), _userDataService.CreateUser(dto.Username, dto.Password, dto.Email, dto.IsAdmin));
return Created(nameof(GetUsers), _dataService.UserService.CreateUser(dto.Username, dto.Password, dto.Email, dto.IsAdmin));
}
[HttpPut]
@ -109,7 +109,7 @@ namespace API.Controllers
if(userDTO != null)
{
_logger.LogInformation("[INFORMATION] La mise à jour de l'utilisateur avec l'id {id} a été effectuée", id);
return Ok(_userDataService.UpdateUser(id, userDTO));
return Ok(_dataService.UserService.UpdateUser(id, userDTO));
}
_logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id {id}.", id);
return NotFound();

@ -15,7 +15,7 @@ builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddScoped<IDataService, UserDataService>();
builder.Services.AddScoped<IUserDataService, UserDataService>();
builder.Services.AddScoped<IDataServiceEF, DbDataManager>();
builder.Services.AddDbContext<DbContext, UserDbContext>();
builder.Services.AddDbContext<WebAPIDbContext>(options => options.UseInMemoryDatabase("appDb"));

@ -9,7 +9,7 @@ using Model.Mappers;
namespace ModelToEntity
{
public class DbDataManager : IDataServiceEF
public class DbDataManager : IUserDataService<User?>
{
public async Task<User> GetUserById(int id)
{
@ -93,7 +93,7 @@ namespace ModelToEntity
IsAdmin = isAdmin
};
context.Users.Add(newUserEntity.FromDTOToModel().FromModelToEntity());
context.SaveChangesAsync();
context.SaveChanges();
return await Task.FromResult(newUserEntity.FromDTOToModel());
}
@ -157,6 +157,11 @@ namespace ModelToEntity
{
throw new NotImplementedException();
}
public Task<T?> AddItem<T>(T? item)
{
throw new NotImplementedException();
}
}
}

@ -7,10 +7,25 @@ using System.Threading.Tasks;
using Entities;
using Entities.SQLudeoDB;
using Model.Business;
using System.Diagnostics;
using DbContextLib;
using Microsoft.EntityFrameworkCore;
namespace ModelToEntity
{
static class Extension
internal static class Extension
{
internal static async Task<T?> AddItemAsync<T>(this DbContext context, T? item) where T : class
{
if (item == null || await context.Set<T>().ContainsAsync(item))
{
return default(T);
}
context.Set<T>().Add(item);
await context.SaveChangesAsync();
return item;
}
}
}

@ -6,23 +6,8 @@ namespace Services
{
public interface IDataService
{
public Task<IEnumerable<UserDTO>> GetUsers(int page, int number);
public Task<UserDTO> GetUserById(int id);
public Task<UserDTO> GetUserByUsername(string username);
public Task<bool> DeleteUser(int id);
public Task<UserDTO> UpdateUser(int id, UserDTO user);
public Task<UserDTO> CreateUser(string username, string password, string email, bool isAdmin);
public IEnumerable<InquiryDTO> GetInquiries(int page, int number);
public InquiryDTO GetInquiryById(int id);
public InquiryDTO GetInquiryByTitle(string title);
public bool DeleteInquiry(int id);
public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry);
public UserDTO CreateInquiry(string title, string description, bool isUser, InquiryTableEntity database, SolutionEntity inquiryTable);
public IEnumerable<InquiryDTO> GetLessons(int page, int number);
public InquiryDTO GetLessonById(int id);
public InquiryDTO GetLessonByTitle(string title);
public bool DeleteLesson(int id);
public InquiryDTO UpdateLesson(int id, LessonDTO lesson);
public UserDTO CreateLesson(string title, string lastPublisher, DateOnly lastEdit);
IUserDataService UserService { get; }
IInquiryDataService InquiryDataService { get; }
ILessonDataService LessonDataService { get; }
}
}

@ -0,0 +1,21 @@
using Entities.SQLudeoDB;
using Model.DTO;
using Shared;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Services
{
public interface IInquiryDataService : IGenericService<InquiryDTO>
{
public IEnumerable<InquiryDTO> GetInquiries(int page, int number);
public InquiryDTO GetInquiryById(int id);
public InquiryDTO GetInquiryByTitle(string title);
public bool DeleteInquiry(int id);
public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry);
public UserDTO CreateInquiry(string title, string description, bool isUser, InquiryTableEntity database, SolutionEntity inquiryTable);
}
}

@ -0,0 +1,20 @@
using Model.DTO;
using Shared;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Services
{
public interface ILessonDataService : IGenericService<LessonDTO>
{
public IEnumerable<InquiryDTO> GetLessons(int page, int number);
public InquiryDTO GetLessonById(int id);
public InquiryDTO GetLessonByTitle(string title);
public bool DeleteLesson(int id);
public InquiryDTO UpdateLesson(int id, LessonDTO lesson);
public UserDTO CreateLesson(string title, string lastPublisher, DateOnly lastEdit);
}
}

@ -24,6 +24,7 @@
<ProjectReference Include="..\EntityFramework\Entities.csproj" />
<ProjectReference Include="..\ModelToEntity\ModelToEntity.csproj" />
<ProjectReference Include="..\Model\Model.csproj" />
<ProjectReference Include="..\Shared\Shared.csproj" />
</ItemGroup>
</Project>

@ -13,28 +13,27 @@ using ModelToEntity;
namespace Services
{
public class UserDataService : IDataService
public class UserDataService : IUserDataService<UserDTO?>
{
private UserDbContext DbContext { get; set; }
private readonly IDataServiceEF dataServiceEF;
public UserDataService(IDataServiceEF dataServiceEF)
{
this.dataServiceEF = dataServiceEF;
}
public async Task<UserDTO> GetUserById(int id)
public async Task<UserDTO?> GetUserById(int id)
{
var user = await dataServiceEF.GetUserById(id);
return user.FromModelToDTO();
}
public async Task<UserDTO> GetUserByUsername(string username)
public async Task<UserDTO?> GetUserByUsername(string username)
{
var user = await dataServiceEF.GetUserByUsername(username);
return user.FromModelToDTO();
}
public async Task<IEnumerable<UserDTO>> GetUsers(int page, int number)
public async Task<IEnumerable<UserDTO?>> GetUsers(int page, int number)
{
var users = await dataServiceEF.GetUsers(page, number);
return users.Select(u => u.FromModelToDTO());
@ -46,72 +45,18 @@ namespace Services
return respons;
}
public async Task<UserDTO> UpdateUser(int id, UserDTO user)
public async Task<UserDTO?> UpdateUser(int id, UserDTO user)
{
var updatingUser = await dataServiceEF.UpdateUser(id, user);
return updatingUser.FromModelToDTO();
}
public async Task<UserDTO> CreateUser(string username, string password, string email, bool isAdmin)
public async Task<UserDTO?> CreateUser(string username, string password, string email, bool isAdmin)
{
var newUserEntity = await dataServiceEF.CreateUser(username, password, email, isAdmin);
return newUserEntity.FromModelToDTO();
}
public IEnumerable<InquiryDTO> GetInquiries(int page, int number)
{
throw new NotImplementedException();
}
public InquiryDTO GetInquiryById(int id)
{
throw new NotImplementedException();
}
public InquiryDTO GetInquiryByTitle(string title)
{
throw new NotImplementedException();
}
public UserDTO CreateInquiry(string title, string description, bool isUser, InquiryTableEntity database, SolutionEntity inquiryTable)
{
throw new NotImplementedException();
}
public bool DeleteInquiry(int id)
{
throw new NotImplementedException();
}
public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry)
{
throw new NotImplementedException();
}
public IEnumerable<InquiryDTO> GetLessons(int page, int number)
{
throw new NotImplementedException();
}
public InquiryDTO GetLessonById(int id)
{
throw new NotImplementedException();
}
public InquiryDTO GetLessonByTitle(string title)
{
throw new NotImplementedException();
}
public bool DeleteLesson(int id)
{
throw new NotImplementedException();
}
public InquiryDTO UpdateLesson(int id, LessonDTO lesson)
{
throw new NotImplementedException();
}
public UserDTO CreateLesson(string title, string lastPublisher, DateOnly lastEdit)
public async Task<T?> AddItem<T>(T? item)
{
throw new NotImplementedException();
}

@ -0,0 +1,7 @@
namespace Shared
{
public interface IGenericService<T>
{
public Task<T?> AddItem<T>(T? item);
}
}

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Services;
using Model.DTO;
using Shared;
namespace Services
{
public interface IUserDataService<T> : IGenericService<T?>
{
public Task<IEnumerable<T?>> GetUsers(int page, int number);
public Task<T?> GetUserById(int id);
public Task<T?> GetUserByUsername(string username);
public Task<bool> DeleteUser(int id);
public Task<T?> UpdateUser(int id, UserDTO user);
public Task<T?> CreateUser(string username, string password, string email, bool isAdmin);
}
}

@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Loading…
Cancel
Save