mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-31 10:24:00 +00:00
Admin Workflow Initial Commit
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Questionnaires\Processors;
|
||||
|
||||
|
||||
use App\Models\QAUserAnswerSelected;
|
||||
use App\Classes\Modules\Questionnaires\Services\FetchesUserAnswerSelected;
|
||||
use App\Classes\Modules\Documents\Processors\UploadDocumentProcessor;
|
||||
use App\Classes\ValueObjects\Constants\QAType;
|
||||
|
||||
|
||||
class SaveAnswerV1AdminWFProcessor
|
||||
{
|
||||
/** @var FetchesUserAnswerSelected */
|
||||
private $fetchesUserAnswerSelected;
|
||||
|
||||
/** @var UploadDocumentProcessor */
|
||||
private $uploadDocumentForProcessor;
|
||||
|
||||
/**
|
||||
* SaveAnswerV1AdminWFProcessor constructor.
|
||||
* @param FetchesUserAnswerSelected $fetchesUserAnswerSelected
|
||||
* @param UploadDocumentProcessor $uploadDocumentForProcessor
|
||||
*/
|
||||
public function __construct(FetchesUserAnswerSelected $fetchesUserAnswerSelected, UploadDocumentProcessor $uploadDocumentForProcessor)
|
||||
{
|
||||
$this->fetchesUserAnswerSelected = $fetchesUserAnswerSelected;
|
||||
$this->uploadDocumentForProcessor = $uploadDocumentForProcessor;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return QAUserAnswerSelected|\Illuminate\Database\Eloquent\Model
|
||||
*/
|
||||
public function execute($userId, $sourceId, $questionId, $questionType, $questionMetadata, $answerInText, $answerOptionId, $filesUpload, $timeUsedSeconds, $isPrevious, $reference = null){
|
||||
|
||||
$answer = null;
|
||||
$attachments = null;
|
||||
|
||||
if(is_null($answer))
|
||||
{
|
||||
$answer = new QAUserAnswerSelected;
|
||||
}
|
||||
$answer->user_id = $userId;
|
||||
$answer->source_id = $sourceId;
|
||||
$answer->question_id = $questionId;
|
||||
$answer->question_metadata = json_encode($questionMetadata);
|
||||
$answer->answer_option_id = $answerOptionId;
|
||||
$answer->time_used_seconds = $timeUsedSeconds;
|
||||
$answer->is_previous = $isPrevious;
|
||||
if($reference){
|
||||
$answer->reference = $reference;
|
||||
}
|
||||
$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($questionType === QAType::REMARKS_WITH_DOCUMENT_UPLOAD){
|
||||
$structuredAnswer = [
|
||||
'text' => $answerInText,
|
||||
'files' => $attachments,
|
||||
];
|
||||
$answer->answer = json_encode($structuredAnswer);
|
||||
}
|
||||
else if($questionType === QAType::DOCUMENT_UPLOAD){
|
||||
$structuredAnswer = [
|
||||
'files' => $attachments,
|
||||
];
|
||||
$answer->answer = json_encode($structuredAnswer);
|
||||
}
|
||||
else {
|
||||
$answer->answer = $answerInText;
|
||||
}
|
||||
$answer->save();
|
||||
|
||||
return $answer;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user