From 259feb5251497bd22974303e2078d5d3410c682f Mon Sep 17 00:00:00 2001 From: Ngo Trong Khoi <39881166+trkhoi@users.noreply.github.com> Date: Tue, 21 Nov 2023 17:04:35 +0700 Subject: [PATCH] fix: logic vault (#1243) --- pkg/entities/vault.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pkg/entities/vault.go b/pkg/entities/vault.go index 4eb0c0fb..8d8c1a61 100644 --- a/pkg/entities/vault.go +++ b/pkg/entities/vault.go @@ -566,11 +566,13 @@ func (e *Entity) CreateTreasurerRequest(req *request.CreateTreasurerRequest) (*r // add submission with status pending for all treasurer in vaul treasurerSubmission := make([]model.VaultSubmission, 0) + currentApproved := 0 for _, treasurer := range treasurers { status := consts.TreasurerSubmissionStatusPending if treasurer.UserProfileId == req.RequesterProfileId { status = consts.TreasurerSubmissionStatusApproved + currentApproved++ } treasurerSubmission = append(treasurerSubmission, model.VaultSubmission{ @@ -592,7 +594,7 @@ func (e *Entity) CreateTreasurerRequest(req *request.CreateTreasurerRequest) (*r // there's 2 case here // - after the requester default approve the request, number of approved will pass the threshold -> execute action now // - or not pass the threshold -> send DM to treasurer about approve / reject button - isDecidedAndExecuted, err := e.PostCreateTreasurerRequest(req, treasurerReq, vault, treasurers) + isDecidedAndExecuted, err := e.PostCreateTreasurerRequest(req, treasurerReq, vault, treasurers, currentApproved) if err != nil { e.log.Fields(logger.Fields{"req": req}).Errorf(err, "[entity.AddTreasurerToVault] - e.PostCreateTreasurerRequest failed") return nil, err @@ -605,9 +607,12 @@ func (e *Entity) CreateTreasurerRequest(req *request.CreateTreasurerRequest) (*r }, nil } -func (e *Entity) PostCreateTreasurerRequest(req *request.CreateTreasurerRequest, treasurerRequest *model.VaultRequest, vault *model.Vault, treasurers []model.VaultTreasurer) (bool, error) { +func (e *Entity) PostCreateTreasurerRequest(req *request.CreateTreasurerRequest, treasurerRequest *model.VaultRequest, vault *model.Vault, treasurers []model.VaultTreasurer, currentApproved int) (bool, error) { threshold, _ := strconv.ParseFloat(vault.Threshold, 64) - percentage := float64(1) / float64(len(treasurers)) * 100 + percentage := 0.0 + if currentApproved > 0 { + percentage = float64(1) / float64(currentApproved) * 100 + } if percentage >= threshold { // execute action