diff --git a/internal/domain/access/repository.go b/internal/domain/access/repository.go index e4aba98..eed8ff2 100644 --- a/internal/domain/access/repository.go +++ b/internal/domain/access/repository.go @@ -401,20 +401,30 @@ func (r accessRepo) UpdateRolePermission(c context.Context, req UpdateRolePageRe return err } - // select active page - var pageIds []string - for _, page := range req.AccessPage { - if page.IsActive { - pageIds = append(pageIds, page.ID) - } - } - // inserting new permission - err = r.insertPagePermission(c, tx, req.ID, pageIds) + // updating permission + err = r.updateActivePermissionById(c, tx, req.ID, req.Status) if err != nil { tx.Rollback() return err } + if req.Status { // insert when is_active = true + // select active page + var pageIds []string + for _, page := range req.AccessPage { + if page.IsActive { + pageIds = append(pageIds, page.ID) + } + } + + // inserting new permission + err = r.insertPagePermission(c, tx, req.ID, pageIds) + if err != nil { + tx.Rollback() + return err + } + } + tx.Commit() return nil @@ -528,6 +538,34 @@ func (r accessRepo) insertPermissionByRoleName(c context.Context, tx *sql.Tx, ne return idRoles, nil } +func (r accessRepo) updateActivePermissionById(c context.Context, tx *sql.Tx, permissionId string, isActive bool) error { + updateData := queryUtils.UpdateData{ + Columns: []string{"is_active"}, + Values: []interface{}{isActive}, + } + + filters := []queryUtils.FilterGroup{ + { + Filters: []queryUtils.DynamicFilter{ + {Column: "id", Operator: queryUtils.OpEqual, Value: permissionId}, + }, + }, + } + + sql, args, err := r.queryBuilder.BuildUpdateQuery(TBL_PERMISSION, updateData, filters) + if err != nil { + log.Printf("failed create update permission query : %v", err) + return err + } + _, err = tx.ExecContext(c, sql, args) + if err != nil { + log.Printf("failed executing update permission : %v", err) + return err + } + + return nil +} + // END table permission functions // Table user permission functions