New stuff

This commit is contained in:
Elias Jansson
2025-02-24 15:43:47 +01:00
parent 36429beada
commit 4635724569
22 changed files with 1493 additions and 294 deletions

117
Aberwyn/wwwroot/js/menu.js Normal file
View File

@@ -0,0 +1,117 @@
angular.module('mealMenuApp', [])
.controller('MealMenuController', function ($scope, $http) {
$scope.isEditing = false;
$scope.toggleEditMode = function () {
$scope.isEditing = !$scope.isEditing;
};
$scope.meals = [];
$scope.menu = {};
$scope.showNewMealForm = false;
$scope.newMeal = {};
$scope.selectedMealDay = null;
$scope.selectedMealType = null;
const today = new Date();
$scope.selectedWeek = getWeek(today);
$scope.selectedYear = today.getFullYear();
$scope.daysOfWeek = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
$scope.loadMeals = function () {
$http.get('/api/mealMenuApi/getMeals')
.then(response => {
$scope.meals = response.data;
})
.catch(error => console.error("Error fetching meals:", error));
};
$scope.loadMenu = function () {
$http.get('/api/mealMenuApi/menu', {
params: { weekNumber: $scope.selectedWeek, year: $scope.selectedYear }
}).then(response => {
$scope.menu = {};
response.data.forEach(item => {
const dayOfWeek = $scope.daysOfWeek[item.dayOfWeek - 1];
if (!$scope.menu[dayOfWeek]) $scope.menu[dayOfWeek] = {};
if (item.breakfastMealId) {
$scope.menu[dayOfWeek].breakfastMealId = item.breakfastMealId;
$scope.menu[dayOfWeek].breakfastMealName = getMealNameById(item.breakfastMealId);
}
if (item.lunchMealId) {
$scope.menu[dayOfWeek].lunchMealId = item.lunchMealId;
$scope.menu[dayOfWeek].lunchMealName = getMealNameById(item.lunchMealId);
}
if (item.dinnerMealId) {
$scope.menu[dayOfWeek].dinnerMealId = item.dinnerMealId;
$scope.menu[dayOfWeek].dinnerMealName = getMealNameById(item.dinnerMealId);
}
});
}).catch(error => console.error("Error fetching weekly menu:", error));
};
function getMealNameById(mealId) {
const meal = $scope.meals.find(m => m.id === mealId);
return meal ? meal.name : "Unknown Meal";
}
$scope.handleMealSelection = function (day, mealType) {
if ($scope.menu[day][mealType + "MealId"] === "new") {
$scope.showNewMealForm = true;
$scope.newMeal = { name: "", description: "", proteinType: "", carbType: "", recipeUrl: "" };
$scope.selectedMealDay = day;
$scope.selectedMealType = mealType;
}
};
$scope.saveNewMeal = function () {
if (!$scope.newMeal.name) {
alert("Meal name is required");
return;
}
$http.post('/api/mealMenuApi/addMeal', $scope.newMeal)
.then(response => {
const addedMeal = response.data;
$scope.meals.push(addedMeal);
$scope.menu[$scope.selectedMealDay][$scope.selectedMealType + "MealId"] = addedMeal.id;
$scope.showNewMealForm = false;
$scope.newMeal = {}; // Reset new meal data after save
})
.catch(error => console.error("Error saving new meal:", error));
};
$scope.cancelNewMeal = function () {
$scope.showNewMealForm = false;
$scope.newMeal = {}; // Reset new meal data when canceled
};
function getWeek(date) {
const day = date.getDay() || 7;
date.setDate(date.getDate() + 4 - day);
const yearStart = new Date(date.getFullYear(), 0, 1);
return Math.ceil(((date - yearStart) / 86400000 + 1) / 7);
}
$scope.goToPreviousWeek = function () {
if ($scope.selectedWeek === 1) {
$scope.selectedYear--;
$scope.selectedWeek = 52;
} else {
$scope.selectedWeek--;
}
$scope.loadMenu();
};
$scope.goToNextWeek = function () {
if ($scope.selectedWeek === 52) {
$scope.selectedYear++;
$scope.selectedWeek = 1;
} else {
$scope.selectedWeek++;
}
$scope.loadMenu();
};
$scope.loadMeals();
$scope.loadMenu();
});