37 lines
1.4 KiB
Haskell
37 lines
1.4 KiB
Haskell
-- SPDX-FileCopyrightText: 2022 Steffen Jost <jost@tcs.ifi.lmu.de>
|
|
--
|
|
-- SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
|
|
|
|
module Handler.Utils.Qualification
|
|
( module Handler.Utils.Qualification
|
|
) where
|
|
|
|
import Import
|
|
|
|
|
|
upsertQualificationUser :: QualificationId -> Day -> Day -> Maybe Bool -> UserId -> DB ()
|
|
upsertQualificationUser qualificationUserQualification qualificationUserLastRefresh qualificationUserValidUntil mbScheduleRenewal qualificationUserUser = do
|
|
Entity quid _ <- upsert
|
|
QualificationUser
|
|
{ qualificationUserFirstHeld = qualificationUserLastRefresh
|
|
, qualificationUserBlockedDue = Nothing
|
|
, qualificationUserScheduleRenewal = fromMaybe True mbScheduleRenewal
|
|
, ..
|
|
}
|
|
(
|
|
[ QualificationUserScheduleRenewal =. scheduleRenewal | Just scheduleRenewal <- [mbScheduleRenewal]
|
|
] ++
|
|
[ QualificationUserValidUntil =. qualificationUserValidUntil
|
|
, QualificationUserLastRefresh =. qualificationUserLastRefresh
|
|
, QualificationUserBlockedDue =. Nothing
|
|
]
|
|
)
|
|
audit TransactionQualificationUserEdit
|
|
{ transactionQualificationUser = quid
|
|
, transactionQualification = qualificationUserQualification
|
|
, transactionUser = qualificationUserUser
|
|
, transactionQualificationValidUntil = qualificationUserValidUntil
|
|
, transactionQualificationScheduleRenewal = mbScheduleRenewal
|
|
} |