{-# OPTIONS_GHC -Wall #-} {-# LANGUAGE TemplateHaskell #-} module Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense( AircraftUsageExpense(AircraftUsageExpense) , HasAircraftUsageExpense(..) , aircraftUsageCost ) where import Control.Lens(makeClassy, (^.)) import Data.Aviation.Casr.Logbook.Types.AircraftFlight(HasAircraftFlight, daynight) import Data.Aviation.Casr.Logbook.Types.TimeAmount(timeAmountBy10) import Data.Aviation.Casr.Logbook.Types.DayNight(totalDayNight) import Data.Eq(Eq) import Data.Int(Int) import Data.Ord(Ord) import Data.String(String) import Prelude(Show, (*)) data AircraftUsageExpense = AircraftUsageExpense { AircraftUsageExpense -> Int _aircraftusageexpenseperhour :: Int , AircraftUsageExpense -> String _aircraftusageexpensename :: String } deriving (AircraftUsageExpense -> AircraftUsageExpense -> Bool (AircraftUsageExpense -> AircraftUsageExpense -> Bool) -> (AircraftUsageExpense -> AircraftUsageExpense -> Bool) -> Eq AircraftUsageExpense forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: AircraftUsageExpense -> AircraftUsageExpense -> Bool == :: AircraftUsageExpense -> AircraftUsageExpense -> Bool $c/= :: AircraftUsageExpense -> AircraftUsageExpense -> Bool /= :: AircraftUsageExpense -> AircraftUsageExpense -> Bool Eq, Eq AircraftUsageExpense Eq AircraftUsageExpense => (AircraftUsageExpense -> AircraftUsageExpense -> Ordering) -> (AircraftUsageExpense -> AircraftUsageExpense -> Bool) -> (AircraftUsageExpense -> AircraftUsageExpense -> Bool) -> (AircraftUsageExpense -> AircraftUsageExpense -> Bool) -> (AircraftUsageExpense -> AircraftUsageExpense -> Bool) -> (AircraftUsageExpense -> AircraftUsageExpense -> AircraftUsageExpense) -> (AircraftUsageExpense -> AircraftUsageExpense -> AircraftUsageExpense) -> Ord AircraftUsageExpense AircraftUsageExpense -> AircraftUsageExpense -> Bool AircraftUsageExpense -> AircraftUsageExpense -> Ordering AircraftUsageExpense -> AircraftUsageExpense -> AircraftUsageExpense forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: AircraftUsageExpense -> AircraftUsageExpense -> Ordering compare :: AircraftUsageExpense -> AircraftUsageExpense -> Ordering $c< :: AircraftUsageExpense -> AircraftUsageExpense -> Bool < :: AircraftUsageExpense -> AircraftUsageExpense -> Bool $c<= :: AircraftUsageExpense -> AircraftUsageExpense -> Bool <= :: AircraftUsageExpense -> AircraftUsageExpense -> Bool $c> :: AircraftUsageExpense -> AircraftUsageExpense -> Bool > :: AircraftUsageExpense -> AircraftUsageExpense -> Bool $c>= :: AircraftUsageExpense -> AircraftUsageExpense -> Bool >= :: AircraftUsageExpense -> AircraftUsageExpense -> Bool $cmax :: AircraftUsageExpense -> AircraftUsageExpense -> AircraftUsageExpense max :: AircraftUsageExpense -> AircraftUsageExpense -> AircraftUsageExpense $cmin :: AircraftUsageExpense -> AircraftUsageExpense -> AircraftUsageExpense min :: AircraftUsageExpense -> AircraftUsageExpense -> AircraftUsageExpense Ord, Int -> AircraftUsageExpense -> ShowS [AircraftUsageExpense] -> ShowS AircraftUsageExpense -> String (Int -> AircraftUsageExpense -> ShowS) -> (AircraftUsageExpense -> String) -> ([AircraftUsageExpense] -> ShowS) -> Show AircraftUsageExpense forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> AircraftUsageExpense -> ShowS showsPrec :: Int -> AircraftUsageExpense -> ShowS $cshow :: AircraftUsageExpense -> String show :: AircraftUsageExpense -> String $cshowList :: [AircraftUsageExpense] -> ShowS showList :: [AircraftUsageExpense] -> ShowS Show) makeClassy ''AircraftUsageExpense aircraftUsageCost :: HasAircraftFlight s => s -> AircraftUsageExpense -> Int aircraftUsageCost :: forall s. HasAircraftFlight s => s -> AircraftUsageExpense -> Int aircraftUsageCost s fl (AircraftUsageExpense Int perhour String _) = let z :: TimeAmount z = DayNight -> TimeAmount totalDayNight (s fl s -> Getting DayNight s DayNight -> DayNight forall s a. s -> Getting a s a -> a ^. Getting DayNight s DayNight forall c. HasAircraftFlight c => Lens' c DayNight Lens' s DayNight daynight) in TimeAmount -> Int timeAmountBy10 TimeAmount z Int -> Int -> Int forall a. Num a => a -> a -> a * Int perhour