{- HLINT ignore "Avoid restricted extensions" -}
{-# LANGUAGE DeriveGeneric #-}

module Buffet.Document.TemplateBuffet
  ( get
  ) where

import qualified Buffet.Document.TemplateDishes as TemplateDishes
import qualified Buffet.Document.TemplateTagGroups as TemplateTagGroups
import qualified Buffet.Ir.Ir as Ir
import qualified Buffet.Toolbox.TextTools as TextTools
import qualified Data.Aeson as Aeson
import qualified Data.Map.Strict as Map
import qualified GHC.Generics as Generics
import Prelude (Eq, Ord, Show)

data Buffet =
  Buffet
    { dishes :: [TemplateDishes.Dish]
    , tagGroups :: Map.Map Ir.TagKey [TemplateTagGroups.TagGroup]
    }
  deriving (Eq, Generics.Generic, Ord, Show)

instance Aeson.ToJSON Buffet where
  toJSON = Aeson.genericToJSON TextTools.defaultJsonOptions

get :: Ir.Buffet -> Buffet
get buffet =
  Buffet
    { dishes = TemplateDishes.get buffet
    , tagGroups = TemplateTagGroups.get buffet
    }