placementt-core 1.20.217 → 11.0.803
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.
- package/.eslintrc.js +40 -40
- package/.gitattributes +2 -2
- package/lib/constants.js +10 -1
- package/lib/constants.js.map +1 -1
- package/lib/features/config.d.ts +133 -133
- package/lib/features/config.js +35 -35
- package/lib/features/contacts/contacts.d.ts +75 -75
- package/lib/features/contacts/contacts.js +105 -105
- package/lib/features/downtime/useDowntime.d.ts +11 -11
- package/lib/features/downtime/useDowntime.js +22 -22
- package/lib/features/placements/studentPlacements/studentPlacementsSlice.d.ts +63 -63
- package/lib/features/placements/studentPlacements/studentPlacementsSlice.js +81 -81
- package/lib/features/providerPlacements/providerPlacementsSlice.d.ts +19 -19
- package/lib/features/providerPlacements/providerPlacementsSlice.js +24 -24
- package/lib/features/studentPlacements/studentPlacementsSlice.d.ts +62 -62
- package/lib/features/studentPlacements/studentPlacementsSlice.js +87 -87
- package/lib/features/studentPlacements/useStudentPlacements.d.ts +6 -6
- package/lib/features/studentPlacements/useStudentPlacements.js +18 -18
- package/lib/features/userSlice.d.ts +26 -26
- package/lib/features/userSlice.js +23 -23
- package/lib/features/users/useUserFunctions.d.ts +25 -25
- package/lib/features/users/useUserFunctions.js +124 -124
- package/lib/features/users/userSlice.d.ts +46 -46
- package/lib/features/users/userSlice.js +48 -48
- package/lib/firebase/firebase.d.ts +1 -1
- package/lib/firebase/firebase.js +6 -2
- package/lib/firebase/firebase.js.map +1 -1
- package/lib/firebase/readDatabase.js +3 -1
- package/lib/firebase/readDatabase.js.map +1 -1
- package/lib/hooks.d.ts +33 -5
- package/lib/hooks.js +143 -107
- package/lib/hooks.js.map +1 -1
- package/lib/images/GatsbyBenchmarks.d.ts +1 -2
- package/lib/reduxHooks.d.ts +1 -66
- package/lib/reduxHooks.js +9 -69
- package/lib/reduxHooks.js.map +1 -1
- package/lib/tasksAndTips.d.ts +2 -2
- package/lib/tasksAndTips.js +37 -6
- package/lib/tasksAndTips.js.map +1 -1
- package/lib/typeDefinitions.d.ts +50 -5
- package/lib/util.d.ts +1 -1
- package/lib/util.js +12 -1
- package/lib/util.js.map +1 -1
- package/package.json +52 -56
- package/src/DatabaseDefinitions.ts +18 -18
- package/src/apiCalls.ts +128 -128
- package/src/config.ts +50 -50
- package/src/constants.ts +796 -787
- package/src/databaseTypes.ts +42 -42
- package/src/features/analytics/useAnalytics.tsx +63 -63
- package/src/features/contacts/contactsSlice.ts +147 -147
- package/src/features/contacts/useContacts.tsx +73 -73
- package/src/features/dropdown/useDropdown.tsx +52 -52
- package/src/features/global/downtime/useDowntime.tsx +23 -23
- package/src/features/global/users/useUserFunctions.tsx +132 -132
- package/src/features/jobs/jobsSlice.ts +71 -71
- package/src/features/placements/studentPlacements/activePlacement.ts +68 -68
- package/src/features/placements/studentPlacements/completedStudentPlacementsSlice.ts +97 -97
- package/src/features/placements/studentPlacements/upcomingStudentPlacementsSlice.ts +108 -108
- package/src/features/placements/studentPlacements/useStudentPlacements.tsx +9 -9
- package/src/features/placements/types.ts +10 -10
- package/src/features/referrals/useReferrals.tsx +56 -56
- package/src/features/updates/useUpdates.tsx +38 -38
- package/src/firebase/firebase.tsx +149 -145
- package/src/firebase/firebaseConfig.tsx +45 -45
- package/src/firebase/firebaseQuery.tsx +151 -151
- package/src/firebase/persistence.ts +84 -84
- package/src/firebase/readDatabase.tsx +236 -235
- package/src/firebase/util.tsx +352 -352
- package/src/firebase/writeDatabase.tsx +77 -77
- package/src/hooks.tsx +4353 -4323
- package/src/images/GatsbyBenchmarks.tsx +711 -711
- package/src/images/LogFuturePlacement.jsx +64 -64
- package/src/images/LogPreviousPlacement.jsx +228 -228
- package/src/images/gatsby_benchmarks.svg +466 -466
- package/src/images/log_future_placement.svg +114 -114
- package/src/images/log_previous_placement.svg +199 -199
- package/src/index.ts +34 -34
- package/src/readDatabase.tsx +3 -3
- package/src/reduxHooks.ts +232 -297
- package/src/tasksAndTips.ts +1209 -1177
- package/src/tutorialTips.ts +58 -58
- package/src/typeDefinitions.ts +1003 -958
- package/src/util.ts +160 -150
- package/tsconfig.dev.json +5 -5
- package/tsconfig.json +21 -22
package/lib/typeDefinitions.d.ts
CHANGED
|
@@ -271,6 +271,8 @@ export type OrganisationAddress = Address & {
|
|
|
271
271
|
primaryContactId?: string;
|
|
272
272
|
default?: boolean;
|
|
273
273
|
flags?: ("addressMissing" | "noPrimaryContact")[];
|
|
274
|
+
color?: string;
|
|
275
|
+
image?: string | false;
|
|
274
276
|
};
|
|
275
277
|
export type Address = {
|
|
276
278
|
id?: string;
|
|
@@ -282,7 +284,7 @@ export type Address = {
|
|
|
282
284
|
geoHash?: string;
|
|
283
285
|
what3Words?: string;
|
|
284
286
|
};
|
|
285
|
-
export type FlagCodes = "inactive" | "noParentEmailWarning" | "noParentEmailError" | "overdue" | "noInsurance" | "providerRejection" | "nearingStart" | "awaitingInsurance" | "noRiskAssessment" | "awaitingRiskAssessment" | "parentEmailFailed" | "providerEmailFailed" | "userEmailFailed" | "noDbsCheck" | "awaitingDbsCheck" | "completeOnboarding" | "reviewOnboarding" | "requestedVisibleAddresses" | "requestedVisiblePlacementListings" | "addOnboarding" | "studentNotAccepted";
|
|
287
|
+
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";
|
|
286
288
|
export type UserData = {
|
|
287
289
|
details: {
|
|
288
290
|
forename: string;
|
|
@@ -341,11 +343,13 @@ export type UserData = {
|
|
|
341
343
|
monthAdded?: number;
|
|
342
344
|
placementsCharged?: boolean;
|
|
343
345
|
visibleAddresses?: string[];
|
|
346
|
+
visibleSchools?: string[];
|
|
344
347
|
visibleListings?: string[];
|
|
345
348
|
requestedVisibleAddresses?: string[];
|
|
346
349
|
requestedVisibleListings?: string[];
|
|
347
350
|
packageData?: BillingPackage;
|
|
348
351
|
viewAddresses?: "all" | "request" | "none" | "some";
|
|
352
|
+
viewSchools?: "all" | "request" | "none" | "some";
|
|
349
353
|
viewPlacementListings?: "all" | "request" | "none";
|
|
350
354
|
viewPlacementGroups?: "all" | "request" | "none";
|
|
351
355
|
skillsTargets?: string[];
|
|
@@ -446,6 +450,9 @@ export type StaffUserPermissions = UserGroupData & {
|
|
|
446
450
|
addEmailTemplates?: boolean;
|
|
447
451
|
editEmailTemplates?: boolean;
|
|
448
452
|
deleteEmailTemplates?: boolean;
|
|
453
|
+
addActivity?: boolean;
|
|
454
|
+
editActivity?: boolean;
|
|
455
|
+
deleteActivity?: boolean;
|
|
449
456
|
};
|
|
450
457
|
export type ProviderUserPermissions = {
|
|
451
458
|
viewStaff: boolean;
|
|
@@ -470,6 +477,9 @@ export type ProviderUserPermissions = {
|
|
|
470
477
|
viewPlacementGroups?: "all" | "request" | "none";
|
|
471
478
|
viewAddresses?: "all" | "request" | "none";
|
|
472
479
|
processApplicants?: boolean;
|
|
480
|
+
addSchools?: boolean;
|
|
481
|
+
editSchools?: boolean;
|
|
482
|
+
deleteSchools?: boolean;
|
|
473
483
|
addAddresses?: boolean;
|
|
474
484
|
editAddresses?: boolean;
|
|
475
485
|
deleteAddresses?: boolean;
|
|
@@ -593,6 +603,9 @@ export type InstituteData = {
|
|
|
593
603
|
staffActive: number;
|
|
594
604
|
admin: string;
|
|
595
605
|
name: string;
|
|
606
|
+
monthAdded: number;
|
|
607
|
+
platformFee: number;
|
|
608
|
+
color?: string;
|
|
596
609
|
verifiedProviders?: string[];
|
|
597
610
|
awaitingProviderInsurance?: string[];
|
|
598
611
|
verifiedRiskAssessments?: string[];
|
|
@@ -622,7 +635,19 @@ export type InstituteData = {
|
|
|
622
635
|
url: string;
|
|
623
636
|
};
|
|
624
637
|
};
|
|
638
|
+
providerActivities?: {
|
|
639
|
+
[key: string]: ProviderActivity;
|
|
640
|
+
};
|
|
625
641
|
} & Address;
|
|
642
|
+
export type ProviderActivity = {
|
|
643
|
+
title?: string;
|
|
644
|
+
description: string;
|
|
645
|
+
position?: number;
|
|
646
|
+
image?: string;
|
|
647
|
+
color: string;
|
|
648
|
+
public?: boolean;
|
|
649
|
+
oId?: string;
|
|
650
|
+
};
|
|
626
651
|
export type NotificationObject = {
|
|
627
652
|
buttonURL: string;
|
|
628
653
|
created: Timestamp;
|
|
@@ -726,7 +751,7 @@ export type CohortData = {
|
|
|
726
751
|
customWorkflow?: boolean;
|
|
727
752
|
oId: string;
|
|
728
753
|
product: Products;
|
|
729
|
-
|
|
754
|
+
schoolId?: string;
|
|
730
755
|
designatedStaff?: string;
|
|
731
756
|
logType?: "basic" | "custom";
|
|
732
757
|
logs?: {
|
|
@@ -746,8 +771,6 @@ export type CohortData = {
|
|
|
746
771
|
};
|
|
747
772
|
providerFeedbackSent?: Timestamp;
|
|
748
773
|
studentsFeedbackSent?: Timestamp;
|
|
749
|
-
billingEmail?: string;
|
|
750
|
-
billingContactId?: string;
|
|
751
774
|
emailTemplates?: {
|
|
752
775
|
[key in keyof typeof emailTemplates]: string;
|
|
753
776
|
};
|
|
@@ -839,6 +862,8 @@ export type PlacementReviewDetails = {
|
|
|
839
862
|
providerFeedback?: {
|
|
840
863
|
[key: string]: unknown;
|
|
841
864
|
};
|
|
865
|
+
primaryColor?: string;
|
|
866
|
+
primaryImage?: string;
|
|
842
867
|
};
|
|
843
868
|
export type BlogCategories = "students" | "providers" | "institutes" | "placementt";
|
|
844
869
|
export type Blog = {
|
|
@@ -974,6 +999,8 @@ export type Event = {
|
|
|
974
999
|
export type BillingPackage = {
|
|
975
1000
|
name: string;
|
|
976
1001
|
staffUnitCost: number;
|
|
1002
|
+
platformFee: number;
|
|
1003
|
+
platformFeeFrequency: "yearly" | "monthly";
|
|
977
1004
|
studentUnitCost: number;
|
|
978
1005
|
placementUnitCost: number;
|
|
979
1006
|
product: Products;
|
|
@@ -1012,5 +1039,23 @@ export type Reminder = {
|
|
|
1012
1039
|
title: string;
|
|
1013
1040
|
description?: string;
|
|
1014
1041
|
dueDate: string;
|
|
1015
|
-
status: "upcoming" | "
|
|
1042
|
+
status: "upcoming" | "dismissed";
|
|
1043
|
+
};
|
|
1044
|
+
export type Sorts = {
|
|
1045
|
+
[label: string]: {
|
|
1046
|
+
value: string;
|
|
1047
|
+
direction: "asc" | "desc";
|
|
1048
|
+
};
|
|
1049
|
+
} | undefined;
|
|
1050
|
+
export type SchoolData = OrganisationAddress & {
|
|
1051
|
+
billingEmail?: string;
|
|
1052
|
+
billingContactId?: string;
|
|
1053
|
+
authorisedMISSystem?: {
|
|
1054
|
+
name: "arbor";
|
|
1055
|
+
data: {
|
|
1056
|
+
url: string;
|
|
1057
|
+
};
|
|
1058
|
+
};
|
|
1059
|
+
monthAdded: number;
|
|
1060
|
+
acceptingAlumni?: boolean;
|
|
1016
1061
|
};
|
package/lib/util.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ type PlacementFlagCodeParams = {
|
|
|
10
10
|
* Description of function
|
|
11
11
|
*
|
|
12
12
|
*/
|
|
13
|
-
type PlaceFlagCodeReturn = FlagCodes[]
|
|
13
|
+
type PlaceFlagCodeReturn = Promise<FlagCodes[]>;
|
|
14
14
|
export declare const getPlacementFlagCodes: ({ placement, studentData, workflow, institute, user }: PlacementFlagCodeParams) => PlaceFlagCodeReturn;
|
|
15
15
|
export declare function objectsEqualNew(a: any, b: any): boolean;
|
|
16
16
|
export {};
|
package/lib/util.js
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.getPlacementFlagCodes = void 0;
|
|
4
7
|
exports.objectsEqualNew = objectsEqualNew;
|
|
5
|
-
const
|
|
8
|
+
const firestore_1 = require("firebase/firestore");
|
|
9
|
+
const firebaseQuery_1 = __importDefault(require("./firebase/firebaseQuery"));
|
|
10
|
+
const util_1 = require("./firebase/util");
|
|
11
|
+
const getPlacementFlagCodes = async ({ placement, studentData, workflow, institute, user }) => {
|
|
6
12
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
7
13
|
let flags = placement.flags || [];
|
|
14
|
+
const firebaseQuery = new firebaseQuery_1.default();
|
|
8
15
|
if (!studentData.details.parentEmail && !flags.find((x) => x.includes("noParentEmail"))) {
|
|
9
16
|
if (((_a = workflow.find((obj) => obj.id === placement.status)) === null || _a === void 0 ? void 0 : _a.userType) === "Parent") {
|
|
10
17
|
flags.includes("noParentEmailWarning") || flags.push("noParentEmailError");
|
|
@@ -22,6 +29,10 @@ const getPlacementFlagCodes = ({ placement, studentData, workflow, institute, us
|
|
|
22
29
|
const awaitingRiskAssessment = !placement.riskAssessment || ((_e = institute === null || institute === void 0 ? void 0 : institute.awaitingPlacementRiskAssessments) === null || _e === void 0 ? void 0 : _e.includes(placement.placementId || placement.id));
|
|
23
30
|
const dbsCheckNotVerified = !((_f = institute === null || institute === void 0 ? void 0 : institute.verifiedDbsChecks) === null || _f === void 0 ? void 0 : _f.includes(placement.placementId || placement.id));
|
|
24
31
|
const awaitingDbsCheck = !placement.dbsCheck || ((_g = institute === null || institute === void 0 ? void 0 : institute.awaitingPlacementDbsChecks) === null || _g === void 0 ? void 0 : _g.includes(placement.placementId || placement.id));
|
|
32
|
+
const reminderCount = (await firebaseQuery.getCount(["reminders"], [(0, firestore_1.where)("oId", "==", user.oId), (0, firestore_1.where)("uid", "==", user.id), (0, firestore_1.where)("dueDate", "<=", (0, util_1.convertDate)(new Date(), "dbstring")), (0, firestore_1.where)("documentId", "==", placement.id), (0, firestore_1.where)("status", "==", "upcoming")]));
|
|
33
|
+
if (reminderCount) {
|
|
34
|
+
flags.push("reminder");
|
|
35
|
+
}
|
|
25
36
|
if (user.userType === "Staff" && user.product === "institutes" && placement.insurance && placementIsPostProviderReview && placementNotEnded && providerUnverified && !awaitingProviderInsurance) {
|
|
26
37
|
console.log("Add insurance flag!");
|
|
27
38
|
flags.includes("noInsurance") || flags.push("noInsurance");
|
package/lib/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,56 +1,52 @@
|
|
|
1
|
-
{
|
|
2
|
-
"private": false,
|
|
3
|
-
"name": "placementt-core",
|
|
4
|
-
"author": "Placementt",
|
|
5
|
-
"version": "
|
|
6
|
-
"main": "lib/index.js",
|
|
7
|
-
"types": "lib/index.d.ts",
|
|
8
|
-
"scripts": {
|
|
9
|
-
"lint": "eslint --ext .js,.ts .",
|
|
10
|
-
"prebuild": "rimraf build",
|
|
11
|
-
"build": "tsc",
|
|
12
|
-
"prestart": "rimraf build",
|
|
13
|
-
"start": "tsc -w",
|
|
14
|
-
"pack": "yarn pack",
|
|
15
|
-
"deploy": "tsc && yarn publish"
|
|
16
|
-
},
|
|
17
|
-
"dependencies": {
|
|
18
|
-
"@react-native-async-storage/async-storage": "1.
|
|
19
|
-
"@reduxjs/toolkit": "^1.9.7",
|
|
20
|
-
"@types/jest": "29.5.0",
|
|
21
|
-
"@types/ngeohash": "0.6.4",
|
|
22
|
-
"@types/react": "
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"react": "^
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"
|
|
48
|
-
},
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"engines": {
|
|
54
|
-
"node": "18"
|
|
55
|
-
}
|
|
56
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"private": false,
|
|
3
|
+
"name": "placementt-core",
|
|
4
|
+
"author": "Placementt",
|
|
5
|
+
"version": "11.0.803",
|
|
6
|
+
"main": "lib/index.js",
|
|
7
|
+
"types": "lib/index.d.ts",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"lint": "eslint --ext .js,.ts .",
|
|
10
|
+
"prebuild": "rimraf build",
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"prestart": "rimraf build",
|
|
13
|
+
"start": "tsc -w",
|
|
14
|
+
"pack": "yarn pack",
|
|
15
|
+
"deploy": "tsc && yarn publish"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@react-native-async-storage/async-storage": "1.19.3",
|
|
19
|
+
"@reduxjs/toolkit": "^1.9.7",
|
|
20
|
+
"@types/jest": "29.5.0",
|
|
21
|
+
"@types/ngeohash": "0.6.4",
|
|
22
|
+
"@types/react": "18.0.29",
|
|
23
|
+
"algoliasearch": "^4.23.3",
|
|
24
|
+
"firebase": "9.16.0",
|
|
25
|
+
"html2canvas": "^1.4.1",
|
|
26
|
+
"jest": "29.5.0",
|
|
27
|
+
"jspdf": "^2.5.1",
|
|
28
|
+
"ngeohash": "^0.6.3",
|
|
29
|
+
"path": "^0.12.7",
|
|
30
|
+
"placementt-core": "1.0.525",
|
|
31
|
+
"placementt-prisma": "1.0.2",
|
|
32
|
+
"react": "18.2.0",
|
|
33
|
+
"react-dom": "18.2.0",
|
|
34
|
+
"react-redux": "^8.1.3",
|
|
35
|
+
"redux-persist": "^6.0.0",
|
|
36
|
+
"slate": "^0.84.0",
|
|
37
|
+
"slate-history": "^0.66.0",
|
|
38
|
+
"slate-react": "^0.83.2",
|
|
39
|
+
"ts-jest": "29.1.0",
|
|
40
|
+
"typescript": "^5.3.3"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"npm-run-all": "^4.1.5",
|
|
44
|
+
"rimraf": "^3.0.2"
|
|
45
|
+
},
|
|
46
|
+
"resolutions": {
|
|
47
|
+
"@types/react": "18.0.29"
|
|
48
|
+
},
|
|
49
|
+
"engines": {
|
|
50
|
+
"node": "18"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import {Addresses, Cohorts,
|
|
2
|
-
Contacts, InstituteStudents, Institutes, Logs, PlacementListings, Placements, Providers,
|
|
3
|
-
StudentUsers,
|
|
4
|
-
InstituteStaff as InstituteStaffObj,
|
|
5
|
-
ProviderStaff as ProviderStaffObj,} from "placementt-prisma"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export type PrismaAddress = Addresses
|
|
9
|
-
export type PrismaCohort = Cohorts
|
|
10
|
-
export type PrismaContact = Contacts
|
|
11
|
-
export type PrismaInstitute = Institutes
|
|
12
|
-
export type PrismaLog = Logs
|
|
13
|
-
export type PrismaPlacementListing = PlacementListings
|
|
14
|
-
export type PrismaPlacement = Placements
|
|
15
|
-
export type PrismaProvider = Providers
|
|
16
|
-
export type PrismaStudentUser = StudentUsers
|
|
17
|
-
export type PrismaInstituteStaff = InstituteStaffObj
|
|
18
|
-
export type PrismaInstituteStudent = InstituteStudents
|
|
1
|
+
import {Addresses, Cohorts,
|
|
2
|
+
Contacts, InstituteStudents, Institutes, Logs, PlacementListings, Placements, Providers,
|
|
3
|
+
StudentUsers,
|
|
4
|
+
InstituteStaff as InstituteStaffObj,
|
|
5
|
+
ProviderStaff as ProviderStaffObj,} from "placementt-prisma"
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
export type PrismaAddress = Addresses
|
|
9
|
+
export type PrismaCohort = Cohorts
|
|
10
|
+
export type PrismaContact = Contacts
|
|
11
|
+
export type PrismaInstitute = Institutes
|
|
12
|
+
export type PrismaLog = Logs
|
|
13
|
+
export type PrismaPlacementListing = PlacementListings
|
|
14
|
+
export type PrismaPlacement = Placements
|
|
15
|
+
export type PrismaProvider = Providers
|
|
16
|
+
export type PrismaStudentUser = StudentUsers
|
|
17
|
+
export type PrismaInstituteStaff = InstituteStaffObj
|
|
18
|
+
export type PrismaInstituteStudent = InstituteStudents
|
|
19
19
|
export type PrismaProviderStaff = ProviderStaffObj
|
package/src/apiCalls.ts
CHANGED
|
@@ -1,128 +1,128 @@
|
|
|
1
|
-
import {Auth} from "firebase/auth";
|
|
2
|
-
import {Contact} from "./typeDefinitions";
|
|
3
|
-
|
|
4
|
-
export const initializeToken = async (auth: Auth) => {
|
|
5
|
-
try {
|
|
6
|
-
const user = auth.currentUser;
|
|
7
|
-
if (user) {
|
|
8
|
-
const token = await user.getIdToken();
|
|
9
|
-
console.log("this is the token###",token);
|
|
10
|
-
return token;
|
|
11
|
-
} else {
|
|
12
|
-
console.error("User is not signed in.");
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
} catch (error) {
|
|
16
|
-
console.error("Error initializing token:", error);
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export class API {
|
|
22
|
-
private rootURL: string;
|
|
23
|
-
private auth: Auth;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
constructor(auth: Auth, type?:string) {
|
|
27
|
-
if (type === "local") {
|
|
28
|
-
this.rootURL = "localhost:3006";
|
|
29
|
-
} else {
|
|
30
|
-
this.rootURL = "placemmentt.co.uk";
|
|
31
|
-
}
|
|
32
|
-
this.auth = auth;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
async getContact(id: string): Promise<Contact | undefined> {
|
|
37
|
-
const token = await initializeToken(this.auth);
|
|
38
|
-
|
|
39
|
-
try {
|
|
40
|
-
const response = await fetch(`${this.rootURL}/api/contacts/getContacts/${id}`, {
|
|
41
|
-
method: "GET",
|
|
42
|
-
headers: {
|
|
43
|
-
"Authorization": `Bearer ${token}`,
|
|
44
|
-
"Content-Type": "application/json",
|
|
45
|
-
},
|
|
46
|
-
});
|
|
47
|
-
return (await response.json()) as Contact;
|
|
48
|
-
} catch (error) {
|
|
49
|
-
console.log(error);
|
|
50
|
-
}
|
|
51
|
-
return undefined;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
async addContact(details:Contact) {
|
|
55
|
-
const token = await initializeToken(this.auth);
|
|
56
|
-
|
|
57
|
-
try {
|
|
58
|
-
const response = await fetch(`${this.rootURL}/api/contacts/addContact`, {
|
|
59
|
-
method: "POST",
|
|
60
|
-
headers: {
|
|
61
|
-
"Authorization": `Bearer ${token}`,
|
|
62
|
-
"Content-Type": "application/json",
|
|
63
|
-
},
|
|
64
|
-
body: JSON.stringify(details ),
|
|
65
|
-
});
|
|
66
|
-
return (await response.json());
|
|
67
|
-
} catch (error) {
|
|
68
|
-
console.log(error);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
async update_contact(id:string, details:Contact, Constraint:string) {
|
|
73
|
-
const token = await initializeToken(this.auth);
|
|
74
|
-
|
|
75
|
-
try {
|
|
76
|
-
const response = await fetch(`${this.rootURL}/api/contacts/update/${id}`, {
|
|
77
|
-
method: "PUT",
|
|
78
|
-
headers: {
|
|
79
|
-
"Authorization": `Bearer ${token}`,
|
|
80
|
-
"Content-Type": "application/json",
|
|
81
|
-
},
|
|
82
|
-
body: JSON.stringify({
|
|
83
|
-
details: details,
|
|
84
|
-
constraint: Constraint,
|
|
85
|
-
} ),
|
|
86
|
-
});
|
|
87
|
-
return (await response.json());
|
|
88
|
-
} catch (error) {
|
|
89
|
-
console.log(error);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
async delete_contact(contactid:string) {
|
|
94
|
-
const token = await initializeToken(this.auth);
|
|
95
|
-
|
|
96
|
-
try {
|
|
97
|
-
const response = await fetch(`${this.rootURL}/api/contacts/delete}`, {
|
|
98
|
-
headers: {
|
|
99
|
-
"Authorization": `Bearer ${token}`,
|
|
100
|
-
"Content-Type": "application/json",
|
|
101
|
-
},
|
|
102
|
-
body: JSON.stringify({
|
|
103
|
-
contactid: contactid,
|
|
104
|
-
} ),
|
|
105
|
-
});
|
|
106
|
-
return (await response.json());
|
|
107
|
-
} catch (error) {
|
|
108
|
-
console.log(error);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
async get_placements(id:string) {
|
|
112
|
-
const token = await initializeToken(this.auth);
|
|
113
|
-
|
|
114
|
-
try {
|
|
115
|
-
const response = await fetch(`${this.rootURL}/api/contacts/getPlacements/${id}`, {
|
|
116
|
-
method: "GET",
|
|
117
|
-
headers: {
|
|
118
|
-
"Authorization": `Bearer ${token}`,
|
|
119
|
-
"Content-Type": "application/json",
|
|
120
|
-
},
|
|
121
|
-
});
|
|
122
|
-
return (await response.json()) as Contact;
|
|
123
|
-
} catch (error) {
|
|
124
|
-
console.log(error);
|
|
125
|
-
}
|
|
126
|
-
return undefined;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
1
|
+
import {Auth} from "firebase/auth";
|
|
2
|
+
import {Contact} from "./typeDefinitions";
|
|
3
|
+
|
|
4
|
+
export const initializeToken = async (auth: Auth) => {
|
|
5
|
+
try {
|
|
6
|
+
const user = auth.currentUser;
|
|
7
|
+
if (user) {
|
|
8
|
+
const token = await user.getIdToken();
|
|
9
|
+
console.log("this is the token###",token);
|
|
10
|
+
return token;
|
|
11
|
+
} else {
|
|
12
|
+
console.error("User is not signed in.");
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
} catch (error) {
|
|
16
|
+
console.error("Error initializing token:", error);
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export class API {
|
|
22
|
+
private rootURL: string;
|
|
23
|
+
private auth: Auth;
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
constructor(auth: Auth, type?:string) {
|
|
27
|
+
if (type === "local") {
|
|
28
|
+
this.rootURL = "localhost:3006";
|
|
29
|
+
} else {
|
|
30
|
+
this.rootURL = "placemmentt.co.uk";
|
|
31
|
+
}
|
|
32
|
+
this.auth = auth;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
async getContact(id: string): Promise<Contact | undefined> {
|
|
37
|
+
const token = await initializeToken(this.auth);
|
|
38
|
+
|
|
39
|
+
try {
|
|
40
|
+
const response = await fetch(`${this.rootURL}/api/contacts/getContacts/${id}`, {
|
|
41
|
+
method: "GET",
|
|
42
|
+
headers: {
|
|
43
|
+
"Authorization": `Bearer ${token}`,
|
|
44
|
+
"Content-Type": "application/json",
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
return (await response.json()) as Contact;
|
|
48
|
+
} catch (error) {
|
|
49
|
+
console.log(error);
|
|
50
|
+
}
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async addContact(details:Contact) {
|
|
55
|
+
const token = await initializeToken(this.auth);
|
|
56
|
+
|
|
57
|
+
try {
|
|
58
|
+
const response = await fetch(`${this.rootURL}/api/contacts/addContact`, {
|
|
59
|
+
method: "POST",
|
|
60
|
+
headers: {
|
|
61
|
+
"Authorization": `Bearer ${token}`,
|
|
62
|
+
"Content-Type": "application/json",
|
|
63
|
+
},
|
|
64
|
+
body: JSON.stringify(details ),
|
|
65
|
+
});
|
|
66
|
+
return (await response.json());
|
|
67
|
+
} catch (error) {
|
|
68
|
+
console.log(error);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async update_contact(id:string, details:Contact, Constraint:string) {
|
|
73
|
+
const token = await initializeToken(this.auth);
|
|
74
|
+
|
|
75
|
+
try {
|
|
76
|
+
const response = await fetch(`${this.rootURL}/api/contacts/update/${id}`, {
|
|
77
|
+
method: "PUT",
|
|
78
|
+
headers: {
|
|
79
|
+
"Authorization": `Bearer ${token}`,
|
|
80
|
+
"Content-Type": "application/json",
|
|
81
|
+
},
|
|
82
|
+
body: JSON.stringify({
|
|
83
|
+
details: details,
|
|
84
|
+
constraint: Constraint,
|
|
85
|
+
} ),
|
|
86
|
+
});
|
|
87
|
+
return (await response.json());
|
|
88
|
+
} catch (error) {
|
|
89
|
+
console.log(error);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
async delete_contact(contactid:string) {
|
|
94
|
+
const token = await initializeToken(this.auth);
|
|
95
|
+
|
|
96
|
+
try {
|
|
97
|
+
const response = await fetch(`${this.rootURL}/api/contacts/delete}`, {
|
|
98
|
+
headers: {
|
|
99
|
+
"Authorization": `Bearer ${token}`,
|
|
100
|
+
"Content-Type": "application/json",
|
|
101
|
+
},
|
|
102
|
+
body: JSON.stringify({
|
|
103
|
+
contactid: contactid,
|
|
104
|
+
} ),
|
|
105
|
+
});
|
|
106
|
+
return (await response.json());
|
|
107
|
+
} catch (error) {
|
|
108
|
+
console.log(error);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async get_placements(id:string) {
|
|
112
|
+
const token = await initializeToken(this.auth);
|
|
113
|
+
|
|
114
|
+
try {
|
|
115
|
+
const response = await fetch(`${this.rootURL}/api/contacts/getPlacements/${id}`, {
|
|
116
|
+
method: "GET",
|
|
117
|
+
headers: {
|
|
118
|
+
"Authorization": `Bearer ${token}`,
|
|
119
|
+
"Content-Type": "application/json",
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
return (await response.json()) as Contact;
|
|
123
|
+
} catch (error) {
|
|
124
|
+
console.log(error);
|
|
125
|
+
}
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
}
|