added booking types + working on overtime
This commit is contained in:
48
db.sql
48
db.sql
@@ -146,3 +146,51 @@ SELECT
|
||||
FROM ordered_bookings
|
||||
GROUP BY work_date
|
||||
ORDER BY work_date;
|
||||
|
||||
|
||||
-- Generate weekdays for 2 weeks (Mon–Fri), starting 2 weeks ago
|
||||
WITH days AS (
|
||||
SELECT gs::date AS work_date
|
||||
FROM generate_series(
|
||||
date_trunc('week', CURRENT_DATE) - interval '14 days', -- start 2 weeks ago Monday
|
||||
CURRENT_DATE, -- end TODAY (no future days)
|
||||
interval '1 day'
|
||||
) gs
|
||||
WHERE EXTRACT(ISODOW FROM gs) <= 5 -- only Mon–Fri
|
||||
),
|
||||
sample_bookings AS (
|
||||
SELECT
|
||||
d.work_date,
|
||||
'aaaa-aaaa'::varchar AS card_uid,
|
||||
1 AS check_in_out, -- come
|
||||
101 AS geraet_id,
|
||||
(d.work_date + make_time(8, floor(random()*50)::int, 0))::timestamptz AS ts,
|
||||
1 AS anwesenheit_typ
|
||||
FROM days d
|
||||
UNION ALL
|
||||
SELECT
|
||||
d.work_date,
|
||||
'aaaa-aaaa'::varchar AS card_uid,
|
||||
2 AS check_in_out, -- go
|
||||
101 AS geraet_id,
|
||||
(d.work_date + make_time(16, floor(random()*50)::int, 0))::timestamptz AS ts,
|
||||
1 AS anwesenheit_typ
|
||||
FROM days d
|
||||
),
|
||||
ins_anw AS (
|
||||
-- insert only bookings up to now (prevents future times on today)
|
||||
INSERT INTO anwesenheit ("timestamp", card_uid, check_in_out, geraet_id)
|
||||
SELECT ts, card_uid, check_in_out, geraet_id
|
||||
FROM sample_bookings
|
||||
WHERE ts <= NOW()
|
||||
RETURNING 1
|
||||
)
|
||||
-- now insert absences (uses the same days CTE)
|
||||
INSERT INTO abwesenheit (card_uid, abwesenheit_typ, datum)
|
||||
SELECT
|
||||
'aaaa-aaaa',
|
||||
(ARRAY[1, 2])[floor(random()*2 + 1)], -- example types
|
||||
d.work_date::timestamptz
|
||||
FROM days d
|
||||
WHERE random() < 0.2 -- ~20% random absences
|
||||
ORDER BY d.work_date;
|
||||
|
||||
Reference in New Issue
Block a user