diff --git a/src/Owner.hs b/src/Owner.hs index e1dbfa2..7985fc7 100644 --- a/src/Owner.hs +++ b/src/Owner.hs @@ -14,35 +14,33 @@ import Database.MongoDB import GHC.Generics -- | Type to represent a ZGo shop owner/business -data Owner = - Owner - { o_id :: Maybe ObjectId - , oaddress :: T.Text - , oname :: T.Text - , ocurrency :: T.Text - , otax :: Bool - , otaxValue :: Double - , ovat :: Bool - , ovatValue :: Double - , ofirst :: T.Text - , olast :: T.Text - , oemail :: T.Text - , ostreet :: T.Text - , ocity :: T.Text - , ostate :: T.Text - , opostal :: T.Text - , ophone :: T.Text - , owebsite :: T.Text - , ocountry :: T.Text - , opaid :: Bool - , ozats :: Bool - , oinvoices :: Bool - , oexpiration :: UTCTime - , opayconf :: Bool - , oviewkey :: T.Text - , ocrmToken :: T.Text - } - deriving (Eq, Show, Generic, Typeable) +data Owner = Owner + { o_id :: Maybe ObjectId + , oaddress :: T.Text + , oname :: T.Text + , ocurrency :: T.Text + , otax :: Bool + , otaxValue :: Double + , ovat :: Bool + , ovatValue :: Double + , ofirst :: T.Text + , olast :: T.Text + , oemail :: T.Text + , ostreet :: T.Text + , ocity :: T.Text + , ostate :: T.Text + , opostal :: T.Text + , ophone :: T.Text + , owebsite :: T.Text + , ocountry :: T.Text + , opaid :: Bool + , ozats :: Bool + , oinvoices :: Bool + , oexpiration :: UTCTime + , opayconf :: Bool + , oviewkey :: T.Text + , ocrmToken :: T.Text + } deriving (Eq, Show, Generic, Typeable) instance ToJSON Owner where toJSON (Owner i a n c t tV v vV f l e s ct st p ph w co paid zats inv eTs pc vk cT) = @@ -276,21 +274,19 @@ instance Val Owner where ] -- | Type to represent informational data for Owners from UI -data OwnerData = - OwnerData - { od_first :: T.Text - , od_last :: T.Text - , od_name :: T.Text - , od_street :: T.Text - , od_city :: T.Text - , od_state :: T.Text - , od_postal :: T.Text - , od_country :: T.Text - , od_email :: T.Text - , od_website :: T.Text - , od_phone :: T.Text - } - deriving (Eq, Show, Generic) +data OwnerData = OwnerData + { od_first :: T.Text + , od_last :: T.Text + , od_name :: T.Text + , od_street :: T.Text + , od_city :: T.Text + , od_state :: T.Text + , od_postal :: T.Text + , od_country :: T.Text + , od_email :: T.Text + , od_website :: T.Text + , od_phone :: T.Text + } deriving (Eq, Show, Generic) instance FromJSON OwnerData where parseJSON = @@ -308,25 +304,23 @@ instance FromJSON OwnerData where ph <- obj .: "phone" pure $ OwnerData f l n s c st p co e w ph -data OwnerSettings = - OwnerSettings - { os_id :: Maybe ObjectId - , os_address :: T.Text - , os_name :: T.Text - , os_currency :: T.Text - , os_tax :: Bool - , os_taxValue :: Double - , os_vat :: Bool - , os_vatValue :: Double - , os_paid :: Bool - , os_zats :: Bool - , os_invoices :: Bool - , os_expiration :: UTCTime - , os_payconf :: Bool - , os_crmToken :: T.Text - , os_viewKey :: T.Text - } - deriving (Eq, Show, Generic) +data OwnerSettings = OwnerSettings + { os_id :: Maybe ObjectId + , os_address :: T.Text + , os_name :: T.Text + , os_currency :: T.Text + , os_tax :: Bool + , os_taxValue :: Double + , os_vat :: Bool + , os_vatValue :: Double + , os_paid :: Bool + , os_zats :: Bool + , os_invoices :: Bool + , os_expiration :: UTCTime + , os_payconf :: Bool + , os_crmToken :: T.Text + , os_viewKey :: T.Text + } deriving (Eq, Show, Generic) instance FromJSON OwnerSettings where parseJSON = @@ -424,6 +418,11 @@ findExpiringOwners now = ["paid" =: True, "expiration" =: ["$lte" =: addUTCTime 172800 now]] "owners") +findWithKeys :: Action IO [Document] +findWithKeys = + rest =<< + find (select ["paid" =: True, "invoices" =: True, "payconf" =: True] "owners") + removePro :: T.Text -> Action IO () removePro o = modify (select ["address" =: o] "owners") ["$set" =: ["invoices" =: False]] @@ -450,14 +449,12 @@ upsertViewingKey o vk = modify (select ["_id" =: o_id o] "owners") ["$set" =: ["viewKey" =: vk]] -- | Type for a pro session -data ZGoProSession = - ZGoProSession - { ps_id :: Maybe ObjectId - , psaddress :: T.Text - , psexpiration :: UTCTime - , psclosed :: Bool - } - deriving (Eq, Show) +data ZGoProSession = ZGoProSession + { ps_id :: Maybe ObjectId + , psaddress :: T.Text + , psexpiration :: UTCTime + , psclosed :: Bool + } deriving (Eq, Show) instance Val ZGoProSession where cast' (Doc d) = do