Files
Aberwyn/Aberwyn/Controllers/MealController.cs
Elias Jansson bd8c3a0fab
All checks were successful
continuous-integration/drone/push Build is passing
Recept och bilder
2025-05-22 22:15:33 +02:00

125 lines
3.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Microsoft.AspNetCore.Mvc;
using Aberwyn.Models;
using Aberwyn.Data;
using Microsoft.AspNetCore.Authorization;
namespace Aberwyn.Controllers
{
public class MealController : Controller
{
private readonly IConfiguration _configuration;
private readonly IHostEnvironment _env;
public MealController(IConfiguration configuration, IHostEnvironment env)
{
_configuration = configuration;
_env = env;
}
[HttpGet]
public IActionResult View(int id, bool edit = false)
{
var service = new MenuService(_configuration, _env);
var meal = service.GetMealById(id);
ViewData["IsEditing"] = edit; // → här
if (meal == null)
{
return NotFound();
}
return View("View", meal);
}
[HttpGet]
[Route("Meal/Tooltip/{id}")]
public IActionResult Tooltip(int id)
{
try
{
var service = new MenuService(_configuration, _env);
var meal = service.GetMealById(id);
if (meal == null)
return Content("<div>Hittade ingen rätt.</div>", "text/html");
// Se till att Description aldrig är null
var desc = meal.Description ?? "";
// Gör en kort beskrivning
var shortDesc = desc.Length > 100
? desc.Substring(0, 100) + "…"
: desc;
// Bygg upp en enkel HTML-snutt
var html =
$"<div class='tooltip-content'>" +
$" <strong>{meal.Name}</strong><br/>" +
(string.IsNullOrWhiteSpace(shortDesc)
? "<em>Ingen beskrivning tillgänglig.</em>"
: $"<em>{shortDesc}</em>") +
"</div>";
return Content(html, "text/html");
}
catch (Exception ex)
{
// För felsökning kan du logga ex.Message, men för tillfället returnera det så vi ser det i devtools
return StatusCode(500, $"<pre>{ex.Message}</pre>");
}
}
[HttpGet]
public IActionResult Edit(int? id)
{
var service = new MenuService(_configuration, _env);
var meal = id.HasValue ? service.GetMealById(id.Value) : new Meal();
return View("Meal", meal);
}
[HttpPost]
public IActionResult SaveMeal(Meal meal, IFormFile ImageFile, string ExistingImageUrl)
{
var service = new MenuService(_configuration, _env);
if (ImageFile != null && ImageFile.Length > 0)
{
using var ms = new MemoryStream();
ImageFile.CopyTo(ms);
meal.ImageData = ms.ToArray();
meal.ImageMimeType = ImageFile.ContentType;
}
else
{
var existingMeal = service.GetMealById(meal.Id);
if (existingMeal != null)
{
meal.ImageData = existingMeal.ImageData;
meal.ImageMimeType = existingMeal.ImageMimeType;
}
}
// 🔁 Här är ändringen använd metoden som även sparar ingredienser
service.SaveOrUpdateMealWithIngredients(meal);
return RedirectToAction("View", new { id = meal.Id });
}
[HttpPost]
public IActionResult DeleteMeal(int id)
{
var service = new MenuService(_configuration, _env);
//service.DeleteMeal(id);
return RedirectToAction("Edit"); // eller tillbaka till lista
}
}
}