@@ -259,6 +259,8 @@ func createApprovalTask(ctx context.Context, approvaltaskClientSet versioned.Int
259
259
State : pendingState ,
260
260
Approvers : users ,
261
261
ApproversResponse : []v1alpha1.ApproverState {},
262
+ ApprovalsRequired : numberOfApprovalsRequired ,
263
+ ApprovalsReceived : 0 , // Initially no approvals received
262
264
}
263
265
264
266
at .Status = status
@@ -304,6 +306,29 @@ func approvalTaskHasTrueInput(approvalTask v1alpha1.ApprovalTask) bool {
304
306
return len (approvedUsers ) >= requiredApprovals
305
307
}
306
308
309
+ func countApprovalsReceived (approvalTask v1alpha1.ApprovalTask ) int {
310
+ // Count unique users who have approved
311
+ approvedUsers := make (map [string ]bool )
312
+
313
+ for _ , approver := range approvalTask .Spec .Approvers {
314
+ if approver .Input != hasApproved {
315
+ continue
316
+ }
317
+
318
+ if approver .Type == "User" {
319
+ approvedUsers [approver .Name ] = true
320
+ } else if approver .Type == "Group" {
321
+ for _ , user := range approver .Users {
322
+ if user .Input == hasApproved {
323
+ approvedUsers [user .Name ] = true
324
+ }
325
+ }
326
+ }
327
+ }
328
+
329
+ return len (approvedUsers )
330
+ }
331
+
307
332
func (r * Reconciler ) checkIfUpdateRequired (ctx context.Context , approvalTask v1alpha1.ApprovalTask , run * v1beta1.CustomRun ) error {
308
333
logger := logging .FromContext (ctx )
309
334
@@ -414,6 +439,10 @@ func updateApprovalState(ctx context.Context, approvaltaskClientSet versioned.In
414
439
// Update the ApprovedBy list
415
440
approvalTask .Status .ApproversResponse = filteredApprovedBy
416
441
442
+ // Update the approvals count fields
443
+ approvalTask .Status .ApprovalsRequired = approvalTask .Spec .NumberOfApprovalsRequired
444
+ approvalTask .Status .ApprovalsReceived = countApprovalsReceived (* approvalTask )
445
+
417
446
// Update the approvalState
418
447
// Reject scenario: Check if there is one false and if found mark the approvalstate to false
419
448
// Approve scenario: Check if the input value from the user is true and is equal to the approvalsRequired
0 commit comments