@@ -93,21 +93,20 @@ func findExistingAssessmentResponse(ctx context.Context, client *generated.Clien
9393// assessment response. For drafts it updates due date only. For non-drafts it increments send
9494// attempts, resets overdue status, and sends a new email invitation.
9595func handleExistingAssessmentResponse (ctx context.Context , m * generated.AssessmentResponseMutation , existingResponse * generated.AssessmentResponse , isTest bool ) (* generated.AssessmentResponse , error ) {
96- isDraft , _ := m .IsDraft ()
97-
98- if existingResponse .Status != enums .AssessmentResponseStatusDraft &&
99- existingResponse .Status != enums .AssessmentResponseStatusSent &&
100- existingResponse .Status != enums .AssessmentResponseStatusOverdue &&
96+ if existingResponse .Status == enums .AssessmentResponseStatusCompleted &&
10197 ! isTest {
102- return nil , ErrAssessmentInProgress
98+ return nil , ErrAssessmentInCompleted
10399 }
104100
105101 update := m .Client ().AssessmentResponse .UpdateOneID (existingResponse .ID )
106102
107103 if dueDate , ok := m .DueDate (); ok {
108104 update = update .SetDueDate (dueDate )
105+ // ensure if due date changes status is not marked as overdue
106+ update = update .SetStatus (enums .AssessmentResponseStatusSent )
109107 }
110108
109+ isDraft , _ := m .IsDraft ()
111110 if isDraft {
112111 update = update .SetStatus (enums .AssessmentResponseStatusDraft )
113112
@@ -220,12 +219,8 @@ func HookUpdateAssessmentResponse() ent.Hook {
220219
221220 newStatus , statusExists := m .Status ()
222221
223- if statusExists {
224- switch assessmentResp .Status {
225- case enums .AssessmentResponseStatusCompleted ,
226- enums .AssessmentResponseStatusOverdue :
227- return nil , ErrAssessmentInProgress
228- }
222+ if statusExists && assessmentResp .Status == enums .AssessmentResponseStatusCompleted {
223+ return nil , ErrAssessmentInCompleted
229224 }
230225
231226 isPastDue := ! assessmentResp .DueDate .IsZero () && time .Now ().After (assessmentResp .DueDate )
0 commit comments