You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
4.4 KiB
115 lines
4.4 KiB
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Model.DTO;
|
|
using Services;
|
|
|
|
namespace API.Controllers
|
|
{
|
|
[Route("api/[controller]")]
|
|
[Authorize]
|
|
[ApiController]
|
|
public class InquiryController : Controller
|
|
{
|
|
private IDataService<InquiryDTO> _dataService;
|
|
|
|
private readonly ILogger<UserController> _logger;
|
|
|
|
public InquiryController(IDataService<InquiryDTO> dataService)
|
|
{
|
|
_dataService = _dataService;
|
|
}
|
|
|
|
[HttpGet("inquiries/{page}/{number}")]
|
|
public IActionResult GetInquiries(int page, int number)
|
|
{
|
|
var nbInquiry = _dataService.InquiryDataService.GetInquiries(page, number).Count();
|
|
if (nbInquiry == 0)
|
|
{
|
|
_logger.LogError("[ERREUR] Aucune enquête trouvée.");
|
|
return StatusCode(204);
|
|
}
|
|
_logger.LogInformation("[INFORMATION] {nb} Enquête(s) trouvée(s)", nbInquiry);
|
|
return Ok(_dataService.InquiryDataService.GetInquiries(page, number));
|
|
}
|
|
|
|
[HttpGet("inquiry/id/{id}")]
|
|
public IActionResult GetInquiryById(int id)
|
|
{
|
|
try
|
|
{
|
|
_logger.LogInformation("[INFORMATION] L'enquête avec l'id {id} a été trouvé.", id);
|
|
return Ok(_dataService.InquiryDataService.GetInquiryById(id));
|
|
}
|
|
catch (ArgumentException)
|
|
{
|
|
_logger.LogError("[ERREUR] Aucune enquête trouvée avec l'id {id}.", id);
|
|
return NotFound();
|
|
}
|
|
}
|
|
|
|
[HttpGet("inquiry/title/{title}")]
|
|
public IActionResult GetInquiryByTitle(string title)
|
|
{
|
|
try
|
|
{
|
|
_logger.LogInformation("[INFORMATION] L'enquête avec le titre {title} a été trouvé.", title);
|
|
return Ok(_dataService.InquiryDataService.GetInquiryByTitle(title));
|
|
}
|
|
catch (ArgumentException)
|
|
{
|
|
_logger.LogError("[ERREUR] Aucune enquête trouvée avec le titre {title}.", title);
|
|
return NotFound();
|
|
}
|
|
}
|
|
|
|
[HttpDelete]
|
|
public IActionResult DeleteInquiry(int id)
|
|
{
|
|
var success = _dataService.InquiryDataService.DeleteInquiry(id);
|
|
if (success)
|
|
{
|
|
_logger.LogInformation("[INFORMATION] L'enquête avec l'id {id} a été supprimé.", id);
|
|
return Ok(_dataService.InquiryDataService.DeleteInquiry(id));
|
|
}
|
|
else
|
|
{
|
|
_logger.LogError("[ERREUR] Aucune enquête trouvée avec l'id {id}.", id);
|
|
return NotFound();
|
|
}
|
|
|
|
}
|
|
|
|
[HttpPost]
|
|
public IActionResult CreateInquiry([FromBody] InquiryDTO dto)
|
|
{
|
|
if (dto.Title == null || dto.Description == null || dto.Database == null || dto.InquiryTable == 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), _dataService.InquiryDataService.CreateInquiry(dto.Title, dto.Description, dto.IsUser, dto.Database, dto.InquiryTable));
|
|
}
|
|
|
|
[HttpPut]
|
|
public IActionResult UpdateInquiry(int id, [FromBody] InquiryDTO inquiryDTO)
|
|
{
|
|
if (id != inquiryDTO.Id)
|
|
{
|
|
_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);
|
|
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(_dataService.InquiryDataService.UpdateInquiry(id, inquiryDTO));
|
|
}
|
|
_logger.LogError("[ERREUR] Aucune enquête trouvée avec l'id {id}.", id);
|
|
return NotFound();
|
|
}
|
|
}
|
|
} |