Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
StatusUpdatePolicy
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
6
100.00% covered (success)
100.00%
1 / 1
 shouldUpdateStatus
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
6
1<?php
2
3declare(strict_types=1);
4/**
5 * SPDX-FileCopyrightText: 2026 LibreCode coop and contributors
6 * SPDX-License-Identifier: AGPL-3.0-or-later
7 */
8
9namespace OCA\Libresign\Service\SignRequest;
10
11use OCA\Libresign\Enum\SignRequestStatus;
12
13class StatusUpdatePolicy {
14    public function shouldUpdateStatus(
15        SignRequestStatus $currentStatus,
16        SignRequestStatus $desiredStatus,
17        bool $isNewSignRequest,
18        bool $isStatusUpgrade,
19        bool $isOrderedNumericFlow,
20        bool $hasPendingLowerOrderSigners,
21    ): bool {
22        if ($isNewSignRequest) {
23            return true;
24        }
25
26        if ($isStatusUpgrade) {
27            return true;
28        }
29
30        return $desiredStatus === SignRequestStatus::DRAFT
31            && $currentStatus === SignRequestStatus::ABLE_TO_SIGN
32            && $isOrderedNumericFlow
33            && $hasPendingLowerOrderSigners;
34    }
35}