using Microsoft.AspNetCore.Mvc;
using administration.Models;
using administration.Services;
namespace administration.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class RevenueController : ControllerBase
{
private readonly FinancesContext _context;
private readonly IUserSessionService _userSession;
public RevenueController(FinancesContext context, IUserSessionService userSession)
{
_context = context;
_userSession = userSession;
}
///
/// Récupère les X derniers revenues depuis la base de données.
///
/// Nombre de lignes à retourner
/// Liste des revenues
[HttpGet("x_revenues")]
public IActionResult GetXRevenues([FromQuery] int rows = 1)
{
try
{
if (_userSession.UserId == null)
return Unauthorized("Utilisateur non connecté.");
var revenues = _context.Revenues
.Where(r => r.UserId == _userSession.UserId)
.OrderByDescending(r => r.Id)
.Take(rows)
.ToList();
return Ok(revenues);
}
catch (Exception ex)
{
return StatusCode(500, $"Erreur serveur : {ex.Message}, Méthode GetXRevenues");
}
}
///
/// Récupère le dernier revenue depuis la base de données.
///
/// Le dernier revenue
[HttpGet("last_revenue")]
public IActionResult GetLastRevenues()
{
try
{
if (_userSession.UserId == null)
return Unauthorized("Utilisateur non connecté.");
var revenue = _context.Revenues
.Where(r => r.UserId == _userSession.UserId)
.OrderByDescending(r => r.Id)
.FirstOrDefault();
return Ok(revenue);
}
catch (Exception ex)
{
return StatusCode(500, $"Erreur serveur : {ex.Message}, Méthode GetLastRevenues");
}
}
///
/// Récupère tous les revenues depuis la base de données.
///
/// Liste de revenues
[HttpGet("all_revenues")]
public IActionResult GetAllRevenues()
{
try
{
if (_userSession.UserId == null)
return Unauthorized("Utilisateur non connecté.");
var revenues = _context.Revenues
.Where(r => r.UserId == _userSession.UserId)
.OrderByDescending(r => r.Id)
.ToList();
return Ok(revenues);
}
catch (Exception ex)
{
return StatusCode(500, $"Erreur serveur : {ex.Message}, Méthode GetAllRevenues");
}
}
///
/// Récupère toutes les ressources supplémentaires dont le type de transaction contient "revenu".
///
/// Liste des ressources supplémentaires
[HttpGet("additional_revenues")]
public IActionResult GetAdditionalRevenues()
{
try
{
if (_userSession.UserId == null)
return Unauthorized("Utilisateur non connecté.");
var revenus = _context.AdditionalSources
.Where(r => r.UserId == _userSession.UserId &&
r.TransactionType.ToLower().Contains("revenu") &&
r.Date.Month == DateTime.Now.Month)
.OrderByDescending(r => r.Id)
.ToList();
return Ok(revenus);
}
catch (Exception ex)
{
return StatusCode(500, $"Erreur serveur : {ex.Message}, Méthode GetAdditionalRevenues");
}
}
}
}