{-# OPTIONS_GHC -Wall #-} {-# LANGUAGE TemplateHaskell #-} module Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense( SimulatorFlightExpense(SimulatorFlightExpense) , HasSimulatorFlightExpense(..) , simulatorFlightCost ) where import Control.Lens(makeClassy, (^.)) import Data.Aviation.Casr.Logbook.Types.SimulatorFlight(HasSimulatorFlight, instrumentsimulatorTime) import Data.Aviation.Casr.Logbook.Types.TimeAmount(timeAmountBy10) import Data.Eq(Eq) import Data.Int(Int) import Data.Ord(Ord) import Data.String(String) import Prelude(Show, (*)) data SimulatorFlightExpense = SimulatorFlightExpense { SimulatorFlightExpense -> Int _simulatorflightexpenseperhour :: Int , SimulatorFlightExpense -> String _simulatorflightexpensename :: String } deriving (SimulatorFlightExpense -> SimulatorFlightExpense -> Bool (SimulatorFlightExpense -> SimulatorFlightExpense -> Bool) -> (SimulatorFlightExpense -> SimulatorFlightExpense -> Bool) -> Eq SimulatorFlightExpense forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: SimulatorFlightExpense -> SimulatorFlightExpense -> Bool == :: SimulatorFlightExpense -> SimulatorFlightExpense -> Bool $c/= :: SimulatorFlightExpense -> SimulatorFlightExpense -> Bool /= :: SimulatorFlightExpense -> SimulatorFlightExpense -> Bool Eq, Eq SimulatorFlightExpense Eq SimulatorFlightExpense => (SimulatorFlightExpense -> SimulatorFlightExpense -> Ordering) -> (SimulatorFlightExpense -> SimulatorFlightExpense -> Bool) -> (SimulatorFlightExpense -> SimulatorFlightExpense -> Bool) -> (SimulatorFlightExpense -> SimulatorFlightExpense -> Bool) -> (SimulatorFlightExpense -> SimulatorFlightExpense -> Bool) -> (SimulatorFlightExpense -> SimulatorFlightExpense -> SimulatorFlightExpense) -> (SimulatorFlightExpense -> SimulatorFlightExpense -> SimulatorFlightExpense) -> Ord SimulatorFlightExpense SimulatorFlightExpense -> SimulatorFlightExpense -> Bool SimulatorFlightExpense -> SimulatorFlightExpense -> Ordering SimulatorFlightExpense -> SimulatorFlightExpense -> SimulatorFlightExpense 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 :: SimulatorFlightExpense -> SimulatorFlightExpense -> Ordering compare :: SimulatorFlightExpense -> SimulatorFlightExpense -> Ordering $c< :: SimulatorFlightExpense -> SimulatorFlightExpense -> Bool < :: SimulatorFlightExpense -> SimulatorFlightExpense -> Bool $c<= :: SimulatorFlightExpense -> SimulatorFlightExpense -> Bool <= :: SimulatorFlightExpense -> SimulatorFlightExpense -> Bool $c> :: SimulatorFlightExpense -> SimulatorFlightExpense -> Bool > :: SimulatorFlightExpense -> SimulatorFlightExpense -> Bool $c>= :: SimulatorFlightExpense -> SimulatorFlightExpense -> Bool >= :: SimulatorFlightExpense -> SimulatorFlightExpense -> Bool $cmax :: SimulatorFlightExpense -> SimulatorFlightExpense -> SimulatorFlightExpense max :: SimulatorFlightExpense -> SimulatorFlightExpense -> SimulatorFlightExpense $cmin :: SimulatorFlightExpense -> SimulatorFlightExpense -> SimulatorFlightExpense min :: SimulatorFlightExpense -> SimulatorFlightExpense -> SimulatorFlightExpense Ord, Int -> SimulatorFlightExpense -> ShowS [SimulatorFlightExpense] -> ShowS SimulatorFlightExpense -> String (Int -> SimulatorFlightExpense -> ShowS) -> (SimulatorFlightExpense -> String) -> ([SimulatorFlightExpense] -> ShowS) -> Show SimulatorFlightExpense forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> SimulatorFlightExpense -> ShowS showsPrec :: Int -> SimulatorFlightExpense -> ShowS $cshow :: SimulatorFlightExpense -> String show :: SimulatorFlightExpense -> String $cshowList :: [SimulatorFlightExpense] -> ShowS showList :: [SimulatorFlightExpense] -> ShowS Show) makeClassy ''SimulatorFlightExpense simulatorFlightCost :: HasSimulatorFlight s => s -> SimulatorFlightExpense -> Int simulatorFlightCost :: forall s. HasSimulatorFlight s => s -> SimulatorFlightExpense -> Int simulatorFlightCost s sf (SimulatorFlightExpense Int perhour String _) = let z :: TimeAmount z = s sf s -> Getting TimeAmount s TimeAmount -> TimeAmount forall s a. s -> Getting a s a -> a ^. Getting TimeAmount s TimeAmount forall c. HasSimulatorFlight c => Lens' c TimeAmount Lens' s TimeAmount instrumentsimulatorTime in TimeAmount -> Int timeAmountBy10 TimeAmount z Int -> Int -> Int forall a. Num a => a -> a -> a * Int perhour