chore(firm): add filters for firm postal address and foreign supervisors
This commit is contained in:
parent
ef0d71e19e
commit
bb7b7cf3dc
@ -2,6 +2,10 @@
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
FirmAssociates: Firmenangehörige, ohne externe Ansprechpartner
|
||||
FirmEmail: Allgemeine Email
|
||||
FirmAddress: Postanschrift
|
||||
FirmDefaultPostalPreferenceInfo: Hinweis: Dies ist lediglich die Voreinstellung für neue Firmenangehörige
|
||||
FirmAllActNotify: Mitteilung versenden
|
||||
FirmAllActResetSupervision: Ansprechpartner für alle Firmenangehörigen zurücksetzen
|
||||
FirmUserActNotify: Mitteilung versenden
|
||||
@ -9,3 +13,5 @@ FirmUserActMkSuper: Zum Firmenansprechpartner ernennen
|
||||
FilterSupervisor: Hat aktiven Ansprechpartner
|
||||
FilterSupervisorCompany fsh@CompanyShorthand: Hat aktiven Ansprechpartner, der #{fsh} angehört
|
||||
FilterSupervisorForeign fsh@CompanyShorthand: Hat aktiven Ansprechpartner, der selbst nicht #{fsh} angehört
|
||||
FilterForeignSupervisor: Hat firmenfremde Ansprechpartner
|
||||
FilterFirmPostalAddress: Postalische Firmenadresse vorhanden
|
||||
@ -2,10 +2,16 @@
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
FirmAssociates: Company associated users, excluding foreign supervisors
|
||||
FirmEmail: General company email
|
||||
FirmAddress: Postal address
|
||||
FirmDefaultPostalPreferenceInfo: Note that this is only the default setting for new company associates
|
||||
FirmAllActNotify: Send message
|
||||
FirmAllActResetSupervision: Reset supervisors for all company associates
|
||||
FirmUserActNotify: Send message
|
||||
FirmUserActMkSuper: Mark as company supervisor
|
||||
FilterSupervisor: Has active supervisor
|
||||
FilterSupervisorCompany fsh: Has active company supervisor belonging to #{fsh}
|
||||
FilterSupervisorForeign fsh: Has active supervisor not belonging to #{fsh}
|
||||
FilterSupervisorForeign fsh: Has active supervisor not belonging to #{fsh}
|
||||
FilterForeignSupervisor: Has company-external supervisors
|
||||
FilterFirmPostalAddress: Postal company addresse known
|
||||
@ -9,7 +9,8 @@ Company
|
||||
shorthand CompanyShorthand -- == (CI Text) and CompanyKey :: CompanyShorthand -> CompanyId FUTURE TODO: a shorthand will become available through the AVS interface in the future
|
||||
avsId Int default=0 -- primary key from avs
|
||||
prefersPostal Bool default=false -- new company users prefers letters by post instead of email
|
||||
postAddress StoredMarkup Maybe -- default company postal address
|
||||
postAddress StoredMarkup Maybe -- default company postal address
|
||||
email UserEmail Maybe -- Case-insensitive generic company eMail address
|
||||
UniqueCompanyName name
|
||||
UniqueCompanyShorthand shorthand
|
||||
-- UniqueCompanyAvsId avsId -- should be the case, unclear if enforcing works here, since we cannot query avs by company id
|
||||
|
||||
@ -304,11 +304,31 @@ mkFirmAllTable isAdmin uid = do
|
||||
E.||. (usr E.^. UserSurname `E.hasInfix` E.val criterion)
|
||||
)
|
||||
)
|
||||
, single ("foreign-supervisor", FilterColumn $ \row (getLast -> criterion) ->
|
||||
let checkSuper = do
|
||||
usrSpr <- E.from $ E.table @UserSupervisor
|
||||
E.where_ $ E.notExists (do
|
||||
spr <- E.from $ E.table @UserCompany
|
||||
E.where_ $ spr E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId
|
||||
E.&&. spr E.^. UserCompanyUser E.==. usrSpr E.^. UserSupervisorSupervisor
|
||||
) E.&&. E.exists (do
|
||||
usr <- E.from $ E.table @UserCompany
|
||||
E.where_ $ usr E.^. UserCompanyCompany E.==. queryAllCompany row E.^. CompanyId
|
||||
E.&&. usr E.^. UserCompanyUser E.==. usrSpr E.^. UserSupervisorUser
|
||||
)
|
||||
in case criterion of
|
||||
Nothing -> E.true
|
||||
Just True -> E.exists checkSuper
|
||||
Just False -> E.notExists checkSuper
|
||||
)
|
||||
, single ("company-postal", FilterColumn $ E.mkExactFilterLast $ views (to queryAllCompany) (E.isJust . (E.^. CompanyPostAddress)))
|
||||
]
|
||||
dbtFilterUI mPrev = mconcat
|
||||
[ fltrCompanyNameUI mPrev
|
||||
, prismAForm (singletonFilter "company-number") mPrev $ aopt textField (fslI MsgTableCompanyNo)
|
||||
, prismAForm (singletonFilter "is-supervisor") mPrev $ aopt textField (fslI MsgTableSupervisor)
|
||||
, prismAForm (singletonFilter "company-number") mPrev $ aopt textField (fslI MsgTableCompanyNo)
|
||||
, prismAForm (singletonFilter "is-supervisor") mPrev $ aopt textField (fslI MsgTableSupervisor)
|
||||
, prismAForm (singletonFilter "foreign-supervisor" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgFilterForeignSupervisor)
|
||||
, prismAForm (singletonFilter "company-postal" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgFilterFirmPostalAddress)
|
||||
]
|
||||
dbtStyle = def { dbsFilterLayout = defaultDBSFilterLayout }
|
||||
acts :: Map FirmAllAction (AForm Handler FirmAllActionData)
|
||||
@ -541,18 +561,26 @@ postFirmUsersR fsh = do
|
||||
siteLayout (citext2widget companyName) $ do
|
||||
setTitle $ toHtml $ CI.original companyShorthand <> " (" <> tshow companyAvsId <> ")"
|
||||
[whamlet|
|
||||
<section>
|
||||
<p>
|
||||
#{companyPostAddress}
|
||||
<p>
|
||||
Benachrichtigungs-Voreinstellung für neue Firmangehörige: #
|
||||
$if companyPrefersPostal
|
||||
#{icon IconLetter} Briefversand
|
||||
$else
|
||||
#{icon IconAt} Email
|
||||
<section .profile>
|
||||
<dl .deflist.profile-dl>
|
||||
<dt .deflist__dt>
|
||||
_{MsgPrefersPostal}
|
||||
<dd .deflist__dd>
|
||||
#{iconLetterOrEmail companyPrefersPostal} #
|
||||
_{MsgFirmDefaultPostalPreferenceInfo}
|
||||
$maybe fem <- companyEmail
|
||||
<dt .deflist__dt>
|
||||
#{iconLetterOrEmail False} _{MsgFirmEmail}
|
||||
<dd .deflist__dd .email>
|
||||
#{mailToHtml fem}
|
||||
$maybe addr <- companyPostAddress
|
||||
<dt .deflist__dt>
|
||||
#{iconLetterOrEmail True} _{MsgFirmEmail}
|
||||
<dd .deflist__dd .email>
|
||||
#{addr}
|
||||
<section>
|
||||
<h4>
|
||||
Company associated users, excluding foreign supervisors
|
||||
_{MsgFirmAssociates}
|
||||
<p>
|
||||
^{fusrTable}
|
||||
|]
|
||||
|
||||
60
templates/firm-users.hamlet
Normal file
60
templates/firm-users.hamlet
Normal file
@ -0,0 +1,60 @@
|
||||
$newline never
|
||||
|
||||
$# SPDX-FileCopyrightText: 2022 Steffen Jost <jost@tcs.ifi.lmu.de>
|
||||
$#
|
||||
$# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
<section>
|
||||
<h2>
|
||||
_{MsgProblemsHeadingDrivers}
|
||||
|
||||
<dl .deflist>
|
||||
<dt .deflist__dt>^{flagError driversHaveAvsIds}
|
||||
<dd .deflist__dd>^{simpleLinkI MsgProblemsDriversHaveAvsIds ProblemWithoutAvsId}
|
||||
|
||||
$case diffLics
|
||||
$of Left err
|
||||
<dt .deflist__dt>^{flagError False}
|
||||
<dd .deflist__dd>^{modal (i18n MsgProblemsAvsProblem) (Right err)}
|
||||
|
||||
$of Right (ok0,ok1up,ok1down,ok2)
|
||||
<dt .deflist__dt>^{flagNonZero ok2}
|
||||
<dd .deflist__dd>^{simpleLinkI MsgProblemsDriverSynch2 ProblemAvsSynchR}
|
||||
|
||||
<dt .deflist__dt>^{flagNonZero ok1down}
|
||||
<dd .deflist__dd>^{simpleLinkI MsgProblemsDriverSynch1down ProblemAvsSynchR}
|
||||
|
||||
<dt .deflist__dt>^{flagNonZero ok1up}
|
||||
<dd .deflist__dd>^{simpleLinkI MsgProblemsDriverSynch1up ProblemAvsSynchR}
|
||||
|
||||
<dt .deflist__dt>^{flagNonZero ok0}
|
||||
<dd .deflist__dd>^{simpleLinkI MsgProblemsDriverSynch0 ProblemAvsSynchR}
|
||||
|
||||
<dt .deflist__dt>^{flagWarning rDriversHaveFs}
|
||||
<dd .deflist__dd>^{simpleLinkI MsgProblemsRDriversHaveFs ProblemFbutNoR}
|
||||
|
||||
|
||||
<section>
|
||||
<h2>
|
||||
_{MsgProblemsHeadingNotifications}
|
||||
|
||||
<dl .deflist>
|
||||
<dt .deflist__dt>^{flagError usersAreReachable}
|
||||
<dd .deflist__dd>^{simpleLinkI MsgProblemsUsersAreReachable ProblemUnreachableR}
|
||||
|
||||
<dt .deflist__dt>^{flagError noStalePrintJobs}
|
||||
<dd .deflist__dd>^{simpleLinkI (MsgProblemsNoStalePrintJobs cutOffPrintDays) PrintCenterR}
|
||||
|
||||
<dt .deflist__dt>^{flagError noBadAPCids}
|
||||
<dd .deflist__dd>_{MsgProblemsNoBadAPCIds}
|
||||
|
||||
$maybe reroute <- rerouteMail
|
||||
<dt .deflist__dt>^{flagWarning False}
|
||||
<dd .deflist__dd>_{MsgMailRerouteTo reroute}
|
||||
|
||||
<section>
|
||||
<h2>
|
||||
_{MsgProblemsHeadingMisc}
|
||||
<dl .deflist>
|
||||
<dt .deflist__dt>^{flagError noAvsSynchProblems}
|
||||
<dd .deflist__dd>^{simpleLinkI MsgProblemsNoAvsSynchProblems ProblemAvsErrorR}
|
||||
@ -660,7 +660,7 @@ fillDb = do
|
||||
, UserSupervisor gkleen gkleen True
|
||||
, UserSupervisor tinaTester tinaTester False
|
||||
]
|
||||
++ take 333 [ UserSupervisor fhamann uid True | Entity uid _ <- matUsers ]
|
||||
++ take 333 [ UserSupervisor fhamann uid True | Entity uid _ <- matUsers, uid /= jost]
|
||||
++ take 111 [ UserSupervisor gkleen uid True | Entity uid _ <- drop 300 matUsers ]
|
||||
++ take 11 [ UserSupervisor jost uid False | Entity uid _ <- drop 401 matUsers ]
|
||||
upsertManyWhere supvs [] [] []
|
||||
|
||||
Loading…
Reference in New Issue
Block a user