68 lines
1.9 KiB
C#
68 lines
1.9 KiB
C#
using back.DataModels;
|
|
using back.DTO;
|
|
using back.services.bussines.PhotoService;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace back.controllers;
|
|
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
public class PhotosController(IPhotoService photoService) : ControllerBase
|
|
{
|
|
private readonly IPhotoService _photoService = photoService;
|
|
|
|
// GET: api/<PhotoController>
|
|
[HttpGet]
|
|
public async Task<ActionResult<IEnumerable<Photo>>> Get([FromQuery] int page = 1, [FromQuery] int pageSize = 20)
|
|
{
|
|
(int totalItems, IEnumerable<Photo>? pageData) = await _photoService.GetPage(page, pageSize);
|
|
Response.Headers.Append("X-Total-Count", totalItems.ToString());
|
|
return Ok(pageData);
|
|
}
|
|
|
|
// GET api/<PhotoController>/5
|
|
[HttpGet("{id}/{res}")]
|
|
public async Task<IActionResult> Get(string id, string res)
|
|
{
|
|
(string? mediaType, byte[]? fileBytes) = await _photoService.GetBytes(id, res.ToLower());
|
|
if(fileBytes == null)
|
|
return NotFound();
|
|
return File(fileBytes, mediaType ?? "image/jpeg");
|
|
}
|
|
|
|
// POST api/<PhotoController>
|
|
[HttpPost]
|
|
public async Task<IActionResult> Post([FromForm] PhotoFormModel form)
|
|
{
|
|
try
|
|
{
|
|
if (form.Image == null || form.Image.Length == 0)
|
|
return BadRequest("No image uploaded.");
|
|
|
|
await _photoService.Create(form);
|
|
|
|
return Created();
|
|
}
|
|
catch
|
|
{
|
|
return BadRequest();
|
|
}
|
|
}
|
|
|
|
//// PUT api/<PhotoController>
|
|
[HttpPut]
|
|
public async Task<IActionResult> Put([FromBody] Photo photo)
|
|
{
|
|
await _photoService.Update(photo);
|
|
return NoContent();
|
|
}
|
|
|
|
// DELETE api/<PhotoController>/5
|
|
[HttpDelete("{id}")]
|
|
public async Task<IActionResult> Delete(string id)
|
|
{
|
|
await _photoService.Delete(id);
|
|
return NoContent();
|
|
}
|
|
}
|