From 5bf85394d4db6de8f10b4e318d667130d37601ac Mon Sep 17 00:00:00 2001 From: Steffen Date: Tue, 2 Jul 2024 18:14:54 +0200 Subject: [PATCH] fix(avs): towards #169 - superiors are elevated to max priority for that company this entails that users may have multiple equal priority companies --- src/Handler/Utils/Avs.hs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Handler/Utils/Avs.hs b/src/Handler/Utils/Avs.hs index 59e47b02f..2f09d0804 100644 --- a/src/Handler/Utils/Avs.hs +++ b/src/Handler/Utils/Avs.hs @@ -676,9 +676,14 @@ upsertCompanySuperior (mbCid, newAfi) mbOldAfi = runMaybeT $ do oldSup = snd <$> oldChanges unless (supChange == Just False) $ do -- upsert new superior company supervisor + mbMaxPrio <- E.selectOne $ do + usrCmp <- E.from $ E.table @UserCompany + E.where_ $ usrCmp E.^. UserCompanyUser E.==. E.val supid + return . E.max_ $ usrCmp E.^. UserCompanyPriority + let maxPrio = maybe 1 (fromMaybe 1 . E.unValue) mbMaxPrio suprEnt <- upsertBy (UniqueUserCompany supid cid) - (UserCompany supid cid True False 1 True) - [UserCompanySupervisor =. True] + (UserCompany supid cid True False maxPrio True) + [UserCompanySupervisor =. True, UserCompanyPriority =. maxPrio] E.insertSelectWithConflict UniqueUserSupervisor (do usr <- E.from $ E.table @UserCompany