'Retrieved Help Menu Next Question', 'message' => 'You have successfully retrieved a Help Menu Next Question' ]; } /** @var CanFetchHelpMenuQuestionList */ private $canFetchHelpMenuQuestionList; /** @var SaveHelpMenuAnswerProcessor */ private $saveHelpMenuAnswerProcessor; /** @var DeleteHelpMenuAnswerProcessor */ private $deleteHelpMenuAnswerProcessor; /** @var FetchNextHelpMenuQuestionProcessor */ private $fetchNextHelpMenuQuestionProcessor; /** @var FetchFirstHelpMenuQuestionProcessor */ private $fetchFirstHelpMenuQuestionProcessor; /** @var CreatesPerfexCRMSupportTicket */ private $createsPerfexCRMSupportTicket; /** @var FetchesPerfexCRMCustomer */ private $fetchesPerfexCRMCustomer; /** * UpdateHelpMenuNextQuestionLogic constructor. * @param CanFetchHelpMenuQuestionList $canFetchHelpMenuQuestionList * @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) { $this->canFetchHelpMenuQuestionList = $canFetchHelpMenuQuestionList; $this->saveHelpMenuAnswerProcessor = $saveHelpMenuAnswerProcessor; $this->fetchNextHelpMenuQuestionProcessor = $fetchNextHelpMenuQuestionProcessor; $this->fetchFirstHelpMenuQuestionProcessor = $fetchFirstHelpMenuQuestionProcessor; $this->createsPerfexCRMSupportTicket = $createsPerfexCRMSupportTicket; $this->fetchesPerfexCRMCustomer = $fetchesPerfexCRMCustomer; $this->deleteHelpMenuAnswerProcessor = $deleteHelpMenuAnswerProcessor; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { $questionId = 0; $userId = Auth::user()->id; $currentQuestion = $request->question; $questionId = $currentQuestion['id']; $questionType = $currentQuestion['question_type']; $this->canFetchHelpMenuQuestionList->passes(); //Delete answer $this->deleteHelpMenuAnswerProcessor->execute($userId, $questionId, $request); //Save answer given by user if (!$request->has('isPrevious')) { $this->saveHelpMenuAnswerProcessor->execute($userId, $questionId, $request); } //Create ticket at crm if (!$request->has('isPrevious')) { if($questionType == QAType::TICKET_CRM){ $email = Auth::user()->email; $customer = $this->fetchesPerfexCRMCustomer->execute($email); $subject = "test subject 3"; $department = 1; $contactid = 0; $userid = 0; if($customer){ $contactid = $customer->id; $userid = $customer->userid; } $this->createsPerfexCRMSupportTicket->execute($subject, $department, $contactid, $userid); } } //Get returned question (previous or next) $returnQuestion = $this->fetchNextHelpMenuQuestionProcessor->execute($request); //When a questionnaire ended, return back the first question if(is_null($returnQuestion)){ $returnQuestion = $this->fetchFirstHelpMenuQuestionProcessor->execute($request); } return $this->resourceResponse(new HelpMenuQuestionResource($returnQuestion, $userId)); } }