forked from Yara724/api
YARA-832
This commit is contained in:
@@ -40,6 +40,10 @@ export class ClaimWorkflow {
|
||||
@Prop({ type: Date })
|
||||
lockedAt?: Date;
|
||||
|
||||
/** Lock expiry used by UI countdown (typically lockedAt + 15m). */
|
||||
@Prop({ type: Date })
|
||||
expiredAt?: Date;
|
||||
|
||||
@Prop({ type: ClaimActorLockSchema })
|
||||
lockedBy?: ClaimActorLock;
|
||||
}
|
||||
|
||||
@@ -325,6 +325,7 @@ export class ExpertBlameService {
|
||||
if (w) {
|
||||
w.locked = false;
|
||||
delete w.lockedAt;
|
||||
delete w.expiredAt;
|
||||
delete w.lockedBy;
|
||||
}
|
||||
}
|
||||
@@ -444,7 +445,11 @@ export class ExpertBlameService {
|
||||
filter as any,
|
||||
{
|
||||
$set: { "workflow.locked": false },
|
||||
$unset: { "workflow.lockedAt": "", "workflow.lockedBy": "" },
|
||||
$unset: {
|
||||
"workflow.lockedAt": "",
|
||||
"workflow.expiredAt": "",
|
||||
"workflow.lockedBy": "",
|
||||
},
|
||||
},
|
||||
{ new: false },
|
||||
);
|
||||
@@ -953,6 +958,9 @@ export class ExpertBlameService {
|
||||
$set: {
|
||||
"workflow.locked": true,
|
||||
"workflow.lockedAt": now,
|
||||
"workflow.expiredAt": new Date(
|
||||
now.getTime() + this.blameV2LockTtlMs,
|
||||
),
|
||||
"workflow.lockedBy": {
|
||||
actorId: new Types.ObjectId(actorDetail.sub),
|
||||
actorName: actorDetail.fullName || "Unknown Expert",
|
||||
@@ -1125,6 +1133,7 @@ export class ExpertBlameService {
|
||||
},
|
||||
$unset: {
|
||||
"workflow.lockedAt": "",
|
||||
"workflow.expiredAt": "",
|
||||
"workflow.lockedBy": "",
|
||||
},
|
||||
};
|
||||
@@ -1308,6 +1317,7 @@ export class ExpertBlameService {
|
||||
},
|
||||
$unset: {
|
||||
"workflow.lockedAt": "",
|
||||
"workflow.expiredAt": "",
|
||||
"workflow.lockedBy": "",
|
||||
},
|
||||
};
|
||||
@@ -1450,6 +1460,7 @@ export class ExpertBlameService {
|
||||
},
|
||||
$unset: {
|
||||
"workflow.lockedAt": "",
|
||||
"workflow.expiredAt": "",
|
||||
"workflow.lockedBy": "",
|
||||
},
|
||||
};
|
||||
|
||||
@@ -28,6 +28,7 @@ export class ClaimDetailV2ResponseDto {
|
||||
actorId: string;
|
||||
actorName: string;
|
||||
lockedAt: string;
|
||||
expiredAt?: string;
|
||||
};
|
||||
|
||||
@ApiPropertyOptional()
|
||||
|
||||
@@ -2104,12 +2104,15 @@ export class ExpertClaimService {
|
||||
}
|
||||
|
||||
const lockSnapshot = await this.snapshotDamageExpert(actor.sub);
|
||||
const lockAt = new Date();
|
||||
const expiredAt = new Date(lockAt.getTime() + this.claimV2WorkflowLockTtlMs);
|
||||
|
||||
await this.claimCaseDbService.findByIdAndUpdate(claimRequestId, {
|
||||
status: ClaimCaseStatus.EXPERT_REVIEWING,
|
||||
claimStatus: ClaimStatus.UNDER_REVIEW,
|
||||
'workflow.locked': true,
|
||||
'workflow.lockedAt': new Date(),
|
||||
'workflow.lockedAt': lockAt,
|
||||
'workflow.expiredAt': expiredAt,
|
||||
'workflow.lockedBy': {
|
||||
actorId: new Types.ObjectId(actor.sub),
|
||||
actorName: actor.fullName,
|
||||
@@ -2206,6 +2209,7 @@ export class ExpertClaimService {
|
||||
},
|
||||
$unset: {
|
||||
"workflow.lockedAt": "",
|
||||
"workflow.expiredAt": "",
|
||||
"workflow.lockedBy": "",
|
||||
},
|
||||
$push: {
|
||||
@@ -2372,6 +2376,11 @@ export class ExpertClaimService {
|
||||
status: nextCaseStatus,
|
||||
claimStatus: nextClaimStatus,
|
||||
'workflow.locked': false,
|
||||
$unset: {
|
||||
'workflow.lockedAt': '',
|
||||
'workflow.expiredAt': '',
|
||||
'workflow.lockedBy': '',
|
||||
},
|
||||
'workflow.currentStep': nextStep,
|
||||
'workflow.nextStep': needsFactorUpload
|
||||
? ClaimWorkflowStep.INSURER_REVIEW
|
||||
@@ -2486,6 +2495,11 @@ export class ExpertClaimService {
|
||||
await this.claimCaseDbService.findByIdAndUpdate(claimRequestId, {
|
||||
claimStatus: ClaimStatus.NEEDS_REVISION,
|
||||
'workflow.locked': false,
|
||||
$unset: {
|
||||
'workflow.lockedAt': '',
|
||||
'workflow.expiredAt': '',
|
||||
'workflow.lockedBy': '',
|
||||
},
|
||||
...(note ? { 'evaluation.visitLocation': note } : {}),
|
||||
...(visitSnapshot && {
|
||||
'evaluation.inPersonVisitExpertProfileSnapshot': visitSnapshot,
|
||||
@@ -2952,6 +2966,7 @@ export class ExpertClaimService {
|
||||
actorId: claim.workflow.lockedBy.actorId?.toString(),
|
||||
actorName: claim.workflow.lockedBy.actorName,
|
||||
lockedAt: (claim.workflow as any).lockedAt?.toISOString(),
|
||||
expiredAt: (claim.workflow as any).expiredAt?.toISOString(),
|
||||
}
|
||||
: undefined,
|
||||
owner: claim.owner
|
||||
|
||||
@@ -42,6 +42,10 @@ export class Workflow {
|
||||
@Prop({ type: Date })
|
||||
lockedAt?: Date;
|
||||
|
||||
/** Lock expiry used by UI countdown (typically lockedAt + 15m). */
|
||||
@Prop({ type: Date })
|
||||
expiredAt?: Date;
|
||||
|
||||
@Prop({ type: ActorLockSchema })
|
||||
lockedBy?: ActorLock;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user