Skip to content

Commit 5826990

Browse files
committed
feat(api): add isObsolete field and resolver for Candidacy type to determine obsolescence based on last activity date
1 parent 1fe222d commit 5826990

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

packages/reva-api/modules/candidacy/candidacy.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ type Candidacy {
7272
status: CandidacyStatusStep!
7373
typeAccompagnement: TypeAccompagnement!
7474
lastActivityDate: Timestamp
75+
isObsolete: Boolean!
7576
}
7677
enum TypeAccompagnement {
7778
ACCOMPAGNE

packages/reva-api/modules/candidacy/candidacy.resolvers.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import {
5757
sendCandidacyDropOutEmailToCertificateur,
5858
} from "./mails";
5959
import { resolversSecurityMap } from "./security/security";
60+
import { getCandidacyIsObsolete } from "./features/getCandidacyIsObsolete";
6061

6162
const unsafeResolvers = {
6263
Candidacy: {
@@ -83,6 +84,8 @@ const unsafeResolvers = {
8384
getCandidacyDropOutByCandidacyId({ candidacyId }),
8485
candidacyOnCandidacyFinancingMethods: ({ id: candidacyId }: Candidacy) =>
8586
getCandidacyOnCandidacyFinancingMethodsByCandidacyId({ candidacyId }),
87+
isObsolete: ({ id: candidacyId }: Candidacy) =>
88+
getCandidacyIsObsolete({ candidacyId }),
8689
},
8790
CandidacyOnCandidacyFinancingMethod: {
8891
candidacyFinancingMethod: ({
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { addMonths, isBefore } from "date-fns";
2+
import { getCandidacyById } from "./getCandidacyById";
3+
4+
export const getCandidacyIsObsolete = async ({
5+
candidacyId,
6+
}: {
7+
candidacyId: string;
8+
}): Promise<boolean> => {
9+
const candidacy = await getCandidacyById({ candidacyId });
10+
11+
if (!candidacy?.lastActivityDate) {
12+
return false;
13+
}
14+
15+
const sixMonthsFromLastActivity = addMonths(candidacy.lastActivityDate, 6);
16+
17+
return isBefore(sixMonthsFromLastActivity, new Date());
18+
};

0 commit comments

Comments
 (0)