Files
Aberwyn/Aberwyn/Controllers/UserController.cs
elias 256ce76af1
All checks were successful
continuous-integration/drone/push Build is passing
Pizza notice
2025-06-06 12:57:49 +02:00

62 lines
1.8 KiB
C#

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Aberwyn.Models;
using System.Threading.Tasks;
using Aberwyn.Data;
namespace Aberwyn.Controllers
{
[Authorize]
public class UserController : Controller
{
private readonly UserManager<ApplicationUser> _userManager;
private readonly ApplicationDbContext _context;
public UserController(UserManager<ApplicationUser> userManager, ApplicationDbContext context)
{
_userManager = userManager;
_context = context;
}
[HttpGet]
public async Task<IActionResult> Profile()
{
var user = await _userManager.GetUserAsync(User);
var prefs = await _context.UserPreferences.FindAsync(user.Id) ?? new UserPreferences();
var model = new UserProfileViewModel
{
Name = user.UserName,
Email = user.Email,
NotifyPizza = prefs.NotifyPizza,
NotifyMenu = prefs.NotifyMenu,
NotifyBudget = prefs.NotifyBudget
};
return View(model);
}
[HttpPost]
public async Task<IActionResult> SaveProfile(UserProfileViewModel model)
{
var user = await _userManager.GetUserAsync(User);
var prefs = await _context.UserPreferences.FindAsync(user.Id);
if (prefs == null)
{
prefs = new UserPreferences { UserId = user.Id };
_context.UserPreferences.Add(prefs);
}
prefs.NotifyPizza = model.NotifyPizza;
prefs.NotifyMenu = model.NotifyMenu;
prefs.NotifyBudget = model.NotifyBudget;
await _context.SaveChangesAsync();
return RedirectToAction("Profile");
}
}
}