{-# OPTIONS_GHC -Wall #-} {-# LANGUAGE TemplateHaskell #-} module Data.Aviation.Casr.Logbook.Meta.BriefingExpense( BriefingExpense(BriefingExpense) , HasBriefingExpense(..) , briefingCost ) where import Control.Lens(makeClassy, (^.)) import Data.Aviation.Casr.Logbook.Types.Briefing(HasBriefing, briefingTimeAmount) 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 BriefingExpense = BriefingExpense { BriefingExpense -> Int _briefingexpenseperhour :: Int , BriefingExpense -> String _briefingexpensename :: String } deriving (BriefingExpense -> BriefingExpense -> Bool (BriefingExpense -> BriefingExpense -> Bool) -> (BriefingExpense -> BriefingExpense -> Bool) -> Eq BriefingExpense forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: BriefingExpense -> BriefingExpense -> Bool == :: BriefingExpense -> BriefingExpense -> Bool $c/= :: BriefingExpense -> BriefingExpense -> Bool /= :: BriefingExpense -> BriefingExpense -> Bool Eq, Eq BriefingExpense Eq BriefingExpense => (BriefingExpense -> BriefingExpense -> Ordering) -> (BriefingExpense -> BriefingExpense -> Bool) -> (BriefingExpense -> BriefingExpense -> Bool) -> (BriefingExpense -> BriefingExpense -> Bool) -> (BriefingExpense -> BriefingExpense -> Bool) -> (BriefingExpense -> BriefingExpense -> BriefingExpense) -> (BriefingExpense -> BriefingExpense -> BriefingExpense) -> Ord BriefingExpense BriefingExpense -> BriefingExpense -> Bool BriefingExpense -> BriefingExpense -> Ordering BriefingExpense -> BriefingExpense -> BriefingExpense 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 :: BriefingExpense -> BriefingExpense -> Ordering compare :: BriefingExpense -> BriefingExpense -> Ordering $c< :: BriefingExpense -> BriefingExpense -> Bool < :: BriefingExpense -> BriefingExpense -> Bool $c<= :: BriefingExpense -> BriefingExpense -> Bool <= :: BriefingExpense -> BriefingExpense -> Bool $c> :: BriefingExpense -> BriefingExpense -> Bool > :: BriefingExpense -> BriefingExpense -> Bool $c>= :: BriefingExpense -> BriefingExpense -> Bool >= :: BriefingExpense -> BriefingExpense -> Bool $cmax :: BriefingExpense -> BriefingExpense -> BriefingExpense max :: BriefingExpense -> BriefingExpense -> BriefingExpense $cmin :: BriefingExpense -> BriefingExpense -> BriefingExpense min :: BriefingExpense -> BriefingExpense -> BriefingExpense Ord, Int -> BriefingExpense -> ShowS [BriefingExpense] -> ShowS BriefingExpense -> String (Int -> BriefingExpense -> ShowS) -> (BriefingExpense -> String) -> ([BriefingExpense] -> ShowS) -> Show BriefingExpense forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> BriefingExpense -> ShowS showsPrec :: Int -> BriefingExpense -> ShowS $cshow :: BriefingExpense -> String show :: BriefingExpense -> String $cshowList :: [BriefingExpense] -> ShowS showList :: [BriefingExpense] -> ShowS Show) makeClassy ''BriefingExpense briefingCost :: HasBriefing s => s -> BriefingExpense -> Int briefingCost :: forall s. HasBriefing s => s -> BriefingExpense -> Int briefingCost s br (BriefingExpense Int perhour String _) = let z :: TimeAmount z = s br s -> Getting TimeAmount s TimeAmount -> TimeAmount forall s a. s -> Getting a s a -> a ^. Getting TimeAmount s TimeAmount forall c. HasBriefing c => Lens' c TimeAmount Lens' s TimeAmount briefingTimeAmount in TimeAmount -> Int timeAmountBy10 TimeAmount z Int -> Int -> Int forall a. Num a => a -> a -> a * Int perhour