Feat: Cambios Varios 2
This commit is contained in:
@@ -22,6 +22,7 @@ public class ReportsController : ControllerBase
|
||||
}
|
||||
|
||||
[HttpGet("dashboard")]
|
||||
[Authorize(Roles = "Admin,GerenteVentas")]
|
||||
public async Task<IActionResult> GetDashboard([FromQuery] DateTime? from, [FromQuery] DateTime? to)
|
||||
{
|
||||
var start = from ?? DateTime.UtcNow.Date;
|
||||
@@ -31,6 +32,7 @@ public class ReportsController : ControllerBase
|
||||
}
|
||||
|
||||
[HttpGet("sales-by-category")]
|
||||
[Authorize(Roles = "Admin,GerenteVentas")]
|
||||
public async Task<IActionResult> GetSalesByCategory([FromQuery] DateTime? from, [FromQuery] DateTime? to)
|
||||
{
|
||||
var start = from ?? DateTime.UtcNow.AddMonths(-1);
|
||||
@@ -48,6 +50,7 @@ public class ReportsController : ControllerBase
|
||||
}
|
||||
|
||||
[HttpGet("audit")]
|
||||
[Authorize(Roles = "Admin")]
|
||||
public async Task<IActionResult> GetAuditLogs()
|
||||
{
|
||||
// Obtenemos los últimos 100 eventos
|
||||
@@ -108,15 +111,39 @@ public class ReportsController : ControllerBase
|
||||
|
||||
[HttpGet("cashier-transactions")]
|
||||
[Authorize(Roles = "Cajero,Admin")]
|
||||
public async Task<IActionResult> GetCashierTransactions()
|
||||
public async Task<IActionResult> GetCashierTransactions(
|
||||
[FromQuery] DateTime? from,
|
||||
[FromQuery] DateTime? to,
|
||||
[FromQuery] int? userId)
|
||||
{
|
||||
// 1. Obtener datos del usuario logueado
|
||||
var userIdClaim = User.FindFirst("Id")?.Value;
|
||||
var userRole = User.FindFirst(System.Security.Claims.ClaimTypes.Role)?.Value;
|
||||
|
||||
if (string.IsNullOrEmpty(userIdClaim)) return Unauthorized();
|
||||
|
||||
int userId = int.Parse(userIdClaim);
|
||||
// Usamos el repositorio para traer los avisos de hoy de este usuario
|
||||
var transactions = await _listingRepo.GetDetailedReportAsync(DateTime.UtcNow, DateTime.UtcNow, userId);
|
||||
// 2. Lógica de seguridad para el filtro de usuario:
|
||||
// Si es Admin, puede ver a cualquier cajero (usa el userId que viene por query).
|
||||
// Si es Cajero, SOLO puede verse a sí mismo (forzamos su propio ID).
|
||||
int? targetUserId = (userRole == "Admin") ? userId : int.Parse(userIdClaim);
|
||||
|
||||
// 3. Manejo de fechas:
|
||||
// Si no vienen, usamos el rango de hoy.
|
||||
// Pero el frontend enviará los valores de los selectores.
|
||||
var startDate = from ?? DateTime.UtcNow.Date;
|
||||
var endDate = to ?? DateTime.UtcNow.Date;
|
||||
|
||||
// Llamamos al repositorio con las fechas REALES enviadas desde el frontend
|
||||
var transactions = await _listingRepo.GetDetailedReportAsync(startDate, endDate, targetUserId);
|
||||
|
||||
return Ok(transactions);
|
||||
}
|
||||
|
||||
[HttpGet("cajeros")]
|
||||
[Authorize(Roles = "Cajero,Admin")]
|
||||
public async Task<IActionResult> GetCajeros()
|
||||
{
|
||||
var cajeros = await _listingRepo.GetActiveCashiersAsync();
|
||||
return Ok(cajeros);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user