d4d511a02f
fix(room): deduplicate room column and fix order
2024-10-17 16:48:09 +02:00
ec2b09b20b
chore(daily): show rooms for tutorial lessons
2024-10-15 17:48:36 +02:00
01c4225da4
refactor(TH): add sqlMIXproj' using reify on TableExpr for more comfort
2024-10-14 19:16:36 +02:00
4fc6f54b32
chore(TH): add sqlMIXproj to improve dbTable usage, also add card-nos to DayTask Table
2024-10-14 18:27:44 +02:00
8506c4d7e0
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
2024-10-11 11:23:29 +02:00
ed44edc199
chore(daily): show course associated qualifications
2024-10-09 18:11:22 +02:00
ab46577b7e
fix(avs): fix #225 by skipping firm updates entirely if AVS FirmInfo is unchanged for previously seen values for AVS User to be updated
2024-10-09 12:21:31 +02:00
be7fc2e540
fix(avs): avs firm update no longer may update wrong company
...
Note: noticed while working on #225
2024-10-09 11:47:46 +02:00
3960931bb5
fix(avs): fix #224 repeated superior changes no longer occur
...
furthermore AdminProblems are only inserted if the same problem does not exist unsolved
2024-10-08 17:47:46 +02:00
56c2be7b79
refactor(occurrences): fold RoomReference into Occurrences, completed
2024-10-08 13:01:44 +02:00
4e171a7a1a
fix(memcached): using memcachedHere did not compile due to staging problems
2024-10-08 10:08:04 +02:00
f642b9cccf
fix(occurrences): room occurrence form works now
2024-10-07 18:31:02 +02:00
21592347b4
chore(occurrences): workaround provide simple room field with least recent suggestions
2024-10-04 16:13:01 +02:00
e625dca6ea
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
2024-10-04 12:19:27 +02:00
f17d89c21e
chore(occurrences): add GIN index for JSONB columns
2024-10-02 15:52:08 +02:00
83fe750b15
refactor(occurrences): remove RoomReference from model and add migration
2024-09-30 13:56:45 +02:00
e29e6f3db8
refactor(occurrences): fold RoomReference into Occurrences (WIP)
...
Each Occurrence now has its own RoomReference, i.e. Mondays may have a different Room assigned than Tuesdays
WIP Problem: occurrencesAFrom does not work, always insists on Room missing
2024-09-24 17:15:15 +02:00
6dd27eb848
fix(build): minor
2024-09-24 13:10:14 +02:00
4c2baa4e9f
fix(occurrences): occurringLessons had an erroneously inverted condition
2024-09-24 13:05:16 +02:00
384c39b9ec
chore(occurrences): add datatype LessonTime for dealing timetable intervals
2024-09-24 11:21:33 +02:00
a262921a7d
refactor(memcached): remove ARC cache entirely
...
NOTE: this was a crude surgery, removing everything ARC related; some dead code artifacts may have remained.
Especially check PrewarmCacheConf
Reason for removall: adding `memcachedInvalidateClass` was difficult to implement with ARC active; ARC was known to be problematic; removal was easier (see #2 2024-09-23)
2024-09-23 18:52:26 +02:00
05638c2b51
chore(memcached): add key classes for easy invalidation
2024-09-23 17:09:47 +02:00
3d7df8066d
refactor(daily): factor our tutorial selection function
2024-09-18 18:03:49 +02:00
6c9d92475e
fix(firm): filtering by active supervisor working
2024-09-17 17:59:58 +02:00
78c645cf21
fix(lpr): print log sorting works now
2024-09-17 17:58:52 +02:00
e8b276851c
fix(build)
2024-09-17 12:58:13 +02:00
d19266e918
chore(lpr): improve lpr log display
2024-09-17 12:56:49 +02:00
53c68638da
chore(daily): make company a property of TutorialParticipant, towards #90
2024-09-16 17:16:19 +02:00
6e3dd1c1f3
chore(daily): add more columns #90
2024-09-13 18:03:41 +02:00
ba0fd21c8f
chore(daily): add page actions #90
2024-09-13 16:18:38 +02:00
d0eb3ddf92
refactor(jsonb): change DB using JSONB, to improve stub #90
2024-09-13 13:39:38 +02:00
5307350b0b
chore(daily): improve stub #90 change DB to JSONB (WIP)
2024-09-12 17:46:38 +02:00
1a954e037f
chore(daily): create stub in preparation for #90
2024-09-11 17:44:09 +02:00
faaaa18247
refactor(map): clarify some unnecessarily obfuscated code
...
also, using Map.fromList is more efficient if the list happens to be ordered
2024-09-11 17:43:56 +02:00
6a070a6775
fix(supervision): fix #181 by unifying deletion of supervision
2024-09-10 17:47:09 +02:00
6ffc49ae0e
chore(avs): auto licence synch preview show AVS-No as well
2024-09-10 12:36:52 +02:00
ab8b17229a
chore(health): show db time on status page and status time diffs in a human readable format
2024-09-09 16:41:43 +02:00
74f7633837
fix(notifications): fix #180 qualification expiry notification are sent only once
2024-09-09 15:34:41 +02:00
ade27e6479
fix(avs): fix #178 by deleting old superiors for individual users
2024-09-05 17:53:18 +02:00
cbadef0a73
chore(mail): fix #179 reorder attachments and guess PDF pin password in Text display
2024-09-05 16:28:20 +02:00
2a27a1efa6
fix(avs): fix #124 avs auto synch filter working
...
also, provide test facility for auto synch
2024-09-05 16:27:10 +02:00
620e3e4700
fix(mail): fix #179 by adding download links for PDF attachments
2024-09-05 14:09:50 +02:00
f0798e8836
chore(avs): debug automatic avs licence synch within admin avs test page
2024-09-04 18:08:08 +02:00
1e896da4a3
chore(avs): prepare superior update shortcircuit for future
2024-09-02 09:08:44 +02:00
7e5c256b4c
fix(avs): company superiors are now irregular supervisors and old ones are deleted
...
DETAILS:
Superiors:
- Superiors do not become Company-Default-Supervisors automatically
- Superiors become irregular supervisors without rerouting, existing supervisions are not changed
- Superiors become company users at equal-to-max priority, if not already
For each AVN User update:
- if superior change for unchanged company:
all company supervisions with remark "Vorgesetzter" are removed
create admin problem that notifies about superior change (special if new superior could not be created)
- all company associates are irregularly supervised by the new superior with remark "Vorgesetzer"
Questions:
- company had superior, but no longer: just remove superior-supervisions, do not report admin problem?
- Problem: superior changed, but we first encounter this through a user changing company. Change is not detected at this point, old superiors remain until an old company associate is updated too
2024-08-30 17:41:33 +02:00
43319fbcca
chore(admin): unreachable page offers convient avs and ldap synch buttons
2024-08-29 18:12:10 +02:00
f946e99da3
fix(ldap): no more timeout for ldap synch all button
2024-08-29 16:45:39 +02:00
cfe2318f81
fix(avs): attempt LDAP upsert before creating avs users
2024-08-29 16:15:16 +02:00
64ff002ffb
chore(firm): provide more filters for supervisors
...
also fix build #175
2024-08-29 14:34:37 +02:00
8397c468a0
fix(firm): fix #175 by separating superiors in firm tables and selections
2024-08-28 17:50:44 +02:00
81721b0794
chore(status): improve readability of time spans
2024-08-28 10:45:11 +02:00
40dadd5876
fix(firm): fix #174 by adding address search filter to all company view
2024-08-28 10:44:27 +02:00
8ec2875590
fix(avs): switch company did not always increase priority
2024-08-27 16:23:42 +02:00
9c82558d71
fix(user): fix pagination and count for supervision tables
2024-08-26 17:40:57 +02:00
e8f9c21b7c
chore(problem): admin problem filtering works on full text now
2024-08-26 15:17:01 +02:00
109e845db6
chore(problem): towards admin problem filtering
2024-08-22 17:44:19 +02:00
53abdb7cc3
chore(health): augement #154 by adding option to disable interface warnings
...
Also:
- add usage explanation
- show intervals in a human readable form
2024-08-22 17:28:28 +02:00
407ba543a1
chore(health): fix #154 by adding interface warning threshold edit handler
2024-08-21 17:34:19 +02:00
f61c35cfe7
refactor(companies): mark table columns showing only prime company as such, fix #5
...
- also improve performance by changing dbtProj/selectList into a subselect
- fix #5 no longer sensible, as most are single values to be displayed right away
2024-08-21 11:52:29 +02:00
b0972bb154
fix(mail): display html emails no longer distorts page
...
html is filtered once through pandoc, as proposed in #2
2024-08-20 12:35:16 +02:00
cc5da9a2a9
fix(avs): fix #124 implement automatic avs driving licence synchronisation
2024-08-12 18:01:04 +02:00
e551fadd29
chore(sql): add regex match for sql
2024-08-12 12:36:27 +02:00
2ed626ea4a
chore(avs): towards #124 add filter for multiple firm users with block reason '%firm%'
...
- also add warning to admin avs licence difference for AVS R licence holders about to be changed
2024-08-09 18:33:23 +02:00
f4823aaf28
refactor(avs): switch some runDB to runDBRead
2024-08-09 17:59:14 +02:00
760b102d52
chore(avs): flag AVS R-holders about to be revoked
...
- flag on admin problem view
- exempt from automatic avs licence synch for levels below 3
2024-08-09 17:01:10 +02:00
d209a110e8
refactor(linter): implement minor hlit suggestion
2024-08-08 17:30:03 +02:00
c3d27c25b5
chore(mail): add decoder for MIME encoded word
2024-08-08 16:52:02 +02:00
1e6547e903
refactor(comm): clean CommCenterR and MailCenterR handlers and unify these
2024-08-08 13:56:10 +02:00
6299612adc
refactor: various minor changes, mostly some comments
2024-08-07 17:51:33 +02:00
8f54ea1051
refactor(qualifications): unify qualification selectField mechanics
2024-08-07 17:50:38 +02:00
c1dbd61c14
chore(mail): minor code cleanup mailCenterR
...
-- hiding currently unneded dbtForm
-- slightly better formatting for MIME encoded word
2024-08-07 13:52:47 +02:00
e35a5e99a6
fix(user): format userDisplayNames having umlaut substitutes with respect to userSurname correctly
...
we often have displayNames like "Steffen Joest" and surname "Jöst" which were previously displayed as "Steffen Joest (**Jöst**)" and which are now displayed as "Steffen **Jöst**".
Also, the case of surname is left unchanged, while the displayName is converted to title
2024-08-07 11:44:39 +02:00
ab00a4f665
chore(mail): fix #171 by adding a route for all notifications to users and displaying them
2024-08-06 17:42:27 +02:00
21d32fd4cf
chore(mail): mail display towards #171
2024-08-05 18:15:56 +02:00
4df8bd2fa5
chore(mail): stub towards #171
...
new routes /mail and /mail/show/UUID to eventually display all sent emails by the system
2024-08-02 18:28:16 +02:00
d1fa01fcc5
fix(avs): towards #117 update if current value is Nothing even if oldval == newval
...
Damit sollten zumindest die ganzen NULL Fälle bein einem neuen Update erledigt sein. Unklar, wo diese aber herkamen.
2024-08-02 16:13:09 +02:00
ec02767552
fix(course): fix #150 no longer allow duplicated associated qualifications and orders due to editing existing
2024-08-02 15:40:25 +02:00
cfd25348ad
fix(course): fix #148 course qualification ordering
...
some refactoring done along the way, fixing a bug in relation to #150 as well
2024-08-01 17:45:18 +02:00
e1419766f3
fix(course): fix #149 course cloning proposes associated qualifications
...
This commit required a massInput form, using massInputAccumEditA, which turned out to difficult to use.
2024-08-01 17:09:05 +02:00
5b6e4e60e7
fix(course): fix #150 course edit for associated qualifications requires school admin or lecturer rights
2024-08-01 11:41:27 +02:00
bc47387c91
fix(course): WIP course cloning should propose same associated qualifications, towards #149
2024-07-31 19:03:30 +02:00
0fde59c19a
chore(profile): show user courses among enrolled course type list
...
(Recall: course = tutorial, course type = course)
2024-07-31 17:51:13 +02:00
507a7e02fc
fix(avs): using firm superior as UserEmail is a no-go due to uniqueness constraints
...
Thus, we do not save the firm superior as `UserEmail` any more. The firm superior email is still used as a fallback for `CompanyEmail` which in turn is used as a fallback email, if a `CompanyUser` has no valid email at all.
2024-07-31 15:03:26 +02:00
43f5c5f485
fix(avs): fix #173 by not using firm superior email as display email
...
Instead, a valid firm superior email is used as `UserEmail` so that it can be used as a fallback address.
2024-07-31 14:16:40 +02:00
b9f70c7796
chore(avs): ensure supervisor reroutes are correct upon company switch
2024-07-30 15:58:12 +02:00
d853e8559b
fix(lms): allow 2nd reminders to be independent of renewal period
2024-07-12 17:14:48 +02:00
e6f0454e78
Merge branch 'fradrive/newletter'
2024-07-12 14:01:12 +02:00
8c8ffa5183
chore(avs): remove company superior, if there is none anymore
2024-07-12 13:44:21 +02:00
fee14edf36
refactor(firm): fix #157 refactor duplicated code
...
also ensures that supervisor default reaons filters are obeyed.
2024-07-12 12:21:17 +02:00
0bbb679a43
chore(profile): indicate linked postal addresses
2024-07-12 12:12:26 +02:00
28e2739e51
fix(firm): fix #157 by removing redundant duplicated code in firm user and supervision handling
2024-07-11 18:37:40 +02:00
c17c18f924
fix(build): make linter happy again
2024-07-11 15:28:58 +02:00
d65fb2f4cd
chore(firm): add reason for user company association
2024-07-10 15:54:15 +02:00
6e2d545772
chore(users): allow profile edits with invalid display_email address, if unchanged
2024-07-10 12:23:37 +02:00
fa0541aa4e
fix(job): change some queueJob' to queueJob instead
2024-07-10 11:47:01 +02:00
a1668f891a
fix(users): nameHtml no longer complains about differing case for surname and displayname
2024-07-09 17:06:33 +02:00
c813c665ed
fix(users): remove users with company post address from list of unreachable users
2024-07-09 11:56:58 +02:00
9a0e8988fa
refactor(health): avoid duplicate interface health check speficiations
2024-07-09 10:45:30 +02:00
9d3198f49b
chore(health): avoid duplicate interface health check speficiations
2024-07-08 18:11:46 +02:00
2caa5aec5b
chore(health): add option to mark certain interface health checks to remain indefinitely
2024-07-08 15:34:19 +02:00