{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TemplateHaskell #-}

module Data.Aviation.Casr.Logbook.Types.SimulatorFlight(
  SimulatorFlight(..)
, HasSimulatorFlight(..)
, dayonlysimulator
) where

import Control.Category((.))
import Control.Lens(makeClassy)
import Data.Aviation.Casr.Logbook.Types.Time(Time, HasTime(time), dayonly)
import Data.Aviation.Casr.Logbook.Types.Aviator(Aviator)
import Data.Aviation.Casr.Logbook.Types.TimeAmount(TimeAmount)
import Data.Eq(Eq)
import Data.Ord(Ord)
import Data.String(String)
import Data.Time(Day)
import Prelude(Show)

data SimulatorFlight =
  SimulatorFlight {
    _simulatorflightname :: String
  , _simulatorflighttime :: Time
  , _simulatortype :: String
  , _simulatorothercrew :: [Aviator]
  , _simulatorTime :: TimeAmount
  , _instrumentsimulatorTime :: TimeAmount
  } deriving (Eq, Ord, Show)

makeClassy ''SimulatorFlight

instance HasTime SimulatorFlight where
  time =
    simulatorflighttime . time

dayonlysimulator ::
  String
  -> Day
  -> String
  -> [Aviator]
  -> TimeAmount
  -> TimeAmount
  -> SimulatorFlight
dayonlysimulator n d =
  SimulatorFlight
    n
    (dayonly d)