This commit is contained in:
Elias Jansson
2025-06-02 09:21:48 +02:00
26 changed files with 4204 additions and 646 deletions

View File

@@ -2,31 +2,23 @@
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Aberwyn.Models;
using Aberwyn.Data;
using Microsoft.EntityFrameworkCore;
namespace Aberwyn.Controllers
{
[Authorize(Roles = "Admin")]
public class AdminController : Controller
{
private readonly UserManager<ApplicationUser> _userManager;
private readonly RoleManager<IdentityRole> _roleManager;
private readonly ApplicationDbContext _context;
public AdminController(
UserManager<ApplicationUser> userManager,
RoleManager<IdentityRole> roleManager,
ApplicationDbContext context)
public AdminController(UserManager<ApplicationUser> userManager, RoleManager<IdentityRole> roleManager)
{
_userManager = userManager;
_roleManager = roleManager;
_context = context;
}
public async Task<IActionResult> Index()
{
var users = _userManager.Users.ToList();
@@ -96,45 +88,58 @@ namespace Aberwyn.Controllers
return RedirectToAction("Index");
}
[HttpGet]
public IActionResult Todo()
{
return View();
}
[HttpGet]
public async Task<IActionResult> GetTodoTasks()
{
var tasks = await _context.TodoTasks.ToListAsync();
return Json(tasks);
}
[HttpPost]
public async Task<IActionResult> AddTodoTask([FromBody] TodoTask task)
[Authorize(Roles = "Admin")]
public IActionResult ImportMealsFromProd()
{
var prodService = MenuService.CreateWithConfig(_configuration, _env, useProdDb: true);
var devService = new MenuService(_context); // injicerad context används
var prodMeals = prodService.GetMealsDetailed();
foreach (var meal in prodMeals)
{
// Kopiera utan ID (för att undvika konflikt) och spara
var newMeal = new Meal
{
task.CreatedAt = DateTime.UtcNow;
task.Priority = task.Priority == 0 ? 1 : task.Priority; // default till låg om ej satt
_context.TodoTasks.Add(task);
await _context.SaveChangesAsync();
return Ok(task);
Name = meal.Name,
Description = meal.Description,
ProteinType = meal.ProteinType,
Category = meal.Category,
CarbType = meal.CarbType,
RecipeUrl = meal.RecipeUrl,
ImageUrl = meal.ImageUrl,
IsAvailable = meal.IsAvailable,
CreatedAt = meal.CreatedAt,
Instructions = meal.Instructions,
ImageData = meal.ImageData,
ImageMimeType = meal.ImageMimeType,
Ingredients = meal.Ingredients.Select(i => new Ingredient
{
Quantity = i.Quantity,
Item = i.Item
}).ToList()
};
devService.SaveOrUpdateMealWithIngredients(newMeal);
}
return Content("Import klar!");
}
[HttpPost]
[Authorize(Roles = "Admin")]
[HttpPost]
[Authorize(Roles = "Admin")]
public IActionResult ImportMenusFromProd()
{
var prodService = MenuService.CreateWithConfig(_configuration, _env, useProdDb: true);
var devService = new MenuService(_context);
var allProdMenus = prodService.GetAllWeeklyMenus();
var allMeals = devService.GetMeals();
return RedirectToAction("Index");
}
[HttpPost]
public async Task<IActionResult> UpdateTodoTask([FromBody] TodoTask task)
{
var existing = await _context.TodoTasks.FindAsync(task.Id);
if (existing == null) return NotFound();
existing.Title = task.Title;
existing.Status = task.Status;
existing.Priority = task.Priority;
await _context.SaveChangesAsync();
return Ok();
}
}