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

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

@ -1,11 +1,11 @@
using API; using API;
using API.Service;
using DbContextLib; using DbContextLib;
using Dto; using Dto;
using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc.Versioning; using Microsoft.AspNetCore.Mvc.Versioning;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Models;
using ModelToEntities.Business;
using ModelToEntities.Service; using ModelToEntities.Service;
using Shared; using Shared;
@ -18,7 +18,9 @@ builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer(); builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(); builder.Services.AddSwaggerGen();
builder.Services.AddScoped<IUserService<UserDTO>, UserDataService>(); 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<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>();

@ -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; using Shared;
namespace ModelToEntities.Service; 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(); throw new NotImplementedException();
} }
public Inquiry GetInquiryById(int id) public InquiryDTO GetInquiryById(int id)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Inquiry GetInquiryByTitle(string title) public InquiryDTO GetInquiryByTitle(string title)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }

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

Loading…
Cancel
Save