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/ [HttpGet] public async Task>> Get([FromQuery] int page = 1, [FromQuery] int pageSize = 20) { (int totalItems, IEnumerable? pageData) = await _photoService.GetPage(page, pageSize); Response.Headers.Append("X-Total-Count", totalItems.ToString()); return Ok(pageData); } // GET api//5 [HttpGet("{id}/{res}")] public async Task 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/ [HttpPost] public async Task 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/ [HttpPut] public async Task Put([FromBody] Photo photo) { await _photoService.Update(photo); return NoContent(); } // DELETE api//5 [HttpDelete("{id}")] public async Task Delete(string id) { await _photoService.Delete(id); return NoContent(); } }