{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE TemplateHaskell #-} module Data.Aviation.Casr.Logbook.Types.Exam( Exam(..) , HasExam(..) , dayonlyexam ) where import Control.Category((.)) import Control.Lens(makeClassy) import Data.Aviation.Casr.Logbook.Types.Aviator(Aviator, HasAviator(aviator)) import Data.Aviation.Casr.Logbook.Types.Time(Time, HasTime(time), dayonly) import Data.Aviation.Casr.Logbook.Types.Location(Location, HasLocation(location)) import Data.Eq(Eq) import Data.Int(Int) import Data.Ord(Ord) import Data.String(String) import Data.Time(Day) import Prelude(Show) data Exam = Exam { _examName :: String , _examLocation :: Location , _examTime :: Time , _examDelegate :: Aviator , _examResult :: Int , _examResultMaximum :: Int } deriving (Eq, Ord, Show) makeClassy ''Exam instance HasLocation Exam where location = examLocation . location instance HasTime Exam where time = examTime . time instance HasAviator Exam where aviator = examDelegate . aviator dayonlyexam :: String -> Location -> Day -> Aviator -> Int -> Int -> Exam dayonlyexam n l d = Exam n l (dayonly d)