package openmensa

import (
	"encoding/json"
	"fmt"
	"time"
)

// A Meal object
type Meal struct {
	ID       int    `json:"id"`
	Name     string `json:"name"`
	Category string `json:"category"`
	Prices   struct {
		Students  *float32 `json:"students"`
		Employees *float32 `json:"employees"`
		Pupils    *float32 `json:"pupils"`
		Others    *float32 `json:"others"`
	} `json:"prices"`
	Notes []string `json:"notes"`
}

func (m Meal) String() string {
	return m.Name
}

// TodaysMeals is a helper wrapper for Meals() for today's menu
func (c Canteen) TodaysMeals() (meals []*Meal, err error) {
	now := time.Now()
	return c.GetMeals(now)
}

// GetMeals returns all meals for a given date
func (c Canteen) GetMeals(date time.Time) (meals []*Meal, err error) {
	url := fmt.Sprintf("%s/canteens/%d/days/%s/meals", BaseURL, c.ID, date.Format("2006-01-02"))

	resp, err := get(url)

	err = json.Unmarshal(resp, &meals)

	return
}