using back.ApiService.context; using back.ApiService.models; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace back.controllers; public class PhotoFormModel { public required string Title { get; set; } public string? Description { get; set; } public string? Tags { get; set; } public string? People { get; set; } public IFormFile? Image { get; set; } public string? Ubicacion { get; set; } public string? Evento { get; set; } } [Route("api/[controller]")] [ApiController] public class PhotoController(PhotoContext photoContext) : ControllerBase { private readonly PhotoContext _photoContext = photoContext; // GET: api/ [HttpGet] public async Task>> Get([FromQuery] int page = 1, [FromQuery] int pageSize = 20) { if (page < 1) page = 1; if (pageSize < 1) pageSize = 20; var totalItems = await _photoContext.Photos.CountAsync(); var photos = await _photoContext.Photos .OrderByDescending(p => p.CreatedAt) .Skip((page - 1) * pageSize) .Take(pageSize) .ToListAsync(); Response.Headers.Append("X-Total-Count", totalItems.ToString()); return Ok(photos); } // GET api//5 [HttpGet("{id}")] public async Task> Get(Guid id) { var photo = await _photoContext.Photos.FindAsync(id); if (photo == null) return NotFound(); return photo; } // POST api/ [HttpPost] public async Task Post([FromForm] PhotoFormModel form) { try { if (form.Image == null || form.Image.Length == 0) return BadRequest("No image uploaded."); var photo = PhotoBuilder.Build( form.Title, form.Description, form.Tags?.Split(',', StringSplitOptions.RemoveEmptyEntries).ToList(), form.People?.Split(',', StringSplitOptions.RemoveEmptyEntries).ToList(), form.Image ); // Guarda la información en la base de datos _photoContext.Photos.Add(photo); await _photoContext.SaveChangesAsync(); return Created(); } catch { return BadRequest(); } } //// PUT api//5 //[HttpPut("{id}")] //public async Task Put(Guid id, [FromBody] Photo photo) //{ // if (id != photo.Id) // return BadRequest(); // _photoContext.Entry(photo).State = EntityState.Modified; // await _photoContext.SaveChangesAsync(); // return NoContent(); //} // DELETE api//5 [HttpDelete("{id}")] public async Task Delete(Guid id) { var photo = await _photoContext.Photos.FindAsync(id); if (photo == null) return NotFound(); _photoContext.Photos.Remove(photo); await _photoContext.SaveChangesAsync(); return NoContent(); } }