| <?php |
| <?php |
| |
| |
| namespace App\Http\Controllers; |
| namespace App\Http\Controllers; |
| |
| |
| use Illuminate\Http\Request; |
| use Illuminate\Http\Request; |
| use DB; |
| use DB; |
| use OhMyBrew\ShopifyApp\Facades\ShopifyApp; |
| use OhMyBrew\ShopifyApp\Facades\ShopifyApp; |
| use Config; |
| use Config; |
| use App\Model\QuizModel; |
| use App\Model\QuizModel; |
| |
| |
| class QuizController extends Controller |
| class QuizController extends Controller |
| { |
| { |
| private $domain; |
| private $domain; |
| private $shop; |
| private $shop; |
| private $quizModel; |
| private $quizModel; |
| |
| |
| /** |
| /** |
| * Create a new controller instance. |
| * Create a new controller instance. |
| * |
| * |
| * @return void |
| * @return void |
| */ |
| */ |
| public function __construct() |
| public function __construct() |
| { |
| { |
| date_default_timezone_set('America/Los_Angeles'); |
| date_default_timezone_set('America/Los_Angeles'); |
| $this->domain = env('SHOP_DOMAIN', true); |
| $this->domain = env('SHOP_DOMAIN', true); |
| $this->shop = ShopifyApp::shop($this->domain); |
| $this->shop = ShopifyApp::shop($this->domain); |
| $this->quizModel = new QuizModel(); |
| $this->quizModel = new QuizModel(); |
| } |
| } |
| public function getQuizDetails() |
| public function getQuizDetails() |
| { |
| { |
| $customerID = isset($_REQUEST['id']) ? $_REQUEST['id'] : ''; |
| $customerID = isset($_REQUEST['id']) ? $_REQUEST['id'] : ''; |
| $params = []; |
| $params = []; |
| |
| |
| $customerDetails = $this->shop->api()->rest('GET', '/admin/customers/'.$customerID.'.json', $params); |
| $customerDetails = $this->shop->api()->rest('GET', '/admin/customers/'.$customerID.'.json', $params); |
| $customerDetails = $customerDetails->body; |
| $customerDetails = $customerDetails->body; |
| $email = isset($customerDetails->customer->email) ? $customerDetails->customer->email : ''; |
| $email = isset($customerDetails->customer->email) ? $customerDetails->customer->email : ''; |
| $firstName = isset($customerDetails->customer->first_name) ? $customerDetails->customer->first_name : ''; |
| $firstName = isset($customerDetails->customer->first_name) ? $customerDetails->customer->first_name : ''; |
| $lastName = isset($customerDetails->customer->last_name) ? $customerDetails->customer->last_name : ''; |
| $lastName = isset($customerDetails->customer->last_name) ? $customerDetails->customer->last_name : ''; |
| $customerName = $firstName." ".$lastName; |
| $customerName = $firstName." ".$lastName; |
| |
| |
| $sessionIDs = $this->quizModel->getSessionID($email); |
| $sessionIDs = $this->quizModel->getSessionID($email); |
| |
| |
| $sessionIDs = $this->formatSessionID($sessionIDs); |
| $sessionIDs = $this->formatSessionID($sessionIDs); |
| |
| |
| if (!empty($sessionIDs)) { |
| if (!empty($sessionIDs)) { |
| $quizDetails = $this->quizModel->getQuizDetails($sessionIDs); |
| $quizDetails = $this->quizModel->getQuizDetails($sessionIDs); |
| //echo"<pre>"; print_r($quizDetails);die('test');
|
| |
| } |
| } |
|
|
| |
| return view('customerQuiz', |
| return view('customerQuiz', |
| [ |
| [ |
| "customerName" => $customerName, |
| "customerName" => $customerName, |
| "email" => $email, |
| "email" => $email, |
| "quizCount" => isset($quizDetails) ? count($quizDetails) : 0, |
| "quizCount" => isset($quizDetails) ? count($quizDetails) : 0, |
| "quizDetails" => isset($quizDetails) ? $quizDetails : '', |
| "quizDetails" => isset($quizDetails) ? $quizDetails : '', |
| ] |
| ] |
| ); |
| ); |
| } |
| } |
| |
| |
| public function formatData($quizDetails) |
| public function formatData($quizDetails) |
| { |
| { |
| $quizArray = []; |
| $quizArray = []; |
| if (!empty($quizDetails)) { |
| if (!empty($quizDetails)) { |
| foreach ($quizDetails as $quziData) { |
| foreach ($quizDetails as $quziData) { |
| if (!isset($quizArray[$quziData->question])) { |
| if (!isset($quizArray[$quziData->question])) { |
| $quizArray[$quziData->question] = $quziData->response; |
| $quizArray[$quziData->question] = $quziData->response; |
| } |
| } |
| else { |
| else { |
| $data = $quizArray[$quziData->question] . " | " . $quziData->response; |
| $data = $quizArray[$quziData->question] . " | " . $quziData->response; |
| $quizArray[$quziData->question] = $data; |
| $quizArray[$quziData->question] = $data; |
| } |
| } |
| } |
| } |
| } |
| } |
| return $quizArray; |
| return $quizArray; |
| } |
| } |
| |
| |
| public function formatSessionID($sessionIDs) |
| public function formatSessionID($sessionIDs) |
| { |
| { |
| |
| |
| $sessionID = ''; |
| $sessionID = ''; |
| if (!empty($sessionIDs)) { |
| if (!empty($sessionIDs)) { |
| foreach ($sessionIDs as $value) { |
| foreach ($sessionIDs as $value) { |
| $sessionID .= $value->session_id . ","; |
| $sessionID .= $value->session_id . ","; |
| } |
| } |
| } |
| } |
| |
| |
| return rtrim($sessionID, ","); |
| return rtrim($sessionID, ","); |
| } |
| } |
| |
| |
| public function getQuizDetailById() |
| public function getQuizDetailById() |
| { |
| { |
| |
| |
| $sessionID = isset($_REQUEST['sessionId']) ? $_REQUEST['sessionId'] : ''; |
| $sessionID = isset($_REQUEST['sessionId']) ? $_REQUEST['sessionId'] : ''; |
| $email = isset($_REQUEST['email']) ? $_REQUEST['email'] : ''; |
| $email = isset($_REQUEST['email']) ? trim($_REQUEST['email']) : ''; |
| |
| |
| if (empty($sessionID)) { |
| if (empty($sessionID)) { |
| // $email = 'testing+TestUser@p80w.com'; |
| // $email = 'testing+TestUser@p80w.com'; |
| $sessionID = $this->quizModel->getSessionIds($email); // TODO |
| $sessionID = $this->quizModel->getSessionIds($email); // TODO |
| } |
| } |
| |
| |
| $quizDetails = $this->quizModel->getQuizDetails($sessionID); |
| $quizDetails = $this->quizModel->getQuizDetails($sessionID); |
|
|
|
|
| $recommendations = $this->quizModel->getRecommendation($sessionID); |
| $recommendations = $this->quizModel->getRecommendation($sessionID); |
| |
| |
| return view('quizDetails', |
| return view('quizDetails', |
| [ |
| [ |
| "quizDetails" => $quizDetails[$sessionID], |
| "quizDetails" => $quizDetails[$sessionID], |
| "sessionId" => $sessionID, |
| "sessionId" => $sessionID, |
| "recommendation" => !empty($recommendations) ? json_decode($recommendations) : '', |
| "recommendation" => !empty($recommendations) ? json_decode($recommendations) : '', |
| "quizCompletionTime" => $this->getQuizCompletionTime($quizDetails[$sessionID]), |
| "quizCompletionTime" => $this->getQuizCompletionTime($quizDetails[$sessionID]), |
| "email" => $email |
| "email" => $email |
| ] |
| ] |
| ); |
| ); |
| |
| |
| } |
| } |
| |
| |
| public function getCustomerDetails() |
| public function getCustomerDetails() |
| { |
| { |
| $email = isset($_REQUEST['email']) ? $_REQUEST['email'] : ''; |
| $email = isset($_REQUEST['email']) ? $_REQUEST['email'] : ''; |
| $customerName = isset($_REQUEST['name']) ? $_REQUEST['name'] : ''; |
| $customerName = isset($_REQUEST['name']) ? $_REQUEST['name'] : ''; |
| $sessionID = $this->quizModel->getSessionIds($email); // TODO |
| $sessionID = $this->quizModel->getSessionIds($email); // TODO |
| |
| |
| if (!empty($sessionID)) { |
| if (!empty($sessionID)) { |
| $quizDetails = $this->quizModel->getQuizDetails($sessionID); |
| $quizDetails = $this->quizModel->getQuizDetails($sessionID); |
| } |
| } |
| |
| |
| return view('customerQuiz', |
| return view('customerQuiz', |
| [ |
| [ |
| |
| |
| "customerName" => $customerName, |
| "customerName" => $customerName, |
| "email" => $email, |
| "email" => $email, |
| "quizCount" => isset($quizDetails) ? count($quizDetails) : 0, |
| "quizCount" => isset($quizDetails) ? count($quizDetails) : 0, |
| "quizDetails" => isset($quizDetails) ? $quizDetails : '', |
| "quizDetails" => isset($quizDetails) ? $quizDetails : '', |
| ] |
| ] |
| ); |
| ); |
| |
| |
| } |
| } |
| |
| |
| public function quizList() |
| public function quizList() |
| { |
| { |
| |
| |
| $limit = 20; |
| $limit = 20; |
| $previousLink = ''; |
| $previousLink = ''; |
| $nextLink = ''; |
| $nextLink = ''; |
| $getPageLink = ''; |
| $getPageLink = ''; |
| |
| |
| if (!isset($_GET['page'])) { |
| if (!isset($_GET['page'])) { |
| $data = $this->shop->api()->rest('GET', '/admin/api/2020-04/customers.json', ["fields" => "email,first_name, last_name", "limit" => $limit]); |
| $data = $this->shop->api()->rest('GET', '/admin/api/2020-04/customers.json', ["fields" => "email,first_name, last_name", "limit" => $limit]); |
| $previousLink = !empty($data->link->previous)? $previousLink = $data->link->previous:''; |
| $previousLink = !empty($data->link->previous)? $previousLink = $data->link->previous:''; |
| $nextLink = !empty($data->link->next)? $nextLink = $data->link->next:''; |
| $nextLink = !empty($data->link->next)? $nextLink = $data->link->next:''; |
| } else { |
| } else { |
| $getPageLink = trim($_GET['page']); |
| $getPageLink = trim($_GET['page']); |
| $data = $this->shop->api()->rest('GET', '/admin/api/2020-04/customers.json', ["limit" => $limit, |
| $data = $this->shop->api()->rest('GET', '/admin/api/2020-04/customers.json', ["limit" => $limit, |
| 'page_info' => $getPageLink]); |
| 'page_info' => $getPageLink]); |
| |
| |
| $previousLink = !empty($data->link->previous)? $previousLink = $data->link->previous:''; |
| $previousLink = !empty($data->link->previous)? $previousLink = $data->link->previous:''; |
| $nextLink = !empty($data->link->next)? $nextLink = $data->link->next:''; |
| $nextLink = !empty($data->link->next)? $nextLink = $data->link->next:''; |
| } |
| } |
| |
| |
| $customerData = []; |
| $customerData = []; |
| $customerEmail = []; |
| $customerEmail = []; |
| foreach ($data->body->customers as $customer) { |
| foreach ($data->body->customers as $customer) { |
| $email = $customer->email; |
| $email = $customer->email; |
| $name = $customer->first_name." ".$customer->last_name; |
| $name = $customer->first_name." ".$customer->last_name; |
| $temp = array("email" => $email, "name" => $name); |
| $temp = array("email" => $email, "name" => $name); |
| $customerData[] = $temp; |
| $customerData[] = $temp; |
| $customerEmail[] = $email; |
| $customerEmail[] = $email; |
| } |
| } |
| |
| |
| $emails = '"' . implode('","', $customerEmail) . '"'; |
| $emails = '"' . implode('","', $customerEmail) . '"'; |
| |
| |
| |
|
|
| $quizDetails = $this->quizModel->getQuizDetailsByEmail($emails); |
| $quizDetails = $this->quizModel->getQuizDetailsByEmail($emails); |
|
|
| $percentDetails = $this->getPercentDetails($quizDetails);
|
| |
| |
| return view('welcome', [ |
| return view('welcome', [ |
| "customers" => $customerData, |
| "customers" => $customerData, |
| "quizDetails" => $quizDetails, |
| "quizDetails" => $quizDetails, |
| "previousLink" => $previousLink, |
| "previousLink" => $previousLink, |
| "nextLink" => $nextLink |
| "nextLink" => $nextLink, |
| |
| "percentDetails" => $percentDetails
|
| ]); |
| ]); |
| } |
| } |
| |
| |
| public function getQuizCompletionTime($quizDetails) |
| public function getQuizCompletionTime($quizDetails) |
| { |
| { |
| if (!empty($quizDetails)) { |
| if (!empty($quizDetails)) { |
| $startTime = new \DateTime($quizDetails[0]->completion_time); |
| $startTime = new \DateTime($quizDetails[0]->completion_time); |
| $endTime = new \DateTime(end($quizDetails)->completion_time); |
| $endTime = new \DateTime(end($quizDetails)->completion_time); |
| |
| |
| $completionTime = $startTime->diff($endTime); |
| $completionTime = $startTime->diff($endTime); |
| return array("min" => $completionTime->i, "sec" => $completionTime->s); |
| return array("min" => $completionTime->i, "sec" => $completionTime->s); |
| } |
| } |
| return null; |
| return null; |
| |
| }
|
| |
|
|
| |
| public function getPercentDetails($quizDetails)
|
| |
| {
|
| |
| $percentDetails = array();
|
| |
| if (!empty($quizDetails)) {
|
| |
| foreach ($quizDetails as $email => $details) {
|
| |
|
|
| |
| $latestSessionID = end($details)['session_id'];
|
| |
| $quizData = $this->quizModel->getQuizDetails($latestSessionID);
|
| |
| $quizData = array_values($quizData);
|
| |
| \ if ($quizData[0][0]->isrecommendation == 'Yes') {
|
| |
| $percentDetails[$email] = '100';
|
| |
| // break;
|
| |
| } else {
|
| |
| $count = count($quizData[0]);
|
| |
| $percentDetails[$email] = ($count/50) * 100;
|
| |
| // break;
|
| |
| }
|
| |
| }
|
| |
| }
|
| |
| return $percentDetails;
|
| } |
| } |
| } |
| } |
| |
| |