Files
administration/Controllers/RevenueController.cs

127 lines
4.1 KiB
C#

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;
}
/// <summary>
/// Récupère les X derniers revenues depuis la base de données.
/// </summary>
/// <param name="rows">Nombre de lignes à retourner</param>
/// <returns>Liste des revenues</returns>
[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");
}
}
/// <summary>
/// Récupère le dernier revenue depuis la base de données.
/// </summary>
/// <returns>Le dernier revenue</returns>
[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");
}
}
/// <summary>
/// Récupère tous les revenues depuis la base de données.
/// </summary>
/// <returns>Liste de revenues</returns>
[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");
}
}
/// <summary>
/// Récupère toutes les ressources supplémentaires dont le type de transaction contient "revenu".
/// </summary>
/// <returns>Liste des ressources supplémentaires</returns>
[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");
}
}
}
}