🚧 Les injections de dépendance ne sont surement pas bonnes, mais l'archi est faite
continuous-integration/drone/push Build is passing Details

pull/29/head
Clement CHIEU 1 year ago
parent c85057c175
commit 6e11809f60

@ -8,23 +8,32 @@ namespace API.Controllers
[Route("api/[controller]")]
[Authorize]
[ApiController]
public class InquiriesController(ILogger<InquiriesController> logger, IInquiryService<InquiryDTO> inquiryService)
: ControllerBase, IInquiryService<InquiryDTO>
public class InquiriesController()
: ControllerBase
{
private readonly IInquiryService<InquiryDTO> _inquiryService;
private readonly ILogger<InquiriesController> _logger;
public InquiriesController(IInquiryService<InquiryDTO> inquiryService, ILogger<InquiriesController> logger) : this()
{
_inquiryService = inquiryService;
_logger = logger;
}
[HttpGet("inquiries/{page}/{number}")]
[ProducesResponseType(typeof(InquiryDTO), 200)]
[ProducesResponseType(typeof(string), 204)]
public IActionResult GetInquiries(int page, int number)
{
var nbInquiry = inquiryService.GetInquiries(page, number).Count();
var nbInquiry = _inquiryService.GetInquiries(page, number).Count();
if (nbInquiry == 0)
{
logger.LogError("[ERREUR] Aucune enquête trouvé.");
_logger.LogError("[ERREUR] Aucune enquête trouvé.");
return StatusCode(204);
}
logger.LogInformation("[INFORMATION] {nb} Enquête(s) trouvée(s)", nbInquiry);
return Ok(inquiryService.GetInquiries(page, number));
_logger.LogInformation("[INFORMATION] {nb} Enquête(s) trouvée(s)", nbInquiry);
return Ok(_inquiryService.GetInquiries(page, number));
}
[HttpGet("inquiry/id/{id}")]
@ -34,12 +43,12 @@ namespace API.Controllers
{
try
{
logger.LogInformation("[INFORMATION] Enquête avec l'id {id} a été trouvé.", id);
return Ok(inquiryService.GetInquiryById(id));
_logger.LogInformation("[INFORMATION] Enquête avec l'id {id} a été trouvé.", id);
return Ok(_inquiryService.GetInquiryById(id));
}
catch (ArgumentException)
{
logger.LogError("[ERREUR] Aucune enquête trouvée avec l'id {id}.", id);
_logger.LogError("[ERREUR] Aucune enquête trouvée avec l'id {id}.", id);
return NotFound();
}
}
@ -51,12 +60,12 @@ namespace API.Controllers
{
try
{
logger.LogInformation("[INFORMATION] Enquête avec le titre {title} a été trouvé.", title);
return Ok(inquiryService.GetInquiryByTitle(title));
_logger.LogInformation("[INFORMATION] Enquête avec le titre {title} a été trouvé.", title);
return Ok(_inquiryService.GetInquiryByTitle(title));
}
catch (ArgumentException)
{
logger.LogError("[ERREUR] Aucune enquête trouvée avec le titre {title}.", title);
_logger.LogError("[ERREUR] Aucune enquête trouvée avec le titre {title}.", title);
return NotFound();
}
}

@ -1,6 +1,8 @@
using Dto;
using API.Service;
using Dto;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using ModelToEntities.Service;
using Shared;
namespace API.Controllers
@ -9,7 +11,7 @@ namespace API.Controllers
[Authorize]
[ApiVersion("1.0")]
[ApiController]
public class UserController(ILogger<InquiriesController> logger, IUserService<UserDTO> userService) : ControllerBase, IUserService<UserDTO>
public class UserController(ILogger<UserController> logger, IUserService<UserDTO> userService) : ControllerBase
{
[HttpGet("users/{page}/{number}")]
[ProducesResponseType(typeof(UserDTO), 200)]
@ -101,7 +103,7 @@ namespace API.Controllers
[ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult UpdateUser(int id, [FromBody] UserDTO userDTO)
public IActionResult UpdateUser(int id, [FromBody] UserDTO userDto)
{
if (id != userDto.Id)
{

@ -1,11 +1,11 @@
using API;
using API.Service;
using DbContextLib;
using Dto;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc.Versioning;
using Microsoft.EntityFrameworkCore;
using Microsoft.OpenApi.Models;
using ModelToEntities.Business;
using ModelToEntities.Service;
using Shared;
@ -18,7 +18,9 @@ builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddScoped<IUserService<UserDTO>, UserDataService>();
builder.Services.AddScoped<IInquiryService<Inquiry>, InquiryDataService>();
builder.Services.AddScoped<IUserService<UserDTO>, UserDataServiceApi>();
builder.Services.AddScoped<IInquiryService<InquiryDTO>, InquiryDataService>();
builder.Services.AddScoped<IInquiryService<InquiryDTO>, InquiryDataServiceApi>();
builder.Services.AddDbContext<DbContext, UserDbContext>();
builder.Services.AddDbContext<WebAPIDbContext>(options => options.UseInMemoryDatabase("appDb"));
builder.Services.AddIdentityApiEndpoints<IdentityUser>().AddEntityFrameworkStores<WebAPIDbContext>();

@ -0,0 +1,13 @@
using Dto;
using Shared;
namespace API.Service;
public class InquiryDataServiceApi(IInquiryService<InquiryDTO> inquiryService) : IInquiryService<InquiryDTO>
{
public IEnumerable<InquiryDTO> GetInquiries(int page, int number) => inquiryService.GetInquiries(page, number);
public InquiryDTO GetInquiryById(int id) => inquiryService.GetInquiryById(id);
public InquiryDTO GetInquiryByTitle(string title) => inquiryService.GetInquiryByTitle(title);
}

@ -0,0 +1,20 @@
using Dto;
using Shared;
namespace API.Service;
public class UserDataServiceApi(IUserService<UserDTO> userService) : IUserService<UserDTO>
{
public IEnumerable<UserDTO> GetUsers(int page, int number) => userService.GetUsers(page, number);
public UserDTO GetUserById(int id) => userService.GetUserById(id);
public UserDTO GetUserByUsername(string username) => userService.GetUserByUsername(username);
public bool DeleteUser(int id) => userService.DeleteUser(id);
public UserDTO UpdateUser(int id, UserDTO user) => userService.UpdateUser(id, user);
public UserDTO CreateUser(string username, string password, string email, bool isAdmin) =>
userService.CreateUser(username, password, email, isAdmin);
}

@ -1,21 +1,22 @@
using ModelToEntities.Business;
using Dto;
using ModelToEntities.Business;
using Shared;
namespace ModelToEntities.Service;
public class InquiryDataService : IInquiryService<Inquiry>
public class InquiryDataService : IInquiryService<InquiryDTO>
{
public IEnumerable<Inquiry> GetInquiries(int page, int number)
public IEnumerable<InquiryDTO> GetInquiries(int page, int number)
{
throw new NotImplementedException();
}
public Inquiry GetInquiryById(int id)
public InquiryDTO GetInquiryById(int id)
{
throw new NotImplementedException();
}
public Inquiry GetInquiryByTitle(string title)
public InquiryDTO GetInquiryByTitle(string title)
{
throw new NotImplementedException();
}

@ -1,6 +1,7 @@
// See https://aka.ms/new-console-template for more information
using API.Controllers;
using API.Service;
using DbContextLib;
using Dto;
using Microsoft.AspNetCore.Mvc;
@ -20,7 +21,7 @@ ILogger<UserController> logger = factory.CreateLogger<UserController>();
using (var context = new UserDbContext(options))
{
var controller = new UserController(logger);
var controller = new UserController(logger, new UserDataServiceApi(new UserDataService(context)));
void PrintUsers()
{

Loading…
Cancel
Save