mirror of
https://github.com/LibreSign/libresign.git
synced 2025-12-18 05:20:45 +01:00
feat: respect draft status when creating sign requests
When file status is draft, new sign requests should also start as draft regardless of signing order. This prevents automatic notifications and keeps requests in draft mode until file is ready. Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
This commit is contained in:
parent
45554e7ecf
commit
25bce290e4
1 changed files with 12 additions and 4 deletions
|
|
@ -203,6 +203,7 @@ class RequestSignatureService {
|
|||
$this->deleteIdentifyMethodIfNotExits($data['users'], $fileId);
|
||||
|
||||
$this->sequentialSigningService->resetOrderCounter();
|
||||
$fileStatus = $data['status'] ?? null;
|
||||
|
||||
foreach ($data['users'] as $user) {
|
||||
$userProvidedOrder = isset($user['signingOrder']) ? (int)$user['signingOrder'] : null;
|
||||
|
|
@ -216,9 +217,10 @@ class RequestSignatureService {
|
|||
],
|
||||
displayName: $user['displayName'] ?? '',
|
||||
description: $user['description'] ?? '',
|
||||
notify: empty($user['notify']) && $this->isStatusAbleToNotify($data['status'] ?? null),
|
||||
notify: empty($user['notify']) && $this->isStatusAbleToNotify($fileStatus),
|
||||
fileId: $fileId,
|
||||
signingOrder: $signingOrder,
|
||||
fileStatus: $fileStatus,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
|
|
@ -226,9 +228,10 @@ class RequestSignatureService {
|
|||
identifyMethods: $user['identify'],
|
||||
displayName: $user['displayName'] ?? '',
|
||||
description: $user['description'] ?? '',
|
||||
notify: empty($user['notify']) && $this->isStatusAbleToNotify($data['status'] ?? null),
|
||||
notify: empty($user['notify']) && $this->isStatusAbleToNotify($fileStatus),
|
||||
fileId: $fileId,
|
||||
signingOrder: $signingOrder,
|
||||
fileStatus: $fileStatus,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -250,6 +253,7 @@ class RequestSignatureService {
|
|||
bool $notify,
|
||||
int $fileId,
|
||||
int $signingOrder = 0,
|
||||
?int $fileStatus = null,
|
||||
): SignRequestEntity {
|
||||
$identifyMethodsIncances = $this->identifyMethod->getByUserData($identifyMethods);
|
||||
if (empty($identifyMethodsIncances)) {
|
||||
|
|
@ -268,7 +272,7 @@ class RequestSignatureService {
|
|||
$currentStatus = $signRequest->getStatusEnum();
|
||||
|
||||
if ($isNewSignRequest || $currentStatus === \OCA\Libresign\Enum\SignRequestStatus::DRAFT) {
|
||||
$initialStatus = $this->determineInitialStatus($signingOrder);
|
||||
$initialStatus = $this->determineInitialStatus($signingOrder, $fileStatus);
|
||||
$signRequest->setStatusEnum($initialStatus);
|
||||
}
|
||||
|
||||
|
|
@ -284,7 +288,11 @@ class RequestSignatureService {
|
|||
return $signRequest;
|
||||
}
|
||||
|
||||
private function determineInitialStatus(int $signingOrder): \OCA\Libresign\Enum\SignRequestStatus {
|
||||
private function determineInitialStatus(int $signingOrder, ?int $fileStatus = null): \OCA\Libresign\Enum\SignRequestStatus {
|
||||
if ($fileStatus === FileEntity::STATUS_DRAFT) {
|
||||
return \OCA\Libresign\Enum\SignRequestStatus::DRAFT;
|
||||
}
|
||||
|
||||
if (!$this->sequentialSigningService->isOrderedNumericFlow()) {
|
||||
return \OCA\Libresign\Enum\SignRequestStatus::ABLE_TO_SIGN;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue