using Microsoft.AspNetCore.Mvc; using Frontend.Services; using LibraryManagement.Shared.Models; using Frontend.Models; using Microsoft.AspNetCore.Authorization; using System.Threading.Tasks; using System.Linq; namespace Frontend.Controllers { [Authorize(Roles = "Admin,Librarian")] public class SubscriptionsController : Controller { private readonly LibraryApiClient _apiClient; public SubscriptionsController(LibraryApiClient apiClient) { _apiClient = apiClient; } public async Task Index() { var memberships = await _apiClient.GetMembershipsAsync(); var activeSubscriptions = await _apiClient.GetAllSubscriptionsAsync(); var viewModel = new SubscriptionsViewModel { AvailableMemberships = memberships?.ToList() ?? new List(), ActiveSubscriptions = activeSubscriptions?.ToList() ?? new List() }; return View(viewModel); } public async Task Rewards() { var pendingClaims = await _apiClient.GetPendingRedemptionsAsync(); return View("LoyaltyClaims", pendingClaims.ToList()); } [HttpPost] public async Task FulfillRedemption(string id) { var (success, message) = await _apiClient.FulfillRedemptionAsync(id); if (success) { TempData["Success"] = message; } else { TempData["Error"] = message; } return RedirectToAction("Rewards"); } } }