|
|
@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
using DTO;
|
|
|
|
|
|
|
|
using System.Net;
|
|
|
|
|
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
|
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
|
|
|
using Shared;
|
|
|
|
|
|
|
|
using Entity;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace WfApi.Controllers
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
[ApiController]
|
|
|
|
|
|
|
|
[Route("api/v1/image")] //Version API
|
|
|
|
|
|
|
|
public class ImageController : ControllerBase
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
private readonly IImagesService<ImageDTO> _img;
|
|
|
|
|
|
|
|
private readonly ILogger<ImageController> _logger;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public ImageController(IImagesService<ImageDTO> imgService, ILogger<ImageController> logger)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
_img = imgService;
|
|
|
|
|
|
|
|
_logger = logger;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[HttpGet("{id}")] // Indiquer que l'id est dans l'URL
|
|
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
|
|
|
|
|
|
|
public async Task<IActionResult> GetImageId(int id)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var image = await _img.GetImageById(id);
|
|
|
|
|
|
|
|
return Ok(image);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (KeyNotFoundException e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return NotFound();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return StatusCode((int)HttpStatusCode.InternalServerError, new { message = "Internal Server Error (" + e + ")" });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[HttpGet("all")]
|
|
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
|
|
|
|
|
|
public async Task<IActionResult> GetAllImage(int index = 0, int count = 10)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var result = await _img.GetSomeImage(index, count);
|
|
|
|
|
|
|
|
if (result == null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return NotFound();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return Ok(result);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (KeyNotFoundException e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return StatusCode((int)HttpStatusCode.InternalServerError, new { message = "Internal Server Error" });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
|
|
|
|
|
|
public async Task<IActionResult> CreateImage([FromBody] ImageDTO newImage)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if(newImage == null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return BadRequest(new { message = "Source data is required." });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var existImage = await _img.GetImageById(newImage.IdImage);
|
|
|
|
|
|
|
|
return Conflict(new { message = $"A Image with the ID {newImage.IdImage} already exists." });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch(KeyNotFoundException e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var existPath = await _img.GetImageByPath(newImage.ImagePath);
|
|
|
|
|
|
|
|
if(existPath == null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
await _img.AddImage(newImage);
|
|
|
|
|
|
|
|
return Ok(newImage);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return Conflict(new { message = $"A Image with the path {newImage.ImagePath} already exists." });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch(Exception e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return StatusCode((int)HttpStatusCode.InternalServerError, new { message = "Internal Server Error" });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[HttpPut()]
|
|
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
|
|
|
|
|
|
public async Task<IActionResult> UpdateImage([FromQuery] int id, [FromBody] ImageDTO updatedImage)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (updatedImage == null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return BadRequest(new { message = "new source data is required." });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var existImage = await _img.GetImageById(id);
|
|
|
|
|
|
|
|
var existPath = await _img.GetImageByPath(updatedImage.ImagePath);
|
|
|
|
|
|
|
|
if (existPath == null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
await _img.UpdateImage(id, updatedImage);
|
|
|
|
|
|
|
|
return Ok(updatedImage);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return Conflict(new { message = $"A Image with the path {updatedImage.ImagePath} already exists." });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (KeyNotFoundException e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return Conflict(new { message = $"A Image with the ID {id} dosen't exists." });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return StatusCode((int)HttpStatusCode.InternalServerError, new { message = "Internal Server Error (" + e + ")" });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|