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

module Data.Aviation.Casr.Logbook.Types.Time(
  Time(..)
, HasTime(..)
, dayonly
, dayandtime
) where

import Control.Lens(makeClassy)
import Data.Eq(Eq)
import Data.Ord(Ord)
import Data.Maybe(Maybe(Nothing, Just))
import Data.Time(Day, TimeOfDay)
import Prelude(Show)

data Time =
  Time {
    _daytime :: Day
  , _timeofday :: Maybe TimeOfDay
  } deriving (Eq, Ord, Show)

makeClassy ''Time

dayonly ::
  Day
  -> Time
dayonly d =
  Time d Nothing

dayandtime ::
  Day
  -> TimeOfDay
  -> Time
dayandtime d t =
  Time d (Just t)