diff --git a/src/Lib.hs b/src/Lib.hs index 3bb7a13b5e6f1f32e2bad739978e4b034757b5e9..3dfc832618b432e51d0663d3703ccc28eeffbb51 100755 --- a/src/Lib.hs +++ b/src/Lib.hs @@ -21,7 +21,7 @@ data Event = Event data Response = Response { statusCode :: Int , headers :: Value - , body :: Int + , body :: Double } deriving (Generic, ToJSON) header :: Value diff --git a/src/NetPresentValue.hs b/src/NetPresentValue.hs index f3bb4d5a245598bc3aa6dce85de7333058f45581..5e8b32b4dd231f42d26b3329418c5171fe241318 100644 --- a/src/NetPresentValue.hs +++ b/src/NetPresentValue.hs @@ -11,12 +11,30 @@ import Aws.Lambda import Data.Aeson data InputNetPresentValue = InputNetPresentValue - { income_1 :: Int - , outcome_1 :: Int + { income_1 :: Double + , income_2 :: Double + , income_3 :: Double + , income_4 :: Double + , income_5 :: Double + , outcome_1 :: Double + , outcome_2 :: Double + , outcome_3 :: Double + , outcome_4 :: Double + , outcome_5 :: Double + , project_interest :: Double + , project_cost :: Double } deriving (Generic, FromJSON, ToJSON) -calculateNetPresentValue :: InputNetPresentValue -> Int -calculateNetPresentValue inputNetPresentValue = p + q +calculateNetPresentValue :: InputNetPresentValue -> Double +calculateNetPresentValue inputNetPresentValue = netPresentValue inputNetPresentValue + +netPresentValue inputNetPresentValue = foldl (+) 0 pv + where + pv = presentValue inputNetPresentValue + +presentValue inputNetPresentValue = zipWith (*) (netcashflow income outcome) [0.833, 0.694, 0.579, 0.482, 0.402] where - p = income_1 inputNetPresentValue - q = outcome_1 inputNetPresentValue \ No newline at end of file + income = [income_1 inputNetPresentValue, income_2 inputNetPresentValue, income_3 inputNetPresentValue, income_4 inputNetPresentValue, income_5 inputNetPresentValue] + outcome = [outcome_1 inputNetPresentValue, outcome_2 inputNetPresentValue, outcome_3 inputNetPresentValue, outcome_4 inputNetPresentValue, outcome_5 inputNetPresentValue] + +netcashflow a b = zipWith (-) a b