From 722d79499641be8fd3ec79eff4b2f5a40829f675 Mon Sep 17 00:00:00 2001 From: nek0 Date: Fri, 4 Aug 2017 07:28:34 +0200 Subject: [PATCH] changing notification behaviour: multiple recipients, but only one mail --- Handler/Buy.hs | 4 ++-- Handler/Common.hs | 18 +++++++++--------- Settings.hs | 2 +- config/settings.yml | 3 ++- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Handler/Buy.hs b/Handler/Buy.hs index 4463119..2886555 100644 --- a/Handler/Buy.hs +++ b/Handler/Buy.hs @@ -50,7 +50,7 @@ postBuyR uId bId = do update uId [UserBalance -=. price] update bId [BeverageAmount -=. quant] update bId [BeverageTotalBought +=. 1] - checkAlert bId + checkAlert bId (beverageAmount bev) master <- getYesod liftIO $ notifyUser user bev quant price master case sw of @@ -128,7 +128,7 @@ postBuyCashR bId = let price = quant * (beveragePrice bev + appCashCharge (appSettings master)) runDB $ update bId [BeverageAmount -=. quant] updateCashier price "Barzahlung" - checkAlert bId + checkAlert bId (beverageAmount bev) let currency = appCurrency $ appSettings master setMessageI $ MsgPurchaseSuccessCash price currency redirect HomeR diff --git a/Handler/Common.hs b/Handler/Common.hs index 86779f7..cb35dda 100644 --- a/Handler/Common.hs +++ b/Handler/Common.hs @@ -183,13 +183,14 @@ amountField = Field showVal = either id (pack . showI) showI x = show (fromIntegral x :: Integer) -checkAlert :: BeverageId -> Handler () -checkAlert bId = do +checkAlert :: BeverageId -> Int -> Handler () +checkAlert bId oldamount = do bev <- runDB $ getJust bId - if beverageAmount bev < beverageAlertAmount bev - then do - master <- getYesod - let to = appEmail $ appSettings master + let alert = beverageAlertAmount bev + when (beverageAmount bev < alert && oldamount > alert) $ do + master <- getYesod + let tos = appEmail $ appSettings master + mapM_ (\to -> liftIO $ sendMail to "Niedriger Bestand" [stext| Hallo, @@ -199,10 +200,9 @@ Der momentane Bestand ist bei #{beverageAmount bev} Artikeln. Viele Grüße, -der Matemat +Dein Matemat |] - else - return () -- do nothing + ) tos sendMail :: MonadIO m => Text -> Text -> TL.Text -> m () sendMail to subject body = diff --git a/Settings.hs b/Settings.hs index 5496733..37f1435 100644 --- a/Settings.hs +++ b/Settings.hs @@ -67,7 +67,7 @@ data AppSettings = AppSettings -- ^ Copyright text to appear in the footer of the page , appAnalytics :: Maybe Text -- ^ Google Analytics code - , appEmail :: Text + , appEmail :: [Text] -- ^ notification address , appCurrency :: Text -- ^ Currency character diff --git a/config/settings.yml b/config/settings.yml index 377db6a..dc86ebb 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -26,7 +26,8 @@ database: poolsize: "_env:PGPOOLSIZE:10" #analytics: UA-YOURCODE -email: "nek0@momen" +email: +- "nek0@momen" currency: "€" cash_charge: 50