import { HandlerFunctionArgs, gql, invariant } from "businessnxt-dev";
const QUERY_REndDTandR1onR2 = gql`
query REndDTandR1onR2($companyNo: Int, $orgUnit2No: Int) {
useCompany(no: $companyNo) {
orgUnit2(filter: { orgUnit2No: { _eq: $orgUnit2No } }) {
items {
orgUnit1
orgUnit2No
orgUnitProcessing ##Susp
actualEndDate
actualStartDate
changedDate
official: joinup_Associate_via_Official {
orgUnit1
}
}
}
}
}
`;
const MUTATION_UpdateOrgUnit2 = gql`
mutation UpdateOrgUnit2(
$companyNo: Int
$orgUnit2No: Int
$update: OrgUnit2_Input!
) {
useCompany(no: $companyNo) {
orgUnit2_update(
filter: { orgUnit2No: { _eq: $orgUnit2No } }
value: $update
) {
affectedRows
}
}
}
`;
export default async function ({
event,
createGraphQLClient,
db,
}: HandlerFunctionArgs<"orgUnit2", Env>) {
if (event.event !== "DELETE") {
const client = await createGraphQLClient();
const rsp = await client.request<any>(QUERY_REndDTandR1onR2, {
companyNo: event.companyNo,
orgUnit2No: event.primaryKeys.orgUnit2No,
});
const orgUnit2 = rsp.useCompany.orgUnit2.items?.[0];
const update = {
actualEndDate:
orgUnit2.actualEndDate === 0 &&
orgUnit2.orgUnitProcessing === (orgUnit2.orgUnitProcessing | 1)
? orgUnit2.changedDate
: undefined,
actualStartDate:
orgUnit2.actualStartDate === 0 ? orgUnit2.changedDate : undefined,
orgUnit1:
orgUnit2.orgUnit1 !== orgUnit2.official?.orgUnit1 &&
orgUnit2.official?.orgUnit1
? orgUnit2.official?.orgUnit1
: undefined,
};
const hasUpdates = Object.values(update).filter((x) => x).length > 0;
if (hasUpdates) {
const rsp = await client.request<any>(MUTATION_UpdateOrgUnit2, {
companyNo: event.companyNo,
orgUnit2No: event.primaryKeys.orgUnit2No,
update,
});
console.log("response", rsp);
}
}
}