90 lines
2.9 KiB
C#
90 lines
2.9 KiB
C#
|
|
// Controllers/AdminController.cs
|
||
|
|
using ChatbotApi.Data.Models;
|
||
|
|
using Microsoft.AspNetCore.Mvc;
|
||
|
|
using Microsoft.AspNetCore.Authorization;
|
||
|
|
|
||
|
|
namespace ChatbotApi.Controllers
|
||
|
|
{
|
||
|
|
[ApiController]
|
||
|
|
[Route("api/[controller]")]
|
||
|
|
[Authorize]
|
||
|
|
public class AdminController : ControllerBase
|
||
|
|
{
|
||
|
|
private readonly AppContexto _context;
|
||
|
|
|
||
|
|
public AdminController(AppContexto context)
|
||
|
|
{
|
||
|
|
_context = context;
|
||
|
|
}
|
||
|
|
|
||
|
|
// GET: api/admin/contexto
|
||
|
|
[HttpGet("contexto")]
|
||
|
|
public async Task<IActionResult> GetAllContextoItems()
|
||
|
|
{
|
||
|
|
var items = await _context.ContextoItems.OrderBy(i => i.Clave).ToListAsync();
|
||
|
|
return Ok(items);
|
||
|
|
}
|
||
|
|
|
||
|
|
// POST: api/admin/contexto
|
||
|
|
[HttpPost("contexto")]
|
||
|
|
public async Task<IActionResult> CreateContextoItem([FromBody] ContextoItem item)
|
||
|
|
{
|
||
|
|
if (await _context.ContextoItems.AnyAsync(i => i.Clave == item.Clave))
|
||
|
|
{
|
||
|
|
return BadRequest("La clave ya existe.");
|
||
|
|
}
|
||
|
|
item.FechaActualizacion = DateTime.UtcNow;
|
||
|
|
_context.ContextoItems.Add(item);
|
||
|
|
await _context.SaveChangesAsync();
|
||
|
|
return CreatedAtAction(nameof(GetAllContextoItems), new { id = item.Id }, item);
|
||
|
|
}
|
||
|
|
|
||
|
|
// PUT: api/admin/contexto/5
|
||
|
|
[HttpPut("contexto/{id}")]
|
||
|
|
public async Task<IActionResult> UpdateContextoItem(int id, [FromBody] ContextoItem item)
|
||
|
|
{
|
||
|
|
if (id != item.Id)
|
||
|
|
{
|
||
|
|
return BadRequest();
|
||
|
|
}
|
||
|
|
var existingItem = await _context.ContextoItems.FindAsync(id);
|
||
|
|
if (existingItem == null)
|
||
|
|
{
|
||
|
|
return NotFound();
|
||
|
|
}
|
||
|
|
|
||
|
|
existingItem.Valor = item.Valor;
|
||
|
|
existingItem.Descripcion = item.Descripcion;
|
||
|
|
existingItem.FechaActualizacion = DateTime.UtcNow;
|
||
|
|
|
||
|
|
await _context.SaveChangesAsync();
|
||
|
|
return NoContent();
|
||
|
|
}
|
||
|
|
|
||
|
|
// DELETE: api/admin/contexto/5
|
||
|
|
[HttpDelete("contexto/{id}")]
|
||
|
|
public async Task<IActionResult> DeleteContextoItem(int id)
|
||
|
|
{
|
||
|
|
var item = await _context.ContextoItems.FindAsync(id);
|
||
|
|
if (item == null)
|
||
|
|
{
|
||
|
|
return NotFound();
|
||
|
|
}
|
||
|
|
_context.ContextoItems.Remove(item);
|
||
|
|
await _context.SaveChangesAsync();
|
||
|
|
return NoContent();
|
||
|
|
}
|
||
|
|
|
||
|
|
// GET: api/admin/logs
|
||
|
|
[HttpGet("logs")]
|
||
|
|
public async Task<IActionResult> GetConversationLogs()
|
||
|
|
{
|
||
|
|
// Obtenemos los últimos 200 logs, ordenados del más reciente al más antiguo.
|
||
|
|
var logs = await _context.ConversacionLogs
|
||
|
|
.OrderByDescending(log => log.Fecha)
|
||
|
|
.Take(200)
|
||
|
|
.ToListAsync();
|
||
|
|
return Ok(logs);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|