using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Authorization; using Microsoft.EntityFrameworkCore; using RR3CommunityServer.Data; using static RR3CommunityServer.Data.RR3DbContext; namespace RR3CommunityServer.Pages; [Authorize] public class CatalogModel : PageModel { private readonly RR3DbContext _context; public CatalogModel(RR3DbContext context) { _context = context; } public List CatalogItems { get; set; } = new(); public async Task OnGetAsync() { CatalogItems = await _context.CatalogItems .OrderBy(c => c.Type) .ThenBy(c => c.Name) .ToListAsync(); } public async Task OnPostAddAsync(string sku, string name, string type, decimal price, bool available) { var item = new CatalogItem { Sku = sku, Name = name, Type = type, Price = price, Available = available }; _context.CatalogItems.Add(item); await _context.SaveChangesAsync(); return RedirectToPage(); } public async Task OnPostUpdateAsync(int itemId, string sku, string name, string type, decimal price, bool available) { var item = await _context.CatalogItems.FindAsync(itemId); if (item != null) { item.Sku = sku; item.Name = name; item.Type = type; item.Price = price; item.Available = available; await _context.SaveChangesAsync(); } return RedirectToPage(); } public async Task OnPostToggleAvailabilityAsync(int itemId) { var item = await _context.CatalogItems.FindAsync(itemId); if (item != null) { item.Available = !item.Available; await _context.SaveChangesAsync(); } return RedirectToPage(); } public async Task OnPostDeleteAsync(int itemId) { var item = await _context.CatalogItems.FindAsync(itemId); if (item != null) { _context.CatalogItems.Remove(item); await _context.SaveChangesAsync(); } return RedirectToPage(); } }