añade proto back
This commit is contained in:
107
back/controllers/PhotoController.cs
Normal file
107
back/controllers/PhotoController.cs
Normal file
@@ -0,0 +1,107 @@
|
||||
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/<PhotoController>
|
||||
[HttpGet]
|
||||
public async Task<ActionResult<IEnumerable<Photo>>> 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/<PhotoController>/5
|
||||
[HttpGet("{id}")]
|
||||
public async Task<ActionResult<Photo>> Get(Guid id)
|
||||
{
|
||||
var photo = await _photoContext.Photos.FindAsync(id);
|
||||
if (photo == null)
|
||||
return NotFound();
|
||||
return photo;
|
||||
}
|
||||
|
||||
// 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.");
|
||||
|
||||
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/<PhotoController>/5
|
||||
//[HttpPut("{id}")]
|
||||
//public async Task<IActionResult> 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/<PhotoController>/5
|
||||
[HttpDelete("{id}")]
|
||||
public async Task<IActionResult> Delete(Guid id)
|
||||
{
|
||||
var photo = await _photoContext.Photos.FindAsync(id);
|
||||
if (photo == null)
|
||||
return NotFound();
|
||||
|
||||
_photoContext.Photos.Remove(photo);
|
||||
await _photoContext.SaveChangesAsync();
|
||||
return NoContent();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user