Refactor coupling of `approved?` and `approvals_left`
## Description
Currently there are two properties used in approvals:
- `approved?` which flags whether a MR is approved or not.
- `approvals_left` which tells how many approvals the MR has left to be approved.
Ideally, `approved?` will always be true if `approvals_left` is 0, but there is a special situation where this is not the case. If the number of approvers is less than `approvals_left`, then we consider `approved?` to be true.
**Okay, is this a problem?**
From the FE, there is a tight coupling of `approved?` and `approvals_left` because if `approved?` is true we need to treat `approvals_left` as 0.
## Options
**Option 1:** In the FE when we map the server response, let's overwrite `approvals_left` to 0 when `approved?` is true. This keeps the FE from having to pass around two properties, but it does not encapsulate the business logic for other API users :shrug:
**Option 2:** In the BE, cap `approvals_required` with the number of available approvers.
## Proposal
I think Option 2 is the best approach. We'll need to make sure this doesn't mess up the fallback rule.
issue