Commit Graph

1649 Commits

Author SHA1 Message Date
6441bc5562 chore(firm): finalize supervision discrepancy view 2025-02-28 17:09:03 +01:00
aefafa32d1 chore(firm): filter working on supervision discrepancy view 2025-02-28 17:09:03 +01:00
8adcdf69fe refactor(db): widen the type for DBRead for more flexibility also - change some AdminProblemR DB actions to DBRead instead - add insane supervision warning to AdminProblem page 2025-02-28 17:09:03 +01:00
d6b4afe975 chore(firm): add working view for supervision discrepancy by firm
show if a supervisionship-company is unrelated to either supervisor or supervisee
2025-02-28 17:09:03 +01:00
cce4b2b27d chore(lms): fix #2605
- Implement a mechanism that deletes those users after a short while
- Never delete numerical LMS logins
- Allow admins to terminate an E-Learning manually
- Option to terminate E-Learning upon longtime renewal
- Detection of unnecessary E-Learning (i.e. long valid durations)
2025-02-28 17:08:59 +01:00
d1dcdcfe91 fix(avs): updateReceivers should not re-insert formerly known receivers 2025-02-28 17:08:05 +01:00
5e0df28444 chore(mail): view page for receivers working now and polished 2025-02-28 17:08:05 +01:00
4f5c7d56b0 chore(mail): add modal computing actual receivers at postal pref columns 2025-02-28 17:08:05 +01:00
05bc06df47 chore(firm): add company preference for email pin passwords
companies may be set such that their users have no email pin password by default
switching to such a company deletes the pin password
2025-02-28 17:07:51 +01:00
38606949b0 chore(lms): implement lms termination action
also:
- track last LmsSate for orphans
- make note searchable

towards #2605
2025-02-28 17:06:33 +01:00
f3f2f397fc fix(audit): add user id who caused company superior change to audit log 2025-02-28 17:06:12 +01:00
e9fefa75bd refactor(lms): ensure days/months in qualification settings are always used correctly and implement settings for orphans
- extensive refactoring for qualification lms settings
- qualificationAuditDuration changed from months to days
- qualificationAuditDuration no longer optional
- qualificationAuditDuration is only used for LMS; clarified
- three new settings:
    + orphan-deletion-days:
    + orphan-deletion-batch:
    + orphan-deletion-repeat-hours:
2025-02-28 17:05:50 +01:00
ab340aa715 chore(avs): test AVSneo problems
AVSneo will no longer have unique AVS CardNo: PersonSearch will return one card per company, all having the same CardNo, but possibly different colors

Test shows that FRADrive will handle this just fine, provided the old AVS workaround firing several requests at once remain in place
2025-02-28 17:02:04 +01:00
cf8fc90db7 chore(qualification): finish qualification edit handler 2025-02-28 16:59:09 +01:00
b26dd285df chore(form): create calendarDiffDaysField 2025-02-28 16:58:46 +01:00
9fe78541d7 refactor(tutorial): exam occurrence form function and appearance 2025-02-28 16:56:11 +01:00
a0604637bd refactor(tutorial): exam occurrence editing received specialised page 2025-02-28 16:56:11 +01:00
50c7d18b53 chore(exam): add convenience function to duplicate exam occurrences to another day 2025-02-28 16:56:11 +01:00
f996976f65 chore(exam): auto name generation for examOccurrences 2025-02-28 16:56:11 +01:00
6cc929e377 fix(tutorial): fix exam occurrence form
works better, but still not 100%
some debugging added
2025-02-28 16:56:11 +01:00
11bcef67f8 chore(tutorial): switch relevant exams from registerFrom/To to examStart/End
registering is of users/supervisors, but this page is for admins, so  examStart/examEnd are only relevant for when it is actually happening
2025-02-28 16:56:11 +01:00
9af4a3a22e chore(tutorial): towards #2347 exam occurrence form mostly working (WIP)
form is completed, but the initial call needs proper arguments from DB about all apropriate exams
2025-02-28 16:56:11 +01:00
4241c75afe chore(tutorial): towards #2347 exam occurrence form added (WIP) 2025-02-28 16:56:11 +01:00
f44d66cb91 chore(tutorial): assign exam rooms for tutorial users ad hoc 2025-02-28 16:56:11 +01:00
cd84d0a932 refactor(daily): move caching into own submodule
we need those methods in Handler.Tutorial.Users as well
2025-02-28 16:54:19 +01:00
f467f6086e chore(daily): add function to retrieve all exam occurrences for given days
the function uses the memcachedByClass mechanism, which was slightly refined as well to include the class within the memcached keys for added correctness
2025-02-28 16:53:34 +01:00
4f524bd8d2 refactor(form): make all userField variants consistent with each other 2025-02-28 16:53:20 +01:00
aaf72f7255 chore(exam): show exam occurrences in participants views for tutorial and course 2025-02-28 16:53:20 +01:00
36a3b04ad8 chore(exam): add examiner to occurrence options
we intend to use the exam examiner for adding occurrences through tutorials
2025-02-28 16:53:20 +01:00
ae6d3b0fc3 fix(form): knownUserField not working as intended (WIP) 2025-02-28 16:53:20 +01:00
6f3dd408bb fix(form): knownUserField not working as intended (WIP) 2025-02-28 16:53:20 +01:00
c0c1665ccb refactor(form): knownUserField not working as intended (WIP) 2025-02-28 16:53:20 +01:00
c2e0f6b2b8 chore(form): add knownUserField accepting known users only 2025-02-28 16:53:20 +01:00
ad1d235bea chore(daily): towards #2347 check complete, except i18n
also missing: displaying memcached check results in each line of day view
2025-02-28 16:50:23 +01:00
07cfc0adcb fix(hlint): implement some hlint suggestions 2025-02-28 16:42:37 +01:00
1f7e9b6a2f chore(daily): adjust css, improve suggestions 2025-02-28 16:42:03 +01:00
500c9a749a chore(daily): add suggestions to note fiels (WIP) 2025-02-28 16:40:57 +01:00
fba0b71d50 chore(tutorial): build model for #90 2025-02-28 16:38:41 +01:00
4934f5f89d fix(room): deduplicate room column and fix order 2025-02-28 16:38:41 +01:00
133a8d3739 chore(daily): show rooms for tutorial lessons 2025-02-28 16:38:41 +01:00
14140c982b refactor(memcached): checking memcached key security mechanisms
RESULTS:

Keys for memcached use their Binary representation!

This means that the following three are all interchangeable as a key:
      newtype Foo1 = Foo1 { someInt1 :: Int } deriving newtype (Binary)
      data    Foo2 = Foo2 { someInt2 :: Int } deriving         (Binary)
      type    Foo3 = Int
Therefore it is best to use $(memcachedHere) or $(memcachedByHere) if possible or add another type
2025-02-28 16:38:41 +01:00
ce125b6495 chore(daily): show course associated qualifications 2025-02-28 16:38:41 +01:00
0c78996260 fix(avs): fix #225 by skipping firm updates entirely if AVS FirmInfo is unchanged for previously seen values for AVS User to be updated 2025-02-28 16:38:18 +01:00
b78c898ebf fix(avs): fix #224 repeated superior changes no longer occur
furthermore AdminProblems are only inserted if the same problem does not exist unsolved
2025-02-28 16:35:13 +01:00
4bca7580d0 refactor(occurrences): fold RoomReference into Occurrences, completed 2025-02-28 16:32:52 +01:00
46f777740f fix(memcached): using memcachedHere did not compile due to staging problems 2025-02-28 16:32:52 +01:00
a7b08b1ae5 fix(occurrences): room occurrence form works now 2025-02-28 16:32:52 +01:00
3e6717904a chore(occurrences): workaround provide simple room field with least recent suggestions 2025-02-28 16:32:52 +01:00
2059d678ee refactor(memcached): remove ARC cache and LRU logic some more
more leftover dead code was removed, especially cache prewarm options that no longer had an effect on a non-existing ARC cache
2025-02-28 16:32:52 +01:00
22d6cf737e refactor(occurrences): remove RoomReference from model and add migration 2025-02-28 16:32:52 +01:00