60 lines
1.0 KiB
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,
|
|
})
|
|
}
|