Proyecto ChatBot Con Gemini

This commit is contained in:
2025-11-18 14:34:26 -03:00
commit 83a48e16da
60 changed files with 13078 additions and 0 deletions

View File

@@ -0,0 +1,90 @@
// 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);
}
}
}