diff --git a/app/Classes/Modules/Documents/Processors/UploadDocumentForHelpMenuProcessor.php b/app/Classes/Modules/Documents/Processors/UploadDocumentForHelpMenuProcessor.php
index 370b1a05..863fcfdc 100644
--- a/app/Classes/Modules/Documents/Processors/UploadDocumentForHelpMenuProcessor.php
+++ b/app/Classes/Modules/Documents/Processors/UploadDocumentForHelpMenuProcessor.php
@@ -32,12 +32,12 @@ class UploadDocumentForHelpMenuProcessor
/**
- * @param Request $request
+ * @param $filesUpload
* @param QAUserAnswerSelected qaUserAnswerSelected
* @throws \App\Classes\Exceptions\MalformedRequestException
*/
- public function execute(Request $request, QAUserAnswerSelected $qaUserAnswerSelected) {
- $object = new DocumentObject("HELP_MENU", $request->input('files'),
+ public function execute($filesUpload, QAUserAnswerSelected $qaUserAnswerSelected) {
+ $object = new DocumentObject("HELP_MENU", $filesUpload,
'123456', ApprovalStatus::PENDING_VERIFICATION, 'help_menu'); //cief todo: 123456 cannot be hardcoded
/** @var Document $document */
diff --git a/app/Classes/Modules/HelpMenu/ControllersLogic/FetchHelpMenuQuestionLogic.php b/app/Classes/Modules/HelpMenu/ControllersLogic/FetchHelpMenuQuestionLogic.php
index da1de831..90673bda 100644
--- a/app/Classes/Modules/HelpMenu/ControllersLogic/FetchHelpMenuQuestionLogic.php
+++ b/app/Classes/Modules/HelpMenu/ControllersLogic/FetchHelpMenuQuestionLogic.php
@@ -4,7 +4,7 @@ namespace App\Classes\Modules\HelpMenu\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
-use App\Classes\Modules\HelpMenu\Standards\Rules\CanFetchHelpMenuQuestionList;
+use App\Classes\Modules\HelpMenu\Standards\Rules\CanFetchHelpMenuQuestion;
use App\Classes\Modules\HelpMenu\Processors\FetchFirstHelpMenuQuestionProcessor;
use App\Http\Resources\HelpMenuQuestionResource;
use ErrorException;
@@ -25,20 +25,20 @@ class FetchHelpMenuQuestionLogic extends AbstractControllerLogic
];
}
- /** @var CanFetchHelpMenuQuestionList */
- private $canFetchHelpMenuQuestionList;
+ /** @var CanFetchHelpMenuQuestion */
+ private $canFetchHelpMenuQuestion;
/** @var FetchFirstHelpMenuQuestionProcessor */
private $fetchFirstHelpMenuQuestionProcessor;
/**
* FetchHelpMenuQuestionLogic constructor.
- * @param CanFetchHelpMenuQuestionList $canFetchHelpMenuQuestionList
+ * @param CanFetchHelpMenuQuestion $canFetchHelpMenuQuestion
* @param FetchFirstHelpMenuQuestionProcessor $fetchFirstHelpMenuQuestionProcessor
*/
- public function __construct(CanFetchHelpMenuQuestionList $canFetchHelpMenuQuestionList, FetchFirstHelpMenuQuestionProcessor $fetchFirstHelpMenuQuestionProcessor)
+ public function __construct(CanFetchHelpMenuQuestion $canFetchHelpMenuQuestion, FetchFirstHelpMenuQuestionProcessor $fetchFirstHelpMenuQuestionProcessor)
{
- $this->canFetchHelpMenuQuestionList = $canFetchHelpMenuQuestionList;
+ $this->canFetchHelpMenuQuestion = $canFetchHelpMenuQuestion;
$this->fetchFirstHelpMenuQuestionProcessor = $fetchFirstHelpMenuQuestionProcessor;
}
@@ -50,7 +50,7 @@ class FetchHelpMenuQuestionLogic extends AbstractControllerLogic
*/
public function logic(Request $request) : JsonResponse
{
- $this->canFetchHelpMenuQuestionList->passes();
+ $this->canFetchHelpMenuQuestion->passes();
$userId = Auth::user()->id;
diff --git a/app/Classes/Modules/HelpMenu/ControllersLogic/GenerateFeedbackUrlLogic.php b/app/Classes/Modules/HelpMenu/ControllersLogic/GenerateFeedbackUrlLogic.php
new file mode 100644
index 00000000..9a40b8b2
--- /dev/null
+++ b/app/Classes/Modules/HelpMenu/ControllersLogic/GenerateFeedbackUrlLogic.php
@@ -0,0 +1,54 @@
+ 'Generate Feedback Url',
+ 'message' => 'You have successfully generated a feedback url'
+ ];
+ }
+
+ /** @var CanGenerateFeedbackUrl */
+ private $canGenerateFeedbackUrl;
+
+
+ /**
+ * GenerateFeedbackUrlLogic constructor.
+ * @param CanGenerateFeedbackUrl $canGenerateFeedbackUrl
+ */
+ public function __construct(CanGenerateFeedbackUrl $canGenerateFeedbackUrl)
+ {
+ $this->canGenerateFeedbackUrl = $canGenerateFeedbackUrl;
+ }
+
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws ErrorException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ $this->canGenerateFeedbackUrl->passes();
+
+ $originalText = $request->input('system') . '|' . $request->input('customer_marking'). '|' . $request->input('email'). '|' . $request->input('question_set');
+ $resource = ['token' => Crypt::encryptString($originalText)];
+ return $this->response(['data' => $resource]);
+ }
+
+}
diff --git a/app/Classes/Modules/HelpMenu/ControllersLogic/ListHelpMenuQuestionsLogic.php b/app/Classes/Modules/HelpMenu/ControllersLogic/ListHelpMenuQuestionsLogic.php
new file mode 100644
index 00000000..d61b3aa7
--- /dev/null
+++ b/app/Classes/Modules/HelpMenu/ControllersLogic/ListHelpMenuQuestionsLogic.php
@@ -0,0 +1,71 @@
+ 'Retrieved Questions',
+ 'message' => 'You have successfully retrieved a list of Questions'
+ ];
+ }
+
+ /** @var CanListHelpMenuQuestions */
+ private $canListHelpMenuQuestions;
+
+ /** @var ListsHelpMenuQuestions */
+ private $listsHelpMenuQuestions;
+
+ /**
+ * ListHelpMenuQuestionsLogic constructor.
+ * @param CanListHelpMenuQuestions $canListHelpMenuQuestions
+ * @param ListsHelpMenuQuestions $listsHelpMenuQuestions
+ */
+ public function __construct(CanListHelpMenuQuestions $canListHelpMenuQuestions, ListsHelpMenuQuestions $listsHelpMenuQuestions)
+ {
+ $this->canListHelpMenuQuestions = $canListHelpMenuQuestions;
+ $this->listsHelpMenuQuestions = $listsHelpMenuQuestions;
+ }
+
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws \App\Classes\Exceptions\AccessForbiddenException
+ * @throws \App\Classes\Exceptions\MalformedRequestException
+ * @throws \App\Classes\Exceptions\RequestValidationException
+ * @throws \App\Classes\Exceptions\ResourceNotFoundException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ $this->canListHelpMenuQuestions->passes();
+
+ try{
+ $token = $request->input('token');
+ $decriptedToken = Crypt::decryptString($token);
+ $delimiter = "|";
+ $parts = explode($delimiter, $decriptedToken);
+ $questionSet = $parts[3];
+ $query = $this->listsHelpMenuQuestions->execute(['questionnaire_set_id' => $questionSet]);
+ return $this->collectionResponse(HelpMenuQuestionResource::collection($query));
+ } catch(\Exception $exception){
+ throw new ResourceNotFoundException($exception->getMessage());
+ }
+ }
+
+}
diff --git a/app/Classes/Modules/HelpMenu/ControllersLogic/ListQALogic.php b/app/Classes/Modules/HelpMenu/ControllersLogic/ListQALogic.php
new file mode 100644
index 00000000..ea99044b
--- /dev/null
+++ b/app/Classes/Modules/HelpMenu/ControllersLogic/ListQALogic.php
@@ -0,0 +1,60 @@
+ 'Retrieved Questions Answers',
+ 'message' => 'You have successfully retrieved a list of questions and answers'
+ ];
+ }
+
+ /** @var CanListHelpMenuQuestions */
+ private $canListHelpMenuQuestions;
+
+ /** @var ListsHelpMenuUserAnswerSelected */
+ private $listsHelpMenuUserAnswerSelected;
+
+ /**
+ * ListQALogic constructor.
+ * @param CanListHelpMenuQuestions $canListHelpMenuQuestions
+ * @param ListsHelpMenuUserAnswerSelected $listsHelpMenuUserAnswerSelected
+ */
+ public function __construct(CanListHelpMenuQuestions $canListHelpMenuQuestions, ListsHelpMenuUserAnswerSelected $listsHelpMenuUserAnswerSelected)
+ {
+ $this->canListHelpMenuQuestions = $canListHelpMenuQuestions;
+ $this->listsHelpMenuUserAnswerSelected = $listsHelpMenuUserAnswerSelected;
+ }
+
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws \App\Classes\Exceptions\AccessForbiddenException
+ * @throws \App\Classes\Exceptions\MalformedRequestException
+ * @throws \App\Classes\Exceptions\RequestValidationException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ $this->canListHelpMenuQuestions->passes();
+
+ $query = $this->listsHelpMenuUserAnswerSelected->execute($this->listsHelpMenuUserAnswerSelected->deserializeFilters($request->input('filters')));
+
+ return $this->collectionResponse(HelpMenuQuestionsAnswersResource::collection($query));
+ }
+
+}
diff --git a/app/Classes/Modules/HelpMenu/ControllersLogic/SubmitQAQuestionsLogic.php b/app/Classes/Modules/HelpMenu/ControllersLogic/SubmitQAQuestionsLogic.php
new file mode 100644
index 00000000..977ebc84
--- /dev/null
+++ b/app/Classes/Modules/HelpMenu/ControllersLogic/SubmitQAQuestionsLogic.php
@@ -0,0 +1,80 @@
+ 'Feedback Submission',
+ 'message' => 'You have successfully submitted yours answers'
+ ];
+ }
+
+ /** @var SaveHelpMenuAnswerProcessor */
+ private $saveHelpMenuAnswerProcessor;
+
+ /** @var UserSourceForQAProcessor */
+ private $userSourceForQAProcessor;
+
+ /**
+ * SubmitQAQuestionsLogic constructor.
+ * @param SaveHelpMenuAnswerProcessor $saveHelpMenuAnswerProcessor
+ * @param UserSourceForQAProcessor $userSourceForQAProcessor
+ */
+ public function __construct(SaveHelpMenuAnswerProcessor $saveHelpMenuAnswerProcessor, UserSourceForQAProcessor $userSourceForQAProcessor)
+ {
+ $this->saveHelpMenuAnswerProcessor = $saveHelpMenuAnswerProcessor;
+ $this->userSourceForQAProcessor = $userSourceForQAProcessor;
+ }
+
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws ErrorException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ $token = $request->input('token');
+ $userId = 0;
+ $sourceId = 0;
+ try {
+ $decriptedToken = Crypt::decryptString($token);
+ $delimiter = "|";
+ $parts = explode($delimiter, $decriptedToken);
+ $system = $parts[0];
+ $customerMarking = $parts[1];
+ $email = $parts[2];
+
+ $result = $this->userSourceForQAProcessor->execute($system, $customerMarking, $email);
+ $userId = $result['userId'];
+ $sourceId = $result['sourceId'];
+
+ } catch (\Throwable $e) {
+ Log::error($e);
+ }
+
+ $answers = $request->input('answers');
+ foreach ($answers as $answer) {
+ $filesUpload = $request->input('files');
+ $this->saveHelpMenuAnswerProcessor->execute($userId, $sourceId, $answer['questionId'], $answer['answer'], $answer['answerId'], $filesUpload);
+ }
+
+ $response = ['message' => 'Thank you for your feedback.'];
+ return $this->response(['data' => $response]);
+ }
+}
diff --git a/app/Classes/Modules/HelpMenu/ControllersLogic/UpdateHelpMenuNextQuestionLogic.php b/app/Classes/Modules/HelpMenu/ControllersLogic/UpdateHelpMenuNextQuestionLogic.php
index f29d236e..b01a7235 100644
--- a/app/Classes/Modules/HelpMenu/ControllersLogic/UpdateHelpMenuNextQuestionLogic.php
+++ b/app/Classes/Modules/HelpMenu/ControllersLogic/UpdateHelpMenuNextQuestionLogic.php
@@ -5,7 +5,7 @@ namespace App\Classes\Modules\HelpMenu\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMSupportTicket;
use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMCustomer;
-use App\Classes\Modules\HelpMenu\Standards\Rules\CanFetchHelpMenuQuestionList;
+use App\Classes\Modules\HelpMenu\Standards\Rules\CanFetchHelpMenuQuestion;
use App\Classes\Modules\HelpMenu\Processors\SaveHelpMenuAnswerProcessor;
use App\Classes\Modules\HelpMenu\Processors\DeleteHelpMenuAnswerProcessor;
use App\Classes\Modules\HelpMenu\Processors\FetchNextHelpMenuQuestionProcessor;
@@ -31,8 +31,8 @@ class UpdateHelpMenuNextQuestionLogic extends AbstractControllerLogic
];
}
- /** @var CanFetchHelpMenuQuestionList */
- private $canFetchHelpMenuQuestionList;
+ /** @var CanFetchHelpMenuQuestion */
+ private $canFetchHelpMenuQuestion;
/** @var SaveHelpMenuAnswerProcessor */
private $saveHelpMenuAnswerProcessor;
@@ -54,15 +54,15 @@ class UpdateHelpMenuNextQuestionLogic extends AbstractControllerLogic
/**
* UpdateHelpMenuNextQuestionLogic constructor.
- * @param CanFetchHelpMenuQuestionList $canFetchHelpMenuQuestionList
+ * @param CanFetchHelpMenuQuestion $canFetchHelpMenuQuestion
* @param SaveHelpMenuAnswerProcessor $saveHelpMenuAnswerProcessor
* @param FetchNextHelpMenuQuestionProcessor $fetchNextHelpMenuQuestionProcessor
* @param FetchFirstHelpMenuQuestionProcessor $fetchFirstHelpMenuQuestionProcessor
* @param DeleteHelpMenuAnswerProcessor $deleteHelpMenuAnswerProcessor
*/
- public function __construct(CanFetchHelpMenuQuestionList $canFetchHelpMenuQuestionList, SaveHelpMenuAnswerProcessor $saveHelpMenuAnswerProcessor, FetchNextHelpMenuQuestionProcessor $fetchNextHelpMenuQuestionProcessor, FetchFirstHelpMenuQuestionProcessor $fetchFirstHelpMenuQuestionProcessor, CreatesPerfexCRMSupportTicket $createsPerfexCRMSupportTicket, FetchesPerfexCRMCustomer $fetchesPerfexCRMCustomer, DeleteHelpMenuAnswerProcessor $deleteHelpMenuAnswerProcessor)
+ public function __construct(CanFetchHelpMenuQuestion $canFetchHelpMenuQuestion, SaveHelpMenuAnswerProcessor $saveHelpMenuAnswerProcessor, FetchNextHelpMenuQuestionProcessor $fetchNextHelpMenuQuestionProcessor, FetchFirstHelpMenuQuestionProcessor $fetchFirstHelpMenuQuestionProcessor, CreatesPerfexCRMSupportTicket $createsPerfexCRMSupportTicket, FetchesPerfexCRMCustomer $fetchesPerfexCRMCustomer, DeleteHelpMenuAnswerProcessor $deleteHelpMenuAnswerProcessor)
{
- $this->canFetchHelpMenuQuestionList = $canFetchHelpMenuQuestionList;
+ $this->canFetchHelpMenuQuestion = $canFetchHelpMenuQuestion;
$this->saveHelpMenuAnswerProcessor = $saveHelpMenuAnswerProcessor;
$this->fetchNextHelpMenuQuestionProcessor = $fetchNextHelpMenuQuestionProcessor;
$this->fetchFirstHelpMenuQuestionProcessor = $fetchFirstHelpMenuQuestionProcessor;
@@ -85,14 +85,20 @@ class UpdateHelpMenuNextQuestionLogic extends AbstractControllerLogic
$questionId = $currentQuestion['id'];
$questionType = $currentQuestion['question_type'];
- $this->canFetchHelpMenuQuestionList->passes();
+ $this->canFetchHelpMenuQuestion->passes();
//Delete answer
$this->deleteHelpMenuAnswerProcessor->execute($userId, $questionId, $request);
//Save answer given by user
if (!$request->has('isPrevious')) {
- $this->saveHelpMenuAnswerProcessor->execute($userId, $questionId, $request);
+ $filesUpload = $request->input('files');
+ $answerOptionId = 0;
+ if ($request->has('answerObj')) {
+ $answerOptionId = intval($request->answerObj['id']);
+ }
+ $answerInText = $request->answer;
+ $this->saveHelpMenuAnswerProcessor->execute($userId, 0, $questionId, $answerInText, $answerOptionId, $filesUpload);
}
//Create ticket at crm
diff --git a/app/Classes/Modules/HelpMenu/DataTransferObjects/QAUserSourceObject.php b/app/Classes/Modules/HelpMenu/DataTransferObjects/QAUserSourceObject.php
new file mode 100644
index 00000000..3c0791c5
--- /dev/null
+++ b/app/Classes/Modules/HelpMenu/DataTransferObjects/QAUserSourceObject.php
@@ -0,0 +1,55 @@
+system = $system;
+ $this->marking = $marking;
+ $this->email = $email;
+ }
+
+ /**
+ * @return string
+ */
+ public function getSystem(): string
+ {
+ return $this->system;
+ }
+
+ /**
+ * @return string
+ */
+ public function getMarking(): string
+ {
+ return $this->marking;
+ }
+
+ /**
+ * @return string
+ */
+ public function getEmail(): string
+ {
+ return $this->email;
+ }
+
+}
diff --git a/app/Classes/Modules/HelpMenu/Processors/DeleteHelpMenuAnswerProcessor.php b/app/Classes/Modules/HelpMenu/Processors/DeleteHelpMenuAnswerProcessor.php
index 1df15ae8..2ba8b928 100644
--- a/app/Classes/Modules/HelpMenu/Processors/DeleteHelpMenuAnswerProcessor.php
+++ b/app/Classes/Modules/HelpMenu/Processors/DeleteHelpMenuAnswerProcessor.php
@@ -4,32 +4,32 @@ namespace App\Classes\Modules\HelpMenu\Processors;
use App\Models\QAUserAnswerSelected;
use App\Classes\Modules\HelpMenu\Services\FetchesHelpMenuUserAnswerSelected;
-use App\Classes\Modules\HelpMenu\Services\FetchesHelpMenuUserAnswerSelectedList;
+use App\Classes\Modules\HelpMenu\Services\ListsHelpMenuUserAnswerSelected;
class DeleteHelpMenuAnswerProcessor
{
/** @var FetchesHelpMenuUserAnswerSelected */
private $fetchesHelpMenuUserAnswerSelected;
- /** @var FetchesHelpMenuUserAnswerSelectedList */
- private $fetchesHelpMenuUserAnswerSelectedList;
+ /** @var ListsHelpMenuUserAnswerSelected */
+ private $listsHelpMenuUserAnswerSelected;
/**
* DeleteHelpMenuAnswerProcessor constructor.
* @param FetchesHelpMenuUserAnswerSelected $fetchesHelpMenuUserAnswerSelected
- * @param FetchesHelpMenuUserAnswerSelectedList $fetchesHelpMenuUserAnswerSelectedList
+ * @param ListsHelpMenuUserAnswerSelected $listsHelpMenuUserAnswerSelected
*/
- public function __construct(FetchesHelpMenuUserAnswerSelected $fetchesHelpMenuUserAnswerSelected, FetchesHelpMenuUserAnswerSelectedList $fetchesHelpMenuUserAnswerSelectedList)
+ public function __construct(FetchesHelpMenuUserAnswerSelected $fetchesHelpMenuUserAnswerSelected, ListsHelpMenuUserAnswerSelected $listsHelpMenuUserAnswerSelected)
{
$this->fetchesHelpMenuUserAnswerSelected = $fetchesHelpMenuUserAnswerSelected;
- $this->fetchesHelpMenuUserAnswerSelectedList = $fetchesHelpMenuUserAnswerSelectedList;
+ $this->listsHelpMenuUserAnswerSelected = $listsHelpMenuUserAnswerSelected;
}
public function execute($userId, $questionId, $request){
if ($request->has('isPrevious')) {
//Get current and previous question's answer
try{
- $selectedAnswer = $this->fetchesHelpMenuUserAnswerSelectedList->execute(['user_id' => $userId, 'question_id' => $questionId, 'order_by' => (object)['column' => 'id','DESC' => true]])[0];
+ $selectedAnswer = $this->listsHelpMenuUserAnswerSelected->execute(['user_id' => $userId, 'question_id' => $questionId, 'order_by' => (object)['column' => 'id','DESC' => true]])[0];
} catch (\Exception $exception){
$selectedAnswer = null;
}
diff --git a/app/Classes/Modules/HelpMenu/Processors/FetchNextHelpMenuQuestionProcessor.php b/app/Classes/Modules/HelpMenu/Processors/FetchNextHelpMenuQuestionProcessor.php
index ec9cc63c..f832c280 100644
--- a/app/Classes/Modules/HelpMenu/Processors/FetchNextHelpMenuQuestionProcessor.php
+++ b/app/Classes/Modules/HelpMenu/Processors/FetchNextHelpMenuQuestionProcessor.php
@@ -4,7 +4,7 @@ namespace App\Classes\Modules\HelpMenu\Processors;
use App\Classes\Modules\HelpMenu\Services\FetchesHelpMenuQuestion;
use App\Classes\Modules\HelpMenu\Services\FetchesHelpMenuUserAnswerSelected;
-use App\Classes\Modules\HelpMenu\Services\FetchesHelpMenuUserAnswerSelectedList;
+use App\Classes\Modules\HelpMenu\Services\ListsHelpMenuUserAnswerSelected;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Classes\ValueObjects\Constants\QAType;
@@ -17,19 +17,19 @@ class FetchNextHelpMenuQuestionProcessor
/** @var FetchesHelpMenuUserAnswerSelected */
private $fetchesHelpMenuUserAnswerSelected;
- /** @var FetchesHelpMenuUserAnswerSelectedList */
- private $fetchesHelpMenuUserAnswerSelectedList;
+ /** @var ListsHelpMenuUserAnswerSelected */
+ private $listsHelpMenuUserAnswerSelected;
/**
* FetchNextHelpMenuQuestionProcessor constructor.
* @param FetchesHelpMenuQuestion $fetchesHelpMenuQuestion
* @param FetchesHelpMenuUserAnswerSelected $fetchesHelpMenuUserAnswerSelected
- * @param FetchesHelpMenuUserAnswerSelectedList $fetchesHelpMenuUserAnswerSelectedList
+ * @param ListsHelpMenuUserAnswerSelected $listsHelpMenuUserAnswerSelected
*/
- public function __construct(FetchesHelpMenuQuestion $fetchesHelpMenuQuestion, FetchesHelpMenuUserAnswerSelected $fetchesHelpMenuUserAnswerSelected, FetchesHelpMenuUserAnswerSelectedList $fetchesHelpMenuUserAnswerSelectedList)
+ public function __construct(FetchesHelpMenuQuestion $fetchesHelpMenuQuestion, FetchesHelpMenuUserAnswerSelected $fetchesHelpMenuUserAnswerSelected, ListsHelpMenuUserAnswerSelected $listsHelpMenuUserAnswerSelected)
{
$this->fetchesHelpMenuQuestion = $fetchesHelpMenuQuestion;
$this->fetchesHelpMenuUserAnswerSelected = $fetchesHelpMenuUserAnswerSelected;
- $this->fetchesHelpMenuUserAnswerSelectedList = $fetchesHelpMenuUserAnswerSelectedList;
+ $this->listsHelpMenuUserAnswerSelected = $listsHelpMenuUserAnswerSelected;
}
public function execute(Request $request){
@@ -55,7 +55,7 @@ class FetchNextHelpMenuQuestionProcessor
if ($request->has('isPrevious')) {
$userId = Auth::user()->id;
- $previousAnswer = $this->fetchesHelpMenuUserAnswerSelectedList->execute(['user_id' => $userId, 'order_by' => (object)['column' => 'id','DESC' => true]])[0];
+ $previousAnswer = $this->listsHelpMenuUserAnswerSelected->execute(['user_id' => $userId, 'order_by' => (object)['column' => 'id','DESC' => true]])[0];
//Get previous question
$previousQuestion = $this->fetchesHelpMenuQuestion->execute(['questionnaire_set_id' => 1, 'id' => $previousAnswer['question_id']]);
diff --git a/app/Classes/Modules/HelpMenu/Processors/SaveHelpMenuAnswerProcessor.php b/app/Classes/Modules/HelpMenu/Processors/SaveHelpMenuAnswerProcessor.php
index c89a71cc..23a5c34f 100644
--- a/app/Classes/Modules/HelpMenu/Processors/SaveHelpMenuAnswerProcessor.php
+++ b/app/Classes/Modules/HelpMenu/Processors/SaveHelpMenuAnswerProcessor.php
@@ -26,30 +26,29 @@ class SaveHelpMenuAnswerProcessor
$this->uploadDocumentForHelpMenuProcessor = $uploadDocumentForHelpMenuProcessor;
}
- public function execute($userId, $questionId, $request){
- $filesUpload = $request->input('files');
+ public function execute($userId, $sourceId, $questionId, $answerInText, $answerOptionId, $filesUpload){
+
$answer = null;
- try{
- // $answer = $this->fetchesHelpMenuUserAnswerSelected->execute(['user_id' => $userId, 'question_id' => $questionId, 'order_by' => ['column' => 'id','DESC' => 1]]);
- $answer = $this->fetchesHelpMenuUserAnswerSelected->execute(['user_id' => $userId, 'question_id' => $questionId]);
- } catch (\Exception $exception){
- $answer = null;
- }
+ // try{
+ // // $answer = $this->fetchesHelpMenuUserAnswerSelected->execute(['user_id' => $userId, 'question_id' => $questionId, 'order_by' => ['column' => 'id','DESC' => 1]]);
+ // $answer = $this->fetchesHelpMenuUserAnswerSelected->execute(['user_id' => $userId, 'user_id' => $sourceId, 'question_id' => $questionId]);
+ // } catch (\Exception $exception){
+ // $answer = null;
+ // }
if(is_null($answer))
{
$answer = new QAUserAnswerSelected;
}
$answer->user_id = $userId;
+ $answer->source_id = $sourceId;
$answer->question_id = $questionId;
- if ($request->has('answerObj')) {
- $answer->answer_option_id = intval($request->answerObj['id']);
- }
- $answer->free_text_answer = $request->answer;
+ $answer->answer_option_id = intval($answerOptionId);
+ $answer->free_text_answer = $answerInText;
$answer->save();
if($filesUpload){
- $result = $this->uploadDocumentForHelpMenuProcessor->execute($request, $answer);
+ $result = $this->uploadDocumentForHelpMenuProcessor->execute($filesUpload, $answer);
$newData = array_map(function ($item) {
return [
'document_id' => $item->document_id,
diff --git a/app/Classes/Modules/HelpMenu/Processors/UserSourceForQAProcessor.php b/app/Classes/Modules/HelpMenu/Processors/UserSourceForQAProcessor.php
new file mode 100644
index 00000000..3ed66deb
--- /dev/null
+++ b/app/Classes/Modules/HelpMenu/Processors/UserSourceForQAProcessor.php
@@ -0,0 +1,70 @@
+fetchesUser = $fetchesUser;
+ $this->fetchesQAUserSource = $fetchesQAUserSource;
+ $this->createsQAUserSource = $createsQAUserSource;
+ }
+
+ public function execute($system, $customerMarking, $email){
+ $result = [];
+ $isFound = false;
+ if((int)$system === QASystemSourceType::IZYIM){
+ try{
+ $query = $this->fetchesUser->execute(['email' => $email]);
+ $result['userId'] = $query->id;
+ $result['sourceId'] = 0;
+ $isFound = true;
+ } catch (ResourceNotFoundException $exception){
+ $isFound = false;
+ }
+ }
+
+ if(!$isFound){
+ try{
+ $query = $this->fetchesQAUserSource->execute(['email' => $email]);
+ $result['userId'] = 0;
+ $result['sourceId'] = $query->id;
+ } catch (ResourceNotFoundException $exception){
+ $result['sourceId'] = 0;
+ }
+
+ if($result['sourceId'] === 0){
+ $new_object = new QAUserSourceObject($system, $customerMarking, $email);
+ $query = $this->createsQAUserSource->execute($new_object);
+ $result['userId'] = 0;
+ $result['sourceId'] = $query->id;
+ }
+ }
+
+ return $result;
+ }
+}
diff --git a/app/Classes/Modules/HelpMenu/Services/CreatesQAUserSource.php b/app/Classes/Modules/HelpMenu/Services/CreatesQAUserSource.php
new file mode 100644
index 00000000..a55cd6b1
--- /dev/null
+++ b/app/Classes/Modules/HelpMenu/Services/CreatesQAUserSource.php
@@ -0,0 +1,25 @@
+system = $object->getSystem();
+ $model->marking = $object->getMarking();
+ $model->email = $object->getEmail();
+
+ return $this->handler($model);
+
+ }
+}
diff --git a/app/Classes/Modules/HelpMenu/Services/FetchesHelpMenuQuestion.php b/app/Classes/Modules/HelpMenu/Services/FetchesHelpMenuQuestion.php
index e0acb1f6..8491cb77 100644
--- a/app/Classes/Modules/HelpMenu/Services/FetchesHelpMenuQuestion.php
+++ b/app/Classes/Modules/HelpMenu/Services/FetchesHelpMenuQuestion.php
@@ -2,7 +2,6 @@
namespace App\Classes\Modules\HelpMenu\Services;
-
use App\Classes\General\Eloquent\AbstractFetchRecord;
use Illuminate\Database\Eloquent\Builder;
use App\Models\QAQuestions;
diff --git a/app/Classes/Modules/HelpMenu/Services/FetchesQAUserSource.php b/app/Classes/Modules/HelpMenu/Services/FetchesQAUserSource.php
new file mode 100644
index 00000000..7c40a0ad
--- /dev/null
+++ b/app/Classes/Modules/HelpMenu/Services/FetchesQAUserSource.php
@@ -0,0 +1,33 @@
+repository = $repository;
+ }
+
+
+ /**
+ * @return Builder
+ */
+ public function getRepository(): Builder
+ {
+ return $this->repository->newQuery();
+ }
+}
diff --git a/app/Classes/Modules/HelpMenu/Services/ListsHelpMenuQuestions.php b/app/Classes/Modules/HelpMenu/Services/ListsHelpMenuQuestions.php
new file mode 100644
index 00000000..572197fc
--- /dev/null
+++ b/app/Classes/Modules/HelpMenu/Services/ListsHelpMenuQuestions.php
@@ -0,0 +1,32 @@
+repository = $repository;
+ }
+
+
+ /**
+ * @return Builder
+ */
+ public function getRepository(): Builder
+ {
+ return $this->repository->newQuery();
+ }
+}
diff --git a/app/Classes/Modules/HelpMenu/Services/FetchesHelpMenuUserAnswerSelectedList.php b/app/Classes/Modules/HelpMenu/Services/ListsHelpMenuUserAnswerSelected.php
similarity index 81%
rename from app/Classes/Modules/HelpMenu/Services/FetchesHelpMenuUserAnswerSelectedList.php
rename to app/Classes/Modules/HelpMenu/Services/ListsHelpMenuUserAnswerSelected.php
index c746494a..96ee660f 100644
--- a/app/Classes/Modules/HelpMenu/Services/FetchesHelpMenuUserAnswerSelectedList.php
+++ b/app/Classes/Modules/HelpMenu/Services/ListsHelpMenuUserAnswerSelected.php
@@ -6,14 +6,14 @@ use App\Classes\General\Eloquent\AbstractListRecord;
use Illuminate\Database\Eloquent\Builder;
use App\Models\QAUserAnswerSelected;
-class FetchesHelpMenuUserAnswerSelectedList extends AbstractListRecord
+class ListsHelpMenuUserAnswerSelected extends AbstractListRecord
{
/** @var QAUserAnswerSelected */
private $repository;
/**
- * FetchesHelpMenuUserAnswerSelectedList constructor.
+ * ListsHelpMenuUserAnswerSelected constructor.
* @param QAUserAnswerSelected $repository
*/
public function __construct(QAUserAnswerSelected $repository)
diff --git a/app/Classes/Modules/HelpMenu/Standards/Rules/CanFetchHelpMenuQuestionList.php b/app/Classes/Modules/HelpMenu/Standards/Rules/CanFetchHelpMenuQuestion.php
similarity index 83%
rename from app/Classes/Modules/HelpMenu/Standards/Rules/CanFetchHelpMenuQuestionList.php
rename to app/Classes/Modules/HelpMenu/Standards/Rules/CanFetchHelpMenuQuestion.php
index 5bb272dc..61e3ef03 100644
--- a/app/Classes/Modules/HelpMenu/Standards/Rules/CanFetchHelpMenuQuestionList.php
+++ b/app/Classes/Modules/HelpMenu/Standards/Rules/CanFetchHelpMenuQuestion.php
@@ -5,8 +5,9 @@ namespace App\Classes\Modules\HelpMenu\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
-class CanFetchHelpMenuQuestionList extends AbstractRule
+class CanFetchHelpMenuQuestion extends AbstractRule
{
+
/**
* @return bool
*/
@@ -17,7 +18,7 @@ class CanFetchHelpMenuQuestionList extends AbstractRule
}
/**
- * @param $object
+ * @param $object
* @return bool
*/
protected function validators($object): bool
@@ -26,7 +27,7 @@ class CanFetchHelpMenuQuestionList extends AbstractRule
}
/**
- * @param $object
+ * @param $object
* @return bool
*/
protected function criteria($object): bool
diff --git a/app/Classes/Modules/HelpMenu/Standards/Rules/CanGenerateFeedbackUrl.php b/app/Classes/Modules/HelpMenu/Standards/Rules/CanGenerateFeedbackUrl.php
new file mode 100644
index 00000000..6179f7ea
--- /dev/null
+++ b/app/Classes/Modules/HelpMenu/Standards/Rules/CanGenerateFeedbackUrl.php
@@ -0,0 +1,38 @@
+execute($request);
+ }
+
+}
diff --git a/app/Http/Controllers/HelpMenu/ListHelpMenuQuestionsController.php b/app/Http/Controllers/HelpMenu/ListHelpMenuQuestionsController.php
new file mode 100644
index 00000000..284f4386
--- /dev/null
+++ b/app/Http/Controllers/HelpMenu/ListHelpMenuQuestionsController.php
@@ -0,0 +1,19 @@
+execute($request);
+ }
+}
diff --git a/app/Http/Controllers/HelpMenu/ListQAController.php b/app/Http/Controllers/HelpMenu/ListQAController.php
new file mode 100644
index 00000000..b15dc15c
--- /dev/null
+++ b/app/Http/Controllers/HelpMenu/ListQAController.php
@@ -0,0 +1,20 @@
+execute($request);
+ }
+
+}
diff --git a/app/Http/Controllers/HelpMenu/SubmitQAQuestionsController.php b/app/Http/Controllers/HelpMenu/SubmitQAQuestionsController.php
new file mode 100644
index 00000000..6cd03d9b
--- /dev/null
+++ b/app/Http/Controllers/HelpMenu/SubmitQAQuestionsController.php
@@ -0,0 +1,19 @@
+execute($request);
+ }
+}
diff --git a/app/Http/Resources/HelpMenuQuestionResource.php b/app/Http/Resources/HelpMenuQuestionResource.php
index b14f409b..e41aeb53 100644
--- a/app/Http/Resources/HelpMenuQuestionResource.php
+++ b/app/Http/Resources/HelpMenuQuestionResource.php
@@ -34,7 +34,7 @@ class HelpMenuQuestionResource extends JsonResource
'question_number' => $q->question_number,
'question_text' => $q->question_text,
'question_type' => $q->question_type,
- 'question_answers' => HelpMenuAnswerOptionsResource::collection(QAAnswerOptions::where('question_number', $q->question_number)->get()),
+ 'question_answers' => HelpMenuAnswerOptionsResource::collection(QAAnswerOptions::where('question_number', $q->question_number)->where('questionnaire_set_id', $q->questionnaire_set_id)->get()),
'questionnaire_set_id' => $q->questionnaire_set_id,
'next_nested_question' => $q->next_nested_question,
'next_main_question' => $q->next_main_question,
diff --git a/app/Http/Resources/HelpMenuQuestionsAnswersResource.php b/app/Http/Resources/HelpMenuQuestionsAnswersResource.php
new file mode 100644
index 00000000..8dc59fa0
--- /dev/null
+++ b/app/Http/Resources/HelpMenuQuestionsAnswersResource.php
@@ -0,0 +1,39 @@
+question_id)->first();
+ $source = new HelpMenuUserSourceResource($this->userSource);
+ $user = $this->source_id === 0 ? new UserResource($this->user) : null;
+
+ if($user){
+ $user_marking = $user->companyModule()->first()->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference;
+ }
+
+ return [
+ 'question_id' => $this->question_id,
+ 'questionnaire_set_id' => $question ? $question->questionnaire_set_id : null,
+ 'question_text' => $question ? $question->question_text : null,
+ 'free_text_answer' => $this->free_text_answer,
+ 'source_system' => $user ? QASystemSourceType::getText(QASystemSourceType::IZYIM) : QASystemSourceType::getText($source->system),
+ 'source_marking' => $user ? $user_marking : $source->marking,
+ 'source_email' => $user ? $user->email : $source->email,
+ 'created_at' => Carbon::parse($this->created_at)->format('d-m-Y'),
+ ];
+ }
+}
diff --git a/app/Http/Resources/HelpMenuUserSourceResource.php b/app/Http/Resources/HelpMenuUserSourceResource.php
new file mode 100644
index 00000000..e02d35ff
--- /dev/null
+++ b/app/Http/Resources/HelpMenuUserSourceResource.php
@@ -0,0 +1,23 @@
+ $this->system,
+ 'email' => $this->email,
+ 'marking' => $this->marking,
+ ];
+ }
+}
diff --git a/app/Models/QAUserAnswerSelected.php b/app/Models/QAUserAnswerSelected.php
index 25d9ef9d..50de039d 100644
--- a/app/Models/QAUserAnswerSelected.php
+++ b/app/Models/QAUserAnswerSelected.php
@@ -21,4 +21,21 @@ class QAUserAnswerSelected extends AbstractModel implements Documentable
{
return $this->morphMany(Document::class, 'owner');
}
+
+ /**
+ * @return BelongsTo
+ */
+ public function userSource(): BelongsTo
+ {
+ return $this->BelongsTo(QAUserSource::class, 'source_id', 'id');
+ }
+
+ /**
+ * @return BelongsTo
+ */
+ public function user(): BelongsTo
+ {
+ return $this->BelongsTo(User::class, 'user_id', 'id');
+ }
+
}
diff --git a/app/Models/QAUserSource.php b/app/Models/QAUserSource.php
new file mode 100644
index 00000000..21401df5
--- /dev/null
+++ b/app/Models/QAUserSource.php
@@ -0,0 +1,9 @@
+id();
$table->string('name');
$table->string('description')->nullable();
- $table->unsignedSmallInteger('order')->default(0);
+ $table->unsignedBigInteger('order')->default(0);
$table->unsignedBigInteger('next_set')->nullable();
- $table->unsignedSmallInteger('version')->default(1);
+ $table->unsignedBigInteger('version')->default(1);
$table->timestamps();
$table->softDeletes();
});
diff --git a/database/migrations/2023_02_20_134124_create_qa_questions_table.php b/database/migrations/2023_02_20_134124_create_qa_questions_table.php
index 9a64c4bc..881085aa 100644
--- a/database/migrations/2023_02_20_134124_create_qa_questions_table.php
+++ b/database/migrations/2023_02_20_134124_create_qa_questions_table.php
@@ -24,7 +24,7 @@ class CreateQAQuestionsTable extends Migration
$table->tinyInteger('is_start');
$table->tinyInteger('is_end');
$table->string('end_text')->nullable();
- $table->unsignedInteger('order')->default(0);
+ $table->unsignedBigInteger('order')->default(0);
$table->timestamps();
$table->softDeletes();
diff --git a/database/migrations/2023_02_21_091314_create_qa_answer_options_table.php b/database/migrations/2023_02_21_091314_create_qa_answer_options_table.php
index dd3b118e..7c9fcc39 100644
--- a/database/migrations/2023_02_21_091314_create_qa_answer_options_table.php
+++ b/database/migrations/2023_02_21_091314_create_qa_answer_options_table.php
@@ -17,11 +17,15 @@ class CreateQAAnswerOptionsTable extends Migration
$table->id();
$table->text('display_text');
$table->string('value');
- $table->unsignedSmallInteger('order')->default(0);
+ $table->unsignedBigInteger('order')->default(0);
$table->unsignedBigInteger('question_number');
$table->unsignedBigInteger('next_question_number')->nullable();
+ $table->unsignedBigInteger('questionnaire_set_id');
$table->timestamps();
$table->softDeletes();
+
+ $table->foreign('questionnaire_set_id')->references('id')->on('qa_questionnaire_sets');
+
});
}
diff --git a/database/migrations/2023_09_19_154120_create_qa_user_source_table.php b/database/migrations/2023_09_19_154120_create_qa_user_source_table.php
new file mode 100644
index 00000000..638a8d44
--- /dev/null
+++ b/database/migrations/2023_09_19_154120_create_qa_user_source_table.php
@@ -0,0 +1,34 @@
+id();
+ $table->string('system');
+ $table->string('email');
+ $table->string('marking');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('qa_user_source');
+ }
+}
diff --git a/database/migrations/2023_02_21_091507_create_qa_user_answer_selected_table.php b/database/migrations/2023_09_19_164120_create_qa_user_answer_selected_table.php
similarity index 73%
rename from database/migrations/2023_02_21_091507_create_qa_user_answer_selected_table.php
rename to database/migrations/2023_09_19_164120_create_qa_user_answer_selected_table.php
index e529a1f0..3560bfba 100644
--- a/database/migrations/2023_02_21_091507_create_qa_user_answer_selected_table.php
+++ b/database/migrations/2023_09_19_164120_create_qa_user_answer_selected_table.php
@@ -15,7 +15,8 @@ class CreateQAUserAnswerSelectedTable extends Migration
{
Schema::create('qa_user_answer_selected', function (Blueprint $table) {
$table->id();
- $table->unsignedBigInteger('user_id');
+ $table->unsignedBigInteger('user_id')->default(0);
+ $table->unsignedBigInteger('source_id')->default(0);
$table->unsignedBigInteger('question_id');
$table->unsignedBigInteger('answer_option_id')->default(0);
$table->string('free_text_answer')->nullable();
@@ -24,7 +25,8 @@ class CreateQAUserAnswerSelectedTable extends Migration
$table->foreign('question_id')->references('id')->on('qa_questions');
// $table->foreign('answer_option_id')->references('id')->on('qa_answer_options');
- $table->foreign('user_id')->references('id')->on('users');
+ // $table->foreign('user_id')->references('id')->on('users');
+ // $table->foreign('source_id')->references('id')->on('qa_user_source');
});
}
@@ -35,6 +37,6 @@ class CreateQAUserAnswerSelectedTable extends Migration
*/
public function down()
{
- Schema::dropIfExists('qa_answer_option_selections');
+ Schema::dropIfExists('qa_user_answer_selected');
}
}
diff --git a/database/seeders/QAAnswerOptionsSeeder.php b/database/seeders/QAAnswerOptionsSeeder.php
index 9a0b33ae..af13e165 100644
--- a/database/seeders/QAAnswerOptionsSeeder.php
+++ b/database/seeders/QAAnswerOptionsSeeder.php
@@ -9,12 +9,14 @@ class QAAnswerOptionsSeeder extends Seeder
{
public function run()
{
+ //Set 1
// Option 1 for Question 10
$answerOption = new QAAnswerOptions;
$answerOption->display_text = "Billing";
$answerOption->value = "Billing";
$answerOption->question_number = 10;
$answerOption->next_question_number = 100;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 2 for Question 10
@@ -23,6 +25,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->value = "Shipping";
$answerOption->question_number = 10;
$answerOption->next_question_number = 100;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 3 for Question 10
@@ -31,6 +34,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->value = "Returns";
$answerOption->question_number = 10;
$answerOption->next_question_number = 100;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 4 for Question 10
@@ -39,6 +43,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->value = "Product Information";
$answerOption->question_number = 10;
$answerOption->next_question_number = 100;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 5 for Question 10
@@ -47,6 +52,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->value = "Technical Support";
$answerOption->question_number = 10;
$answerOption->next_question_number = 100;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 6 for Question 10
@@ -55,6 +61,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->value = "Shipping Fee Calculation";
$answerOption->question_number = 10;
$answerOption->next_question_number = 600;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 7 for Question 10
@@ -63,6 +70,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->value = "Error-in Measurements";
$answerOption->question_number = 10;
$answerOption->next_question_number = 700;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 8 for Question 10
@@ -71,6 +79,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->value = "Contact Us";
$answerOption->question_number = 10;
$answerOption->next_question_number = 800;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 1 for Question 20
@@ -78,6 +87,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->display_text = "Option 1 for Question 20";
$answerOption->value = "Option 1 for Question 20";
$answerOption->question_number = 20;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 2 for Question 20
@@ -85,6 +95,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->display_text = "Option 2 for Question 20";
$answerOption->value = "Option 2 for Question 20";
$answerOption->question_number = 20;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 1 for Question 100
@@ -92,6 +103,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->display_text = "Option 1 for Question 100";
$answerOption->value = "Option 1 for Question 100";
$answerOption->question_number = 100;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 2 for Question 100
@@ -99,6 +111,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->display_text = "Option 2 for Question 100";
$answerOption->value = "Option 2 for Question 100";
$answerOption->question_number = 100;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 1 for Question 30
@@ -106,6 +119,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->display_text = "Option 1 for Question 30";
$answerOption->value = "Option 1 for Question 30";
$answerOption->question_number = 30;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 2 for Question 30
@@ -113,6 +127,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->display_text = "Option 2 for Question 30";
$answerOption->value = "Option 2 for Question 30";
$answerOption->question_number = 30;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 3 for Question 30
@@ -120,6 +135,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->display_text = "Option 3 for Question 30";
$answerOption->value = "Option 3 for Question 30";
$answerOption->question_number = 30;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
@@ -128,6 +144,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->display_text = "Option 1 for Question 300";
$answerOption->value = "Option 1 for Question 300";
$answerOption->question_number = 300;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 2 for Question 300
@@ -135,6 +152,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->display_text = "Option 2 for Question 300";
$answerOption->value = "Option 2 for Question 300";
$answerOption->question_number = 300;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 3 for Question 300
@@ -142,6 +160,7 @@ class QAAnswerOptionsSeeder extends Seeder
$answerOption->display_text = "Option 3 for Question 300";
$answerOption->value = "Option 3 for Question 300";
$answerOption->question_number = 300;
+ $answerOption->questionnaire_set_id = 1;
$answerOption->save();
// Option 1 for Question 600
@@ -150,6 +169,25 @@ class QAAnswerOptionsSeeder extends Seeder
';
$answerOption->value = "Answer";
$answerOption->question_number = 600;
+ $answerOption->questionnaire_set_id = 1;
+ $answerOption->save();
+
+
+ // Set 2
+ // Option 1 for Question 10
+ $answerOption = new QAAnswerOptions;
+ $answerOption->display_text = "Yes";
+ $answerOption->value = "Yes";
+ $answerOption->question_number = 10;
+ $answerOption->questionnaire_set_id = 3;
+ $answerOption->save();
+
+ // Option 2 for Question 10
+ $answerOption = new QAAnswerOptions;
+ $answerOption->display_text = "No";
+ $answerOption->value = "No";
+ $answerOption->question_number = 10;
+ $answerOption->questionnaire_set_id = 3;
$answerOption->save();
}
}
diff --git a/database/seeders/QAQuestionSeeder.php b/database/seeders/QAQuestionSeeder.php
index 77e482e4..6b7321f9 100644
--- a/database/seeders/QAQuestionSeeder.php
+++ b/database/seeders/QAQuestionSeeder.php
@@ -16,6 +16,18 @@ class QAQuestionSeeder extends Seeder
'name' => 'Set 1',
'description' => 'This is set 1 questions',
],
+ [
+ 'name' => 'Set 2',
+ 'description' => 'Customer Service Satisfaction Questions',
+ ],
+ [
+ 'name' => 'Set 3',
+ 'description' => 'Survey Before conservation with BD ends',
+ ],
+ [
+ 'name' => 'Set 4',
+ 'description' => 'After First Order',
+ ],
];
foreach ($questionnaireSets as $set) {
@@ -29,134 +41,182 @@ class QAQuestionSeeder extends Seeder
switch ($set['name']) {
case 'Set 1':
$questions = [
- [
- 'question_number' => 10,
- 'question_text' => 'Please select one',
- 'question_type' => QAType::MULTIPLE_CHOICES,
- 'is_start' => true,
- 'is_end' => false,
- ],
- [
- 'question_number' => 20,
- 'question_text' => 'Question text for question number 20?',
- 'question_type' => QAType::MULTIPLE_CHOICES,
- 'is_start' => false,
- 'is_end' => false,
- ],
- [
- 'question_number' => 30,
- 'question_text' => 'Question text for question number 30?',
- 'question_type' => QAType::MULTIPLE_CHOICES,
- 'next_nested_question' => 300,
- 'is_start' => false,
- 'is_end' => false,
- ],
- [
- 'question_number' => 40,
- 'question_text' => 'What is your name?',
- 'question_type' => QAType::FREE_TEXT,
- 'is_start' => false,
- 'is_end' => false,
- ],
- [
- 'question_number' => 50,
- 'question_text' => 'The End',
- 'question_type' => QAType::ANSWER,
- 'is_start' => false,
- 'is_end' => true,
- ],
- [
- 'question_number' => 60,
- 'question_text' => 'We have received your request and will response as soon as possible.',
- 'question_type' => QAType::TICKET_CRM,
- 'is_start' => false,
- 'is_end' => true,
- ],
- [
- 'question_number' => 100,
- 'question_text' => 'Question text for question number 100?',
- 'question_type' => QAType::MULTIPLE_CHOICES,
- 'next_nested_question' => 110, //200 //3 digits - first level
- 'next_main_question' => 20,
- 'is_start' => false,
- 'is_end' => false,
- ],
- [
- 'question_number' => 110,
- 'question_text' => 'Question text for question number 110?',
- 'question_type' => QAType::FREE_TEXT,
- 'next_nested_question' => 1000, //1000 //4 digits - second level
- 'next_main_question' => 20,
- 'is_start' => false,
- 'is_end' => false,
- ],
- [
- 'question_number' => 300,
- 'question_text' => 'Question text for question number 300?',
- 'question_type' => QAType::MULTIPLE_CHOICES,
- 'next_main_question' => 40,
- 'is_start' => false,
- 'is_end' => false,
- ],
- [
- 'question_number' => 600,
- 'question_text' => 'Shipping Fee Calculations',
- 'question_type' => QAType::ANSWER,
- 'is_start' => false,
- 'is_end' => true,
- ],
- [
- 'question_number' => 700,
- 'question_text' => 'Please enter your measurements',
- 'question_type' => QAType::FREE_TEXT,
- 'next_nested_question' => 710,
- 'next_main_question' => 20,
- 'is_start' => false,
- 'is_end' => false,
- ],
- [
- 'question_number' => 710,
- 'question_text' => 'Please upload the photo proof',
- 'question_type' => QAType::DOCUMENT_UPLOAD,
- 'next_main_question' => 60,
- 'is_start' => false,
- 'is_end' => false,
- ],
- [
- 'question_number' => 800,
- 'question_text' => 'What is your name?',
- 'question_type' => QAType::FREE_TEXT,
- 'next_nested_question' => 810,
- 'is_start' => false,
- 'is_end' => false,
- ],
- [
- 'question_number' => 810,
- 'question_text' => 'Click Next to speak to our customer service',
- 'question_type' => QAType::FREE_TEXT,
- 'is_start' => false,
- 'is_end' => true,
- 'end_text' => 'We have received your request and will response as soon as possible.',
- ],
- [
- 'question_number' => 1000,
- 'question_text' => 'Question text for question number 1000?',
- 'question_type' => QAType::FREE_TEXT,
- 'next_nested_question' => 10000, //10000 - 5 digits - 3rd level
- 'next_main_question' => 20,
- 'is_start' => false,
- 'is_end' => false,
- ],
- [
- 'question_number' => 10000,
- 'question_text' => 'Question text for question number 10000?',
- 'question_type' => QAType::FREE_TEXT,
- 'next_main_question' => 20,
- 'is_start' => false,
- 'is_end' => false,
- ],
- ];
- break;
+ [
+ 'question_number' => 10,
+ 'question_text' => 'Please select one',
+ 'question_type' => QAType::MULTIPLE_CHOICES,
+ 'is_start' => true,
+ 'is_end' => false,
+ ],
+ [
+ 'question_number' => 20,
+ 'question_text' => 'Question text for question number 20?',
+ 'question_type' => QAType::MULTIPLE_CHOICES,
+ 'is_start' => false,
+ 'is_end' => false,
+ ],
+ [
+ 'question_number' => 30,
+ 'question_text' => 'Question text for question number 30?',
+ 'question_type' => QAType::MULTIPLE_CHOICES,
+ 'next_nested_question' => 300,
+ 'is_start' => false,
+ 'is_end' => false,
+ ],
+ [
+ 'question_number' => 40,
+ 'question_text' => 'What is your name?',
+ 'question_type' => QAType::FREE_TEXT,
+ 'is_start' => false,
+ 'is_end' => false,
+ ],
+ [
+ 'question_number' => 50,
+ 'question_text' => 'The End',
+ 'question_type' => QAType::ANSWER,
+ 'is_start' => false,
+ 'is_end' => true,
+ ],
+ [
+ 'question_number' => 60,
+ 'question_text' => 'We have received your request and will response as soon as possible.',
+ 'question_type' => QAType::TICKET_CRM,
+ 'is_start' => false,
+ 'is_end' => true,
+ ],
+ [
+ 'question_number' => 100,
+ 'question_text' => 'Question text for question number 100?',
+ 'question_type' => QAType::MULTIPLE_CHOICES,
+ 'next_nested_question' => 110, //200 //3 digits - first level
+ 'next_main_question' => 20,
+ 'is_start' => false,
+ 'is_end' => false,
+ ],
+ [
+ 'question_number' => 110,
+ 'question_text' => 'Question text for question number 110?',
+ 'question_type' => QAType::FREE_TEXT,
+ 'next_nested_question' => 1000, //1000 //4 digits - second level
+ 'next_main_question' => 20,
+ 'is_start' => false,
+ 'is_end' => false,
+ ],
+ [
+ 'question_number' => 300,
+ 'question_text' => 'Question text for question number 300?',
+ 'question_type' => QAType::MULTIPLE_CHOICES,
+ 'next_main_question' => 40,
+ 'is_start' => false,
+ 'is_end' => false,
+ ],
+ [
+ 'question_number' => 600,
+ 'question_text' => 'Shipping Fee Calculations',
+ 'question_type' => QAType::ANSWER,
+ 'is_start' => false,
+ 'is_end' => true,
+ ],
+ [
+ 'question_number' => 700,
+ 'question_text' => 'Please enter your measurements',
+ 'question_type' => QAType::FREE_TEXT,
+ 'next_nested_question' => 710,
+ 'next_main_question' => 20,
+ 'is_start' => false,
+ 'is_end' => false,
+ ],
+ [
+ 'question_number' => 710,
+ 'question_text' => 'Please upload the photo proof',
+ 'question_type' => QAType::DOCUMENT_UPLOAD,
+ 'next_main_question' => 60,
+ 'is_start' => false,
+ 'is_end' => false,
+ ],
+ [
+ 'question_number' => 800,
+ 'question_text' => 'What is your name?',
+ 'question_type' => QAType::FREE_TEXT,
+ 'next_nested_question' => 810,
+ 'is_start' => false,
+ 'is_end' => false,
+ ],
+ [
+ 'question_number' => 810,
+ 'question_text' => 'Click Next to speak to our customer service',
+ 'question_type' => QAType::FREE_TEXT,
+ 'is_start' => false,
+ 'is_end' => true,
+ 'end_text' => 'We have received your request and will response as soon as possible.',
+ ],
+ [
+ 'question_number' => 1000,
+ 'question_text' => 'Question text for question number 1000?',
+ 'question_type' => QAType::FREE_TEXT,
+ 'next_nested_question' => 10000, //10000 - 5 digits - 3rd level
+ 'next_main_question' => 20,
+ 'is_start' => false,
+ 'is_end' => false,
+ ],
+ [
+ 'question_number' => 10000,
+ 'question_text' => 'Question text for question number 10000?',
+ 'question_type' => QAType::FREE_TEXT,
+ 'next_main_question' => 20,
+ 'is_start' => false,
+ 'is_end' => false,
+ ],
+
+ ];
+ break;
+ case 'Set 2':
+ $questions = [
+ [
+ 'question_number' => 10,
+ 'question_text' => 'How helpful is our agent towards resolving your issue?',
+ 'question_type' => QAType::RATING_5_STARS,
+ 'is_start' => true,
+ 'is_end' => false,
+ ],
+ [
+ 'question_number' => 20,
+ 'question_text' => 'How would you rate our customer service experience?',
+ 'question_type' => QAType::RATING_5_STARS,
+ 'is_start' => false,
+ 'is_end' => true,
+ ]
+ ];
+ break;
+ case 'Set 3':
+ $questions = [
+ [
+ 'question_number' => 10,
+ 'question_text' => 'Is our service suite for you?',
+ 'question_type' => QAType::MULTIPLE_CHOICES,
+ 'is_start' => true,
+ 'is_end' => false,
+ ],
+ [
+ 'question_number' => 20,
+ 'question_text' => 'Can you rate our sales agent performance whether you comfortable when chatting with them',
+ 'question_type' => QAType::RATING_5_STARS,
+ 'is_start' => false,
+ 'is_end' => true,
+ ]
+ ];
+ break;
+ case 'Set 4':
+ $questions = [
+ [
+ 'question_number' => 10,
+ 'question_text' => 'How satisfy you are after your first order?',
+ 'question_type' => QAType::RATING_5_STARS,
+ 'is_start' => true,
+ 'is_end' => false,
+ ]
+ ];
+ break;
}
foreach ($questions as $key => $questionData) {
diff --git a/resources/assets/vue/components/feedback/elements/QuestionAnswerComponent.vue b/resources/assets/vue/components/feedback/elements/QuestionAnswerComponent.vue
new file mode 100644
index 00000000..14b42e1c
--- /dev/null
+++ b/resources/assets/vue/components/feedback/elements/QuestionAnswerComponent.vue
@@ -0,0 +1,17 @@
+
+ {{ item.question_text }} Your rating: {{ single_answer.answer }} stars{{questions[index].question_text}}
+