Cześć,
Buduję sobie aplikację w ASP .NET Core korzystając z EF Core (Code First). O tyle o ile proste zapytania wyciągające pełne obiekty po id czy listę wszystkich obiektów udało mi się ogarnąć poprzez repozytoria, gdzie umieszczam metody w LINQ tak mam teraz dość złożony case.
Aplikacja służy do budowania diety przez użytkownika:
- użytkownik dodaje nową dietę, a w niej kolejne dni
- dni składają się z posiłków
- posiłki składają się z produktów i ich ilości
Chciałbym dodać funkcjonalność generowania listy zakupów dla użytkownika, na podstawie wybranych dni oraz ilości tych dni wpisanych w inputa na froncie (kolumna ilość dni
nie znajduje się w bazie). Na początku myślałem aby wykonać to w kodzie w jakiejś metodzie, której pętla iteruje najpierw po dniach, później po posiłkach, a następnie po produktach i sumuje wartości. Porzuciłem tą koncepcję, ponieważ wydaje się to być przekombinowane aby w pętli dodawać ilości kilkudziesięciu różnych produktów.
Mam gotowe zapytanie do bazy, ale chcę je przerobić na procedurę i wykorzystać ją w kodzie. Problem w tym, że nie wiem jak uwzględnić daną z frontu (ilość dni) i zawrzeć ją w zapytaniu skoro nie znajduje się w bazie. Wcześniej budowałem jedynie zapytania, to pierwsza procedura w moim kodzie. Prośba o pomoc.
Poniżej zapytanie SQL, z którego ma powstać procedura i dodatkowo ma uwzględniać ilość danych dni podanych przez użytkownika z frontu:
SELECT
P.CategoryId,
MP.ProductId,
SUM(MP.Quantity) AS 'Ilość'
FROM [MealAppDB].[dbo].[DayDiets] DD
RIGHT JOIN [MealAppDB].[dbo].[DayDietMeals] DDM
ON DDM.DietDayId = DD.Id
RIGHT JOIN [MealAppDB].[dbo].[MealProducts] MP
ON MP.MealId = DDM.MealId
RIGHT JOIN [MealAppDB].[dbo].[Products] P
ON P.Id = MP.ProductId
WHERE DD.ID IN (36,68, 69)
GROUP BY P.CategoryId, MP.ProductId
A to część bazy wykorzystana w zapytaniu: