Files
Aberwyn/Aberwyn/Models/MenuViewModel.cs
Elias Jansson 9299e29ea6
All checks were successful
continuous-integration/drone/push Build is passing
Wish and veckomeny fixes
2025-09-22 21:22:43 +02:00

248 lines
7.5 KiB
C#

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Aberwyn.Data;
using Aberwyn.Models;
namespace Aberwyn.Models
{
public class MenuViewModel
{
public List<Meal> Meals { get; set; } // List of all available meals
public List<WeeklyMenu> WeeklyMenus { get; set; } // List of weekly menu entries
public int WeekNumber { get; set; } // Week number for the menu
public int Year { get; set; } // Year for the menu
}
public class WeeklyMenuDto
{
public int Id { get; set; }
public int DayOfWeek { get; set; }
public int WeekNumber { get; set; }
public int Year { get; set; }
public int? BreakfastMealId { get; set; }
public int? LunchMealId { get; set; }
public int? DinnerMealId { get; set; }
public string? BreakfastMealName { get; set; }
public string? LunchMealName { get; set; }
public string? DinnerMealName { get; set; }
public byte[]? DinnerMealThumbnail { get; set; }
}
public class WeeklyMenu
{
public int Id { get; set; }
public int DayOfWeek { get; set; }
public int? BreakfastMealId { get; set; }
public int? LunchMealId { get; set; }
public int? DinnerMealId { get; set; }
public string? Cook { get; set; }
public DateTime Date { get; set; }
public int WeekNumber { get; set; }
public int Year { get; set; }
public DateTime CreatedAt { get; set; }
[NotMapped] public byte[]? BreakfastThumbnail { get; set; }
[NotMapped] public byte[]? LunchThumbnail { get; set; }
[NotMapped] public byte[]? DinnerThumbnail { get; set; }
[NotMapped] public string? BreakfastMealName { get; set; }
[NotMapped] public string? LunchMealName { get; set; }
[NotMapped] public string? DinnerMealName { get; set; }
}
public class RecentMenuEntry
{
public DateTime Date { get; set; }
public int WeekNumber { get; set; } // Lägg till vecka
public int Year { get; set; } // Lägg till år
public string BreakfastMealName { get; set; }
public string LunchMealName { get; set; }
public string DinnerMealName { get; set; }
}
public class Meal
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; } // Behåll som obligatorisk
public string? Description { get; set; }
public string? ProteinType { get; set; }
public int? MealCategoryId { get; set; }
[ForeignKey("MealCategoryId")]
public MealCategory? Category { get; set; }
public string? CarbType { get; set; }
public string? RecipeUrl { get; set; }
public string? ImageUrl { get; set; }
public bool IsAvailable { get; set; }
public DateTime CreatedAt { get; set; }
public byte[]? ThumbnailData { get; set; }
public bool IsPublished { get; set; } = false;
public byte[]? ImageData { get; set; }
public string? ImageMimeType { get; set; }
public string? Instructions { get; set; }
public List<Ingredient> Ingredients { get; set; } = new();
}
public class Ingredient
{
public int Id { get; set; }
public int MealId { get; set; }
public string Quantity { get; set; }
public string Item { get; set; }
}
public class MealDto
{
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public bool IsAvailable { get; set; }
public string? ImageUrl { get; set; }
public string? ImageData { get; set; } // base64
public string? ImageMimeType { get; set; }
public static MealListDto FromMeal(Meal meal, bool includeThumbnail = false)
{
return new MealListDto
{
Id = meal.Id,
Name = meal.Name,
Description = meal.Description,
ThumbnailData = includeThumbnail && meal.ThumbnailData != null
? Convert.ToBase64String(meal.ThumbnailData)
: null
};
}
}
public class MealListDto
{
public int Id { get; set; }
public string Name { get; set; } = "";
public string? Description { get; set; }
public string? ThumbnailData { get; set; }
public List<IngredientDto> Ingredients { get; set; } = new();
public static MealListDto FromMeal(Meal meal, bool includeThumbnail = false)
{
return new MealListDto
{
Id = meal.Id,
Name = meal.Name,
Description = meal.Description,
ThumbnailData = includeThumbnail && meal.ThumbnailData != null
? Convert.ToBase64String(meal.ThumbnailData)
: null,
Ingredients = meal.Ingredients?.Select(i => new IngredientDto
{
Item = i.Item
}).ToList() ?? new List<IngredientDto>()
};
}
public class IngredientDto
{
public string Item { get; set; } = "";
}
}
public class MealCategory
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public string? Slug { get; set; }
public string? Description { get; set; }
public string? Icon { get; set; }
public string? Color { get; set; }
public bool IsActive { get; set; } = true;
public int DisplayOrder { get; set; } = 0;
[NotMapped] // krävs om du inte har kolumnen i databasen
public int MealCount { get; set; }
public List<Meal> Meals { get; set; } = new();
}
public class MealWish
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public string? Recipe { get; set; }
public int? LinkedMealId { get; set; }
[ForeignKey("LinkedMealId")]
public Meal? LinkedMeal { get; set; }
[Required]
public string RequestedByUserId { get; set; }
[ForeignKey(nameof(RequestedByUserId))]
public ApplicationUser? RequestedByUser { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public bool IsArchived { get; set; } = false;
public bool IsImported { get; set; } = false;
}
public class CreateMealWishDto
{
public string Name { get; set; }
public string? Recipe { get; set; }
}
public class MealWishDto
{
public int Id { get; set; }
public string Name { get; set; } = "";
public string? Recipe { get; set; }
public bool IsArchived { get; set; }
public bool IsImported { get; set; }
public static MealWishDto FromEntity(MealWish wish)
{
return new MealWishDto
{
Id = wish.Id,
Name = wish.Name,
Recipe = wish.Recipe,
IsArchived = wish.IsArchived,
IsImported = wish.IsImported
};
}
}
public class MealRating
{
public int Id { get; set; }
public int MealId { get; set; }
public string UserId { get; set; }
public int Rating { get; set; }
public DateTime CreatedAt { get; set; }
public Meal Meal { get; set; }
}
public class MealRatingDto
{
public int MealId { get; set; }
public int Rating { get; set; }
}
}