Admin Workflow - Fix Tested Issues - upload 3 documents at one step

This commit is contained in:
Dillon Ngo
2025-02-11 16:08:45 +08:00
parent 8f06a4c568
commit fcc9105633
3 changed files with 70 additions and 17 deletions
@@ -6,6 +6,7 @@ namespace App\Classes\Modules\Questionnaires\Processors;
use App\Models\QAUserAnswerSelected;
use App\Classes\Modules\Documents\Processors\UploadDocumentProcessor;
use App\Classes\ValueObjects\Constants\QAType;
use Illuminate\Support\Facades\Log;
class SaveAnswerV1AdminWFProcessor
{
@@ -27,7 +28,7 @@ class SaveAnswerV1AdminWFProcessor
public function execute($userId, $sourceId, $questionId, $questionType, $questionMetadata, $answerInText, $answerOptionId, $filesUpload, $timeUsedSeconds, $isPrevious, $reference = null){
$answer = null;
$attachments = null;
$attachments = [];
if(is_null($answer))
{
@@ -46,16 +47,25 @@ class SaveAnswerV1AdminWFProcessor
$answer->save(); //cief todo: why 2 save() in this file, this is wrong
if($filesUpload){
$result = $this->uploadDocumentForProcessor->execute($filesUpload, $answer, 'questionnaires');
$attachments = array_map(function ($item) {
return [
'document_id' => $item->document_id,
'file_id' => $item->id,
];
}, $result);
if (isset($filesUpload['filesA']))
{
foreach ($filesUpload as $key => $files) {
$attachments[$key] = $this->saveFile($answer, $files);
}
}
else if (isset($filesUpload['files']) && $filesUpload['files'])
{
$attachments = $this->saveFile($answer, $filesUpload['files']);
}
}
if($questionType === QAType::REMARKS_WITH_DOCUMENT_UPLOAD){
if($questionType === QAType::SUBMIT_1688_3_TYPES_DOCUMENTS){
$structuredAnswer = [
'files' => $attachments,
];
$answer->answer = json_encode($structuredAnswer);
}
else if($questionType === QAType::REMARKS_WITH_DOCUMENT_UPLOAD){
$structuredAnswer = [
'text' => $answerInText,
'files' => $attachments,
@@ -75,4 +85,16 @@ class SaveAnswerV1AdminWFProcessor
return $answer;
}
private function saveFile($answer, $files){
$result = $this->uploadDocumentForProcessor->execute($files, $answer, 'questionnaires');
$attachment = array_map(function ($item) {
return [
'name' => $item->document_id,
'file_id' => $item->id,
];
}, $result);
return $attachment;
}
}