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
  export type Products = "institutes" | "providers" | "students" | "admin";
4
5
  export type StudentPlacementData = {
5
6
  title: string;
@@ -30,6 +31,7 @@ export type StudentPlacementData = {
30
31
  ["address-line2"]: string;
31
32
  locality: string;
32
33
  postal_code: string;
34
+ what3Words?: string;
33
35
  country: string;
34
36
  cohort?: string;
35
37
  leadTimes: string[];
@@ -37,9 +39,9 @@ export type StudentPlacementData = {
37
39
  mapConsent: true | "institute" | false;
38
40
  mapConsentDate?: string;
39
41
  placementId?: string;
40
- addressId?: string;
42
+ providerContactId?: string;
41
43
  geoHash?: string;
42
- statusType: "draft" | "submitted" | "active" | "completed" | "withdrawn";
44
+ statusType: "draft" | "submitted" | "active" | "completed" | "withdrawn" | "requested";
43
45
  questions: PlacementQuestions;
44
46
  staffRoles: string[];
45
47
  sector: string;
@@ -47,6 +49,7 @@ export type StudentPlacementData = {
47
49
  importedProviderForms?: boolean;
48
50
  analytics: string[];
49
51
  units: string;
52
+ schoolId?: string;
50
53
  active: boolean;
51
54
  completed: boolean;
52
55
  personalAnalytics?: string[];
@@ -57,20 +60,26 @@ export type StudentPlacementData = {
57
60
  draft: boolean;
58
61
  activeDates: string[];
59
62
  insurance: boolean | "awaitingReview";
63
+ insuranceSkippedReason?: string;
60
64
  riskAssessment?: boolean | "awaitingReview";
61
- riskAssessmentType?: "file" | "form";
65
+ riskAssessmentType?: "file" | "form" | "skipped";
62
66
  riskAssessmentData?: {
63
67
  [key: string]: unknown;
64
- }[];
68
+ }[] | string;
65
69
  dbsCheck?: boolean | "awaitingReview";
66
- dbsCheckType?: "file" | "form";
70
+ dbsCheckType?: "file" | "form" | "skipped";
67
71
  dbsCheckData?: {
68
72
  [key: string]: unknown;
69
- }[];
73
+ }[] | string;
70
74
  contactType?: "email" | "website" | "phone" | "post";
71
75
  webpage?: string;
72
76
  providerLogs?: string[];
73
77
  studentsLogs?: string[];
78
+ notes?: {
79
+ providers?: Descendant[];
80
+ institutes?: Descendant[];
81
+ students?: Descendant[];
82
+ };
74
83
  staffLogs?: [];
75
84
  feedback: {
76
85
  students: {
@@ -93,8 +102,10 @@ export type StudentPlacementData = {
93
102
  };
94
103
  };
95
104
  onboarding: (OnboardingDocs & {
105
+ deadline?: string;
96
106
  completed: {
97
- submitted: string | false;
107
+ submitted: boolean;
108
+ submittedDate?: string;
98
109
  accepted?: boolean;
99
110
  filesViewed?: string[];
100
111
  formsCompleted?: {
@@ -104,7 +115,16 @@ export type StudentPlacementData = {
104
115
  [key: number]: string[];
105
116
  };
106
117
  };
107
- }) | false;
118
+ }) | false | null;
119
+ studentForename?: string;
120
+ studentSurname?: string;
121
+ studentEmail?: string;
122
+ skillsTargetsValues?: {
123
+ [key: string]: {
124
+ provider: number[];
125
+ student: number[];
126
+ };
127
+ };
108
128
  };
109
129
  export type PlacementQuestions = {
110
130
  title: string;
@@ -135,27 +155,15 @@ export type PlacementQuestions = {
135
155
  pay?: number;
136
156
  payFrequency: "total" | "hourly" | "daily" | "weekly" | "monthly" | "annually";
137
157
  };
138
- export type SavedPlacement = {
139
- placementId: string;
140
- savedByProduct: Products;
141
- savedByUserType: "Organisation" | "Student";
142
- savedById: string;
143
- status?: "Accepted" | "Blocked" | "providerReview";
144
- listed: boolean;
145
- concurrentPlacements?: number;
146
- id: string;
147
- };
148
- export type PlacementListingStages = "basic" | "address" | "students" | "responsibilities" | "applications" | "onboarding" | "review" | "complete";
149
158
  export type PlacementListing = {
150
159
  title: string;
151
- uid: string;
152
- template?: string;
153
- providerId?: string;
160
+ providerId: string;
161
+ providerContactId: string;
154
162
  name: string;
155
163
  providerEmail: string;
156
164
  providerPhone: string;
157
- id: string;
158
- studentType: "secondary" | "higher" | "undergraduate" | "postgraduate";
165
+ id?: string;
166
+ created?: string;
159
167
  contactForename: string;
160
168
  contactSurname: string;
161
169
  ["address-line1"]: string;
@@ -163,71 +171,50 @@ export type PlacementListing = {
163
171
  locality: string;
164
172
  postal_code: string;
165
173
  country: string;
166
- addressId?: string;
174
+ what3Words?: string;
167
175
  geoHash?: string;
168
- status: "listed" | "unlisted" | "deleted" | "draft";
169
176
  questions: PlacementQuestions;
170
177
  savedBy?: {
171
178
  [key: string]: {
179
+ MATschools?: string[];
172
180
  exists: true;
181
+ cohorts?: {
182
+ [key: string]: {
183
+ exists: boolean;
184
+ listed: boolean;
185
+ };
186
+ };
173
187
  providerConsent: boolean;
174
- providerConsentDate?: Timestamp;
175
- status: "uploaded" | "approved" | "rejected" | "blocked";
188
+ providerConsentDate?: string;
189
+ savedByUserType: "Organisation" | "Student";
190
+ status: "uploaded" | "approved" | "rejected" | "providerReviewed" | "blocked";
176
191
  };
177
192
  };
178
193
  mapConsent?: boolean;
179
- mapConsentData?: string;
194
+ mapConsentDate?: string;
180
195
  uploadedBy: "student" | "institute" | "provider";
181
- riskAssessmentType?: "file" | "form";
196
+ riskAssessmentType?: "file" | "form" | "skipped";
197
+ concurrentPlacements?: number;
182
198
  riskAssessmentData?: {
183
199
  [key: string]: unknown;
184
- }[];
185
- dbsCheckType?: "file" | "form";
200
+ }[] | string;
201
+ dbsCheckType?: "file" | "form" | "skipped";
186
202
  dbsCheckData?: {
187
203
  [key: string]: unknown;
188
- }[];
204
+ }[] | string;
189
205
  contactType?: "email" | "website" | "phone" | "post";
190
206
  webpage?: string;
191
- stage: PlacementListingStages;
192
- placementDateType?: "any" | "range" | "defined";
193
- placementDates?: {
194
- start: string;
195
- end: string;
196
- }[];
197
- applicationType?: "simple" | "complex";
198
- applicantWorkflowId?: string;
199
- applicantWorkflow?: ApplicantStage[];
200
- onboarding: OnboardingDocs | false;
201
- maxApplicants?: number;
202
- maxStudents?: number;
203
- primaryContactId: string;
207
+ sector?: string;
208
+ subsector?: string;
204
209
  };
205
210
  export type OnboardingDocs = {
206
- deadline?: string;
207
211
  message?: string;
208
- deadlineType?: "date" | "days";
209
212
  forms?: string[];
210
213
  files?: string[];
211
- formDetails?: {
212
- [key: string]: {
213
- name: string;
214
- id: string;
215
- description?: string;
216
- product: Products;
217
- oId: string;
218
- form: CustomFormSchema;
219
- };
220
- };
221
214
  requiredFiles?: {
222
215
  fileName: string;
223
216
  fileType: string;
224
217
  }[];
225
- viewableFiles?: {
226
- [key: string]: FileItem;
227
- };
228
- };
229
- export type PlacementTemplate = PlacementListing & {
230
- templateName: string;
231
218
  };
232
219
  export type OrganisationAddressStages = "address" | "contacts" | "misc" | "review" | "complete";
233
220
  export type OrganisationAddress = Address & {
@@ -265,6 +252,8 @@ export type OrganisationAddress = Address & {
265
252
  primaryContactId?: string;
266
253
  default?: boolean;
267
254
  flags?: ("addressMissing" | "noPrimaryContact")[];
255
+ color?: string;
256
+ image?: string | false;
268
257
  };
269
258
  export type Address = {
270
259
  id?: string;
@@ -274,12 +263,14 @@ export type Address = {
274
263
  postal_code: string;
275
264
  country: string;
276
265
  geoHash?: string;
266
+ what3Words?: string;
277
267
  };
278
- export type FlagCodes = "inactive" | "noParentEmailWarning" | "noParentEmailError" | "overdue" | "noInsurance" | "providerRejection" | "nearingStart" | "awaitingInsurance" | "noRiskAssessment" | "awaitingRiskAssessment" | "parentEmailFailed" | "providerEmailFailed" | "userEmailFailed" | "noDbsCheck" | "awaitingDbsCheck" | "completeOnboarding" | "reviewOnboarding" | "requestedVisibleAddresses" | "requestedVisiblePlacementListings";
268
+ export type FlagCodes = "inactive" | "noParentEmailWarning" | "noParentEmailError" | "overdue" | "noInsurance" | "providerRejection" | "nearingStart" | "awaitingInsurance" | "noRiskAssessment" | "awaitingRiskAssessment" | "parentEmailFailed" | "providerEmailFailed" | "userEmailFailed" | "noDbsCheck" | "awaitingDbsCheck" | "completeOnboarding" | "reviewOnboarding" | "requestedVisibleAddresses" | "requestedVisiblePlacementListings" | "addOnboarding" | "studentNotAccepted" | "reminder";
279
269
  export type UserData = {
280
270
  details: {
281
271
  forename: string;
282
272
  surname: string;
273
+ pronouns?: string;
283
274
  parentEmail?: string;
284
275
  year?: string;
285
276
  };
@@ -313,18 +304,20 @@ export type UserData = {
313
304
  units?: string;
314
305
  activationCode: number;
315
306
  cohort?: string;
307
+ schoolId?: string;
316
308
  cohortData?: CohortData;
317
309
  dismissedTasks?: string[];
318
310
  dismissedTutorials?: string[];
319
311
  dismissedTips?: string[];
312
+ dismissedUpdateDate?: string;
320
313
  viewCohorts?: "all" | "some" | "none";
321
- viewUsers?: "all" | "some";
322
- studentFilterValues?: string;
314
+ viewStudents?: "all" | "some" | "none";
315
+ studentFilterValues?: string[];
323
316
  studentFilter?: string;
324
- visibleCohorts?: string;
317
+ visibleCohorts?: string[];
325
318
  readUpdates?: string[];
326
319
  contactProviderConsent?: boolean;
327
- contactProviderConsenDate?: boolean;
320
+ contactProviderConsentDate?: boolean;
328
321
  referrals?: number;
329
322
  shareNameWithReferralLeaderboardConsent?: boolean;
330
323
  shareNameWithReferralLeaderboardConsentDate?: boolean;
@@ -333,9 +326,23 @@ export type UserData = {
333
326
  monthAdded?: number;
334
327
  placementsCharged?: boolean;
335
328
  visibleAddresses?: string[];
329
+ visibleSchools?: string[];
336
330
  visibleListings?: string[];
337
331
  requestedVisibleAddresses?: string[];
338
332
  requestedVisibleListings?: string[];
333
+ packageData?: BillingPackage;
334
+ viewAddresses?: "all" | "request" | "none" | "some";
335
+ viewSchools?: "all" | "request" | "none" | "some";
336
+ viewPlacementListings?: "all" | "request" | "none";
337
+ viewPlacementGroups?: "all" | "request" | "none";
338
+ skillsTargets?: string[];
339
+ skillsTargetsValues?: {
340
+ [key: string]: {
341
+ provider: number[];
342
+ student: number[];
343
+ };
344
+ };
345
+ alumniConversationUid?: string;
339
346
  };
340
347
  export type AnalyticsItem = {
341
348
  units?: "placements" | "weeks" | "days" | "hours";
@@ -424,6 +431,12 @@ export type StaffUserPermissions = UserGroupData & {
424
431
  deleteCohorts?: boolean;
425
432
  editRequests?: boolean;
426
433
  deleteRequests?: boolean;
434
+ addEmailTemplates?: boolean;
435
+ editEmailTemplates?: boolean;
436
+ deleteEmailTemplates?: boolean;
437
+ addActivity?: boolean;
438
+ editActivity?: boolean;
439
+ deleteActivity?: boolean;
427
440
  };
428
441
  export type ProviderUserPermissions = {
429
442
  viewStaff: boolean;
@@ -448,6 +461,9 @@ export type ProviderUserPermissions = {
448
461
  viewPlacementGroups?: "all" | "request" | "none";
449
462
  viewAddresses?: "all" | "request" | "none";
450
463
  processApplicants?: boolean;
464
+ addSchools?: boolean;
465
+ editSchools?: boolean;
466
+ deleteSchools?: boolean;
451
467
  addAddresses?: boolean;
452
468
  editAddresses?: boolean;
453
469
  deleteAddresses?: boolean;
@@ -519,49 +535,39 @@ export type ProviderPlacementData = {
519
535
  id?: string;
520
536
  };
521
537
  export type ProviderData = {
522
- staff: number;
523
- staffFields: string[];
524
- staffActive: number;
525
- admin: string;
526
538
  name: string;
527
- insurance: boolean;
528
539
  regNumber?: string;
529
- insuranceExpiry: string;
530
- mapConsent?: boolean | "unlisted";
531
- mapConsentDate?: string;
532
- staffGuidance?: {
533
- [key: number]: string;
534
- };
535
- about?: string;
536
540
  sector: string;
537
- defAddress: string;
538
541
  subsector: string;
539
542
  website?: string;
543
+ created?: string;
544
+ uploadedBy?: "institute" | "provider" | "student";
545
+ } & Address;
546
+ export type ProviderContactData = {
547
+ sector: string;
548
+ name: string;
549
+ subsector: string;
550
+ providerPhone?: string;
551
+ providerEmail: string;
552
+ contactForename: string;
553
+ contactSurname: string;
554
+ website?: string;
555
+ created: string;
556
+ providerId: string;
557
+ insurance: boolean | "awaitingReview";
558
+ insuranceSkippedReason?: string;
559
+ insuranceExpiry?: string;
540
560
  savedBy?: {
541
561
  [key: string]: {
542
562
  exists: true;
543
- providerConsent: boolean;
544
- providerConsentDate?: Timestamp;
545
- status: "uploaded" | "approved" | "blocked";
563
+ activities?: string[];
564
+ providerConsent?: boolean;
565
+ providerConsentDate?: string;
566
+ MATschools?: string[];
567
+ status: "uploaded" | "approved" | "rejected" | "providerReviewed" | "blocked";
546
568
  };
547
569
  };
548
- onboarding?: {
549
- hasStaff?: boolean;
550
- multipleAddresses?: boolean;
551
- };
552
- registrationRequests?: boolean | string;
553
- registrationRequestsDate?: string;
554
- information: {
555
- description?: string;
556
- staff?: string;
557
- locations?: number;
558
- };
559
- discount?: string;
560
- package?: string;
561
- splitBilling?: boolean;
562
- adminBillingContactId: string;
563
- addOnPackages?: string[];
564
- };
570
+ } & Address;
565
571
  export type InstituteData = {
566
572
  students: number;
567
573
  staff: number;
@@ -571,6 +577,9 @@ export type InstituteData = {
571
577
  staffActive: number;
572
578
  admin: string;
573
579
  name: string;
580
+ monthAdded: number;
581
+ platformFee: number;
582
+ color?: string;
574
583
  verifiedProviders?: string[];
575
584
  awaitingProviderInsurance?: string[];
576
585
  verifiedRiskAssessments?: string[];
@@ -590,11 +599,35 @@ export type InstituteData = {
590
599
  };
591
600
  externalProviderUploads?: boolean;
592
601
  discount?: string;
593
- package?: string;
602
+ package: string;
594
603
  splitBilling?: boolean;
595
604
  adminBillingContactId?: string;
596
605
  addOnPackages?: string[];
606
+ authorisedMISSystem?: {
607
+ name: "arbor";
608
+ data: {
609
+ url: string;
610
+ };
611
+ };
612
+ acceptingAlumni?: boolean;
613
+ approveAlumni?: boolean;
614
+ shareAlumni?: boolean;
615
+ approveAlumniMessages?: boolean;
616
+ anonymiseAlumniConvoStudents?: boolean;
617
+ alumniConversations?: boolean;
597
618
  } & Address;
619
+ export type ExternalActivity = {
620
+ title?: string;
621
+ description: string;
622
+ position?: number;
623
+ image?: string;
624
+ color: string;
625
+ public?: boolean;
626
+ oId?: string;
627
+ alumni?: boolean;
628
+ provider?: boolean;
629
+ permanent?: boolean;
630
+ };
598
631
  export type NotificationObject = {
599
632
  buttonURL: string;
600
633
  created: Timestamp;
@@ -677,6 +710,7 @@ export type Contact = {
677
710
  "address-line1": string;
678
711
  "address-line2": string;
679
712
  locality: string;
713
+ what3Words?: string;
680
714
  postal_code: string;
681
715
  country: string;
682
716
  created: string;
@@ -697,7 +731,9 @@ export type CohortData = {
697
731
  customWorkflow?: boolean;
698
732
  oId: string;
699
733
  product: Products;
734
+ schoolId?: string;
700
735
  designatedStaff?: string;
736
+ autoArchiveDate?: string;
701
737
  logType?: "basic" | "custom";
702
738
  logs?: {
703
739
  students?: string;
@@ -716,8 +752,10 @@ export type CohortData = {
716
752
  };
717
753
  providerFeedbackSent?: Timestamp;
718
754
  studentsFeedbackSent?: Timestamp;
719
- billingEmail?: string;
720
- billingContactId?: string;
755
+ emailTemplates?: {
756
+ [key in keyof typeof emailTemplates]: string;
757
+ };
758
+ skillsTargets?: string[];
721
759
  };
722
760
  export type ArrowObject = {
723
761
  start: number | string;
@@ -748,6 +786,7 @@ export type PlacementReviewDetails = {
748
786
  ["address-line2"]: string;
749
787
  locality: string;
750
788
  postal_code: string;
789
+ what3Words?: string;
751
790
  country: string;
752
791
  key: string;
753
792
  oId: string;
@@ -769,34 +808,44 @@ export type PlacementReviewDetails = {
769
808
  riskAssessmentType: "form" | "file";
770
809
  riskAssessmentData?: {
771
810
  [key: string]: unknown;
772
- };
811
+ } | string;
773
812
  dbsCheck: boolean | "awaitingReview";
774
813
  dbsCheckType: "form" | "file";
775
814
  dbsCheckData?: {
776
815
  [key: string]: unknown;
777
- };
816
+ } | string;
778
817
  };
779
818
  };
780
819
  requireELI?: boolean;
781
820
  requireRA?: boolean;
782
821
  requireDBS?: boolean;
783
822
  importedProviderForms: boolean;
784
- currentStage: WorkflowStage;
823
+ currentStage: WorkflowStage & {
824
+ files: {
825
+ [fileId: string]: {
826
+ name: string;
827
+ url: string;
828
+ };
829
+ };
830
+ };
785
831
  placementId?: string;
832
+ providerContactId: string;
786
833
  incompleteItems: {
787
834
  [key: number]: string[];
788
835
  };
789
836
  riskAssessmentData?: {
790
837
  [key: string]: unknown;
791
- }[];
838
+ }[] | string;
792
839
  dbsCheckData?: {
793
840
  [key: string]: unknown;
794
- }[];
841
+ }[] | string;
795
842
  feedbackText?: Descendant[];
796
843
  feedback: CustomFormSchema;
797
844
  providerFeedback?: {
798
845
  [key: string]: unknown;
799
846
  };
847
+ primaryColor?: string;
848
+ primaryImage?: string;
800
849
  };
801
850
  export type BlogCategories = "students" | "providers" | "institutes" | "placementt";
802
851
  export type Blog = {
@@ -872,6 +921,7 @@ export type Application = {
872
921
  uid: string;
873
922
  applicantWorkflowId: string;
874
923
  listingId: string;
924
+ addressId: string;
875
925
  providerId: string;
876
926
  reqUserType: "Students" | "Staff";
877
927
  completedSections: {
@@ -931,6 +981,8 @@ export type Event = {
931
981
  export type BillingPackage = {
932
982
  name: string;
933
983
  staffUnitCost: number;
984
+ platformFee: number;
985
+ platformFeeFrequency: "yearly" | "monthly";
934
986
  studentUnitCost: number;
935
987
  placementUnitCost: number;
936
988
  product: Products;
@@ -940,3 +992,162 @@ export type BillingPackage = {
940
992
  };
941
993
  description: string;
942
994
  };
995
+ export type EmailTemplate = {
996
+ name: string;
997
+ created: Timestamp;
998
+ subject: string;
999
+ emailTemplate: string;
1000
+ bodyText: Descendant[];
1001
+ color?: string;
1002
+ product: Products;
1003
+ oId: string;
1004
+ public?: boolean;
1005
+ };
1006
+ export type EmailTemplateConfig = {
1007
+ description: string;
1008
+ params: string[];
1009
+ button?: {
1010
+ text: string;
1011
+ link: string;
1012
+ };
1013
+ type: "workflow" | "feedback";
1014
+ };
1015
+ export type Reminder = {
1016
+ collection: "users" | "placements" | "placementListings";
1017
+ documentId: string;
1018
+ product: Products;
1019
+ oId: string;
1020
+ created: Timestamp;
1021
+ title: string;
1022
+ description?: string;
1023
+ dueDate: string;
1024
+ status: "upcoming" | "dismissed";
1025
+ };
1026
+ export type Sorts = {
1027
+ [label: string]: {
1028
+ value: string;
1029
+ direction: "asc" | "desc";
1030
+ };
1031
+ } | undefined;
1032
+ export type SchoolData = OrganisationAddress & {
1033
+ billingEmail?: string;
1034
+ billingContactId?: string;
1035
+ authorisedMISSystem?: {
1036
+ name: "arbor";
1037
+ data: {
1038
+ url: string;
1039
+ };
1040
+ };
1041
+ monthAdded: number;
1042
+ acceptingAlumni?: boolean;
1043
+ approveAlumni?: boolean;
1044
+ shareAlumni?: boolean;
1045
+ approveAlumniMessages?: boolean;
1046
+ anonymiseAlumniConvoStudents?: boolean;
1047
+ alumniConversations?: boolean;
1048
+ };
1049
+ export type ExternalEvent = {
1050
+ name: string;
1051
+ description: string;
1052
+ created: string;
1053
+ activityId?: string;
1054
+ oId: string;
1055
+ submissionClose: string;
1056
+ schoolId?: string;
1057
+ startDate?: string;
1058
+ endDate?: string;
1059
+ startTime?: string;
1060
+ endTime?: string;
1061
+ allDay?: boolean;
1062
+ recurring?: boolean;
1063
+ recurringFrequency: "daily" | "weekly" | "fortnightly" | "monthlyOnDate";
1064
+ recurringUntil?: string;
1065
+ students?: number;
1066
+ maxExternalAttendees?: number;
1067
+ stage: "basicDetails" | "date" | "invites" | "review" | "created";
1068
+ alumni: {
1069
+ shareable?: boolean;
1070
+ filters: {
1071
+ [key: string]: unknown;
1072
+ };
1073
+ };
1074
+ employers: {
1075
+ shareable?: boolean;
1076
+ filters: {
1077
+ [key: string]: unknown;
1078
+ };
1079
+ };
1080
+ } & Address;
1081
+ export type Alumni = {
1082
+ forename: string;
1083
+ surname: string;
1084
+ email: string;
1085
+ startYear: string;
1086
+ endYear: string;
1087
+ activities: string[];
1088
+ oId: string;
1089
+ schoolId?: string;
1090
+ dateAdded?: string;
1091
+ currentEnrolment: "university" | "apprenticeship" | "employment";
1092
+ status: "inactive" | "awaitingStaff" | "active";
1093
+ sector: string;
1094
+ subsector: string;
1095
+ enrolmentHistory: {}[];
1096
+ visibleToStudents?: boolean;
1097
+ enableConversations?: boolean;
1098
+ linkCode: string;
1099
+ linkCodeExpiry: string;
1100
+ };
1101
+ export type ExternalStudentAccount = {
1102
+ oId: string;
1103
+ schoolId?: string;
1104
+ forename?: string;
1105
+ surname?: string;
1106
+ email: string;
1107
+ created?: string;
1108
+ };
1109
+ export type AlumniConversation = {
1110
+ alumniId: string;
1111
+ externalStudentId: string;
1112
+ alumniSharable?: boolean;
1113
+ oId: string;
1114
+ schoolId?: string;
1115
+ studentSharable?: boolean;
1116
+ messages: {
1117
+ [key: string]: {
1118
+ sentBy: "alumni" | "student";
1119
+ sentAt: string;
1120
+ message: string;
1121
+ delivered: "blocked" | "pending" | true;
1122
+ };
1123
+ };
1124
+ open: boolean;
1125
+ reported?: boolean;
1126
+ delivered: "blocked" | "pending" | true;
1127
+ report?: {
1128
+ reportedBy: "alumni" | "student";
1129
+ message: string;
1130
+ createdDateTime: string;
1131
+ resolvedDateTime: string;
1132
+ };
1133
+ };
1134
+ export type AlumniConvoUser = {
1135
+ forename: string;
1136
+ surname: string;
1137
+ email: string;
1138
+ dateAdded: string;
1139
+ oId: string;
1140
+ schoolId?: string;
1141
+ linkCode: string;
1142
+ linkCodeExpiry: string;
1143
+ };
1144
+ export type Update = {
1145
+ title: string;
1146
+ description: Descendant[];
1147
+ userType: "Staff" | "Students";
1148
+ product: Products;
1149
+ buttonText?: string;
1150
+ buttonLink?: string;
1151
+ date: string;
1152
+ imageData?: boolean;
1153
+ };