placementt-core 1.400.1182 → 1.400.1184

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,17 @@
1
- import { ExternalEvent } from "./typeDefinitions";
2
- export type EventTimeSlot = {
3
- id: string;
1
+ import { EventTimeSlotSetting, ExternalEvent } from "./typeDefinitions";
2
+ export type EventTimeSlot = EventTimeSlotSetting & {
4
3
  date: string;
5
- start: string;
6
- end: string;
7
4
  };
8
- export declare const getEventTimeSlots: (event: Pick<ExternalEvent, "timeSlots" | "startDate" | "endDate" | "startTime" | "endTime">) => EventTimeSlot[];
9
- export declare const getSlotPlacesLeft: (event: Pick<ExternalEvent, "timeSlots" | "slotBookings">, slotId: string) => number;
5
+ export declare const getEventDateRange: (event: Pick<ExternalEvent, "startDate" | "endDate">) => string[];
6
+ export declare const getEventTimeSlots: (event: Pick<ExternalEvent, "timeSlots" | "startDate" | "endDate">) => EventTimeSlot[];
7
+ export declare const getSlotPlacesLeft: (event: Pick<ExternalEvent, "timeSlots" | "slotBookings" | "startDate" | "endDate">, slotId: string) => number;
8
+ export type SlotBookingChange = {
9
+ slotId: string;
10
+ before: number;
11
+ after: number;
12
+ };
13
+ export declare const getSlotBookingChanges: (before?: {
14
+ [slotId: string]: number;
15
+ }, after?: {
16
+ [slotId: string]: number;
17
+ }) => SlotBookingChange[];
@@ -1,33 +1,42 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSlotPlacesLeft = exports.getEventTimeSlots = void 0;
4
- const toMinutes = (time) => {
5
- const [h, m] = time.split(":").map((v) => parseInt(v));
6
- return h * 60 + (m || 0);
7
- };
8
- const toTime = (minutes) => `${String(Math.floor(minutes / 60)).padStart(2, "0")}:${String(minutes % 60).padStart(2, "0")}`;
9
- // Every slot for the event, one run of slotMinutes-long slots per day between
10
- // startDate and endDate (inclusive). A final slot that would overrun endTime is dropped.
11
- const getEventTimeSlots = (event) => {
12
- const { timeSlots, startDate, startTime, endTime } = event;
13
- if (!timeSlots?.slotMinutes || !startDate || !startTime || !endTime)
3
+ exports.getSlotBookingChanges = exports.getSlotPlacesLeft = exports.getEventTimeSlots = exports.getEventDateRange = void 0;
4
+ // Every date from startDate to endDate (inclusive), as "YYYY-MM-DD".
5
+ const getEventDateRange = (event) => {
6
+ if (!event.startDate)
14
7
  return [];
15
- const dayStart = toMinutes(startTime);
16
- const dayEnd = toMinutes(endTime);
17
- const first = new Date(`${startDate.slice(0, 10)}T00:00:00Z`);
18
- const last = new Date(`${(event.endDate || startDate).slice(0, 10)}T00:00:00Z`);
8
+ const first = new Date(`${event.startDate.slice(0, 10)}T00:00:00Z`);
9
+ const last = new Date(`${(event.endDate || event.startDate).slice(0, 10)}T00:00:00Z`);
19
10
  if (isNaN(first.getTime()) || isNaN(last.getTime()))
20
11
  return [];
21
- const slots = [];
12
+ const dates = [];
22
13
  for (const day = first; day <= last; day.setUTCDate(day.getUTCDate() + 1)) {
23
- const date = day.toISOString().slice(0, 10);
24
- for (let t = dayStart; t + timeSlots.slotMinutes <= dayEnd; t += timeSlots.slotMinutes) {
25
- slots.push({ id: `${date}T${toTime(t)}`, date, start: toTime(t), end: toTime(t + timeSlots.slotMinutes) });
26
- }
14
+ dates.push(day.toISOString().slice(0, 10));
27
15
  }
28
- return slots;
16
+ return dates;
17
+ };
18
+ exports.getEventDateRange = getEventDateRange;
19
+ // Every bookable slot, in date then start time order. Slots set up for a date that is no
20
+ // longer in the event's date range are left out, as are incomplete rows.
21
+ const getEventTimeSlots = (event) => {
22
+ const days = event.timeSlots?.days;
23
+ if (!days)
24
+ return [];
25
+ return (0, exports.getEventDateRange)(event).flatMap((date) => (days[date] || [])
26
+ .filter((slot) => slot.id && slot.start && slot.end && slot.capacity > 0)
27
+ .map((slot) => ({ ...slot, date }))
28
+ .sort((a, b) => a.start.localeCompare(b.start)));
29
29
  };
30
30
  exports.getEventTimeSlots = getEventTimeSlots;
31
- const getSlotPlacesLeft = (event, slotId) => Math.max(0, (event.timeSlots?.capacity || 0) - (event.slotBookings?.[slotId] || 0));
31
+ const getSlotPlacesLeft = (event, slotId) => {
32
+ const slot = (0, exports.getEventTimeSlots)(event).find((s) => s.id === slotId);
33
+ return Math.max(0, (slot?.capacity || 0) - (event.slotBookings?.[slotId] || 0));
34
+ };
32
35
  exports.getSlotPlacesLeft = getSlotPlacesLeft;
36
+ // What changed between two versions of a school's booking, in slot order where the slots still exist.
37
+ const getSlotBookingChanges = (before = {}, after = {}) => [...new Set([...Object.keys(before), ...Object.keys(after)])]
38
+ .map((slotId) => ({ slotId, before: before[slotId] || 0, after: after[slotId] || 0 }))
39
+ .filter((c) => c.before !== c.after)
40
+ .sort((a, b) => a.slotId.localeCompare(b.slotId));
41
+ exports.getSlotBookingChanges = getSlotBookingChanges;
33
42
  //# sourceMappingURL=eventTimeSlots.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eventTimeSlots.js","sourceRoot":"","sources":["../src/eventTimeSlots.ts"],"names":[],"mappings":";;;AASA,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE;IAC/B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAEpI,8EAA8E;AAC9E,yFAAyF;AAClF,MAAM,iBAAiB,GAAG,CAAC,KAAmF,EAAmB,EAAE;IACtI,MAAM,EAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,GAAG,KAAK,CAAC;IACzD,IAAI,CAAC,SAAS,EAAE,WAAW,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAE/E,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;IAChF,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IAE/D,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,KAAK,MAAM,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,IAAI,MAAM,EAAE,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YACrF,KAAK,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC;QAC7G,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAlBW,QAAA,iBAAiB,qBAkB5B;AAEK,MAAM,iBAAiB,GAAG,CAAC,KAAsD,EAAE,MAAc,EAAE,EAAE,CACxG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAD3E,QAAA,iBAAiB,qBAC0D"}
1
+ {"version":3,"file":"eventTimeSlots.js","sourceRoot":"","sources":["../src/eventTimeSlots.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,58 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const eventTimeSlots_1 = require("./eventTimeSlots");
4
+ const slot = (id, start, end, capacity = 30) => ({ id, start, end, capacity });
5
+ describe("getEventDateRange", () => {
6
+ it("lists every date in the range", () => {
7
+ expect((0, eventTimeSlots_1.getEventDateRange)({ startDate: "2026-11-02", endDate: "2026-11-04" })).toEqual(["2026-11-02", "2026-11-03", "2026-11-04"]);
8
+ });
9
+ it("uses the start date alone for a single-day event", () => {
10
+ expect((0, eventTimeSlots_1.getEventDateRange)({ startDate: "2026-11-02" })).toEqual(["2026-11-02"]);
11
+ expect((0, eventTimeSlots_1.getEventDateRange)({})).toEqual([]);
12
+ });
13
+ });
4
14
  describe("getEventTimeSlots", () => {
5
- const timeSlots = { slotMinutes: 60, capacity: 30, capacityUnit: "students", maxSlotsPerSchool: 1 };
6
- it("generates hourly slots for each day in the range", () => {
7
- const slots = (0, eventTimeSlots_1.getEventTimeSlots)({ timeSlots, startDate: "2026-11-02", endDate: "2026-11-04", startTime: "09:00", endTime: "12:00" });
8
- expect(slots).toHaveLength(9);
9
- expect(slots[0]).toEqual({ id: "2026-11-02T09:00", date: "2026-11-02", start: "09:00", end: "10:00" });
10
- expect(slots[8].id).toBe("2026-11-04T11:00");
15
+ const timeSlots = {
16
+ capacityUnit: "students",
17
+ days: {
18
+ "2026-11-02": [slot("b", "11:00", "12:00"), slot("a", "09:00", "10:00", 20)],
19
+ "2026-11-03": [slot("c", "13:00", "14:00"), slot("incomplete", "", "14:00")],
20
+ "2026-11-09": [slot("outOfRange", "09:00", "10:00")],
21
+ },
22
+ };
23
+ it("returns slots in date and start time order, with the date attached", () => {
24
+ const slots = (0, eventTimeSlots_1.getEventTimeSlots)({ timeSlots, startDate: "2026-11-02", endDate: "2026-11-03" });
25
+ expect(slots.map((s) => s.id)).toEqual(["a", "b", "c"]);
26
+ expect(slots[0]).toEqual({ id: "a", start: "09:00", end: "10:00", capacity: 20, date: "2026-11-02" });
11
27
  });
12
- it("drops a final slot that would overrun the end time", () => {
13
- const slots = (0, eventTimeSlots_1.getEventTimeSlots)({ timeSlots: { ...timeSlots, slotMinutes: 45 }, startDate: "2026-11-02", startTime: "09:00", endTime: "10:30" });
14
- expect(slots.map((s) => s.id)).toEqual(["2026-11-02T09:00", "2026-11-02T09:45"]);
28
+ it("leaves out dates outside the event range and incomplete rows", () => {
29
+ const ids = (0, eventTimeSlots_1.getEventTimeSlots)({ timeSlots, startDate: "2026-11-02", endDate: "2026-11-03" }).map((s) => s.id);
30
+ expect(ids).not.toContain("outOfRange");
31
+ expect(ids).not.toContain("incomplete");
15
32
  });
16
- it("returns nothing without slot settings or times", () => {
17
- expect((0, eventTimeSlots_1.getEventTimeSlots)({ startDate: "2026-11-02", startTime: "09:00", endTime: "12:00" })).toEqual([]);
18
- expect((0, eventTimeSlots_1.getEventTimeSlots)({ timeSlots, startDate: "2026-11-02" })).toEqual([]);
33
+ it("returns nothing without slot settings", () => {
34
+ expect((0, eventTimeSlots_1.getEventTimeSlots)({ startDate: "2026-11-02" })).toEqual([]);
19
35
  });
20
36
  });
21
37
  describe("getSlotPlacesLeft", () => {
22
- it("subtracts bookings from capacity and never goes negative", () => {
23
- const timeSlots = { slotMinutes: 60, capacity: 30, capacityUnit: "students", maxSlotsPerSchool: 1 };
24
- expect((0, eventTimeSlots_1.getSlotPlacesLeft)({ timeSlots, slotBookings: { a: 12 } }, "a")).toBe(18);
25
- expect((0, eventTimeSlots_1.getSlotPlacesLeft)({ timeSlots, slotBookings: { a: 40 } }, "a")).toBe(0);
26
- expect((0, eventTimeSlots_1.getSlotPlacesLeft)({ timeSlots }, "b")).toBe(30);
38
+ const event = { startDate: "2026-11-02", timeSlots: { capacityUnit: "students", days: { "2026-11-02": [slot("a", "09:00", "10:00", 30)] } } };
39
+ it("subtracts bookings from the slot's own capacity and never goes negative", () => {
40
+ expect((0, eventTimeSlots_1.getSlotPlacesLeft)({ ...event, slotBookings: { a: 12 } }, "a")).toBe(18);
41
+ expect((0, eventTimeSlots_1.getSlotPlacesLeft)({ ...event, slotBookings: { a: 40 } }, "a")).toBe(0);
42
+ expect((0, eventTimeSlots_1.getSlotPlacesLeft)(event, "missing")).toBe(0);
43
+ });
44
+ });
45
+ describe("getSlotBookingChanges", () => {
46
+ it("lists added, removed and resized slots", () => {
47
+ expect((0, eventTimeSlots_1.getSlotBookingChanges)({ a: 10, b: 5, c: 3 }, { a: 10, b: 8, d: 2 })).toEqual([
48
+ { slotId: "b", before: 5, after: 8 },
49
+ { slotId: "c", before: 3, after: 0 },
50
+ { slotId: "d", before: 0, after: 2 },
51
+ ]);
52
+ });
53
+ it("returns nothing when the booking is unchanged", () => {
54
+ expect((0, eventTimeSlots_1.getSlotBookingChanges)({ a: 10 }, { a: 10 })).toEqual([]);
55
+ expect((0, eventTimeSlots_1.getSlotBookingChanges)()).toEqual([]);
27
56
  });
28
57
  });
29
58
  //# sourceMappingURL=eventTimeSlots.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eventTimeSlots.test.js","sourceRoot":"","sources":["../src/eventTimeSlots.test.ts"],"names":[],"mappings":";;AAAA,qDAAsE;AAEtE,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,MAAM,SAAS,GAAG,EAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,UAAmB,EAAE,iBAAiB,EAAE,CAAC,EAAC,CAAC;IAE3G,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QACxD,MAAM,KAAK,GAAG,IAAA,kCAAiB,EAAC,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;QACnI,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAC,CAAC,CAAC;QACrG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC1D,MAAM,KAAK,GAAG,IAAA,kCAAiB,EAAC,EAAC,SAAS,EAAE,EAAC,GAAG,SAAS,EAAE,WAAW,EAAE,EAAE,EAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;QAC7I,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,IAAA,kCAAiB,EAAC,EAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvG,MAAM,CAAC,IAAA,kCAAiB,EAAC,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAChE,MAAM,SAAS,GAAG,EAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,UAAmB,EAAE,iBAAiB,EAAE,CAAC,EAAC,CAAC;QAC3G,MAAM,CAAC,IAAA,kCAAiB,EAAC,EAAC,SAAS,EAAE,YAAY,EAAE,EAAC,CAAC,EAAE,EAAE,EAAC,EAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,IAAA,kCAAiB,EAAC,EAAC,SAAS,EAAE,YAAY,EAAE,EAAC,CAAC,EAAE,EAAE,EAAC,EAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,CAAC,IAAA,kCAAiB,EAAC,EAAC,SAAS,EAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"eventTimeSlots.test.js","sourceRoot":"","sources":["../src/eventTimeSlots.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { SetStateAction } from "react";
2
- import { UserData } from "../typeDefinitions";
2
+ import { MarketingConsent, UserData } from "../typeDefinitions";
3
3
  import { CallableName, CallableContracts } from "../callables/registry";
4
4
  export declare const authListener: (setUser: SetStateAction<any>) => import("@firebase/util").Unsubscribe;
5
5
  export declare const login: (credentials: {
@@ -17,6 +17,7 @@ export type RegistrationData = {
17
17
  country: string;
18
18
  first_name: string;
19
19
  family_name: string;
20
+ marketingConsent?: MarketingConsent;
20
21
  };
21
22
  export declare const register: (credentials: RegistrationData, type: "Institute" | "Provider" | "Student") => Promise<string>;
22
23
  export declare const executeCallable: <K extends string>(functionName: K, data: K extends CallableName ? CallableContracts[K]["request"] : unknown, options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../src/firebase/firebase.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../src/firebase/firebase.tsx"],"names":[],"mappings":"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"}
@@ -376,6 +376,18 @@ export type WondeParentContact = {
376
376
  relationship: string;
377
377
  email: string;
378
378
  };
379
+ /**
380
+ * Proof of a user's choice about CareerThread marketing emails. Brevo only lets
381
+ * opted-in contacts receive marketing, so the exact wording shown and when it was
382
+ * given are kept, and a declined choice is recorded too.
383
+ */
384
+ export type MarketingConsent = {
385
+ granted: boolean;
386
+ wording: string;
387
+ source: "register";
388
+ at: string;
389
+ recordedAt?: string;
390
+ };
379
391
  /**
380
392
  * Why a student was marked as a leaver. The MIS paths (Wonde and the MIS file
381
393
  * sync) mark them automatically; staff mark them by removing students from a
@@ -591,6 +603,7 @@ export type UserData = {
591
603
  readUpdates?: string[];
592
604
  contactProviderConsent?: boolean;
593
605
  contactProviderConsentDate?: boolean;
606
+ marketingConsent?: MarketingConsent;
594
607
  referrals?: number;
595
608
  shareNameWithReferralLeaderboardConsent?: boolean;
596
609
  shareNameWithReferralLeaderboardConsentDate?: boolean;
@@ -2385,10 +2398,10 @@ export type ExternalEvent = {
2385
2398
  maxSchools?: number;
2386
2399
  maxStudents?: number;
2387
2400
  timeSlots?: {
2388
- slotMinutes: number;
2389
- capacity: number;
2390
2401
  capacityUnit: "students" | "schools";
2391
- maxSlotsPerSchool: number;
2402
+ days?: {
2403
+ [date: string]: EventTimeSlotSetting[];
2404
+ };
2392
2405
  };
2393
2406
  slotBookings?: {
2394
2407
  [slotId: string]: number;
@@ -3375,6 +3388,12 @@ export type ExternalEventAttendee = {
3375
3388
  };
3376
3389
  };
3377
3390
  };
3391
+ export type EventTimeSlotSetting = {
3392
+ id: string;
3393
+ start: string;
3394
+ end: string;
3395
+ capacity: number;
3396
+ };
3378
3397
  export type ExternalEventCareersSchool = {
3379
3398
  oId: string;
3380
3399
  instituteId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"typeDefinitions.js","sourceRoot":"","sources":["../src/typeDefinitions.ts"],"names":[],"mappings":";;;AA2oIA,sDASC;AAeD,oDAKC;AAaD,0CAEC;AA5oED;;;;;kFAKkF;AACrE,QAAA,qBAAqB,GAAG,SAAS,CAAC;AAClC,QAAA,iBAAiB,GAAG,OAAO,CAAC;AAwjEzC;yEACyE;AAC5D,QAAA,0BAA0B,GAA2C;IAC9E,gBAAgB,EAAE,2BAA2B;IAC7C,mBAAmB,EAAE,sBAAsB;IAC3C,cAAc,EAAE,iBAAiB;IACjC,kBAAkB,EAAE,qBAAqB;IACzC,UAAU,EAAE,oCAAoC;IAChD,aAAa,EAAE,yBAAyB;IACxC,aAAa,EAAE,wBAAwB;IACvC,KAAK,EAAE,OAAO;CACjB,CAAC;AAEW,QAAA,0BAA0B,GAA+C;IAClF,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,OAAO;CACjB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAgB,qBAAqB,CAAC,SAAsC;IACxE,QAAQ,SAAS,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC;QAC5B,KAAK,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC;QAC7B,KAAK,WAAW,CAAC;QACjB,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,OAAO,CAAC,CAAC,OAAO,UAAU,CAAC;IAC3B,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,oBAAoB,CAChC,IAAwC,EACxC,MAA6C;IAE7C,OAAO,IAAI,EAAE,WAAW,IAAI,MAAM,EAAE,YAAY,IAAI,KAAK,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,eAAe,CAAC,KAA6D;IACzF,OAAO,GAAG,KAAK,CAAC,cAAc,IAAI,EAAE,IAAI,KAAK,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"typeDefinitions.js","sourceRoot":"","sources":["../src/typeDefinitions.ts"],"names":[],"mappings":";;;AA+pIA,sDASC;AAeD,oDAKC;AAaD,0CAEC;AAlpED;;;;;kFAKkF;AACrE,QAAA,qBAAqB,GAAG,SAAS,CAAC;AAClC,QAAA,iBAAiB,GAAG,OAAO,CAAC;AA8jEzC;yEACyE;AAC5D,QAAA,0BAA0B,GAA2C;IAC9E,gBAAgB,EAAE,2BAA2B;IAC7C,mBAAmB,EAAE,sBAAsB;IAC3C,cAAc,EAAE,iBAAiB;IACjC,kBAAkB,EAAE,qBAAqB;IACzC,UAAU,EAAE,oCAAoC;IAChD,aAAa,EAAE,yBAAyB;IACxC,aAAa,EAAE,wBAAwB;IACvC,KAAK,EAAE,OAAO;CACjB,CAAC;AAEW,QAAA,0BAA0B,GAA+C;IAClF,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,OAAO;CACjB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAgB,qBAAqB,CAAC,SAAsC;IACxE,QAAQ,SAAS,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC;QAC5B,KAAK,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC;QAC7B,KAAK,WAAW,CAAC;QACjB,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,OAAO,CAAC,CAAC,OAAO,UAAU,CAAC;IAC3B,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,oBAAoB,CAChC,IAAwC,EACxC,MAA6C;IAE7C,OAAO,IAAI,EAAE,WAAW,IAAI,MAAM,EAAE,YAAY,IAAI,KAAK,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,eAAe,CAAC,KAA6D;IACzF,OAAO,GAAG,KAAK,CAAC,cAAc,IAAI,EAAE,IAAI,KAAK,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/E,CAAC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "private": false,
3
3
  "name": "placementt-core",
4
4
  "author": "Placementt",
5
- "version": "1.400.1182",
5
+ "version": "1.400.1184",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
8
8
  "scripts": {
@@ -1,31 +1,66 @@
1
- import {getEventTimeSlots, getSlotPlacesLeft} from "./eventTimeSlots";
1
+ import {getEventDateRange, getEventTimeSlots, getSlotBookingChanges, getSlotPlacesLeft} from "./eventTimeSlots";
2
+
3
+ const slot = (id: string, start: string, end: string, capacity = 30) => ({id, start, end, capacity});
4
+
5
+ describe("getEventDateRange", () => {
6
+ it("lists every date in the range", () => {
7
+ expect(getEventDateRange({startDate: "2026-11-02", endDate: "2026-11-04"})).toEqual(["2026-11-02", "2026-11-03", "2026-11-04"]);
8
+ });
9
+
10
+ it("uses the start date alone for a single-day event", () => {
11
+ expect(getEventDateRange({startDate: "2026-11-02"})).toEqual(["2026-11-02"]);
12
+ expect(getEventDateRange({})).toEqual([]);
13
+ });
14
+ });
2
15
 
3
16
  describe("getEventTimeSlots", () => {
4
- const timeSlots = {slotMinutes: 60, capacity: 30, capacityUnit: "students" as const, maxSlotsPerSchool: 1};
17
+ const timeSlots = {
18
+ capacityUnit: "students" as const,
19
+ days: {
20
+ "2026-11-02": [slot("b", "11:00", "12:00"), slot("a", "09:00", "10:00", 20)],
21
+ "2026-11-03": [slot("c", "13:00", "14:00"), slot("incomplete", "", "14:00")],
22
+ "2026-11-09": [slot("outOfRange", "09:00", "10:00")],
23
+ },
24
+ };
5
25
 
6
- it("generates hourly slots for each day in the range", () => {
7
- const slots = getEventTimeSlots({timeSlots, startDate: "2026-11-02", endDate: "2026-11-04", startTime: "09:00", endTime: "12:00"});
8
- expect(slots).toHaveLength(9);
9
- expect(slots[0]).toEqual({id: "2026-11-02T09:00", date: "2026-11-02", start: "09:00", end: "10:00"});
10
- expect(slots[8].id).toBe("2026-11-04T11:00");
26
+ it("returns slots in date and start time order, with the date attached", () => {
27
+ const slots = getEventTimeSlots({timeSlots, startDate: "2026-11-02", endDate: "2026-11-03"});
28
+ expect(slots.map((s) => s.id)).toEqual(["a", "b", "c"]);
29
+ expect(slots[0]).toEqual({id: "a", start: "09:00", end: "10:00", capacity: 20, date: "2026-11-02"});
11
30
  });
12
31
 
13
- it("drops a final slot that would overrun the end time", () => {
14
- const slots = getEventTimeSlots({timeSlots: {...timeSlots, slotMinutes: 45}, startDate: "2026-11-02", startTime: "09:00", endTime: "10:30"});
15
- expect(slots.map((s) => s.id)).toEqual(["2026-11-02T09:00", "2026-11-02T09:45"]);
32
+ it("leaves out dates outside the event range and incomplete rows", () => {
33
+ const ids = getEventTimeSlots({timeSlots, startDate: "2026-11-02", endDate: "2026-11-03"}).map((s) => s.id);
34
+ expect(ids).not.toContain("outOfRange");
35
+ expect(ids).not.toContain("incomplete");
16
36
  });
17
37
 
18
- it("returns nothing without slot settings or times", () => {
19
- expect(getEventTimeSlots({startDate: "2026-11-02", startTime: "09:00", endTime: "12:00"})).toEqual([]);
20
- expect(getEventTimeSlots({timeSlots, startDate: "2026-11-02"})).toEqual([]);
38
+ it("returns nothing without slot settings", () => {
39
+ expect(getEventTimeSlots({startDate: "2026-11-02"})).toEqual([]);
21
40
  });
22
41
  });
23
42
 
24
43
  describe("getSlotPlacesLeft", () => {
25
- it("subtracts bookings from capacity and never goes negative", () => {
26
- const timeSlots = {slotMinutes: 60, capacity: 30, capacityUnit: "students" as const, maxSlotsPerSchool: 1};
27
- expect(getSlotPlacesLeft({timeSlots, slotBookings: {a: 12}}, "a")).toBe(18);
28
- expect(getSlotPlacesLeft({timeSlots, slotBookings: {a: 40}}, "a")).toBe(0);
29
- expect(getSlotPlacesLeft({timeSlots}, "b")).toBe(30);
44
+ const event = {startDate: "2026-11-02", timeSlots: {capacityUnit: "students" as const, days: {"2026-11-02": [slot("a", "09:00", "10:00", 30)]}}};
45
+
46
+ it("subtracts bookings from the slot's own capacity and never goes negative", () => {
47
+ expect(getSlotPlacesLeft({...event, slotBookings: {a: 12}}, "a")).toBe(18);
48
+ expect(getSlotPlacesLeft({...event, slotBookings: {a: 40}}, "a")).toBe(0);
49
+ expect(getSlotPlacesLeft(event, "missing")).toBe(0);
50
+ });
51
+ });
52
+
53
+ describe("getSlotBookingChanges", () => {
54
+ it("lists added, removed and resized slots", () => {
55
+ expect(getSlotBookingChanges({a: 10, b: 5, c: 3}, {a: 10, b: 8, d: 2})).toEqual([
56
+ {slotId: "b", before: 5, after: 8},
57
+ {slotId: "c", before: 3, after: 0},
58
+ {slotId: "d", before: 0, after: 2},
59
+ ]);
60
+ });
61
+
62
+ it("returns nothing when the booking is unchanged", () => {
63
+ expect(getSlotBookingChanges({a: 10}, {a: 10})).toEqual([]);
64
+ expect(getSlotBookingChanges()).toEqual([]);
30
65
  });
31
66
  });
@@ -1,40 +1,44 @@
1
- import {ExternalEvent} from "./typeDefinitions";
1
+ import {EventTimeSlotSetting, ExternalEvent} from "./typeDefinitions";
2
2
 
3
- export type EventTimeSlot = {
4
- id: string, // "YYYY-MM-DDTHH:mm", stable as long as the event dates and times don't change
3
+ export type EventTimeSlot = EventTimeSlotSetting & {
5
4
  date: string, // "YYYY-MM-DD"
6
- start: string, // "HH:mm"
7
- end: string, // "HH:mm"
8
5
  };
9
6
 
10
- const toMinutes = (time: string) => {
11
- const [h, m] = time.split(":").map((v) => parseInt(v));
12
- return h * 60 + (m || 0);
13
- };
14
-
15
- const toTime = (minutes: number) => `${String(Math.floor(minutes / 60)).padStart(2, "0")}:${String(minutes % 60).padStart(2, "0")}`;
16
-
17
- // Every slot for the event, one run of slotMinutes-long slots per day between
18
- // startDate and endDate (inclusive). A final slot that would overrun endTime is dropped.
19
- export const getEventTimeSlots = (event: Pick<ExternalEvent, "timeSlots"|"startDate"|"endDate"|"startTime"|"endTime">): EventTimeSlot[] => {
20
- const {timeSlots, startDate, startTime, endTime} = event;
21
- if (!timeSlots?.slotMinutes || !startDate || !startTime || !endTime) return [];
22
-
23
- const dayStart = toMinutes(startTime);
24
- const dayEnd = toMinutes(endTime);
25
- const first = new Date(`${startDate.slice(0, 10)}T00:00:00Z`);
26
- const last = new Date(`${(event.endDate || startDate).slice(0, 10)}T00:00:00Z`);
7
+ // Every date from startDate to endDate (inclusive), as "YYYY-MM-DD".
8
+ export const getEventDateRange = (event: Pick<ExternalEvent, "startDate"|"endDate">): string[] => {
9
+ if (!event.startDate) return [];
10
+ const first = new Date(`${event.startDate.slice(0, 10)}T00:00:00Z`);
11
+ const last = new Date(`${(event.endDate || event.startDate).slice(0, 10)}T00:00:00Z`);
27
12
  if (isNaN(first.getTime()) || isNaN(last.getTime())) return [];
28
13
 
29
- const slots: EventTimeSlot[] = [];
14
+ const dates: string[] = [];
30
15
  for (const day = first; day <= last; day.setUTCDate(day.getUTCDate() + 1)) {
31
- const date = day.toISOString().slice(0, 10);
32
- for (let t = dayStart; t + timeSlots.slotMinutes <= dayEnd; t += timeSlots.slotMinutes) {
33
- slots.push({id: `${date}T${toTime(t)}`, date, start: toTime(t), end: toTime(t + timeSlots.slotMinutes)});
34
- }
16
+ dates.push(day.toISOString().slice(0, 10));
35
17
  }
36
- return slots;
18
+ return dates;
37
19
  };
38
20
 
39
- export const getSlotPlacesLeft = (event: Pick<ExternalEvent, "timeSlots"|"slotBookings">, slotId: string) =>
40
- Math.max(0, (event.timeSlots?.capacity || 0) - (event.slotBookings?.[slotId] || 0));
21
+ // Every bookable slot, in date then start time order. Slots set up for a date that is no
22
+ // longer in the event's date range are left out, as are incomplete rows.
23
+ export const getEventTimeSlots = (event: Pick<ExternalEvent, "timeSlots"|"startDate"|"endDate">): EventTimeSlot[] => {
24
+ const days = event.timeSlots?.days;
25
+ if (!days) return [];
26
+ return getEventDateRange(event).flatMap((date) => (days[date] || [])
27
+ .filter((slot) => slot.id && slot.start && slot.end && slot.capacity > 0)
28
+ .map((slot) => ({...slot, date}))
29
+ .sort((a, b) => a.start.localeCompare(b.start)));
30
+ };
31
+
32
+ export const getSlotPlacesLeft = (event: Pick<ExternalEvent, "timeSlots"|"slotBookings"|"startDate"|"endDate">, slotId: string) => {
33
+ const slot = getEventTimeSlots(event).find((s) => s.id === slotId);
34
+ return Math.max(0, (slot?.capacity || 0) - (event.slotBookings?.[slotId] || 0));
35
+ };
36
+
37
+ export type SlotBookingChange = {slotId: string, before: number, after: number}; // 0 = not booked
38
+
39
+ // What changed between two versions of a school's booking, in slot order where the slots still exist.
40
+ export const getSlotBookingChanges = (before: {[slotId: string]: number} = {}, after: {[slotId: string]: number} = {}): SlotBookingChange[] =>
41
+ [...new Set([...Object.keys(before), ...Object.keys(after)])]
42
+ .map((slotId) => ({slotId, before: before[slotId] || 0, after: after[slotId] || 0}))
43
+ .filter((c) => c.before !== c.after)
44
+ .sort((a, b) => a.slotId.localeCompare(b.slotId));
@@ -2,7 +2,7 @@ import {onAuthStateChanged, signInWithEmailAndPassword} from "firebase/auth";
2
2
  import {httpsCallable} from "firebase/functions";
3
3
  import {SetStateAction} from "react";
4
4
  import {getUser} from "./readDatabase";
5
- import {ExternalEvent, UserData} from "../typeDefinitions";
5
+ import {ExternalEvent, MarketingConsent, UserData} from "../typeDefinitions";
6
6
  import FirebaseQuery from "./firebaseQuery";
7
7
  import {auth, functions} from "./firebaseConfig";
8
8
  import {addJob, Job, updateJob} from "../features/jobs/jobsSlice";
@@ -42,7 +42,8 @@ export type RegistrationData = {
42
42
  postal_code: string,
43
43
  country: string,
44
44
  first_name: string,
45
- family_name: string
45
+ family_name: string,
46
+ marketingConsent?: MarketingConsent,
46
47
  }
47
48
 
48
49
  export const register = async (credentials: RegistrationData, type:"Institute"|"Provider"|"Student") => {
@@ -393,6 +393,19 @@ export type WondeParentContact = {
393
393
  email: string,
394
394
  };
395
395
 
396
+ /**
397
+ * Proof of a user's choice about CareerThread marketing emails. Brevo only lets
398
+ * opted-in contacts receive marketing, so the exact wording shown and when it was
399
+ * given are kept, and a declined choice is recorded too.
400
+ */
401
+ export type MarketingConsent = {
402
+ granted: boolean,
403
+ wording: string, // The checkbox text exactly as shown.
404
+ source: "register",
405
+ at: string, // ISO timestamp from the user's browser.
406
+ recordedAt?: string, // ISO timestamp set by the server when stored.
407
+ }
408
+
396
409
  /**
397
410
  * Why a student was marked as a leaver. The MIS paths (Wonde and the MIS file
398
411
  * sync) mark them automatically; staff mark them by removing students from a
@@ -633,6 +646,7 @@ export type UserData = {
633
646
  readUpdates?: string[],
634
647
  contactProviderConsent?: boolean,
635
648
  contactProviderConsentDate?: boolean
649
+ marketingConsent?: MarketingConsent,
636
650
  referrals?: number,
637
651
  shareNameWithReferralLeaderboardConsent?: boolean,
638
652
  shareNameWithReferralLeaderboardConsentDate?: boolean,
@@ -2393,14 +2407,13 @@ export type ExternalEvent = {
2393
2407
  maxExternalAttendees?: number, // max number of employers
2394
2408
  maxSchools?: number, // max number of employers
2395
2409
  maxStudents?: number, // max number of employers
2396
- // Timed slots: schools book fixed-length slots generated from startDate..endDate
2397
- // and startTime..endTime (see getEventTimeSlots). Booking and freeing places
2398
- // only happens through the events-bookEventSlots / events-removeEventSlotBooking callables.
2410
+ // Timed slots: the hub lists slots for each event date, each with its own capacity.
2411
+ // Only dates between startDate and endDate are offered (see getEventTimeSlots). Booking
2412
+ // and freeing places only happens through the events-bookEventSlots /
2413
+ // events-removeEventSlotBooking callables.
2399
2414
  timeSlots?: {
2400
- slotMinutes: number,
2401
- capacity: number, // places per slot
2402
2415
  capacityUnit: "students"|"schools",
2403
- maxSlotsPerSchool: number,
2416
+ days?: {[date: string]: EventTimeSlotSetting[]}, // keyed "YYYY-MM-DD"
2404
2417
  },
2405
2418
  slotBookings?: {[slotId: string]: number}, // places used per slot
2406
2419
  studentJoinCode: number,
@@ -3362,6 +3375,13 @@ export type ExternalEventAttendee = {
3362
3375
 
3363
3376
 
3364
3377
 
3378
+ export type EventTimeSlotSetting = {
3379
+ id: string, // Kept when the times change, so bookings follow the slot
3380
+ start: string, // "HH:mm"
3381
+ end: string, // "HH:mm"
3382
+ capacity: number, // places in this slot
3383
+ };
3384
+
3365
3385
  export type ExternalEventCareersSchool = {
3366
3386
  oId: string,
3367
3387
  instituteId: string,