@@ -79,6 +79,7 @@ public function save(array $data): FileEntity {
7979 public function saveFile (array $ data ): FileEntity {
8080 if (!empty ($ data ['uuid ' ])) {
8181 $ file = $ this ->fileMapper ->getByUuid ($ data ['uuid ' ]);
82+ $ this ->updateSignatureFlowIfAllowed ($ file , $ data );
8283 return $ this ->fileStatusService ->updateFileStatusIfUpgrade ($ file , $ data ['status ' ] ?? 0 );
8384 }
8485 $ fileId = null ;
@@ -90,6 +91,7 @@ public function saveFile(array $data): FileEntity {
9091 if (!is_null ($ fileId )) {
9192 try {
9293 $ file = $ this ->fileMapper ->getByFileId ($ fileId );
94+ $ this ->updateSignatureFlowIfAllowed ($ file , $ data );
9395 return $ this ->fileStatusService ->updateFileStatusIfUpgrade ($ file , $ data ['status ' ] ?? 0 );
9496 } catch (\Throwable ) {
9597 }
@@ -118,27 +120,45 @@ public function saveFile(array $data): FileEntity {
118120 $ file ->setStatus (FileEntity::STATUS_ABLE_TO_SIGN );
119121 }
120122
121- if (isset ($ data ['signatureFlow ' ]) && is_string ($ data ['signatureFlow ' ])) {
122- try {
123- $ signatureFlow = \OCA \Libresign \Enum \SignatureFlow::from ($ data ['signatureFlow ' ]);
124- $ file ->setSignatureFlowEnum ($ signatureFlow );
125- } catch (\ValueError ) {
126- $ this ->setSignatureFlowFromGlobalConfig ($ file );
127- }
128- } else {
129- $ this ->setSignatureFlowFromGlobalConfig ($ file );
130- }
131-
123+ $ this ->setSignatureFlow ($ file , $ data );
132124 $ this ->setDocMdpLevelFromGlobalConfig ($ file );
133125
134126 $ this ->fileMapper ->insert ($ file );
135127 return $ file ;
136128 }
137129
138- private function setSignatureFlowFromGlobalConfig (FileEntity $ file ): void {
139- $ globalFlowValue = $ this ->appConfig ->getValueString (Application::APP_ID , 'signature_flow ' , SignatureFlow::PARALLEL ->value );
140- $ globalFlow = SignatureFlow::from ($ globalFlowValue );
141- $ file ->setSignatureFlowEnum ($ globalFlow );
130+ private function updateSignatureFlowIfAllowed (FileEntity $ file , array $ data ): void {
131+ $ adminFlow = $ this ->appConfig ->getValueString (Application::APP_ID , 'signature_flow ' , SignatureFlow::NONE ->value );
132+ $ adminForcedConfig = $ adminFlow !== SignatureFlow::NONE ->value ;
133+
134+ if ($ adminForcedConfig ) {
135+ $ adminFlowEnum = SignatureFlow::from ($ adminFlow );
136+ if ($ file ->getSignatureFlowEnum () !== $ adminFlowEnum ) {
137+ $ file ->setSignatureFlowEnum ($ adminFlowEnum );
138+ $ this ->fileMapper ->update ($ file );
139+ }
140+ return ;
141+ }
142+
143+ if (isset ($ data ['signatureFlow ' ]) && !empty ($ data ['signatureFlow ' ])) {
144+ $ newFlow = SignatureFlow::from ($ data ['signatureFlow ' ]);
145+ if ($ file ->getSignatureFlowEnum () !== $ newFlow ) {
146+ $ file ->setSignatureFlowEnum ($ newFlow );
147+ $ this ->fileMapper ->update ($ file );
148+ }
149+ }
150+ }
151+
152+ private function setSignatureFlow (FileEntity $ file , array $ data ): void {
153+ $ adminFlow = $ this ->appConfig ->getValueString (Application::APP_ID , 'signature_flow ' , SignatureFlow::NONE ->value );
154+
155+ if (isset ($ data ['signatureFlow ' ]) && !empty ($ data ['signatureFlow ' ])) {
156+ $ file ->setSignatureFlowEnum (SignatureFlow::from ($ data ['signatureFlow ' ]));
157+ } elseif ($ adminFlow !== SignatureFlow::NONE ->value ) {
158+ $ file ->setSignatureFlowEnum (SignatureFlow::from ($ adminFlow ));
159+ } else {
160+ $ file ->setSignatureFlowEnum (SignatureFlow::NONE );
161+ }
142162 }
143163
144164 private function setDocMdpLevelFromGlobalConfig (FileEntity $ file ): void {
0 commit comments