using Microsoft.AspNetCore.Mvc; using administration.Services; using administration.Models.Finances; using Microsoft.AspNetCore.Authorization; namespace administration.Controllers.Finances { [Authorize] public class FinancesController : Controller { public IActionResult Index() { return View(); } private readonly FinancesContext _context; private readonly IUserSessionService _userSession; public FinancesController(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"); } } /// /// Récupère les revenues depuis la base de données avec l'id X. /// /// L'id du revenue /// Le bon revenue [HttpGet("revenues_by_id")] public IActionResult GetRevenueByID(int id) { try { Revenue revenue = _context.Revenues .Where(r => r.Id == id) .FirstOrDefault(); return Ok(revenue); } catch (Exception ex) { return StatusCode(500, $"Erreur serveur : {ex.Message}, Méthode GetRevenueByID"); } } } }