Skip to content

Commit 251be8a

Browse files
committed
Add contract dates to people
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
1 parent 608768e commit 251be8a

File tree

13 files changed

+385
-20
lines changed

13 files changed

+385
-20
lines changed

apps/console/src/pages/organizations/people/NewPeopleView.tsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ const createPeopleMutation = graphql`
2525
primaryEmailAddress
2626
additionalEmailAddresses
2727
kind
28+
contractStartDate
29+
contractEndDate
2830
}
2931
}
3032
}
@@ -77,6 +79,8 @@ function NewPeopleViewContent() {
7779
primaryEmailAddress: "",
7880
additionalEmailAddresses: [] as string[],
7981
kind: "EMPLOYEE" as "EMPLOYEE" | "CONTRACTOR" | "SERVICE_ACCOUNT",
82+
contractStartDate: "",
83+
contractEndDate: "",
8084
});
8185

8286
const handleFieldChange = (field: keyof typeof formData, value: unknown) => {
@@ -129,6 +133,8 @@ function NewPeopleViewContent() {
129133
primaryEmailAddress: formData.primaryEmailAddress,
130134
additionalEmailAddresses: formData.additionalEmailAddresses,
131135
kind: formData.kind,
136+
contractStartDate: formData.contractStartDate ? new Date(formData.contractStartDate).toISOString() : null,
137+
contractEndDate: formData.contractEndDate ? new Date(formData.contractEndDate).toISOString() : null,
132138
},
133139
},
134140
onCompleted: () => {
@@ -276,6 +282,20 @@ function NewPeopleViewContent() {
276282
</button>
277283
</div>
278284
</div>
285+
286+
<EditableField
287+
label="Contract Start Date"
288+
value={formData.contractStartDate}
289+
type="date"
290+
onChange={(value) => handleFieldChange("contractStartDate", value)}
291+
/>
292+
293+
<EditableField
294+
label="Contract End Date"
295+
value={formData.contractEndDate}
296+
type="date"
297+
onChange={(value) => handleFieldChange("contractEndDate", value)}
298+
/>
279299
</div>
280300
</div>
281301
</Card>

apps/console/src/pages/organizations/people/PeopleView.tsx

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
useMutation,
1515
} from "react-relay";
1616
import { Suspense, useEffect, useState, useCallback } from "react";
17-
import type { PeopleViewQuery as PeopleViewQueryType } from "./__generated__/PeopleViewQuery.graphql";
17+
import type { PeopleViewQuery as PeopleViewQueryType, PeopleKind } from "./__generated__/PeopleViewQuery.graphql";
1818
import { useParams } from "react-router";
1919
import { PageTemplate } from "@/components/PageTemplate";
2020
import { PeopleViewSkeleton } from "./PeoplePage";
@@ -35,6 +35,8 @@ const peopleViewQuery = graphql`
3535
primaryEmailAddress
3636
additionalEmailAddresses
3737
kind
38+
contractStartDate
39+
contractEndDate
3840
createdAt
3941
updatedAt
4042
}
@@ -51,6 +53,8 @@ const updatePeopleMutation = graphql`
5153
primaryEmailAddress
5254
additionalEmailAddresses
5355
kind
56+
contractStartDate
57+
contractEndDate
5458
updatedAt
5559
}
5660
}
@@ -100,19 +104,34 @@ function PeopleViewContent({
100104
primaryEmailAddress: data.node.primaryEmailAddress || "",
101105
additionalEmailAddresses: data.node.additionalEmailAddresses || [],
102106
kind: data.node.kind,
107+
contractStartDate: data.node.contractStartDate
108+
? new Date(data.node.contractStartDate).toISOString().split('T')[0]
109+
: "",
110+
contractEndDate: data.node.contractEndDate
111+
? new Date(data.node.contractEndDate).toISOString().split('T')[0]
112+
: "",
103113
});
104114
const [commit] = useMutation(updatePeopleMutation);
105115
const [, loadQuery] = useQueryLoader<PeopleViewQueryType>(peopleViewQuery);
106116
const { toast } = useToast();
107-
108117
const hasChanges = editedFields.size > 0;
109118

110119
const handleSave = useCallback(() => {
120+
const formattedData = {
121+
...formData,
122+
contractStartDate: formData.contractStartDate
123+
? new Date(formData.contractStartDate).toISOString()
124+
: null,
125+
contractEndDate: formData.contractEndDate
126+
? new Date(formData.contractEndDate).toISOString()
127+
: null,
128+
};
129+
111130
commit({
112131
variables: {
113132
input: {
114133
id: data.node.id,
115-
...formData,
134+
...formattedData,
116135
},
117136
},
118137
onCompleted: () => {
@@ -157,6 +176,12 @@ function PeopleViewContent({
157176
primaryEmailAddress: data.node.primaryEmailAddress || "",
158177
additionalEmailAddresses: data.node.additionalEmailAddresses || [],
159178
kind: data.node.kind,
179+
contractStartDate: data.node.contractStartDate
180+
? new Date(data.node.contractStartDate).toISOString().split('T')[0]
181+
: "",
182+
contractEndDate: data.node.contractEndDate
183+
? new Date(data.node.contractEndDate).toISOString().split('T')[0]
184+
: "",
160185
});
161186
setEditedFields(new Set());
162187
};
@@ -256,6 +281,29 @@ function PeopleViewContent({
256281
</SelectContent>
257282
</Select>
258283
</div>
284+
<EditableField
285+
label="Contract Start Date"
286+
value={formData.contractStartDate || ""}
287+
type="date"
288+
onChange={(value) =>
289+
handleFieldChange(
290+
"contractStartDate" as keyof typeof formData,
291+
value,
292+
)
293+
}
294+
/>
295+
296+
<EditableField
297+
label="Contract End Date"
298+
value={formData.contractEndDate || ""}
299+
type="date"
300+
onChange={(value) =>
301+
handleFieldChange(
302+
"contractEndDate" as keyof typeof formData,
303+
value,
304+
)
305+
}
306+
/>
259307
</div>
260308
</div>
261309
</Card>

apps/console/src/pages/organizations/people/__generated__/NewPeopleViewCreatePeopleMutation.graphql.ts

Lines changed: 22 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/console/src/pages/organizations/people/__generated__/PeopleViewQuery.graphql.ts

Lines changed: 27 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/console/src/pages/organizations/people/__generated__/PeopleViewUpdatePeopleMutation.graphql.ts

Lines changed: 22 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
ALTER TABLE peoples
2+
ADD COLUMN contract_start_date DATE,
3+
ADD COLUMN contract_end_date DATE;

0 commit comments

Comments
 (0)