Add contract dates to people

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2025-05-25 09:56:27 -07:00
parent 608768e668
commit cc89e76cf8
13 changed files with 384 additions and 19 deletions

View File

@@ -25,6 +25,8 @@ const createPeopleMutation = graphql`
primaryEmailAddress
additionalEmailAddresses
kind
contractStartDate
contractEndDate
}
}
}
@@ -77,6 +79,8 @@ function NewPeopleViewContent() {
primaryEmailAddress: "",
additionalEmailAddresses: [] as string[],
kind: "EMPLOYEE" as "EMPLOYEE" | "CONTRACTOR" | "SERVICE_ACCOUNT",
contractStartDate: "",
contractEndDate: "",
});
const handleFieldChange = (field: keyof typeof formData, value: unknown) => {
@@ -129,6 +133,8 @@ function NewPeopleViewContent() {
primaryEmailAddress: formData.primaryEmailAddress,
additionalEmailAddresses: formData.additionalEmailAddresses,
kind: formData.kind,
contractStartDate: formData.contractStartDate ? new Date(formData.contractStartDate).toISOString() : null,
contractEndDate: formData.contractEndDate ? new Date(formData.contractEndDate).toISOString() : null,
},
},
onCompleted: () => {
@@ -276,6 +282,20 @@ function NewPeopleViewContent() {
</button>
</div>
</div>
<EditableField
label="Contract Start Date"
value={formData.contractStartDate}
type="date"
onChange={(value) => handleFieldChange("contractStartDate", value)}
/>
<EditableField
label="Contract End Date"
value={formData.contractEndDate}
type="date"
onChange={(value) => handleFieldChange("contractEndDate", value)}
/>
</div>
</div>
</Card>

View File

@@ -35,6 +35,8 @@ const peopleViewQuery = graphql`
primaryEmailAddress
additionalEmailAddresses
kind
contractStartDate
contractEndDate
createdAt
updatedAt
}
@@ -51,6 +53,8 @@ const updatePeopleMutation = graphql`
primaryEmailAddress
additionalEmailAddresses
kind
contractStartDate
contractEndDate
updatedAt
}
}
@@ -100,19 +104,34 @@ function PeopleViewContent({
primaryEmailAddress: data.node.primaryEmailAddress || "",
additionalEmailAddresses: data.node.additionalEmailAddresses || [],
kind: data.node.kind,
contractStartDate: data.node.contractStartDate
? new Date(data.node.contractStartDate).toISOString().split('T')[0]
: "",
contractEndDate: data.node.contractEndDate
? new Date(data.node.contractEndDate).toISOString().split('T')[0]
: "",
});
const [commit] = useMutation(updatePeopleMutation);
const [, loadQuery] = useQueryLoader<PeopleViewQueryType>(peopleViewQuery);
const { toast } = useToast();
const hasChanges = editedFields.size > 0;
const handleSave = useCallback(() => {
const formattedData = {
...formData,
contractStartDate: formData.contractStartDate
? new Date(formData.contractStartDate).toISOString()
: null,
contractEndDate: formData.contractEndDate
? new Date(formData.contractEndDate).toISOString()
: null,
};
commit({
variables: {
input: {
id: data.node.id,
...formData,
...formattedData,
},
},
onCompleted: () => {
@@ -157,6 +176,12 @@ function PeopleViewContent({
primaryEmailAddress: data.node.primaryEmailAddress || "",
additionalEmailAddresses: data.node.additionalEmailAddresses || [],
kind: data.node.kind,
contractStartDate: data.node.contractStartDate
? new Date(data.node.contractStartDate).toISOString().split('T')[0]
: "",
contractEndDate: data.node.contractEndDate
? new Date(data.node.contractEndDate).toISOString().split('T')[0]
: "",
});
setEditedFields(new Set());
};
@@ -256,6 +281,29 @@ function PeopleViewContent({
</SelectContent>
</Select>
</div>
<EditableField
label="Contract Start Date"
value={formData.contractStartDate || ""}
type="date"
onChange={(value) =>
handleFieldChange(
"contractStartDate" as keyof typeof formData,
value,
)
}
/>
<EditableField
label="Contract End Date"
value={formData.contractEndDate || ""}
type="date"
onChange={(value) =>
handleFieldChange(
"contractEndDate" as keyof typeof formData,
value,
)
}
/>
</div>
</div>
</Card>

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<76fb19bfca9165a9c40d0b306e53c1de>>
* @generated SignedSource<<ca6b9dbed6835dd4a9705fe3a90c4b19>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -12,6 +12,8 @@ import { ConcreteRequest } from 'relay-runtime';
export type PeopleKind = "CONTRACTOR" | "EMPLOYEE" | "SERVICE_ACCOUNT";
export type CreatePeopleInput = {
additionalEmailAddresses?: ReadonlyArray<string> | null | undefined;
contractEndDate?: string | null | undefined;
contractStartDate?: string | null | undefined;
fullName: string;
kind: PeopleKind;
organizationId: string;
@@ -26,6 +28,8 @@ export type NewPeopleViewCreatePeopleMutation$data = {
readonly peopleEdge: {
readonly node: {
readonly additionalEmailAddresses: ReadonlyArray<string>;
readonly contractEndDate: string | null | undefined;
readonly contractStartDate: string | null | undefined;
readonly fullName: string;
readonly id: string;
readonly kind: PeopleKind;
@@ -107,6 +111,20 @@ v3 = {
"kind": "ScalarField",
"name": "kind",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractStartDate",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractEndDate",
"storageKey": null
}
],
"storageKey": null
@@ -180,16 +198,16 @@ return {
]
},
"params": {
"cacheID": "d9cfab5066a89013eef581dc016daf57",
"cacheID": "85e329e6fd79fbc4094dd8bf03223456",
"id": null,
"metadata": {},
"name": "NewPeopleViewCreatePeopleMutation",
"operationKind": "mutation",
"text": "mutation NewPeopleViewCreatePeopleMutation(\n $input: CreatePeopleInput!\n) {\n createPeople(input: $input) {\n peopleEdge {\n node {\n id\n fullName\n primaryEmailAddress\n additionalEmailAddresses\n kind\n }\n }\n }\n}\n"
"text": "mutation NewPeopleViewCreatePeopleMutation(\n $input: CreatePeopleInput!\n) {\n createPeople(input: $input) {\n peopleEdge {\n node {\n id\n fullName\n primaryEmailAddress\n additionalEmailAddresses\n kind\n contractStartDate\n contractEndDate\n }\n }\n }\n}\n"
}
};
})();
(node as any).hash = "fd4b7a5907702712c654005de2a98996";
(node as any).hash = "6afa87e237975e9574e42b46139bef29";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<e7d3adf5f8472b181a64cfa98964984c>>
* @generated SignedSource<<891422de01f5f1b88dc80d294c116c24>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -16,6 +16,8 @@ export type PeopleViewQuery$variables = {
export type PeopleViewQuery$data = {
readonly node: {
readonly additionalEmailAddresses?: ReadonlyArray<string>;
readonly contractEndDate?: string | null | undefined;
readonly contractStartDate?: string | null | undefined;
readonly createdAt?: string;
readonly fullName?: string;
readonly id?: string;
@@ -83,10 +85,24 @@ v7 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "createdAt",
"name": "contractStartDate",
"storageKey": null
},
v8 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractEndDate",
"storageKey": null
},
v9 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "createdAt",
"storageKey": null
},
v10 = {
"alias": null,
"args": null,
"kind": "ScalarField",
@@ -117,7 +133,9 @@ return {
(v5/*: any*/),
(v6/*: any*/),
(v7/*: any*/),
(v8/*: any*/)
(v8/*: any*/),
(v9/*: any*/),
(v10/*: any*/)
],
"type": "People",
"abstractKey": null
@@ -159,7 +177,9 @@ return {
(v5/*: any*/),
(v6/*: any*/),
(v7/*: any*/),
(v8/*: any*/)
(v8/*: any*/),
(v9/*: any*/),
(v10/*: any*/)
],
"type": "People",
"abstractKey": null
@@ -170,16 +190,16 @@ return {
]
},
"params": {
"cacheID": "fba00a5764659b366e4e11829d75854d",
"cacheID": "1a6ca0fa62d60fd18c26a5e3c868f41f",
"id": null,
"metadata": {},
"name": "PeopleViewQuery",
"operationKind": "query",
"text": "query PeopleViewQuery(\n $peopleId: ID!\n) {\n node(id: $peopleId) {\n __typename\n ... on People {\n id\n fullName\n primaryEmailAddress\n additionalEmailAddresses\n kind\n createdAt\n updatedAt\n }\n id\n }\n}\n"
"text": "query PeopleViewQuery(\n $peopleId: ID!\n) {\n node(id: $peopleId) {\n __typename\n ... on People {\n id\n fullName\n primaryEmailAddress\n additionalEmailAddresses\n kind\n contractStartDate\n contractEndDate\n createdAt\n updatedAt\n }\n id\n }\n}\n"
}
};
})();
(node as any).hash = "b7652de1ad8de6028f493255221f6ce5";
(node as any).hash = "473792157216aa14cc6e4e3e0393090b";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<552b78c5e34c5ce2065dd1190f47f632>>
* @generated SignedSource<<86a82de5c4344cc14a120155388e4a6f>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -12,6 +12,8 @@ import { ConcreteRequest } from 'relay-runtime';
export type PeopleKind = "CONTRACTOR" | "EMPLOYEE" | "SERVICE_ACCOUNT";
export type UpdatePeopleInput = {
additionalEmailAddresses?: ReadonlyArray<string> | null | undefined;
contractEndDate?: string | null | undefined;
contractStartDate?: string | null | undefined;
fullName?: string | null | undefined;
id: string;
kind?: PeopleKind | null | undefined;
@@ -24,6 +26,8 @@ export type PeopleViewUpdatePeopleMutation$data = {
readonly updatePeople: {
readonly people: {
readonly additionalEmailAddresses: ReadonlyArray<string>;
readonly contractEndDate: string | null | undefined;
readonly contractStartDate: string | null | undefined;
readonly fullName: string;
readonly id: string;
readonly kind: PeopleKind;
@@ -103,6 +107,20 @@ v1 = [
"name": "kind",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractStartDate",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractEndDate",
"storageKey": null
},
{
"alias": null,
"args": null,
@@ -135,16 +153,16 @@ return {
"selections": (v1/*: any*/)
},
"params": {
"cacheID": "d09fc02a745b951e278cd492343e49f1",
"cacheID": "398ebbc7659400cbc5d0a750ee7e66b5",
"id": null,
"metadata": {},
"name": "PeopleViewUpdatePeopleMutation",
"operationKind": "mutation",
"text": "mutation PeopleViewUpdatePeopleMutation(\n $input: UpdatePeopleInput!\n) {\n updatePeople(input: $input) {\n people {\n id\n fullName\n primaryEmailAddress\n additionalEmailAddresses\n kind\n updatedAt\n }\n }\n}\n"
"text": "mutation PeopleViewUpdatePeopleMutation(\n $input: UpdatePeopleInput!\n) {\n updatePeople(input: $input) {\n people {\n id\n fullName\n primaryEmailAddress\n additionalEmailAddresses\n kind\n contractStartDate\n contractEndDate\n updatedAt\n }\n }\n}\n"
}
};
})();
(node as any).hash = "15fece3e846bd713533b9e91a1ceffe2";
(node as any).hash = "686c8546329ae29bd2880b0b1da9f20c";
export default node;

View File

@@ -0,0 +1,3 @@
ALTER TABLE peoples
ADD COLUMN contract_start_date DATE,
ADD COLUMN contract_end_date DATE;

View File

@@ -36,6 +36,8 @@ type (
FullName string `db:"full_name"`
PrimaryEmailAddress string `db:"primary_email_address"`
AdditionalEmailAddresses []string `db:"additional_email_addresses"`
ContractStartDate *time.Time `db:"contract_start_date"`
ContractEndDate *time.Time `db:"contract_end_date"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
}
@@ -77,6 +79,8 @@ SELECT
full_name,
primary_email_address,
additional_email_addresses,
contract_start_date,
contract_end_date,
created_at,
updated_at
FROM
@@ -122,6 +126,8 @@ func (p *People) LoadByEmail(
full_name,
primary_email_address,
additional_email_addresses,
contract_start_date,
contract_end_date,
created_at,
updated_at
FROM
@@ -171,6 +177,8 @@ SELECT
full_name,
primary_email_address,
additional_email_addresses,
contract_start_date,
contract_end_date,
created_at,
updated_at
FROM
@@ -221,6 +229,8 @@ INSERT INTO
full_name,
primary_email_address,
additional_email_addresses,
contract_start_date,
contract_end_date,
created_at,
updated_at
)
@@ -233,6 +243,8 @@ VALUES (
@full_name,
@primary_email_address,
@additional_email_addresses,
@contract_start_date,
@contract_end_date,
@created_at,
@updated_at
)
@@ -247,6 +259,8 @@ VALUES (
"full_name": p.FullName,
"primary_email_address": p.PrimaryEmailAddress,
"additional_email_addresses": p.AdditionalEmailAddresses,
"contract_start_date": p.ContractStartDate,
"contract_end_date": p.ContractEndDate,
"created_at": p.CreatedAt,
"updated_at": p.UpdatedAt,
}
@@ -288,6 +302,8 @@ SELECT
full_name,
primary_email_address,
additional_email_addresses,
contract_start_date,
contract_end_date,
created_at,
updated_at
FROM
@@ -331,6 +347,8 @@ UPDATE peoples SET
primary_email_address = @primary_email_address,
additional_email_addresses = @additional_email_addresses,
kind = @kind,
contract_start_date = @contract_start_date,
contract_end_date = @contract_end_date,
updated_at = @updated_at
WHERE %s
AND id = @people_id
@@ -344,6 +362,8 @@ WHERE %s
"primary_email_address": p.PrimaryEmailAddress,
"additional_email_addresses": p.AdditionalEmailAddresses,
"kind": p.Kind,
"contract_start_date": p.ContractStartDate,
"contract_end_date": p.ContractEndDate,
"updated_at": p.UpdatedAt,
}
maps.Copy(args, scope.SQLArguments())
@@ -381,6 +401,8 @@ SELECT
full_name,
primary_email_address,
additional_email_addresses,
contract_start_date,
contract_end_date,
created_at,
updated_at
FROM

View File

@@ -37,6 +37,8 @@ type (
FullName *string
PrimaryEmailAddress *string
AdditionalEmailAddresses *[]string
ContractStartDate **time.Time
ContractEndDate **time.Time
}
CreatePeopleRequest struct {
@@ -46,6 +48,8 @@ type (
PrimaryEmailAddress string
AdditionalEmailAddresses []string
Kind coredata.PeopleKind
ContractStartDate *time.Time
ContractEndDate *time.Time
}
)
@@ -149,6 +153,14 @@ func (s PeopleService) Update(
people.AdditionalEmailAddresses = *req.AdditionalEmailAddresses
}
if req.ContractStartDate != nil {
people.ContractStartDate = *req.ContractStartDate
}
if req.ContractEndDate != nil {
people.ContractEndDate = *req.ContractEndDate
}
people.UpdatedAt = time.Now()
return people.Update(ctx, conn, s.svc.scope)
@@ -176,6 +188,8 @@ func (s PeopleService) Create(
PrimaryEmailAddress: req.PrimaryEmailAddress,
AdditionalEmailAddresses: req.AdditionalEmailAddresses,
UserID: req.UserID,
ContractStartDate: req.ContractStartDate,
ContractEndDate: req.ContractEndDate,
CreatedAt: now,
UpdatedAt: now,
}

View File

@@ -529,6 +529,8 @@ type People implements Node {
primaryEmailAddress: String!
additionalEmailAddresses: [String!]!
kind: PeopleKind!
contractStartDate: Datetime
contractEndDate: Datetime
createdAt: Datetime!
updatedAt: Datetime!
}
@@ -1152,6 +1154,8 @@ input CreatePeopleInput {
primaryEmailAddress: String!
additionalEmailAddresses: [String!]
kind: PeopleKind!
contractStartDate: Datetime
contractEndDate: Datetime
}
input UpdatePeopleInput {
@@ -1160,6 +1164,8 @@ input UpdatePeopleInput {
primaryEmailAddress: String
additionalEmailAddresses: [String!]
kind: PeopleKind
contractStartDate: Datetime
contractEndDate: Datetime
}
input DeletePeopleInput {

View File

@@ -419,6 +419,8 @@ type ComplexityRoot struct {
People struct {
AdditionalEmailAddresses func(childComplexity int) int
ContractEndDate func(childComplexity int) int
ContractStartDate func(childComplexity int) int
CreatedAt func(childComplexity int) int
FullName func(childComplexity int) int
ID func(childComplexity int) int
@@ -2551,6 +2553,20 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
return e.complexity.People.AdditionalEmailAddresses(childComplexity), true
case "People.contractEndDate":
if e.complexity.People.ContractEndDate == nil {
break
}
return e.complexity.People.ContractEndDate(childComplexity), true
case "People.contractStartDate":
if e.complexity.People.ContractStartDate == nil {
break
}
return e.complexity.People.ContractStartDate(childComplexity), true
case "People.createdAt":
if e.complexity.People.CreatedAt == nil {
break
@@ -4564,6 +4580,8 @@ type People implements Node {
primaryEmailAddress: String!
additionalEmailAddresses: [String!]!
kind: PeopleKind!
contractStartDate: Datetime
contractEndDate: Datetime
createdAt: Datetime!
updatedAt: Datetime!
}
@@ -5187,6 +5205,8 @@ input CreatePeopleInput {
primaryEmailAddress: String!
additionalEmailAddresses: [String!]
kind: PeopleKind!
contractStartDate: Datetime
contractEndDate: Datetime
}
input UpdatePeopleInput {
@@ -5195,6 +5215,8 @@ input UpdatePeopleInput {
primaryEmailAddress: String
additionalEmailAddresses: [String!]
kind: PeopleKind
contractStartDate: Datetime
contractEndDate: Datetime
}
input DeletePeopleInput {
@@ -19518,6 +19540,88 @@ func (ec *executionContext) fieldContext_People_kind(_ context.Context, field gr
return fc, nil
}
func (ec *executionContext) _People_contractStartDate(ctx context.Context, field graphql.CollectedField, obj *types.People) (ret graphql.Marshaler) {
fc, err := ec.fieldContext_People_contractStartDate(ctx, field)
if err != nil {
return graphql.Null
}
ctx = graphql.WithFieldContext(ctx, fc)
defer func() {
if r := recover(); r != nil {
ec.Error(ctx, ec.Recover(ctx, r))
ret = graphql.Null
}
}()
resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) {
ctx = rctx // use context from middleware stack in children
return obj.ContractStartDate, nil
})
if err != nil {
ec.Error(ctx, err)
return graphql.Null
}
if resTmp == nil {
return graphql.Null
}
res := resTmp.(*time.Time)
fc.Result = res
return ec.marshalODatetime2ᚖtimeᚐTime(ctx, field.Selections, res)
}
func (ec *executionContext) fieldContext_People_contractStartDate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "People",
Field: field,
IsMethod: false,
IsResolver: false,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
return nil, errors.New("field of type Datetime does not have child fields")
},
}
return fc, nil
}
func (ec *executionContext) _People_contractEndDate(ctx context.Context, field graphql.CollectedField, obj *types.People) (ret graphql.Marshaler) {
fc, err := ec.fieldContext_People_contractEndDate(ctx, field)
if err != nil {
return graphql.Null
}
ctx = graphql.WithFieldContext(ctx, fc)
defer func() {
if r := recover(); r != nil {
ec.Error(ctx, ec.Recover(ctx, r))
ret = graphql.Null
}
}()
resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) {
ctx = rctx // use context from middleware stack in children
return obj.ContractEndDate, nil
})
if err != nil {
ec.Error(ctx, err)
return graphql.Null
}
if resTmp == nil {
return graphql.Null
}
res := resTmp.(*time.Time)
fc.Result = res
return ec.marshalODatetime2ᚖtimeᚐTime(ctx, field.Selections, res)
}
func (ec *executionContext) fieldContext_People_contractEndDate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "People",
Field: field,
IsMethod: false,
IsResolver: false,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
return nil, errors.New("field of type Datetime does not have child fields")
},
}
return fc, nil
}
func (ec *executionContext) _People_createdAt(ctx context.Context, field graphql.CollectedField, obj *types.People) (ret graphql.Marshaler) {
fc, err := ec.fieldContext_People_createdAt(ctx, field)
if err != nil {
@@ -19803,6 +19907,10 @@ func (ec *executionContext) fieldContext_PeopleEdge_node(_ context.Context, fiel
return ec.fieldContext_People_additionalEmailAddresses(ctx, field)
case "kind":
return ec.fieldContext_People_kind(ctx, field)
case "contractStartDate":
return ec.fieldContext_People_contractStartDate(ctx, field)
case "contractEndDate":
return ec.fieldContext_People_contractEndDate(ctx, field)
case "createdAt":
return ec.fieldContext_People_createdAt(ctx, field)
case "updatedAt":
@@ -20036,6 +20144,10 @@ func (ec *executionContext) fieldContext_Policy_owner(_ context.Context, field g
return ec.fieldContext_People_additionalEmailAddresses(ctx, field)
case "kind":
return ec.fieldContext_People_kind(ctx, field)
case "contractStartDate":
return ec.fieldContext_People_contractStartDate(ctx, field)
case "contractEndDate":
return ec.fieldContext_People_contractEndDate(ctx, field)
case "createdAt":
return ec.fieldContext_People_createdAt(ctx, field)
case "updatedAt":
@@ -20938,6 +21050,10 @@ func (ec *executionContext) fieldContext_PolicyVersion_publishedBy(_ context.Con
return ec.fieldContext_People_additionalEmailAddresses(ctx, field)
case "kind":
return ec.fieldContext_People_kind(ctx, field)
case "contractStartDate":
return ec.fieldContext_People_contractStartDate(ctx, field)
case "contractEndDate":
return ec.fieldContext_People_contractEndDate(ctx, field)
case "createdAt":
return ec.fieldContext_People_createdAt(ctx, field)
case "updatedAt":
@@ -21499,6 +21615,10 @@ func (ec *executionContext) fieldContext_PolicyVersionSignature_signedBy(_ conte
return ec.fieldContext_People_additionalEmailAddresses(ctx, field)
case "kind":
return ec.fieldContext_People_kind(ctx, field)
case "contractStartDate":
return ec.fieldContext_People_contractStartDate(ctx, field)
case "contractEndDate":
return ec.fieldContext_People_contractEndDate(ctx, field)
case "createdAt":
return ec.fieldContext_People_createdAt(ctx, field)
case "updatedAt":
@@ -21644,6 +21764,10 @@ func (ec *executionContext) fieldContext_PolicyVersionSignature_requestedBy(_ co
return ec.fieldContext_People_additionalEmailAddresses(ctx, field)
case "kind":
return ec.fieldContext_People_kind(ctx, field)
case "contractStartDate":
return ec.fieldContext_People_contractStartDate(ctx, field)
case "contractEndDate":
return ec.fieldContext_People_contractEndDate(ctx, field)
case "createdAt":
return ec.fieldContext_People_createdAt(ctx, field)
case "updatedAt":
@@ -23045,6 +23169,10 @@ func (ec *executionContext) fieldContext_Risk_owner(_ context.Context, field gra
return ec.fieldContext_People_additionalEmailAddresses(ctx, field)
case "kind":
return ec.fieldContext_People_kind(ctx, field)
case "contractStartDate":
return ec.fieldContext_People_contractStartDate(ctx, field)
case "contractEndDate":
return ec.fieldContext_People_contractEndDate(ctx, field)
case "createdAt":
return ec.fieldContext_People_createdAt(ctx, field)
case "updatedAt":
@@ -24028,6 +24156,10 @@ func (ec *executionContext) fieldContext_Task_assignedTo(_ context.Context, fiel
return ec.fieldContext_People_additionalEmailAddresses(ctx, field)
case "kind":
return ec.fieldContext_People_kind(ctx, field)
case "contractStartDate":
return ec.fieldContext_People_contractStartDate(ctx, field)
case "contractEndDate":
return ec.fieldContext_People_contractEndDate(ctx, field)
case "createdAt":
return ec.fieldContext_People_createdAt(ctx, field)
case "updatedAt":
@@ -24862,6 +24994,10 @@ func (ec *executionContext) fieldContext_UpdatePeoplePayload_people(_ context.Co
return ec.fieldContext_People_additionalEmailAddresses(ctx, field)
case "kind":
return ec.fieldContext_People_kind(ctx, field)
case "contractStartDate":
return ec.fieldContext_People_contractStartDate(ctx, field)
case "contractEndDate":
return ec.fieldContext_People_contractEndDate(ctx, field)
case "createdAt":
return ec.fieldContext_People_createdAt(ctx, field)
case "updatedAt":
@@ -25663,6 +25799,10 @@ func (ec *executionContext) fieldContext_User_people(ctx context.Context, field
return ec.fieldContext_People_additionalEmailAddresses(ctx, field)
case "kind":
return ec.fieldContext_People_kind(ctx, field)
case "contractStartDate":
return ec.fieldContext_People_contractStartDate(ctx, field)
case "contractEndDate":
return ec.fieldContext_People_contractEndDate(ctx, field)
case "createdAt":
return ec.fieldContext_People_createdAt(ctx, field)
case "updatedAt":
@@ -26262,6 +26402,10 @@ func (ec *executionContext) fieldContext_Vendor_businessOwner(_ context.Context,
return ec.fieldContext_People_additionalEmailAddresses(ctx, field)
case "kind":
return ec.fieldContext_People_kind(ctx, field)
case "contractStartDate":
return ec.fieldContext_People_contractStartDate(ctx, field)
case "contractEndDate":
return ec.fieldContext_People_contractEndDate(ctx, field)
case "createdAt":
return ec.fieldContext_People_createdAt(ctx, field)
case "updatedAt":
@@ -26319,6 +26463,10 @@ func (ec *executionContext) fieldContext_Vendor_securityOwner(_ context.Context,
return ec.fieldContext_People_additionalEmailAddresses(ctx, field)
case "kind":
return ec.fieldContext_People_kind(ctx, field)
case "contractStartDate":
return ec.fieldContext_People_contractStartDate(ctx, field)
case "contractEndDate":
return ec.fieldContext_People_contractEndDate(ctx, field)
case "createdAt":
return ec.fieldContext_People_createdAt(ctx, field)
case "updatedAt":
@@ -27982,6 +28130,10 @@ func (ec *executionContext) fieldContext_VendorRiskAssessment_assessedBy(_ conte
return ec.fieldContext_People_additionalEmailAddresses(ctx, field)
case "kind":
return ec.fieldContext_People_kind(ctx, field)
case "contractStartDate":
return ec.fieldContext_People_contractStartDate(ctx, field)
case "contractEndDate":
return ec.fieldContext_People_contractEndDate(ctx, field)
case "createdAt":
return ec.fieldContext_People_createdAt(ctx, field)
case "updatedAt":
@@ -30991,7 +31143,7 @@ func (ec *executionContext) unmarshalInputCreatePeopleInput(ctx context.Context,
asMap[k] = v
}
fieldsInOrder := [...]string{"organizationId", "fullName", "primaryEmailAddress", "additionalEmailAddresses", "kind"}
fieldsInOrder := [...]string{"organizationId", "fullName", "primaryEmailAddress", "additionalEmailAddresses", "kind", "contractStartDate", "contractEndDate"}
for _, k := range fieldsInOrder {
v, ok := asMap[k]
if !ok {
@@ -31033,6 +31185,20 @@ func (ec *executionContext) unmarshalInputCreatePeopleInput(ctx context.Context,
return it, err
}
it.Kind = data
case "contractStartDate":
ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("contractStartDate"))
data, err := ec.unmarshalODatetime2ᚖtimeᚐTime(ctx, v)
if err != nil {
return it, err
}
it.ContractStartDate = data
case "contractEndDate":
ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("contractEndDate"))
data, err := ec.unmarshalODatetime2ᚖtimeᚐTime(ctx, v)
if err != nil {
return it, err
}
it.ContractEndDate = data
}
}
@@ -32813,7 +32979,7 @@ func (ec *executionContext) unmarshalInputUpdatePeopleInput(ctx context.Context,
asMap[k] = v
}
fieldsInOrder := [...]string{"id", "fullName", "primaryEmailAddress", "additionalEmailAddresses", "kind"}
fieldsInOrder := [...]string{"id", "fullName", "primaryEmailAddress", "additionalEmailAddresses", "kind", "contractStartDate", "contractEndDate"}
for _, k := range fieldsInOrder {
v, ok := asMap[k]
if !ok {
@@ -32855,6 +33021,20 @@ func (ec *executionContext) unmarshalInputUpdatePeopleInput(ctx context.Context,
return it, err
}
it.Kind = data
case "contractStartDate":
ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("contractStartDate"))
data, err := ec.unmarshalODatetime2ᚖtimeᚐTime(ctx, v)
if err != nil {
return it, err
}
it.ContractStartDate = data
case "contractEndDate":
ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("contractEndDate"))
data, err := ec.unmarshalODatetime2ᚖtimeᚐTime(ctx, v)
if err != nil {
return it, err
}
it.ContractEndDate = data
}
}
@@ -37265,6 +37445,10 @@ func (ec *executionContext) _People(ctx context.Context, sel ast.SelectionSet, o
if out.Values[i] == graphql.Null {
out.Invalids++
}
case "contractStartDate":
out.Values[i] = ec._People_contractStartDate(ctx, field, obj)
case "contractEndDate":
out.Values[i] = ec._People_contractEndDate(ctx, field, obj)
case "createdAt":
out.Values[i] = ec._People_createdAt(ctx, field, obj)
if out.Values[i] == graphql.Null {

View File

@@ -50,6 +50,8 @@ func NewPeople(p *coredata.People) *People {
PrimaryEmailAddress: p.PrimaryEmailAddress,
AdditionalEmailAddresses: p.AdditionalEmailAddresses,
Kind: p.Kind,
ContractStartDate: p.ContractStartDate,
ContractEndDate: p.ContractEndDate,
CreatedAt: p.CreatedAt,
UpdatedAt: p.UpdatedAt,
}

View File

@@ -164,6 +164,8 @@ type CreatePeopleInput struct {
PrimaryEmailAddress string `json:"primaryEmailAddress"`
AdditionalEmailAddresses []string `json:"additionalEmailAddresses,omitempty"`
Kind coredata.PeopleKind `json:"kind"`
ContractStartDate *time.Time `json:"contractStartDate,omitempty"`
ContractEndDate *time.Time `json:"contractEndDate,omitempty"`
}
type CreatePeoplePayload struct {
@@ -567,6 +569,8 @@ type People struct {
PrimaryEmailAddress string `json:"primaryEmailAddress"`
AdditionalEmailAddresses []string `json:"additionalEmailAddresses"`
Kind coredata.PeopleKind `json:"kind"`
ContractStartDate *time.Time `json:"contractStartDate,omitempty"`
ContractEndDate *time.Time `json:"contractEndDate,omitempty"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
@@ -833,6 +837,8 @@ type UpdatePeopleInput struct {
PrimaryEmailAddress *string `json:"primaryEmailAddress,omitempty"`
AdditionalEmailAddresses []string `json:"additionalEmailAddresses,omitempty"`
Kind *coredata.PeopleKind `json:"kind,omitempty"`
ContractStartDate *time.Time `json:"contractStartDate,omitempty"`
ContractEndDate *time.Time `json:"contractEndDate,omitempty"`
}
type UpdatePeoplePayload struct {

View File

@@ -424,6 +424,8 @@ func (r *mutationResolver) CreatePeople(ctx context.Context, input types.CreateP
PrimaryEmailAddress: input.PrimaryEmailAddress,
AdditionalEmailAddresses: []string{},
Kind: input.Kind,
ContractStartDate: input.ContractStartDate,
ContractEndDate: input.ContractEndDate,
})
if err != nil {
@@ -445,6 +447,8 @@ func (r *mutationResolver) UpdatePeople(ctx context.Context, input types.UpdateP
PrimaryEmailAddress: input.PrimaryEmailAddress,
AdditionalEmailAddresses: &input.AdditionalEmailAddresses,
Kind: input.Kind,
ContractStartDate: &input.ContractStartDate,
ContractEndDate: &input.ContractEndDate,
})
if err != nil {
return nil, fmt.Errorf("cannot update people: %w", err)