Files
mmorales.photo/back/controllers/PhotosController.cs
2025-08-24 14:18:20 +02:00

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();
}
}