placementt-core 11.0.533 → 11.0.892

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.
Files changed (76) hide show
  1. package/lib/constants.d.ts +13 -1
  2. package/lib/constants.js +86 -1
  3. package/lib/constants.js.map +1 -1
  4. package/lib/features/analytics/useAnalytics.d.ts +2 -0
  5. package/lib/features/analytics/useAnalytics.js +22 -19
  6. package/lib/features/analytics/useAnalytics.js.map +1 -1
  7. package/lib/features/global/downtime/useDowntime.d.ts +1 -0
  8. package/lib/features/global/downtime/useDowntime.js +9 -7
  9. package/lib/features/global/downtime/useDowntime.js.map +1 -1
  10. package/lib/features/global/users/useUserFunctions.js +1 -1
  11. package/lib/features/global/users/useUserFunctions.js.map +1 -1
  12. package/lib/features/jobs/jobsSlice.d.ts +10 -2
  13. package/lib/features/jobs/jobsSlice.js +5 -2
  14. package/lib/features/jobs/jobsSlice.js.map +1 -1
  15. package/lib/features/placements/studentPlacements/activePlacement.d.ts +5 -1
  16. package/lib/features/placements/studentPlacements/activePlacement.js +7 -3
  17. package/lib/features/placements/studentPlacements/activePlacement.js.map +1 -1
  18. package/lib/features/placements/studentPlacements/completedStudentPlacementsSlice.d.ts +3 -2
  19. package/lib/features/placements/studentPlacements/completedStudentPlacementsSlice.js +4 -1
  20. package/lib/features/placements/studentPlacements/completedStudentPlacementsSlice.js.map +1 -1
  21. package/lib/features/placements/studentPlacements/upcomingStudentPlacementsSlice.d.ts +2 -2
  22. package/lib/features/placements/studentPlacements/upcomingStudentPlacementsSlice.js +1 -1
  23. package/lib/features/placements/studentPlacements/upcomingStudentPlacementsSlice.js.map +1 -1
  24. package/lib/features/placements/studentPlacements/useStudentPlacements.d.ts +2 -12
  25. package/lib/features/placements/studentPlacements/useStudentPlacements.js +1 -26
  26. package/lib/features/placements/studentPlacements/useStudentPlacements.js.map +1 -1
  27. package/lib/features/updates/useUpdates.d.ts +1 -0
  28. package/lib/features/updates/useUpdates.js +13 -12
  29. package/lib/features/updates/useUpdates.js.map +1 -1
  30. package/lib/firebase/firebase.d.ts +5 -3
  31. package/lib/firebase/firebase.js +23 -12
  32. package/lib/firebase/firebase.js.map +1 -1
  33. package/lib/firebase/firebaseConfig.js.map +1 -1
  34. package/lib/firebase/firebaseQuery.d.ts +6 -2
  35. package/lib/firebase/firebaseQuery.js +11 -3
  36. package/lib/firebase/firebaseQuery.js.map +1 -1
  37. package/lib/firebase/readDatabase.d.ts +2 -4
  38. package/lib/firebase/readDatabase.js +30 -5
  39. package/lib/firebase/readDatabase.js.map +1 -1
  40. package/lib/firebase/writeDatabase.d.ts +6 -2
  41. package/lib/firebase/writeDatabase.js +2 -1
  42. package/lib/firebase/writeDatabase.js.map +1 -1
  43. package/lib/hooks.d.ts +277 -192
  44. package/lib/hooks.js +1437 -704
  45. package/lib/hooks.js.map +1 -1
  46. package/lib/reduxHooks.d.ts +122 -5
  47. package/lib/reduxHooks.js +132 -29
  48. package/lib/reduxHooks.js.map +1 -1
  49. package/lib/tasksAndTips.d.ts +19 -7
  50. package/lib/tasksAndTips.js +637 -164
  51. package/lib/tasksAndTips.js.map +1 -1
  52. package/lib/typeDefinitions.d.ts +321 -110
  53. package/lib/util.d.ts +15 -3
  54. package/lib/util.js +47 -10
  55. package/lib/util.js.map +1 -1
  56. package/package.json +7 -4
  57. package/src/constants.ts +91 -3
  58. package/src/features/analytics/useAnalytics.tsx +25 -17
  59. package/src/features/global/downtime/useDowntime.tsx +11 -7
  60. package/src/features/global/users/useUserFunctions.tsx +1 -1
  61. package/src/features/jobs/jobsSlice.ts +9 -3
  62. package/src/features/placements/studentPlacements/activePlacement.ts +8 -3
  63. package/src/features/placements/studentPlacements/completedStudentPlacementsSlice.ts +5 -2
  64. package/src/features/placements/studentPlacements/upcomingStudentPlacementsSlice.ts +2 -2
  65. package/src/features/placements/studentPlacements/useStudentPlacements.tsx +4 -28
  66. package/src/features/updates/useUpdates.tsx +14 -12
  67. package/src/firebase/firebase.tsx +26 -15
  68. package/src/firebase/firebaseConfig.tsx +1 -1
  69. package/src/firebase/firebaseQuery.tsx +11 -3
  70. package/src/firebase/readDatabase.tsx +34 -6
  71. package/src/firebase/writeDatabase.tsx +3 -1
  72. package/src/hooks.tsx +1804 -935
  73. package/src/reduxHooks.ts +144 -32
  74. package/src/tasksAndTips.ts +689 -166
  75. package/src/typeDefinitions.ts +373 -109
  76. package/src/util.ts +63 -18
@@ -1,5 +1,6 @@
1
1
  import {DocumentData, DocumentReference, Timestamp} from "firebase/firestore";
2
2
  import {Descendant} from "slate";
3
+ import {emailTemplates} from "./constants";
3
4
 
4
5
  export type Products = "institutes"|"providers"|"students"|"admin";
5
6
 
@@ -32,6 +33,7 @@ export type StudentPlacementData = {
32
33
  ["address-line2"]: string,
33
34
  locality: string,
34
35
  postal_code: string,
36
+ what3Words?: string,
35
37
  country: string,
36
38
  cohort?: string,
37
39
  leadTimes: string[],
@@ -39,9 +41,9 @@ export type StudentPlacementData = {
39
41
  mapConsent: true | "institute" | false,
40
42
  mapConsentDate?: string,
41
43
  placementId?: string,
42
- addressId?: string,
44
+ providerContactId?: string,
43
45
  geoHash?: string,
44
- statusType: "draft"|"submitted"|"active"|"completed"|"withdrawn",
46
+ statusType: "draft"|"submitted"|"active"|"completed"|"withdrawn"|"requested",
45
47
  questions: PlacementQuestions,
46
48
  staffRoles: string[],
47
49
  sector: string,
@@ -49,6 +51,7 @@ export type StudentPlacementData = {
49
51
  importedProviderForms?: boolean,
50
52
  analytics: string[],
51
53
  units: string,
54
+ schoolId?: string,
52
55
  active: boolean,
53
56
  completed: boolean,
54
57
  personalAnalytics?: string[],
@@ -59,16 +62,22 @@ export type StudentPlacementData = {
59
62
  draft: boolean,
60
63
  activeDates: string[],
61
64
  insurance: boolean|"awaitingReview",
65
+ insuranceSkippedReason?: string,
62
66
  riskAssessment?: boolean|"awaitingReview",
63
- riskAssessmentType?: "file"|"form",
64
- riskAssessmentData?: {[key:string]: unknown}[],
67
+ riskAssessmentType?: "file"|"form"|"skipped",
68
+ riskAssessmentData?: {[key:string]: unknown}[]|string,
65
69
  dbsCheck?: boolean|"awaitingReview",
66
- dbsCheckType?: "file"|"form",
67
- dbsCheckData?: {[key:string]: unknown}[],
70
+ dbsCheckType?: "file"|"form"|"skipped",
71
+ dbsCheckData?: {[key:string]: unknown}[]|string,
68
72
  contactType?: "email"|"website"|"phone"|"post",
69
73
  webpage?: string,
70
74
  providerLogs?: string[],
71
75
  studentsLogs?: string[],
76
+ notes?: {
77
+ providers?: Descendant[],
78
+ institutes?: Descendant[],
79
+ students?: Descendant[]
80
+ }
72
81
  staffLogs?: [],
73
82
  feedback: {
74
83
  students: {
@@ -85,13 +94,22 @@ export type StudentPlacementData = {
85
94
  },
86
95
  },
87
96
  onboarding: (OnboardingDocs&{
97
+ deadline?: string,
88
98
  completed: {
89
- submitted: string|false,
99
+ submitted: boolean,
100
+ submittedDate?: string,
90
101
  accepted?: boolean,
91
102
  filesViewed?: string[],
92
103
  formsCompleted?: {[key: string]: unknown},
93
104
  filesUploaded?: {[key: number]: string[]},
94
- }})|false,
105
+ }})|false|null,
106
+ studentForename?: string,
107
+ studentSurname?: string,
108
+ studentEmail?: string,
109
+ skillsTargetsValues?: {[key: string]: {
110
+ provider: number[],
111
+ student: number[],
112
+ }}
95
113
  }
96
114
 
97
115
  export type PlacementQuestions = {
@@ -124,29 +142,32 @@ export type PlacementQuestions = {
124
142
  payFrequency: "total"|"hourly"|"daily"|"weekly"|"monthly"|"annually",
125
143
  }
126
144
 
127
- export type SavedPlacement = {
128
- placementId: string,
129
- savedByProduct: Products,
130
- savedByUserType: "Organisation"|"Student",
131
- savedById: string,
132
- status?: "Accepted" | "Blocked" | "providerReview";
133
- listed: boolean,
134
- concurrentPlacements?: number,
135
- id: string
136
- }
145
+ // export type SavedPlacement = {
146
+ // placementId: string,
147
+ // savedByProduct: Products,
148
+ // savedByUserType: "Organisation"|"Student",
149
+ // savedById: string,
150
+ // schoolId?: string,
151
+ // status?: "Accepted" | "Blocked" | "providerReview";
152
+ // listed: boolean,
153
+ // concurrentPlacements?: number,
154
+ // id: string
155
+ // }
137
156
 
138
- export type PlacementListingStages = "basic"|"address"|"students"|"responsibilities"|"applications"|"onboarding"|"review"|"complete";
157
+ // export type PlacementListingStages = "basic"|"address"|"students"|"responsibilities"|"applications"|"onboarding"|"review"|"complete";
139
158
 
140
159
  export type PlacementListing = {
141
160
  title: string,
142
- uid: string,
143
- template?: string,
144
- providerId?: string,
161
+ // uid: string,
162
+ // template?: string,
163
+ providerId: string,
164
+ providerContactId: string,
145
165
  name: string,
146
166
  providerEmail: string,
147
167
  providerPhone: string,
148
- id:string,
149
- studentType: "secondary" | "higher" | "undergraduate" | "postgraduate"
168
+ id?:string,
169
+ created?: string,
170
+ // studentType: "secondary" | "higher" | "undergraduate" | "postgraduate"
150
171
  contactForename: string,
151
172
  contactSurname: string,
152
173
  ["address-line1"]: string,
@@ -154,56 +175,53 @@ export type PlacementListing = {
154
175
  locality: string,
155
176
  postal_code: string,
156
177
  country: string,
157
- addressId?: string,
178
+ what3Words?: string,
158
179
  geoHash?: string,
159
- status: "listed"|"unlisted"|"deleted"|"draft",
180
+ // status: "listed"|"unlisted"|"deleted"|"draft",
160
181
  questions: PlacementQuestions,
161
- savedBy?: {[key:string]: {
182
+ savedBy?: {[key:string]: { // LIST OF SCHOOLS THAT HAVE SAVED THIS
183
+ MATschools?: string[],
162
184
  exists: true,
185
+ cohorts?: {[key: string]: {
186
+ exists: boolean,
187
+ listed: boolean
188
+ }}
163
189
  providerConsent: boolean,
164
- providerConsentDate?: Timestamp,
165
- status: "uploaded"|"approved"|"rejected"|"blocked"}},
190
+ providerConsentDate?: string,
191
+ savedByUserType: "Organisation"|"Student",
192
+ status: "uploaded"|"approved"|"rejected"|"providerReviewed"|"blocked"}},
166
193
  mapConsent?: boolean,
167
- mapConsentData?: string,
194
+ mapConsentDate?: string,
168
195
  uploadedBy: "student"|"institute"|"provider",
169
- riskAssessmentType?: "file"|"form",
170
- riskAssessmentData?: {[key:string]: unknown}[],
171
- dbsCheckType?: "file"|"form",
172
- dbsCheckData?: {[key:string]: unknown}[],
196
+ riskAssessmentType?: "file"|"form"|"skipped",
197
+ concurrentPlacements?: number,
198
+ riskAssessmentData?: {[key:string]: unknown}[]|string,
199
+ dbsCheckType?: "file"|"form"|"skipped",
200
+ dbsCheckData?: {[key:string]: unknown}[]|string,
173
201
  contactType?: "email"|"website"|"phone"|"post",
174
202
  webpage?: string,
175
- stage: PlacementListingStages,
176
- placementDateType?: "any"|"range"|"defined",
177
- placementDates?: {start: string, end: string}[],
178
- applicationType?: "simple"|"complex",
179
- applicantWorkflowId?: string,
180
- applicantWorkflow?: ApplicantStage[],
181
- onboarding: OnboardingDocs|false,
182
- maxApplicants?: number,
183
- maxStudents?: number,
184
- primaryContactId: string,
203
+ sector?: string,
204
+ subsector?: string,
205
+ // stage: PlacementListingStages,
206
+ // placementDateType?: "any"|"range"|"defined",
207
+ // placementDates?: {start: string, end: string}[],
208
+ // applicationType?: "simple"|"complex",
209
+ // applicantWorkflowId?: string,
210
+ // applicantWorkflow?: ApplicantStage[],
211
+ // onboarding: (OnboardingDocs&{deadline: number})|false,
212
+ // maxApplicants?: number,
213
+ // maxStudents?: number,
214
+ // primaryContactId: string,
185
215
  }
186
216
 
187
217
  export type OnboardingDocs = {
188
- deadline?: string,
189
218
  message?: string,
190
- deadlineType?: "date"|"days"
191
219
  forms?: string[],
192
220
  files?: string[],
193
- formDetails?: {[key: string]:
194
- {
195
- name: string,
196
- id: string,
197
- description?: string,
198
- product: Products,
199
- oId: string,
200
- form: CustomFormSchema
201
- }},
202
221
  requiredFiles?: {fileName: string, fileType: string}[]
203
- viewableFiles?: {[key: string]: FileItem},
204
222
  }
205
223
 
206
- export type PlacementTemplate = PlacementListing&{templateName: string};
224
+ // export type PlacementTemplate = PlacementListing&{templateName: string};
207
225
 
208
226
  export type OrganisationAddressStages = "address"|"contacts"|"misc"|"review"|"complete";
209
227
 
@@ -241,7 +259,9 @@ export type OrganisationAddress = Address & {
241
259
  },
242
260
  primaryContactId?: string,
243
261
  default?: boolean,
244
- flags?: ("addressMissing" | "noPrimaryContact")[]
262
+ flags?: ("addressMissing" | "noPrimaryContact")[],
263
+ color?: string;
264
+ image?: string|false;
245
265
  };
246
266
 
247
267
  export type Address = {
@@ -251,7 +271,8 @@ export type Address = {
251
271
  locality: string,
252
272
  postal_code: string,
253
273
  country: string,
254
- geoHash?: string
274
+ geoHash?: string,
275
+ what3Words?: string
255
276
  };
256
277
 
257
278
  export type FlagCodes =
@@ -273,13 +294,17 @@ export type FlagCodes =
273
294
  "completeOnboarding"|
274
295
  "reviewOnboarding"|
275
296
  "requestedVisibleAddresses"|
276
- "requestedVisiblePlacementListings"
297
+ "requestedVisiblePlacementListings"|
298
+ "addOnboarding"|
299
+ "studentNotAccepted"|
300
+ "reminder"
277
301
 
278
302
 
279
303
  export type UserData = {
280
304
  details: {
281
305
  forename: string,
282
306
  surname: string,
307
+ pronouns?: string,
283
308
  parentEmail?: string,
284
309
  year?: string
285
310
  },
@@ -307,18 +332,20 @@ export type UserData = {
307
332
  units?: string,
308
333
  activationCode: number,
309
334
  cohort?: string,
335
+ schoolId?: string,
310
336
  cohortData?: CohortData,
311
337
  dismissedTasks?: string[],
312
338
  dismissedTutorials?: string[],
313
339
  dismissedTips?: string[],
340
+ dismissedUpdateDate?: string, // A specific date from which all previous updates have been seen.
314
341
  viewCohorts?: "all"|"some"|"none",
315
- viewUsers?: "all"|"some",
316
- studentFilterValues?: string,
317
- studentFilter?: string
318
- visibleCohorts?: string,
342
+ viewStudents?: "all"|"some"|"none",
343
+ studentFilterValues?: string[], // comma delimited list of values, such as "a, b, c, d"
344
+ studentFilter?: string // Field on which students can be filtered
345
+ visibleCohorts?: string[], // comma delimited list of values
319
346
  readUpdates?: string[],
320
347
  contactProviderConsent?: boolean,
321
- contactProviderConsenDate?: boolean
348
+ contactProviderConsentDate?: boolean
322
349
  referrals?: number,
323
350
  shareNameWithReferralLeaderboardConsent?: boolean,
324
351
  shareNameWithReferralLeaderboardConsentDate?: boolean,
@@ -327,9 +354,21 @@ export type UserData = {
327
354
  monthAdded?: number,
328
355
  placementsCharged?: boolean,
329
356
  visibleAddresses?: string[],
357
+ visibleSchools?: string[],
330
358
  visibleListings?: string[],
331
359
  requestedVisibleAddresses?: string[],
332
- requestedVisibleListings?: string[]
360
+ requestedVisibleListings?: string[],
361
+ packageData?: BillingPackage,
362
+ viewAddresses?: "all"|"request"|"none"|"some",
363
+ viewSchools?: "all"|"request"|"none"|"some",
364
+ viewPlacementListings?: "all"|"request"|"none",
365
+ viewPlacementGroups?: "all"|"request"|"none",
366
+ skillsTargets?: string[],
367
+ skillsTargetsValues?: {[key: string]: {
368
+ provider: number[],
369
+ student: number[],
370
+ }},
371
+ alumniConversationUid?: string
333
372
  };
334
373
 
335
374
  export type AnalyticsItem = {
@@ -402,7 +441,13 @@ export type StaffUserPermissions =
402
441
  editCohorts?: boolean,
403
442
  deleteCohorts?: boolean,
404
443
  editRequests?: boolean,
405
- deleteRequests?: boolean
444
+ deleteRequests?: boolean,
445
+ addEmailTemplates?: boolean,
446
+ editEmailTemplates?: boolean,
447
+ deleteEmailTemplates?: boolean,
448
+ addActivity?: boolean,
449
+ editActivity?: boolean,
450
+ deleteActivity?: boolean,
406
451
  }
407
452
 
408
453
  export type ProviderUserPermissions = {
@@ -428,6 +473,9 @@ export type ProviderUserPermissions = {
428
473
  viewPlacementGroups?: "all"|"request"|"none",
429
474
  viewAddresses?: "all"|"request"|"none",
430
475
  processApplicants?: boolean,
476
+ addSchools?: boolean,
477
+ editSchools?: boolean,
478
+ deleteSchools?: boolean,
431
479
  addAddresses?: boolean,
432
480
  editAddresses?: boolean,
433
481
  deleteAddresses?: boolean,
@@ -492,44 +540,65 @@ export type ProviderPlacementData = {
492
540
 
493
541
 
494
542
  export type ProviderData = {
495
- staff: number,
496
- staffFields: string[],
497
- staffActive: number,
498
- admin: string,
543
+ // staff: number,
544
+ // staffFields: string[],
545
+ // staffActive: number,
546
+ // admin: string,
499
547
  name: string,
500
- insurance: boolean,
548
+ // insurance: boolean|"awaitingReview",
549
+ // insuranceSkippedReason?: string,
501
550
  regNumber?: string,
502
- insuranceExpiry: string,
503
- mapConsent?: boolean|"unlisted",
504
- mapConsentDate?: string,
505
- staffGuidance?: {[key:number]: string},
506
- about?: string,
551
+ // insuranceExpiry: string,
552
+ // mapConsent?: boolean|"unlisted",
553
+ // mapConsentDate?: string,
554
+ // staffGuidance?: {[key:number]: string},
555
+ // about?: string,
507
556
  sector: string,
508
- defAddress: string,
557
+ // defAddress: string,
558
+ subsector: string,
559
+ website?: string,
560
+ created?: string
561
+ uploadedBy?: "institute"|"provider"|"student"
562
+ // onboarding?: {
563
+ // hasStaff?: boolean,
564
+ // multipleAddresses?: boolean,
565
+ // }
566
+ // registrationRequests?: boolean|string,
567
+ // registrationRequestsDate?: string,
568
+ // information: {
569
+ // description?: string,
570
+ // staff?: string,
571
+ // locations?: number,
572
+ // },
573
+ // discount?: string,
574
+ // package: string,
575
+ // splitBilling?: boolean,
576
+ // adminBillingContactId: string,
577
+ // addOnPackages?: string[],
578
+ }&Address
579
+
580
+ export type ProviderContactData = {
581
+ sector: string,
582
+ name: string,
509
583
  subsector: string,
584
+ providerPhone?: string,
585
+ providerEmail: string,
586
+ contactForename: string,
587
+ contactSurname: string,
510
588
  website?: string,
589
+ created: string,
590
+ providerId: string,
591
+ insurance: boolean|"awaitingReview",
592
+ insuranceSkippedReason?: string,
593
+ insuranceExpiry?: string,
511
594
  savedBy?: {[key:string]: {
512
595
  exists: true,
513
- providerConsent: boolean,
514
- providerConsentDate?: Timestamp,
515
- status: "uploaded"|"approved"|"blocked"}},
516
- onboarding?: {
517
- hasStaff?: boolean,
518
- multipleAddresses?: boolean,
519
- }
520
- registrationRequests?: boolean|string,
521
- registrationRequestsDate?: string,
522
- information: {
523
- description?: string,
524
- staff?: string,
525
- locations?: number,
526
- },
527
- discount?: string,
528
- package?: string,
529
- splitBilling?: boolean,
530
- adminBillingContactId: string,
531
- addOnPackages?: string[],
532
- }
596
+ activities?: string[], // IDs of consented activities.
597
+ providerConsent?: boolean,
598
+ providerConsentDate?: string,
599
+ MATschools?: string[],
600
+ status: "uploaded"|"approved"|"rejected"|"providerReviewed"|"blocked"}},
601
+ }&Address
533
602
 
534
603
  export type InstituteData = {
535
604
  students: number,
@@ -539,7 +608,10 @@ export type InstituteData = {
539
608
  studentsActive: number,
540
609
  staffActive: number,
541
610
  admin: string,
542
- name: string
611
+ name: string,
612
+ monthAdded: number,
613
+ platformFee: number,
614
+ color?: string,
543
615
  verifiedProviders?: string[],
544
616
  awaitingProviderInsurance?: string[],
545
617
  verifiedRiskAssessments?: string[],
@@ -551,12 +623,37 @@ export type InstituteData = {
551
623
  cohortRequests: {[oId: string]: {[cohortId: string]: string[]}},
552
624
  externalProviderUploads?: boolean,
553
625
  discount?: string,
554
- package?: string,
626
+ package: string,
555
627
  splitBilling?: boolean,
556
628
  adminBillingContactId?: string,
557
- addOnPackages?: string[]
629
+ addOnPackages?: string[],
630
+ authorisedMISSystem?: {
631
+ name: "arbor",
632
+ data: {
633
+ url: string
634
+ }
635
+ },
636
+ acceptingAlumni?: boolean,
637
+ approveAlumni?: boolean,
638
+ shareAlumni?: boolean
639
+ approveAlumniMessages?: boolean,
640
+ anonymiseAlumniConvoStudents?: boolean,
641
+ alumniConversations?: boolean
558
642
  }&Address;
559
643
 
644
+ export type ExternalActivity = {
645
+ title?: string,
646
+ description: string,
647
+ position?: number,
648
+ image?: string,
649
+ color: string,
650
+ public?: boolean,
651
+ oId?: string,
652
+ alumni?: boolean,
653
+ provider?: boolean,
654
+ permanent?: boolean
655
+ }
656
+
560
657
  export type NotificationObject = {
561
658
  buttonURL: string,
562
659
  created: Timestamp,
@@ -647,6 +744,7 @@ export type Contact = {
647
744
  "address-line1": string,
648
745
  "address-line2": string,
649
746
  locality: string,
747
+ what3Words?: string,
650
748
  postal_code: string,
651
749
  country: string,
652
750
  created: string,
@@ -669,7 +767,9 @@ export type CohortData = {
669
767
  customWorkflow?: boolean,
670
768
  oId: string,
671
769
  product: Products,
770
+ schoolId?: string,
672
771
  designatedStaff?: string,
772
+ autoArchiveDate?: string,
673
773
  logType?: "basic"|"custom",
674
774
  logs?: {
675
775
  students?: string,
@@ -688,8 +788,8 @@ export type CohortData = {
688
788
  },
689
789
  providerFeedbackSent?: Timestamp,
690
790
  studentsFeedbackSent?: Timestamp,
691
- billingEmail?: string,
692
- billingContactId?: string
791
+ emailTemplates?: {[key in keyof typeof emailTemplates]: string},
792
+ skillsTargets?: string[]
693
793
  }
694
794
 
695
795
  export type ArrowObject = {
@@ -723,6 +823,7 @@ export type PlacementReviewDetails = {
723
823
  ["address-line2"]: string,
724
824
  locality: string,
725
825
  postal_code: string,
826
+ what3Words?: string,
726
827
  country: string,
727
828
  key: string,
728
829
  oId: string,
@@ -742,24 +843,27 @@ export type PlacementReviewDetails = {
742
843
  questions: PlacementQuestions,
743
844
  riskAssessment: boolean|"awaitingReview",
744
845
  riskAssessmentType: "form"|"file",
745
- riskAssessmentData?: {[key: string]: unknown},
846
+ riskAssessmentData?: {[key: string]: unknown}|string,
746
847
  dbsCheck: boolean|"awaitingReview",
747
848
  dbsCheckType: "form"|"file",
748
- dbsCheckData?: {[key: string]: unknown},
849
+ dbsCheckData?: {[key: string]: unknown}|string,
749
850
  }
750
851
  },
751
852
  requireELI?: boolean,
752
853
  requireRA?: boolean,
753
854
  requireDBS?: boolean,
754
855
  importedProviderForms: boolean,
755
- currentStage: WorkflowStage,
856
+ currentStage: WorkflowStage&{files: {[fileId: string]: {name: string, url: string}}},
756
857
  placementId?: string,
858
+ providerContactId: string,
757
859
  incompleteItems: {[key: number]: string[]},
758
- riskAssessmentData?: {[key: string]: unknown}[],
759
- dbsCheckData?: {[key: string]: unknown}[],
860
+ riskAssessmentData?: {[key: string]: unknown}[]|string,
861
+ dbsCheckData?: {[key: string]: unknown}[]|string,
760
862
  feedbackText?: Descendant[],
761
863
  feedback: CustomFormSchema,
762
- providerFeedback?: {[key: string]: unknown}
864
+ providerFeedback?: {[key: string]: unknown},
865
+ primaryColor?: string,
866
+ primaryImage?: string
763
867
  }
764
868
 
765
869
  export type BlogCategories = "students"|"providers"|"institutes"|"placementt"
@@ -829,6 +933,7 @@ export type Application = {
829
933
  uid: string,
830
934
  applicantWorkflowId: string,
831
935
  listingId: string,
936
+ addressId: string,
832
937
  providerId: string,
833
938
  reqUserType: "Students"|"Staff",
834
939
  completedSections: {[stage: number]: {
@@ -884,6 +989,8 @@ export type Event = {
884
989
  export type BillingPackage = {
885
990
  name: string,
886
991
  staffUnitCost: number,
992
+ platformFee: number,
993
+ platformFeeFrequency: "yearly"|"monthly",
887
994
  studentUnitCost: number,
888
995
  placementUnitCost: number,
889
996
  product: Products,
@@ -892,8 +999,165 @@ export type BillingPackage = {
892
999
  description: string
893
1000
  }
894
1001
 
1002
+ export type EmailTemplate = {
1003
+ name: string,
1004
+ created: Timestamp,
1005
+ subject: string,
1006
+ emailTemplate: string,
1007
+ bodyText: Descendant[],
1008
+ color?: string,
1009
+ product: Products,
1010
+ oId: string,
1011
+ public?: boolean,
1012
+ }
1013
+
1014
+
1015
+ export type EmailTemplateConfig = {
1016
+ description: string,
1017
+ params: string[],
1018
+ button?: {text: string, link: string},
1019
+ type: "workflow"|"feedback"
1020
+ }
1021
+
1022
+
1023
+ export type Reminder = {
1024
+ collection: "users"|"placements"|"placementListings",
1025
+ documentId: string,
1026
+ product: Products,
1027
+ oId: string,
1028
+ created: Timestamp,
1029
+ title: string,
1030
+ description?: string,
1031
+ dueDate: string,
1032
+ status: "upcoming"|"dismissed"
1033
+ }
1034
+
1035
+ export type Sorts = {[label: string]: {
1036
+ value: string
1037
+ direction: "asc"|"desc"
1038
+ }}|undefined
1039
+
1040
+ export type SchoolData = OrganisationAddress&{
1041
+ billingEmail?: string,
1042
+ billingContactId?: string,
1043
+ authorisedMISSystem?: {
1044
+ name: "arbor",
1045
+ data: {
1046
+ url: string
1047
+ }
1048
+ },
1049
+ monthAdded: number,
1050
+ acceptingAlumni?: boolean,
1051
+ approveAlumni?: boolean,
1052
+ shareAlumni?: boolean
1053
+ approveAlumniMessages?: boolean,
1054
+ anonymiseAlumniConvoStudents?: boolean,
1055
+ alumniConversations?: boolean
1056
+ }
1057
+
1058
+
1059
+ export type ExternalEvent = {
1060
+ name: string,
1061
+ description: string,
1062
+ created: string,
1063
+ activityId?: string,
1064
+ oId: string,
1065
+ submissionClose: string,
1066
+ schoolId?: string,
1067
+ startDate?: string,
1068
+ endDate?: string,
1069
+ startTime?: string,
1070
+ endTime?: string,
1071
+ allDay?: boolean,
1072
+ recurring?: boolean,
1073
+ recurringFrequency: "daily"|"weekly"|"fortnightly"|"monthlyOnDate",
1074
+ recurringUntil?: string,
1075
+ students?: number,
1076
+ maxExternalAttendees?: number,
1077
+ stage: "basicDetails"|"date"|"invites"|"review"|"created",
1078
+ alumni: {
1079
+ shareable?: boolean,
1080
+ filters: {[key: string]: unknown}
1081
+ }
1082
+ employers: {
1083
+ shareable?: boolean,
1084
+ filters: {[key: string]: unknown}
1085
+ }
1086
+ }&Address
1087
+
895
1088
 
1089
+ export type Alumni = {
1090
+ forename: string,
1091
+ surname: string,
1092
+ email: string,
1093
+ startYear: string,
1094
+ endYear: string,
1095
+ activities: string[],
1096
+ oId: string,
1097
+ schoolId?: string,
1098
+ dateAdded?: string,
1099
+ currentEnrolment: "university"|"apprenticeship"|"employment",
1100
+ status: "inactive"|"awaitingStaff"|"active"
1101
+ sector: string,
1102
+ subsector: string,
1103
+ enrolmentHistory: {}[],
1104
+ visibleToStudents?: boolean,
1105
+ enableConversations?: boolean,
1106
+ linkCode: string,
1107
+ linkCodeExpiry: string
1108
+ }
896
1109
 
1110
+ export type ExternalStudentAccount = {
1111
+ oId: string,
1112
+ schoolId?: string,
1113
+ forename?: string,
1114
+ surname?: string,
1115
+ email: string,
1116
+ created?: string
1117
+ }
897
1118
 
1119
+ export type AlumniConversation = {
1120
+ alumniId: string,
1121
+ externalStudentId: string,
1122
+ alumniSharable?: boolean,
1123
+ oId: string,
1124
+ schoolId?: string,
1125
+ studentSharable?: boolean,
1126
+ messages: {[key: string]: {
1127
+ sentBy: "alumni"|"student",
1128
+ sentAt: string,
1129
+ message: string,
1130
+ delivered: "blocked"|"pending"|true,
1131
+ }},
1132
+ open: boolean,
1133
+ reported?: boolean,
1134
+ delivered: "blocked"|"pending"|true,
1135
+ report?: {
1136
+ reportedBy: "alumni"|"student"
1137
+ message: string,
1138
+ createdDateTime: string,
1139
+ resolvedDateTime: string,
1140
+ }
1141
+ }
898
1142
 
1143
+ export type AlumniConvoUser = {
1144
+ forename: string,
1145
+ surname: string,
1146
+ email: string,
1147
+ dateAdded: string,
1148
+ oId: string,
1149
+ schoolId?: string,
1150
+ linkCode: string,
1151
+ linkCodeExpiry: string
1152
+ }
899
1153
 
1154
+ export type Update = {
1155
+ title: string,
1156
+ description: Descendant[],
1157
+ userType: "Staff"|"Students",
1158
+ product: Products,
1159
+ buttonText?: string,
1160
+ buttonLink?: string,
1161
+ date: string,
1162
+ imageData?: boolean
1163
+ }