Final
This commit is contained in:
@@ -20,11 +20,22 @@ namespace BibliotecaAPI.Controllers
|
||||
[HttpPost("crear")]
|
||||
public async Task<ActionResult<Prestamo>> CrearPrestamo(Prestamo prestamo)
|
||||
{
|
||||
var libro = await _context.Libros.FindAsync(prestamo.IdLibro);
|
||||
if (libro == null || libro.CopiasDisponibles <= 0)
|
||||
// Verificar si el usuario tiene 3 o más préstamos no devueltos
|
||||
var prestamosActivos = await _context.Prestamos
|
||||
.Where(p => p.Id_Usuario == prestamo.Id_Usuario && !p.Devuelto)
|
||||
.CountAsync();
|
||||
|
||||
if (prestamosActivos >= 3)
|
||||
return BadRequest("El usuario ya tiene 3 préstamos activos. Debe devolver al menos uno antes de realizar un nuevo préstamo.");
|
||||
|
||||
var libro = await _context.Libros.FindAsync(prestamo.Id_Libro);
|
||||
if (libro == null || libro.Copias_Disponibles <= 0)
|
||||
return BadRequest("Libro no disponible.");
|
||||
|
||||
libro.CopiasDisponibles--;
|
||||
libro.Copias_Disponibles--;
|
||||
prestamo.Fecha_Prestamo = DateTime.Now;
|
||||
prestamo.Devuelto = false;
|
||||
|
||||
_context.Prestamos.Add(prestamo);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
@@ -35,37 +46,43 @@ namespace BibliotecaAPI.Controllers
|
||||
[HttpPut("devolver/{id}")]
|
||||
public async Task<IActionResult> RegistrarDevolucion(int id)
|
||||
{
|
||||
var prestamo = await _context.Prestamos.Include(p => p.Libro).FirstOrDefaultAsync(p => p.Id == id);
|
||||
var prestamo = await _context.Prestamos
|
||||
//.Include(p => p.Libro) // propiedad de navegación
|
||||
.FirstOrDefaultAsync(p => p.Id_Prestamo == id);
|
||||
|
||||
if (prestamo == null) return NotFound();
|
||||
|
||||
if (prestamo.Devuelto)
|
||||
return BadRequest("Este préstamo ya fue devuelto.");
|
||||
|
||||
prestamo.Devuelto = true;
|
||||
prestamo.FechaDevolucion = DateTime.Now;
|
||||
prestamo.Libro.CopiasDisponibles++;
|
||||
//prestamo.Libro.Copias_Disponibles++;
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
return Ok("Devolución registrada con éxito.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Consultar préstamos activos
|
||||
[HttpGet("activos")]
|
||||
public async Task<ActionResult<IEnumerable<Prestamo>>> GetActivos()
|
||||
{
|
||||
return await _context.Prestamos
|
||||
.Include(p => p.Libro)
|
||||
.Include(p => p.Usuario)
|
||||
//.Include(p => p.Libro)
|
||||
//.Include(p => p.Usuario)
|
||||
.Where(p => !p.Devuelto)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
// Consultar préstamos vencidos (más de 15 días)
|
||||
// Consultar préstamos vencidos (más de 10 días)
|
||||
[HttpGet("vencidos")]
|
||||
public async Task<ActionResult<IEnumerable<Prestamo>>> GetVencidos()
|
||||
{
|
||||
var hoy = DateTime.Now;
|
||||
return await _context.Prestamos
|
||||
.Include(p => p.Libro)
|
||||
.Include(p => p.Usuario)
|
||||
.Where(p => !p.Devuelto && (hoy - p.FechaPrestamo).TotalDays > 10)
|
||||
//.Include(p => p.Libro)
|
||||
//.Include(p => p.Usuario)
|
||||
.Where(p => !p.Devuelto && (hoy - p.Fecha_Prestamo).TotalDays > 10)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
@@ -74,9 +91,9 @@ namespace BibliotecaAPI.Controllers
|
||||
public async Task<ActionResult<IEnumerable<Prestamo>>> GetHistorialUsuario(int usuarioId)
|
||||
{
|
||||
return await _context.Prestamos
|
||||
.Include(p => p.Libro)
|
||||
.Where(p => p.IdUsuario == usuarioId)
|
||||
//.Include(p => p.Libro)
|
||||
.Where(p => p.Id_Usuario == usuarioId)
|
||||
.ToListAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user