lunch-go/pkg/restaurants/menu.go

60 lines
1.0 KiB
Go

package restaurants
import "encoding/json"
type Menu struct {
meals []Meal
valid bool
day string
}
func MakeMenuDefault() Menu {
return Menu{make([]Meal, 0), true, ""}
}
func MakeMenu(meals []Meal, day string) Menu {
return Menu{meals, true, day}
}
func (menu *Menu) Add(isSoup bool, name string, desc string, price int) {
menu.AddMeal(MakeMeal(isSoup, name, desc, price))
}
func (menu *Menu) AddMeal(meal Meal) {
menu.meals = append(menu.meals, meal)
}
func (menu Menu) GetMeals() []Meal {
return menu.meals
}
func (menu *Menu) SetInvalidMenu(invalid bool) {
menu.valid = !invalid
}
func (menu *Menu) SetValidMenu(valid bool) {
menu.valid = valid
}
func (menu Menu) IsValid() bool {
return menu.valid
}
func (menu *Menu) SetDay(day string) {
menu.day = day
}
func (menu Menu) GetDay() string {
return menu.day
}
func (menu *Menu) MarshalJSON() ([]byte, error) {
return json.Marshal(&struct {
Meals []Meal `json:"meals"`
Day string `json:"day"`
}{
Meals: menu.meals,
Day: menu.day,
})
}