| <?php |
| <?php |
| |
| |
| namespace App\Http\Controllers; |
| namespace App\Http\Controllers; |
| |
| |
| use DB; |
| use DB; |
| use Log; |
| use Log; |
| use App\Users; |
| use App\Users; |
| use Illuminate\Http\Request; |
| use Illuminate\Http\Request; |
| use App\Http\ResponseHelper; |
| use App\Http\ResponseHelper; |
| use App\Jobs\CreateShopifyCustomerJob; |
| use App\Jobs\CreateShopifyCustomerJob; |
| use App\Jobs\TagUserJob; |
| use App\Jobs\TagUserJob; |
| use JsonSerializable; |
| use JsonSerializable; |
| |
| use Carbon\Carbon;
|
| |
| |
| use OhMyBrew\BasicShopifyAPI; |
| use OhMyBrew\BasicShopifyAPI; |
| use Config; |
| use Config; |
| |
| |
| class QuizController extends Controller |
| class QuizController extends Controller |
| { |
| { |
| |
| |
| private $helper; |
| private $helper; |
| |
| |
| public function __construct() |
| public function __construct() |
| { |
| { |
| |
| |
| $this->iterableUrl = env('ITERABLE_URL', true); |
| $this->iterableUrl = env('ITERABLE_URL', true); |
| $this->iterableApiKey = env('ITERABLE_API_KEY',true); |
| $this->iterableApiKey = env('ITERABLE_API_KEY',true); |
| $this->helper = new ResponseHelper(); |
| $this->helper = new ResponseHelper(); |
| } |
| } |
| |
| |
| public function storeQuiz(Request $request) |
| public function storeQuiz(Request $request) |
| { |
| { |
| $page = $request->input('page'); |
| $page = $request->input('page'); |
| $sessionID = $request->input('sessionID'); |
| $sessionID = $request->input('sessionID'); |
| $question = $request->input('question'); |
| $question = $request->input('question'); |
| $questionID = $request->input('questionID'); |
| $questionID = $request->input('questionID'); |
| $questionNo = $request->input('questionNo'); |
| $questionNo = $request->input('questionNo'); |
| $responses = $request->input('responses'); |
| $responses = $request->input('responses'); |
| $responseIds = $request->input('responseIDs'); |
| $responseIds = $request->input('responseIDs'); |
| $responseKeys = $request->input('responseKeys'); |
| $responseKeys = $request->input('responseKeys'); |
| |
| |
| $questionTextArray = array('31','49'); |
| $questionTextArray = array('31','49'); |
| |
| |
| if(empty($sessionID)) { |
| if(empty($sessionID)) { |
| |
| |
| // error |
| // error |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Invalid Session' |
| 'error' => 'Invalid Session' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| if( $page == 'close') |
| if( $page == 'close') |
| { |
| { |
| Log::info('Inside close page - '.$sessionID); |
| Log::info('Inside close page - '.$sessionID); |
| $updateQuizUser = DB::table('quiz_user') |
| $updateQuizUser = DB::table('quiz_user') |
| ->where('session_id', $sessionID) |
| ->where('session_id', $sessionID) |
| ->update(['status' => 1]); |
| ->update(['status' => 1]); |
| |
| |
| $other = DB::table('question_responses')->select('id')->where([ |
| $other = DB::table('question_responses')->select('id')->where([ |
| ['qn_id', '=', '12'], |
| ['qn_id', '=', '12'], |
| ['response', '=', 'Other'] |
| ['response', '=', 'Other'] |
| ])->value('id'); |
| ])->value('id'); |
| |
| |
| $userResponse = DB::select(' |
| $userResponse = DB::select(' |
| select |
| select |
| qm.id, |
| qm.id, |
| qm.question, |
| qm.question, |
| qm.question_no, |
| qm.question_no, |
| qr.response, |
| qr.response, |
| qr.response_key, |
| qr.response_key, |
| ur.response_text |
| ur.response_text |
| from |
| from |
| user_responses as ur |
| user_responses as ur |
| join |
| join |
| question_master as qm |
| question_master as qm |
| on |
| on |
| qm.id = ur.qn_id |
| qm.id = ur.qn_id |
| left join |
| left join |
| question_responses as qr |
| question_responses as qr |
| on |
| on |
| ur.response_id = qr.id |
| ur.response_id = qr.id |
| where |
| where |
| session_id = ?', [$sessionID]); |
| session_id = ?', [$sessionID]); |
| |
| |
| $dataResult = []; |
| $dataResult = []; |
| $details = []; |
| $details = []; |
| |
| |
| |
| |
| if(!empty($userResponse)) |
| if(!empty($userResponse)) |
| { |
| { |
| |
| |
| foreach($userResponse as $response) |
| foreach($userResponse as $response) |
| { |
| { |
| $questionId = $response->id ; |
| $questionId = $response->id ; |
| $questionNo = $response->question_no; |
| $questionNo = $response->question_no; |
| $questionText = $response->question; |
| $questionText = $response->question; |
| $answerText = $response->response; |
| $answerText = $response->response; |
| $answerKey = $response->response_key; |
| $answerKey = $response->response_key; |
| $responseText = $response->response_text; |
| $responseText = $response->response_text; |
| |
| |
| if($questionNo == '11' && $responseText != null) |
| if($questionNo == '11' && $responseText != null) |
| { |
| { |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| $details[$questionNo]['AnswerText'][] = $other; |
| $details[$questionNo]['AnswerText'][] = $other; |
| continue; |
| continue; |
| } |
| } |
| |
| |
| if (!isset($details[$questionNo])){ |
| if (!isset($details[$questionNo])){ |
| $details[$questionNo] = []; |
| $details[$questionNo] = []; |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| } |
| } |
| |
| |
| if(in_array($questionNo, $questionTextArray)) |
| if(in_array($questionNo, $questionTextArray)) |
| { |
| { |
| $details[$questionNo]['AnswerText'][] = $answerText; |
| $details[$questionNo]['AnswerText'][] = $answerText; |
| } |
| } |
| else |
| else |
| { |
| { |
| $details[$questionNo]['AnswerText'][] = empty($answerKey) ? $responseText : strval($answerKey); |
| $details[$questionNo]['AnswerText'][] = empty($answerKey) ? $responseText : strval($answerKey); |
| } |
| } |
| } |
| } |
| $questionDetails = array_values($details); |
| $questionDetails = array_values($details); |
| $dataResult['SurveyAnswers']['SessionId'] = $sessionID; |
| $dataResult['SurveyAnswers']['SessionId'] = $sessionID; |
| $dataResult['SurveyAnswers']['Questions'] = $questionDetails; |
| $dataResult['SurveyAnswers']['Questions'] = $questionDetails; |
| } |
| } |
| |
| |
| $returnData = $dataResult; |
| $returnData = $dataResult; |
| |
| |
| $jsonData = json_encode($returnData); |
| $jsonData = json_encode($returnData); |
| Log::info($jsonData); |
| Log::info($jsonData); |
| |
| |
| $returnASCII = $this->encode_items($returnData); |
| $returnASCII = $this->encode_items($returnData); |
| |
| |
| $jsonDataASCII = json_encode($returnASCII); |
| $jsonDataASCII = json_encode($returnASCII); |
| Log::info($jsonDataASCII); |
| Log::info($jsonDataASCII); |
| |
| |
| // CALL to Recommendation API |
| // CALL to Recommendation API |
| Log::info('Before recommendation called - '.$sessionID); |
| Log::info('Before recommendation called - '.$sessionID); |
| $recommendation = $this->callRecommendation($returnASCII); |
| $recommendation = $this->callRecommendation($returnASCII); |
| |
| |
| $recommendationObj = json_decode($recommendation); |
| $recommendationObj = json_decode($recommendation); |
| if (isset($recommendationObj->Result)) { |
| if (isset($recommendationObj->Result)) { |
| $recommendationObj = $recommendationObj->Result; |
| $recommendationObj = $recommendationObj->Result; |
| } |
| } |
| |
| |
| if(isset($recommendationObj->Recommendation) && !empty($recommendationObj->Recommendation)) |
| if(isset($recommendationObj->Recommendation) && !empty($recommendationObj->Recommendation)) |
| { |
| { |
| Log::info('Recommendation is not empty- '.$sessionID); |
| Log::info('Recommendation is not empty- '.$sessionID); |
| |
| |
| $updateData = $updateQuizUser = DB::table('quiz_user')->where(['session_id' => $sessionID]) |
| $updateData = $updateQuizUser = DB::table('quiz_user')->where(['session_id' => $sessionID]) |
| ->update(['recommended_at' => date('Y-m-d H:i:s')]); |
| ->update(['recommended_at' => date('Y-m-d H:i:s')]); |
| |
| |
| |
| |
| $lastInsertedId = DB::table('recommendations')->insertGetId( |
| $lastInsertedId = DB::table('recommendations')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'email' => isset($recommendationObj->Email) ? $recommendationObj->Email : '', |
| 'email' => isset($recommendationObj->Email) ? $recommendationObj->Email : '', |
| 'first_name' => isset($recommendationObj->Firstname) ? $recommendationObj->Firstname : '', |
| 'first_name' => isset($recommendationObj->Firstname) ? $recommendationObj->Firstname : '', |
| 'sex_profile' => $recommendationObj->SexProfile, |
| 'sex_profile' => $recommendationObj->SexProfile, |
| 'sex' => $recommendationObj->Sex, |
| 'sex' => $recommendationObj->Sex, |
| 'age' => $recommendationObj->Age, |
| 'age' => $recommendationObj->Age, |
| 'zipcode' => $recommendationObj->ZipCode, |
| 'zipcode' => $recommendationObj->ZipCode, |
| 'latitude' => $recommendationObj->Latitude, |
| 'latitude' => $recommendationObj->Latitude, |
| 'longitude' => $recommendationObj->Longitude, |
| 'longitude' => $recommendationObj->Longitude, |
| 'city' => $recommendationObj->City, |
| 'city' => $recommendationObj->City, |
| 'state' => $recommendationObj->State, |
| 'state' => $recommendationObj->State, |
| 'allergens' => json_encode($recommendationObj->Allergens), |
| 'allergens' => json_encode($recommendationObj->Allergens), |
| 'deficiencies' => json_encode($recommendationObj->Deficiencies), |
| 'deficiencies' => json_encode($recommendationObj->Deficiencies), |
| 'recommendation' => json_encode($recommendationObj->Recommendation), |
| 'recommendation' => json_encode($recommendationObj->Recommendation), |
| 'buzz_words' => json_encode($recommendationObj->BuzzWordsTips), |
| 'buzz_words' => json_encode($recommendationObj->BuzzWordsTips), |
| 'north37' => $recommendationObj->North37, |
| 'north37' => $recommendationObj->North37, |
| 'prostate_interest' => $recommendationObj->ProstateInterest, |
| 'prostate_interest' => $recommendationObj->ProstateInterest, |
| 'prenatal_interest' => $recommendationObj->PrenatalInterest, |
| 'prenatal_interest' => $recommendationObj->PrenatalInterest, |
| 'postnatal_interest' => $recommendationObj->PostnatalInterest, |
| 'postnatal_interest' => $recommendationObj->PostnatalInterest, |
| 'healthy_interest' => $recommendationObj->HealthyMentrualCycleInterest, |
| 'healthy_interest' => $recommendationObj->HealthyMentrualCycleInterest, |
| 'perimenopause_interest' => $recommendationObj->PerimenopauseInterest, |
| 'perimenopause_interest' => $recommendationObj->PerimenopauseInterest, |
| 'menopause_interest' => $recommendationObj->MenopauseInterest, |
| 'menopause_interest' => $recommendationObj->MenopauseInterest, |
| 'planning_pregnancy' => $recommendationObj->PlanningPregnancy, |
| 'planning_pregnancy' => $recommendationObj->PlanningPregnancy, |
| 'pregnant' => $recommendationObj->Pregnant, |
| 'pregnant' => $recommendationObj->Pregnant, |
| 'breastfeeding' => $recommendationObj->Breastfeeding, |
| 'breastfeeding' => $recommendationObj->Breastfeeding, |
| 'taking_medication' => $recommendationObj->TakingMedication, |
| 'taking_medication' => $recommendationObj->TakingMedication, |
| 'blood_clotting_issue' => $recommendationObj->BloodClottingIssue, |
| 'blood_clotting_issue' => $recommendationObj->BloodClottingIssue, |
| |
| |
| ] |
| ] |
| ); |
| ); |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| // For the tagging purpose |
| // For the tagging purpose |
| $questionResponse = DB::select(' |
| $questionResponse = DB::select(' |
| select |
| select |
| qm.id, |
| qm.id, |
| qm.question, |
| qm.question, |
| qr.response |
| qr.response |
| from |
| from |
| user_responses as ur |
| user_responses as ur |
| join |
| join |
| question_master as qm |
| question_master as qm |
| on |
| on |
| qm.id = ur.qn_id |
| qm.id = ur.qn_id |
| left join |
| left join |
| question_responses as qr |
| question_responses as qr |
| on |
| on |
| ur.response_id = qr.id |
| ur.response_id = qr.id |
| where |
| where |
| session_id = ? and ur.qn_id in (14,32)', [$sessionID]); |
| session_id = ? and ur.qn_id in (14,32)', [$sessionID]); |
| |
| |
| $tagQuestion = array(); |
| $tagQuestion = array(); |
| if(!empty($questionResponse)) |
| if(!empty($questionResponse)) |
| { |
| { |
| foreach($questionResponse as $qResponse) |
| foreach($questionResponse as $qResponse) |
| { |
| { |
| if(!isset($tagQuestion[$qResponse->id])) |
| if(!isset($tagQuestion[$qResponse->id])) |
| { |
| { |
| $tagQuestion[$qResponse->id][] = $qResponse->response; |
| $tagQuestion[$qResponse->id][] = $qResponse->response; |
| } |
| } |
| else{ |
| else{ |
| $tagQuestion[$qResponse->id][] = $qResponse->response; |
| $tagQuestion[$qResponse->id][] = $qResponse->response; |
| } |
| } |
| } |
| } |
| } |
| } |
| // Tag User |
| // Tag User |
| $tagUser = dispatch(new TagUserJob($recommendation, $tagQuestion, $sessionID)); |
| $tagUser = dispatch(new TagUserJob($recommendation, $tagQuestion, $sessionID)); |
| |
| |
| $recProducts = $recommendationObj->Recommendation; |
| $recProducts = $recommendationObj->Recommendation; |
| |
| |
| if(!empty($recProducts)){ |
| if(!empty($recProducts)){ |
| |
| |
| foreach($recProducts as $recProd){ |
| foreach($recProducts as $recProd){ |
| |
| |
| $reason = array(); |
| $reason = array(); |
| $reasonProduct = $recProd->ReasonsForProduct; |
| $reasonProduct = $recProd->ReasonsForProduct; |
| |
| |
| if(!empty($reasonProduct)){ |
| if(!empty($reasonProduct)){ |
| foreach($reasonProduct as $value){ |
| foreach($reasonProduct as $value){ |
| $stripValue = preg_replace('/[^a-zA-Z0-9-;.,+"()%\/(°) ]/', '', $value); |
| $stripValue = preg_replace('/[^a-zA-Z0-9-;.,+"()%\/(°) ]/', '', $value); |
| array_push($reason, $stripValue); |
| array_push($reason, $stripValue); |
| } |
| } |
| $recProd->ReasonsForProduct = $reason; |
| $recProd->ReasonsForProduct = $reason; |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| |
| $recommendationObj = json_decode($recommendation); |
| $recommendationObj = json_decode($recommendation); |
| if (isset($recommendationObj->Result)) { |
| if (isset($recommendationObj->Result)) { |
| $recommendationObj = $recommendationObj->Result; |
| $recommendationObj = $recommendationObj->Result; |
| } |
| } |
| |
| |
| $recommendationObj->Recommendation = $recProducts; |
| $recommendationObj->Recommendation = $recProducts; |
| |
| |
| if(!empty($recommendationObj->Email)){ |
| if(!empty($recommendationObj->Email)){ |
| |
| |
| $triggerEmailRequest = array( |
| $triggerEmailRequest = array( |
| "campaignId" => 882346, |
| "campaignId" => 882346, |
| "recipientEmail" => $recommendationObj->Email |
| "recipientEmail" => $recommendationObj->Email |
| ); |
| ); |
| /* Trigger Email */ |
| /* Trigger Email */ |
| /*$triggerEmailResponse = $this->triggerEmailTarget(json_encode($triggerEmailRequest)); |
| /*$triggerEmailResponse = $this->triggerEmailTarget(json_encode($triggerEmailRequest)); |
| if(isset($triggerEmailResponse->code) && $triggerEmailResponse->code == 'Success'){ |
| if(isset($triggerEmailResponse->code) && $triggerEmailResponse->code == 'Success'){ |
| Log::info('Mail sent successfully to '.$recommendationObj->Email); |
| Log::info('Mail sent successfully to '.$recommendationObj->Email); |
| // Update the mail sent field to 1 |
| // Update the mail sent field to 1 |
| $updateQuizUser = DB::table('quiz_user') |
| $updateQuizUser = DB::table('quiz_user') |
| ->where(['session_id' => $sessionID]) |
| ->where(['session_id' => $sessionID]) |
| ->update(['mail_sent' => 1]); |
| ->update(['mail_sent' => 1]); |
| } |
| } |
| else{ |
| else{ |
| Log::info('Mail not sent'); |
| Log::info('Mail not sent'); |
| Log::info($triggerEmailResponse->code); |
| Log::info($triggerEmailResponse->code); |
| Log::info($triggerEmailResponse->msg); |
| Log::info($triggerEmailResponse->msg); |
| }*/ |
| }*/ |
| /* End trigger email */ |
| /* End trigger email */ |
| |
| |
| $eventRequest = array( |
| $eventRequest = array( |
| "email" => $recommendationObj->Email, |
| "email" => $recommendationObj->Email, |
| "eventName" => "Quiz Completion", |
| "eventName" => "Quiz Completion", |
| // "campaignId" => 882346, |
| // "campaignId" => 882346, |
| "dataFields" => array("userName" => $recommendationObj->Firstname) |
| "dataFields" => array("userName" => $recommendationObj->Firstname) |
| ); |
| ); |
| // Trigger Event |
| // Trigger Event |
| $eventResponse = $this->createEvent(json_encode($eventRequest)); |
| $eventResponse = $this->createEvent(json_encode($eventRequest)); |
| |
| |
| if(isset($eventResponse->code) && $eventResponse->code == 'Success'){ |
| if(isset($eventResponse->code) && $eventResponse->code == 'Success'){ |
| Log::info('Event triggered successfully Please check mail : '.$recommendationObj->Email); |
| Log::info('Event triggered successfully Please check mail : '.$recommendationObj->Email); |
| } |
| } |
| else{ |
| else{ |
| Log::info('Event not triggered'); |
| Log::info('Event not triggered'); |
| // Log::info($eventResponse); |
| // Log::info($eventResponse); |
| // Log::info($eventResponse->code); |
| // Log::info($eventResponse->code); |
| // Log::info($eventResponse->msg); |
| // Log::info($eventResponse->msg); |
| } |
| } |
| |
| |
| } |
| } |
| return $this->helper->returnData(200, "success", json_decode($recommendation) ); |
| return $this->helper->returnData(200, "success", json_decode($recommendation) ); |
| |
| |
| } |
| } |
| else{ |
| else{ |
| Log::info('Recommendation is empty- '.$sessionID); |
| Log::info('Recommendation is empty- '.$sessionID); |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Empty Recommendation' |
| 'error' => 'Empty Recommendation' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| } |
| } |
| |
| |
| if(empty($questionID)) { |
| if(empty($questionID)) { |
| // error |
| // error |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Quiz not found' |
| 'error' => 'Quiz not found' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| // To delete the already existing question and update the new record |
| // To delete the already existing question and update the new record |
| $deleteQuizDetails = DB::table('user_responses') |
| $deleteQuizDetails = DB::table('user_responses') |
| ->where([ |
| ->where([ |
| ['session_id', '=', $sessionID], |
| ['session_id', '=', $sessionID], |
| ['qn_no', '>=', $questionNo] |
| ['qn_no', '>=', $questionNo] |
| ])->delete(); |
| ])->delete(); |
| |
| |
| if(!empty($responseIds)) |
| if(!empty($responseIds)) |
| { |
| { |
| $lastInsertedId = null; |
| $lastInsertedId = null; |
| foreach($responseIds as $responseId) |
| foreach($responseIds as $responseId) |
| { |
| { |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'qn_id' => $questionID, |
| 'qn_id' => $questionID, |
| 'qn_no' => $questionNo, |
| 'qn_no' => $questionNo, |
| 'response_id' => $responseId, |
| 'response_id' => $responseId, |
| // 'response_text' => null, |
| // 'response_text' => null, |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ] |
| ] |
| ); |
| ); |
| } |
| } |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| else |
| else |
| { |
| { |
| |
| |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'qn_id' => $questionID, |
| 'qn_id' => $questionID, |
| 'qn_no' => $questionNo, |
| 'qn_no' => $questionNo, |
| 'response_id' => null, |
| 'response_id' => null, |
| 'response_text' => $responses[0], |
| 'response_text' => $responses[0], |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ] |
| ] |
| ); |
| ); |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| |
| |
| if($page == 'email') |
| if($page == 'email') |
| { |
| { |
| Log::info('Inside email page - '.$sessionID); |
| Log::info('Inside email page - '.$sessionID); |
| $email = isset($responses[0]) ? $responses[0] : ''; |
| $email = isset($responses[0]) ? $responses[0] : ''; |
| |
| |
| if(empty($email)) |
| if(empty($email)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Email is empty' |
| 'error' => 'Email is empty' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $user = DB::table('users')->where('user_email', '=', $email)->get(); |
| $user = DB::table('users')->where('user_email', '=', $email)->get(); |
| |
| |
| if(!isset($user[0]->user_email)) |
| if(!isset($user[0]->user_email)) |
| { |
| { |
| // create |
| // create |
| $userName = ''; |
| $userName = ''; |
| $userId = DB::table('users')->insertGetId([ |
| $userId = DB::table('users')->insertGetId([ |
| 'user_email' => $email, |
| 'user_email' => $email, |
| 'status' => 1 |
| 'status' => 1 |
| ]); |
| ]); |
| |
| |
| $quizId = DB::table('quiz_user')->select('id')->where([ |
| $quizId = DB::table('quiz_user')->select('id')->where([ |
| 'session_id' => $sessionID |
| 'session_id' => $sessionID |
| ])->value('id'); |
| ])->value('id'); |
| |
| |
| if($quizId) { |
| if($quizId) { |
| |
| |
| $updateQuizUser = DB::table('quiz_user')->where(['id' => $quizId]) |
| $updateQuizUser = DB::table('quiz_user')->where(['id' => $quizId]) |
| ->update(['user_id' => $userId]); |
| ->update(['user_id' => $userId]); |
| |
| |
| } else { |
| } else { |
| $quizId = DB::table('quiz_user')->insertGetId([ |
| $quizId = DB::table('quiz_user')->insertGetId([ |
| 'user_id' => $userId, |
| 'user_id' => $userId, |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ]); |
| ]); |
| } |
| } |
| |
| |
| |
| |
| $userNameResponse = DB::table('user_responses')->where([ |
| $userNameResponse = DB::table('user_responses')->where([ |
| ['session_id', '=', $sessionID], |
| ['session_id', '=', $sessionID], |
| ['qn_id', '=', '2'] |
| ['qn_id', '=', '2'] |
| ])->get(); |
| ])->get(); |
| |
| |
| if($userNameResponse[0]) |
| if($userNameResponse[0]) |
| { |
| { |
| $userName = $userNameResponse[0]->response_text; |
| $userName = $userNameResponse[0]->response_text; |
| } |
| } |
| |
| |
| // Create customer in Shopify |
| // Create customer in Shopify |
| $result = dispatch(new CreateShopifyCustomerJob($email, $userName)); |
| $result = dispatch(new CreateShopifyCustomerJob($email, $userName)); |
| } else { |
| } else { |
| $userId = $user[0]->id; |
| $userId = $user[0]->id; |
| $quizId = DB::table('quiz_user')->select('id')->where([ |
| $quizId = DB::table('quiz_user')->select('id')->where([ |
| 'session_id' => $sessionID |
| 'session_id' => $sessionID |
| ])->value('id'); |
| ])->value('id'); |
| |
| |
| if($quizId) { |
| if($quizId) { |
| |
| |
| $updateQuizUser = DB::table('quiz_user')->where(['id' => $quizId]) |
| $updateQuizUser = DB::table('quiz_user')->where(['id' => $quizId]) |
| ->update(['user_id' => $userId]); |
| ->update(['user_id' => $userId]); |
| |
| |
| } else { |
| } else { |
| $quizId = DB::table('quiz_user')->insertGetId([ |
| $quizId = DB::table('quiz_user')->insertGetId([ |
| 'user_id' => $userId, |
| 'user_id' => $userId, |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ]); |
| ]); |
| } |
| } |
| |
| |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| return $this->helper->returnData(200, "success", $returnData ); |
| return $this->helper->returnData(200, "success", $returnData ); |
| |
| |
| } |
| } |
| |
| |
| public function deleteQuiz(Request $request) |
| public function deleteQuiz(Request $request) |
| { |
| { |
| $quizId = $request->input('quizId'); |
| $quizId = $request->input('quizId'); |
| $email = $request->input('email'); |
| $email = $request->input('email'); |
| $userID = ''; |
| $userID = ''; |
| |
| |
| if(empty($quizId)) |
| if(empty($quizId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Invalid Quiz Id' |
| 'error' => 'Invalid Quiz Id' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| |
| |
| } |
| } |
| |
| |
| $userData = DB::table('users')->where('user_email', '=', $email)->get(); |
| $userData = DB::table('users')->where('user_email', '=', $email)->get(); |
| if(isset($userData[0]->id)) |
| if(isset($userData[0]->id)) |
| { |
| { |
| $userID = $userData[0]->id; |
| $userID = $userData[0]->id; |
| } |
| } |
| else |
| else |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Invalid Email Id' |
| 'error' => 'Invalid Email Id' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| if(!empty($userID)) |
| if(!empty($userID)) |
| { |
| { |
| $quizIds = array(); |
| $quizIds = array(); |
| $quizzes = DB::table('quiz_user')->where('user_id', '=', $userID)->get(); |
| $quizzes = DB::table('quiz_user')->where('user_id', '=', $userID)->get(); |
| |
| |
| if(!empty($quizzes)) |
| if(!empty($quizzes)) |
| { |
| { |
| foreach($quizzes as $quiz) |
| foreach($quizzes as $quiz) |
| { |
| { |
| array_push($quizIds, $quiz->id); |
| array_push($quizIds, $quiz->id); |
| } |
| } |
| } |
| } |
| |
| |
| if(!in_array($quizId, $quizIds)) |
| if(!in_array($quizId, $quizIds)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Quiz not exist in the server' |
| 'error' => 'Quiz not exist in the server' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $updateQuiz = DB::table('quiz_user') |
| $updateQuiz = DB::table('quiz_user') |
| ->where('id', $quizId) |
| ->where('id', $quizId) |
| ->update(['deleted' => 1]); |
| ->update(['deleted' => 1]); |
| |
| |
| if($updateQuiz == 1) // success |
| if($updateQuiz == 1) // success |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'deleted' => true, |
| 'deleted' => true, |
| 'message' => 'successfully deleted' |
| 'message' => 'successfully deleted' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(200, "success", $returnData ); |
| return $this->helper->returnData(200, "success", $returnData ); |
| } |
| } |
| else |
| else |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Quiz does not exist' |
| 'error' => 'Quiz does not exist' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| |
| public function getQuizzes(Request $request) |
| public function getQuizzes(Request $request) |
| { |
| { |
| $userEmail = $request->input('email'); |
| $userEmail = $request->input('email'); |
| $records = 6 ; //$request->input('records'); |
| $records = 6 ; //$request->input('records'); |
| $page = empty($request->input('page')) ? 1 : $request->input('page'); |
| $page = empty($request->input('page')) ? 1 : $request->input('page'); |
| |
| |
| $userData = DB::table('users')->where('user_email', '=', $userEmail)->get(); |
| $userData = DB::table('users')->where('user_email', '=', $userEmail)->get(); |
| |
| |
| |
| |
| if(isset($userData[0]->id)) |
| if(isset($userData[0]->id)) |
| { |
| { |
| $userID = $userData[0]->id; |
| $userID = $userData[0]->id; |
| } |
| } |
| else |
| else |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Invalid Email Id' |
| 'error' => 'Invalid Email Id' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $userQuizCount = DB::table('quiz_user') |
| $userQuizCount = DB::table('quiz_user') |
| ->select( |
| ->select( |
| 'quiz_user.id' |
| 'quiz_user.id' |
| ) |
| ) |
| ->leftJoin('recommendations', 'quiz_user.session_id', '=', 'recommendations.session_id') |
| ->leftJoin('recommendations', 'quiz_user.session_id', '=', 'recommendations.session_id') |
| ->where([ |
| ->where([ |
| ['quiz_user.user_id', '=', $userID], |
| ['quiz_user.user_id', '=', $userID], |
| ['quiz_user.deleted', '=', '0'], |
| ['quiz_user.deleted', '=', '0'], |
| ['quiz_user.status', '=', '1'] |
| ['quiz_user.status', '=', '1'] |
| ]) |
| ]) |
| ->whereNotNull('recommendations.recommendation') |
| ->whereNotNull('recommendations.recommendation') |
| ->get()->count(); |
| ->get()->count(); |
| |
| |
| |
| |
| $userQuizDetails = DB::table('quiz_user') |
| $userQuizDetails = DB::table('quiz_user') |
| ->select( |
| ->select( |
| 'quiz_user.id', |
| 'quiz_user.id', |
| 'quiz_user.session_id', |
| 'quiz_user.session_id', |
| 'quiz_user.created_at', |
| 'quiz_user.created_at', |
| 'quiz_user.updated_at', |
| 'quiz_user.updated_at', |
| 'recommendations.recommendation' |
| 'recommendations.recommendation' |
| ) |
| ) |
| ->leftJoin('recommendations', 'quiz_user.session_id', '=', 'recommendations.session_id') |
| ->leftJoin('recommendations', 'quiz_user.session_id', '=', 'recommendations.session_id') |
| ->where([ |
| ->where([ |
| ['quiz_user.user_id', '=', $userID], |
| ['quiz_user.user_id', '=', $userID], |
| ['quiz_user.deleted', '=', '0'], |
| ['quiz_user.deleted', '=', '0'], |
| ['quiz_user.status', '=', '1'] |
| ['quiz_user.status', '=', '1'] |
| ]) |
| ]) |
| ->whereNotNull('recommendations.recommendation') |
| ->whereNotNull('recommendations.recommendation') |
| ->orderBy('id', 'desc') |
| ->orderBy('id', 'desc') |
| ->limit($records) |
| ->limit($records) |
| ->offset(($page-1)*$records) |
| ->offset(($page-1)*$records) |
| ->get(); |
| ->get(); |
| |
| |
| |
| |
| /*$userQuizCount = DB::table('quiz_user')->where([ |
| /*$userQuizCount = DB::table('quiz_user')->where([ |
| ['user_id', '=', $userID], |
| ['user_id', '=', $userID], |
| ['deleted', '=', '0'], |
| ['deleted', '=', '0'], |
| ['status', '=', '1'] |
| ['status', '=', '1'] |
| ])->get()->count(); |
| ])->get()->count(); |
| |
| |
| $userQuizDetails = DB::table('quiz_user') |
| $userQuizDetails = DB::table('quiz_user') |
| ->where([ |
| ->where([ |
| ['user_id', '=', $userID], |
| ['user_id', '=', $userID], |
| ['deleted', '=', '0'], |
| ['deleted', '=', '0'], |
| ['status', '=', '1'] |
| ['status', '=', '1'] |
| ]) |
| ]) |
| ->orderBy('id', 'asc') |
| ->orderBy('id', 'asc') |
| ->limit($records) |
| ->limit($records) |
| ->offset(($page-1)*$records) |
| ->offset(($page-1)*$records) |
| ->get();*/ |
| ->get();*/ |
| |
| |
| $sessionIds = []; |
| $sessionIds = []; |
| |
| |
| foreach($userQuizDetails as $uDetails){ |
| foreach($userQuizDetails as $uDetails){ |
| array_push($sessionIds, $uDetails->session_id); |
| array_push($sessionIds, $uDetails->session_id); |
| } |
| } |
| |
| |
| |
| |
| $interests = []; |
| $interests = []; |
| if(!empty($sessionIds)){ |
| if(!empty($sessionIds)){ |
| $quizResponses = DB::table('user_responses') |
| $quizResponses = DB::table('user_responses') |
| ->select( |
| ->select( |
| 'user_responses.session_id', |
| 'user_responses.session_id', |
| 'user_responses.response_id', |
| 'user_responses.response_id', |
| 'question_responses.response' |
| 'question_responses.response' |
| ) |
| ) |
| ->leftJoin('question_responses','user_responses.response_id','=','question_responses.id') |
| ->leftJoin('question_responses','user_responses.response_id','=','question_responses.id') |
| ->where('user_responses.qn_id','=','14') |
| ->where('user_responses.qn_id','=','14') |
| ->whereIn('session_id',$sessionIds) |
| ->whereIn('session_id',$sessionIds) |
| ->get(); |
| ->get(); |
| |
| |
| foreach($quizResponses as $data){ |
| foreach($quizResponses as $data){ |
| $interests[$data->session_id][] = $data->response; |
| $interests[$data->session_id][] = $data->response; |
| } |
| } |
| |
| |
| } |
| } |
| |
| |
| |
| |
| $quizDetailsArray = []; |
| $quizDetailsArray = []; |
| |
| |
| $sessionIds = []; |
| $sessionIds = []; |
| foreach($userQuizDetails as $userQuizDetail) |
| foreach($userQuizDetails as $userQuizDetail) |
| { |
| { |
| $quizId = $userQuizDetail->id; |
| $quizId = $userQuizDetail->id; |
| $sessionID = $userQuizDetail->session_id; |
| $sessionID = $userQuizDetail->session_id; |
| $recommendation = $userQuizDetail->recommendation; |
| $recommendation = $userQuizDetail->recommendation; |
| $createdAt = $userQuizDetail->created_at; |
| //$createdAt = $userQuizDetail->created_at; |
| $updatedAt = $userQuizDetail->updated_at;
|
| //$updatedAt = $userQuizDetail->updated_at;
|
| |
|
|
| |
| $createdAt = new Carbon($userQuizDetail->created_at, 'America/Los_Angeles');
|
| |
| $createdAt = $createdAt->tz('utc');
|
| |
|
|
| |
| $updatedAt = new Carbon($userQuizDetail->updated_at, 'America/Los_Angeles');
|
| |
| $updatedAt = $updatedAt->tz('utc');
|
| |
| |
| $temp = []; |
| $temp = []; |
| $temp['quizID'] = $quizId; |
| $temp['quizID'] = $quizId; |
| $temp['sessionID'] = $sessionID; |
| $temp['sessionID'] = $sessionID; |
| $temp['startDate'] = $createdAt; |
| $temp['startDate'] = $createdAt; |
| $temp['endDate'] = $updatedAt; |
| $temp['endDate'] = $updatedAt; |
| |
| |
| if(isset($interests[$sessionID])){ |
| if(isset($interests[$sessionID])){ |
| $temp['interests'] = $interests[$sessionID]; |
| $temp['interests'] = $interests[$sessionID]; |
| } |
| } |
| |
| |
| $quizDetailsArray[] = $temp; |
| $quizDetailsArray[] = $temp; |
| |
| |
| } |
| } |
| |
| |
| |
| |
| |
| |
| if(($records * $page) < $userQuizCount) |
| if(($records * $page) < $userQuizCount) |
| { |
| { |
| $hasNext = true; |
| $hasNext = true; |
| } |
| } |
| else{ |
| else{ |
| $hasNext = false; |
| $hasNext = false; |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'email' => $userEmail, |
| 'email' => $userEmail, |
| 'totalRecords' => $userQuizCount, |
| 'totalRecords' => $userQuizCount, |
| 'pageSize' => $records, |
| 'pageSize' => $records, |
| 'pageNumber' => $page, |
| 'pageNumber' => $page, |
| 'hasNext' => $hasNext, |
| 'hasNext' => $hasNext, |
| 'quizzes' => $quizDetailsArray |
| 'quizzes' => $quizDetailsArray |
| ]; |
| ]; |
| return $this->helper->returnData(200, "success", $returnData ); |
| return $this->helper->returnData(200, "success", $returnData ); |
| |
| |
| } |
| } |
| |
| |
| function getRecommendation(Request $request) |
| function getRecommendation(Request $request) |
| { |
| { |
| $sessionID = $request->input('sessionID'); |
| $sessionID = $request->input('sessionID'); |
| |
| |
| if(!empty($sessionID)) |
| if(!empty($sessionID)) |
| { |
| { |
| $results = DB::select(' |
| $results = DB::select(' |
| select |
| select |
| recommendation |
| recommendation |
| from |
| from |
| recommendations |
| recommendations |
| where |
| where |
| session_id = ?', [$sessionID]); |
| session_id = ?', [$sessionID]); |
| |
| |
| if(isset($results[0]->recommendation)) |
| if(isset($results[0]->recommendation)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'recommendation' => $results[0]->recommendation, |
| 'recommendation' => $results[0]->recommendation, |
| |
| |
| ]; |
| ]; |
| return $this->helper->returnData(200, "success", $returnData ); |
| return $this->helper->returnData(200, "success", $returnData ); |
| } |
| } |
| else |
| else |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => "No recommendation for the given SessionID", |
| 'error' => "No recommendation for the given SessionID", |
| |
| |
| ]; |
| ]; |
| return $this->helper->returnData(200, "error", $returnData ); |
| return $this->helper->returnData(200, "error", $returnData ); |
| } |
| } |
| } |
| } |
| else{ |
| else{ |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Invalid Session Id' |
| 'error' => 'Invalid Session Id' |
| ]; |
| ]; |
| return $this->helper->returnData(200, "error", $returnData ); |
| return $this->helper->returnData(200, "error", $returnData ); |
| } |
| } |
| |
| |
| |
| |
| } |
| } |
| |
| |
| public function getQuizDetails(Request $request) |
| public function getQuizDetails(Request $request) |
| { |
| { |
| // $quizId = $request->input('quizId'); |
| // $quizId = $request->input('quizId'); |
| $sessionID = $request->input('sessionID'); |
| $sessionID = $request->input('sessionID'); |
| |
| |
| $results = DB::select(' |
| $results = DB::select(' |
| select |
| select |
| qm.id, |
| qm.id, |
| qm.question, |
| qm.question, |
| IFNULL(qr.response,ur.response_text) as response, |
| IFNULL(qr.response,ur.response_text) as response, |
| qm.page |
| qm.page |
| from |
| from |
| user_responses as ur |
| user_responses as ur |
| join |
| join |
| question_master as qm |
| question_master as qm |
| on |
| on |
| qm.id = ur.qn_id |
| qm.id = ur.qn_id |
| left join |
| left join |
| question_responses as qr |
| question_responses as qr |
| on |
| on |
| ur.response_id = qr.id |
| ur.response_id = qr.id |
| where |
| where |
| session_id = ?', [$sessionID]); |
| session_id = ?', [$sessionID]); |
| |
| |
| $dataResult = []; |
| $dataResult = []; |
| $details = []; |
| $details = []; |
| |
| |
| foreach($results as $result) |
| foreach($results as $result) |
| { |
| { |
| $questionId = $result->id; |
| $questionId = $result->id; |
| $questionText = $result->question; |
| $questionText = $result->question; |
| $answerText = $result->response; |
| $answerText = $result->response; |
| $questionHandle = $result->page; |
| $questionHandle = $result->page; |
| |
| |
| $temp = []; |
| $temp = []; |
| |
| |
| if (!isset($details[$questionId])){ |
| if (!isset($details[$questionId])){ |
| $details[$questionId] = []; |
| $details[$questionId] = []; |
| $details[$questionId]['QuestionNo'] = $questionId; |
| $details[$questionId]['QuestionNo'] = $questionId; |
| $details[$questionId]['QuestionText'] = $questionText; |
| $details[$questionId]['QuestionText'] = $questionText; |
| $details[$questionId]['QuestionHandle'] = $questionHandle; |
| $details[$questionId]['QuestionHandle'] = $questionHandle; |
| } |
| } |
| |
| |
| $details[$questionId]['AnswerText'][]= $answerText; |
| $details[$questionId]['AnswerText'][]= $answerText; |
| } |
| } |
| |
| |
| $questionDetails['Questions'] = $details; |
| $questionDetails['Questions'] = $details; |
| $dataResult['SessionId'] = $sessionID; |
| $dataResult['SessionId'] = $sessionID; |
| $dataResult['SurveyAnswers'] = $questionDetails; |
| $dataResult['SurveyAnswers'] = $questionDetails; |
| |
| |
| $returnData = $dataResult; |
| $returnData = $dataResult; |
| |
| |
| return $this->helper->returnData(200, "success", $returnData ); |
| return $this->helper->returnData(200, "success", $returnData ); |
| } |
| } |
| |
| |
| function callRecommendation($request) |
| function callRecommendation($request) |
| { |
| { |
| if(!empty($request)){ |
| if(!empty($request)){ |
| |
| |
| //$url = 'http://nurishappd2/api/recommendation'; |
| //$url = 'http://nurishappd2/api/recommendation'; |
| // $url = 'http://dev-nurishalgorithm.pharmavite.pharmcorp.net/api/recommendation'; |
| // $url = 'http://dev-nurishalgorithm.pharmavite.pharmcorp.net/api/recommendation'; |
| $url = Config::get('recommendation.recommendationUrl'); |
| $url = Config::get('recommendation.recommendationUrl'); |
| $type = 'POST'; |
| $type = 'POST'; |
| $api_key = null; |
| $api_key = null; |
| $api_passwd = null; |
| $api_passwd = null; |
| |
| |
| return $this->executeCurl($url, $type, $request, $api_key, $api_passwd); |
| return $this->executeCurl($url, $type, $request, $api_key, $api_passwd); |
| } |
| } |
| else{ |
| else{ |
| return null; |
| return null; |
| } |
| } |
| } |
| } |
| |
| |
| function callGetPack($request) |
| function callGetPack($request) |
| { |
| { |
| if(!empty($request)){ |
| if(!empty($request)){ |
| |
| |
| // $url = 'http://dev-nurishatp2.pharmavite.pharmcorp.net/api/packs'; |
| // $url = 'http://dev-nurishatp2.pharmavite.pharmcorp.net/api/packs'; |
| $url = Config::get('recommendation.packUrl'); |
| $url = Config::get('recommendation.packUrl'); |
| $type = 'POST'; |
| $type = 'POST'; |
| $api_key = null; |
| $api_key = null; |
| $api_passwd = null; |
| $api_passwd = null; |
| |
| |
| return $this->executeCurl($url, $type, $request, $api_key, $api_passwd); |
| return $this->executeCurl($url, $type, $request, $api_key, $api_passwd); |
| } |
| } |
| else{ |
| else{ |
| return null; |
| return null; |
| } |
| } |
| } |
| } |
| |
| |
| function executeCurl($url,$type,$data,$api_key,$api_passwd) |
| function executeCurl($url,$type,$data,$api_key,$api_passwd) |
| { |
| { |
| // $str = $api_key.":".$api_passwd; |
| // $str = $api_key.":".$api_passwd; |
| // $authKey = base64_encode($str); |
| // $authKey = base64_encode($str); |
| |
| |
| $ch = curl_init(); |
| $ch = curl_init(); |
| // curl_setopt($ch, CURLOPT_USERPWD, "$api_key:$api_passwd"); |
| // curl_setopt($ch, CURLOPT_USERPWD, "$api_key:$api_passwd"); |
| curl_setopt($ch, CURLOPT_URL, $url); |
| curl_setopt($ch, CURLOPT_URL, $url); |
| curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); |
| curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); |
| curl_setopt($ch, CURLOPT_HEADER, FALSE); |
| curl_setopt($ch, CURLOPT_HEADER, FALSE); |
| curl_setopt($ch, CURLOPT_HTTPHEADER, array( |
| curl_setopt($ch, CURLOPT_HTTPHEADER, array( |
| "Content-Type: application/json" |
| "Content-Type: application/json" |
| // "Authorization: Basic ".$authKey |
| // "Authorization: Basic ".$authKey |
| )); |
| )); |
| curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // temporarily disable SSL verification |
| curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // temporarily disable SSL verification |
| curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // temporarily disable SSL verification |
| curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // temporarily disable SSL verification |
| |
| |
| if ($type == "POST"){ |
| if ($type == "POST"){ |
| curl_setopt($ch, CURLOPT_POST, TRUE); |
| curl_setopt($ch, CURLOPT_POST, TRUE); |
| $json = json_encode(new ArrayValue($data)); |
| $json = json_encode(new ArrayValue($data)); |
| $payload = '"' . addslashes($json) . '"'; |
| $payload = '"' . addslashes($json) . '"'; |
| curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); |
| curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); |
| } |
| } |
| |
| |
| if($type == "PUT"){ |
| if($type == "PUT"){ |
| curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); |
| curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); |
| $json = json_encode(new ArrayValue($data)); |
| $json = json_encode(new ArrayValue($data)); |
| $payload = '"' . addslashes($json) . '"'; |
| $payload = '"' . addslashes($json) . '"'; |
| curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); |
| curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); |
| } |
| } |
| |
| |
| $result = curl_exec($ch); |
| $result = curl_exec($ch); |
| |
| |
| |
| |
| if(curl_errno($ch)){ |
| if(curl_errno($ch)){ |
| echo 'Request Error:' . curl_error($ch); |
| echo 'Request Error:' . curl_error($ch); |
| return false; |
| return false; |
| } |
| } |
| |
| |
| Log::info("curl result => ".$result); |
| Log::info("curl result => ".$result); |
| return $result; |
| return $result; |
| } |
| } |
| |
| |
| function addExitTag(Request $request){ |
| function addExitTag(Request $request){ |
| |
| |
| $api = new BasicShopifyAPI(); |
| $api = new BasicShopifyAPI(); |
| |
| |
| $password = Config::get('shopify.password'); |
| $password = Config::get('shopify.password'); |
| $shopDomain = Config::get('shopify.shopDomain'); |
| $shopDomain = Config::get('shopify.shopDomain'); |
| |
| |
| $api->setShop($shopDomain); |
| $api->setShop($shopDomain); |
| $api->setAccessToken($password); |
| $api->setAccessToken($password); |
| |
| |
| Log::info($request->input()); |
| Log::info($request->input()); |
| |
| |
| $email = $request->input('email'); |
| $email = $request->input('email'); |
| $exitTag = $request->input('tag'); |
| $exitTag = $request->input('tag'); |
| $sessionID = $request->input('sessionID'); |
| $sessionID = $request->input('sessionID'); |
| $questionID = $request->input('questionID'); |
| $questionID = $request->input('questionID'); |
| $questionNo = $request->input('questionNo'); |
| $questionNo = $request->input('questionNo'); |
| $responseID = $request->input('responseID'); |
| $responseID = $request->input('responseID'); |
| |
| |
| Log::info($exitTag); |
| Log::info($exitTag); |
| |
| |
| if(empty($sessionID)){ |
| if(empty($sessionID)){ |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Parameter missing - sessionID' |
| 'error' => 'Parameter missing - sessionID' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| if(empty($email)){ |
| if(empty($email)){ |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Parameter missing - email' |
| 'error' => 'Parameter missing - email' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| if(empty($exitTag)){ |
| if(empty($exitTag)){ |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Parameter missing - tag' |
| 'error' => 'Parameter missing - tag' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| if(empty($questionID)){ |
| if(empty($questionID)){ |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Parameter missing - questionID' |
| 'error' => 'Parameter missing - questionID' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| if(empty($responseID)){ |
| if(empty($responseID)){ |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Parameter missing - responseID' |
| 'error' => 'Parameter missing - responseID' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $userEmailDetails = DB::select(' |
| $userEmailDetails = DB::select(' |
| select |
| select |
| u.user_email |
| u.user_email |
| from |
| from |
| quiz_user as qr |
| quiz_user as qr |
| join |
| join |
| users as u |
| users as u |
| on |
| on |
| u.id = qr.user_id |
| u.id = qr.user_id |
| where |
| where |
| qr.session_id = ?', [$sessionID]); |
| qr.session_id = ?', [$sessionID]); |
| |
| |
| if(!isset($userEmailDetails[0]->user_email)){ |
| if(!isset($userEmailDetails[0]->user_email)){ |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'email not matching with sesssionID' |
| 'error' => 'email not matching with sesssionID' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| if($userEmailDetails[0]->user_email == $email){ |
| if($userEmailDetails[0]->user_email == $email){ |
| |
| |
| |
| |
| /** send email for exit tag cases */ |
| /** send email for exit tag cases */ |
| if(!empty($email)){ |
| if(!empty($email)){ |
| |
| |
| $triggerEmailRequest = array( |
| $triggerEmailRequest = array( |
| "campaignId" => 882346, |
| "campaignId" => 882346, |
| "recipientEmail" => $email |
| "recipientEmail" => $email |
| ); |
| ); |
| |
| |
| /* Trigger email */ |
| /* Trigger email */ |
| /*$triggerEmailResponse = $this->triggerEmailTarget(json_encode($triggerEmailRequest)); |
| /*$triggerEmailResponse = $this->triggerEmailTarget(json_encode($triggerEmailRequest)); |
| if(isset($triggerEmailResponse->code) && $triggerEmailResponse->code == 'Success'){ |
| if(isset($triggerEmailResponse->code) && $triggerEmailResponse->code == 'Success'){ |
| Log::info('Mail sent successfully to '.$email); |
| Log::info('Mail sent successfully to '.$email); |
| |
| |
| $updateQuizUser = DB::table('quiz_user') |
| $updateQuizUser = DB::table('quiz_user') |
| ->where(['session_id' => $sessionID]) |
| ->where(['session_id' => $sessionID]) |
| ->update(['mail_sent' => 1]); |
| ->update(['mail_sent' => 1]); |
| } |
| } |
| else{ |
| else{ |
| Log::info('Mail not sent'); |
| Log::info('Mail not sent'); |
| Log::info($triggerEmailResponse->code); |
| Log::info($triggerEmailResponse->code); |
| Log::info($triggerEmailResponse->msg); |
| Log::info($triggerEmailResponse->msg); |
| }*/ |
| }*/ |
| /* End trigger email */ |
| /* End trigger email */ |
| |
| |
| $eventTag = ''; |
| $eventTag = ''; |
| |
| |
| if($exitTag == "exit-surgery"){ |
| if($exitTag == "exit-surgery"){ |
| $eventTag = 'Quiz Surgery'; |
| $eventTag = 'Quiz Surgery'; |
| } elseif ($exitTag == "exit-veganDiet"){ |
| } elseif ($exitTag == "exit-veganDiet"){ |
| $eventTag = 'quizExit-Vegan'; |
| $eventTag = 'quizExit-Vegan'; |
| } else if ($exitTag == "exit-vegetarianDiet"){ |
| } else if ($exitTag == "exit-vegetarianDiet"){ |
| $eventTag = 'quizExit-Vegetarian'; |
| $eventTag = 'quizExit-Vegetarian'; |
| } |
| } |
| |
| |
| $eventRequest = array( |
| $eventRequest = array( |
| "email" => $email, |
| "email" => $email, |
| "eventName" => $eventTag, |
| "eventName" => $eventTag, |
| // "campaignId" => 882346, |
| // "campaignId" => 882346, |
| "dataFields" => array("userName" => "") |
| "dataFields" => array("userName" => "") |
| ); |
| ); |
| // Trigger Event |
| // Trigger Event |
| $eventResponse = $this->createEvent(json_encode($eventRequest)); |
| $eventResponse = $this->createEvent(json_encode($eventRequest)); |
| |
| |
| if(isset($eventResponse->code) && $eventResponse->code == 'Success'){ |
| if(isset($eventResponse->code) && $eventResponse->code == 'Success'){ |
| Log::info('Event triggered successfully Please check mail : '.$email); |
| Log::info('Event triggered successfully Please check mail : '.$email); |
| } |
| } |
| else{ |
| else{ |
| Log::info('Event not triggered'); |
| Log::info('Event not triggered'); |
| Log::info($eventResponse); |
| Log::info($eventResponse); |
| Log::info($eventResponse->code); |
| Log::info($eventResponse->code); |
| Log::info($eventResponse->msg); |
| Log::info($eventResponse->msg); |
| } |
| } |
| |
| |
| } |
| } |
| |
| |
| /* send email for exit tag cases*/ |
| /* send email for exit tag cases*/ |
| |
| |
| |
| |
| $params = NULL; |
| $params = NULL; |
| $result = $api->rest('GET', |
| $result = $api->rest('GET', |
| htmlentities('/admin/customers/search.json?query=email:'.$email), $params); |
| htmlentities('/admin/customers/search.json?query=email:'.$email), $params); |
| |
| |
| if(!isset($result->body->customers[0]) || empty($result->body->customers[0])) { |
| if(!isset($result->body->customers[0]) || empty($result->body->customers[0])) { |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'email not found' |
| 'error' => 'email not found' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $customerId = $result->body->customers[0]->id; |
| $customerId = $result->body->customers[0]->id; |
| $tags = $result->body->customers[0]->tags; |
| $tags = $result->body->customers[0]->tags; |
| |
| |
| $newTags = $tags.",".$exitTag; |
| $newTags = $tags.",".$exitTag; |
| |
| |
| $params = array( |
| $params = array( |
| 'customer' => array( |
| 'customer' => array( |
| 'id' => $customerId, |
| 'id' => $customerId, |
| 'tags' => $newTags |
| 'tags' => $newTags |
| ) |
| ) |
| ); |
| ); |
| Log::info($params); |
| Log::info($params); |
| $lastInsertedId = null; |
| $lastInsertedId = null; |
| |
| |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'qn_id' => $questionID, |
| 'qn_id' => $questionID, |
| 'qn_no' => $questionNo, |
| 'qn_no' => $questionNo, |
| 'response_id' => $responseID, |
| 'response_id' => $responseID, |
| // 'response_text' => null, |
| // 'response_text' => null, |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ] |
| ] |
| ); |
| ); |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $updateQuizUser = DB::table('quiz_user') |
| $updateQuizUser = DB::table('quiz_user') |
| ->where('session_id', $sessionID) |
| ->where('session_id', $sessionID) |
| ->update(['status' => 1]); |
| ->update(['status' => 1]); |
| |
| |
| |
| |
| //try maximum three times in case of unexpected response |
| //try maximum three times in case of unexpected response |
| $try = 1; |
| $try = 1; |
| $retry = false; |
| $retry = false; |
| do{ |
| do{ |
| $result = $api->rest('PUT', '/admin/customers/'.$customerId.'.json', $params); |
| $result = $api->rest('PUT', '/admin/customers/'.$customerId.'.json', $params); |
| if(!isset($result->body->customer->id)){ |
| if(!isset($result->body->customer->id)){ |
| $retry = true; |
| $retry = true; |
| $try++; |
| $try++; |
| } |
| } |
| } while($retry && $try <=3); |
| } while($retry && $try <=3); |
| |
| |
| //return error |
| //return error |
| if(!isset($result->body->customer->id)){ |
| if(!isset($result->body->customer->id)){ |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'No such customer' |
| 'error' => 'No such customer' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| //success |
| //success |
| $returnData = [ |
| $returnData = [ |
| 'success' => 'Successfully updated' |
| 'success' => 'Successfully updated' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(200, "success", $returnData ); |
| return $this->helper->returnData(200, "success", $returnData ); |
| } |
| } |
| } |
| } |
| |
| |
| function getPackCount(Request $request) |
| function getPackCount(Request $request) |
| { |
| { |
| $postData = $request->input(); |
| $postData = $request->input(); |
| |
| |
| if(empty($postData)) { |
| if(empty($postData)) { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Empty parameters' |
| 'error' => 'Empty parameters' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $packRequest['ProductItems'] = array(); |
| $packRequest['ProductItems'] = array(); |
| |
| |
| foreach($postData as $data) { |
| foreach($postData as $data) { |
| $bulkID = isset($data['bulkID']) ? $data['bulkID'] : ''; |
| $bulkID = isset($data['bulkID']) ? $data['bulkID'] : ''; |
| $qty = isset($data['qty']) ? $data['qty'] : ''; |
| $qty = isset($data['qty']) ? $data['qty'] : ''; |
| |
| |
| if(empty($bulkID)) { |
| if(empty($bulkID)) { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Empty parameter value - bulkID' |
| 'error' => 'Empty parameter value - bulkID' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| if(empty($qty)) { |
| if(empty($qty)) { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Empty parameter value - qty' |
| 'error' => 'Empty parameter value - qty' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| if($bulkID == 'vitamin-pack') |
| if($bulkID == 'vitamin-pack') |
| { |
| { |
| continue; |
| continue; |
| } |
| } |
| |
| |
| $tempPackRequest['BulkItem'] = $bulkID; |
| $tempPackRequest['BulkItem'] = $bulkID; |
| $tempPackRequest['Quantity'] = $qty; |
| $tempPackRequest['Quantity'] = $qty; |
| array_push($packRequest['ProductItems'], $tempPackRequest); |
| array_push($packRequest['ProductItems'], $tempPackRequest); |
| |
| |
| } |
| } |
| |
| |
| if(empty($packRequest['ProductItems'])) { |
| if(empty($packRequest['ProductItems'])) { |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Empty ProductItems' |
| 'error' => 'Empty ProductItems' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| |
| |
| $returnASCII = $this->encode_items($packRequest); |
| $returnASCII = $this->encode_items($packRequest); |
| $packDetails = $this->callGetPack($returnASCII); |
| $packDetails = $this->callGetPack($returnASCII); |
| |
| |
| if(strpos($packDetails, 'Packs') !== false){ |
| if(strpos($packDetails, 'Packs') !== false){ |
| $stripData = explode("Packs", $packDetails ); |
| $stripData = explode("Packs", $packDetails ); |
| $packData = $stripData[1]; |
| $packData = $stripData[1]; |
| $packData = ltrim($packData, ":"); |
| $packData = ltrim($packData, ":"); |
| $packData = rtrim($packData, "}"); |
| $packData = rtrim($packData, "}"); |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'Pack' => $packData |
| 'Pack' => $packData |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(200, "success", $returnData ); |
| return $this->helper->returnData(200, "success", $returnData ); |
| |
| |
| } else { |
| } else { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'No Pack details' |
| 'error' => 'No Pack details' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| } |
| } |
| |
| |
| function encode_items($array) |
| function encode_items($array) |
| { |
| { |
| foreach($array as $key => $value) |
| foreach($array as $key => $value) |
| { |
| { |
| if(is_array($value)) |
| if(is_array($value)) |
| { |
| { |
| $array[$key] = $this->encode_items($value); |
| $array[$key] = $this->encode_items($value); |
| } |
| } |
| else |
| else |
| { |
| { |
| $array[$key] = mb_convert_encoding($value, 'ASCII'); |
| $array[$key] = mb_convert_encoding($value, 'ASCII'); |
| } |
| } |
| } |
| } |
| |
| |
| return $array; |
| return $array; |
| } |
| } |
| |
| |
| public function retakeQuiz(Request $request) |
| public function retakeQuiz(Request $request) |
| { |
| { |
| $page = $request->input('page'); |
| $page = $request->input('page'); |
| $sessionID = $request->input('sessionID'); |
| $sessionID = $request->input('sessionID'); |
| $question = $request->input('question'); |
| $question = $request->input('question'); |
| $questionID = $request->input('questionID'); |
| $questionID = $request->input('questionID'); |
| $questionNo = $request->input('questionNo'); |
| $questionNo = $request->input('questionNo'); |
| $responses = $request->input('responses'); |
| $responses = $request->input('responses'); |
| $responseIds = $request->input('responseIDs'); |
| $responseIds = $request->input('responseIDs'); |
| $responseKeys = $request->input('responseKeys'); |
| $responseKeys = $request->input('responseKeys'); |
| $email = $request->input('email'); |
| $email = $request->input('email'); |
| |
| |
| $retakeID = $request->input('retakeID'); |
| $retakeID = $request->input('retakeID'); |
| |
| |
| if($retakeID) |
| if($retakeID) |
| { |
| { |
| $recordDetails = $this->getQuizData($sessionID); |
| $recordDetails = $this->getQuizData($sessionID); |
| |
| |
| if(empty($recordDetails)){ |
| if(empty($recordDetails)){ |
| |
| |
| if(!empty($email)) |
| if(!empty($email)) |
| { |
| { |
| $retakeUserID = DB::table('users')->select('id')->where([ |
| $retakeUserID = DB::table('users')->select('id')->where([ |
| 'user_email' => $email |
| 'user_email' => $email |
| ])->value('id'); |
| ])->value('id'); |
| |
| |
| if(empty($retakeUserID)){ |
| if(empty($retakeUserID)){ |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Could not found existing User details' |
| 'error' => 'Could not found existing User details' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $quizId = DB::table('quiz_user')->insertGetId([ |
| $quizId = DB::table('quiz_user')->insertGetId([ |
| 'user_id' => $retakeUserID, |
| 'user_id' => $retakeUserID, |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ]); |
| ]); |
| |
| |
| } |
| } |
| |
| |
| $recordDetails = $this->getQuizData($retakeID); |
| $recordDetails = $this->getQuizData($retakeID); |
| |
| |
| if(empty($recordDetails)) |
| if(empty($recordDetails)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Could not found existing Quiz details' |
| 'error' => 'Could not found existing Quiz details' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $retakeQuestionData = $recordDetails['SurveyAnswers']['Questions'][$questionID]; |
| $retakeQuestionData = $recordDetails['SurveyAnswers']['Questions'][$questionID]; |
| $retakeResponseData = $recordDetails['SurveyAnswers']['Questions']; |
| $retakeResponseData = $recordDetails['SurveyAnswers']['Questions']; |
| |
| |
| foreach($retakeResponseData as $key => $value){ |
| foreach($retakeResponseData as $key => $value){ |
| |
| |
| $answerIds = null; |
| $answerIds = null; |
| if(isset($value['AnswerID'])){ |
| if(isset($value['AnswerID'])){ |
| $answerIds = $value['AnswerID']; |
| $answerIds = $value['AnswerID']; |
| } |
| } |
| |
| |
| $answerText = $value['AnswerText']; |
| $answerText = $value['AnswerText']; |
| $questNo = $value['QuestionNo']; |
| $questNo = $value['QuestionNo']; |
| $questId = $value['QuestionId']; |
| $questId = $value['QuestionId']; |
| |
| |
| if($key < $questionNo) |
| if($key < $questionNo) |
| { |
| { |
| if(!empty($answerIds)) |
| if(!empty($answerIds)) |
| { |
| { |
| $lastInsertedId = null; |
| $lastInsertedId = null; |
| foreach($answerIds as $answerId) |
| foreach($answerIds as $answerId) |
| { |
| { |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'qn_id' => $questId, |
| 'qn_id' => $questId, |
| 'qn_no' => $questNo, |
| 'qn_no' => $questNo, |
| 'response_id' => $answerId, |
| 'response_id' => $answerId, |
| // 'response_text' => null, |
| // 'response_text' => null, |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ] |
| ] |
| ); |
| ); |
| } |
| } |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| else |
| else |
| { |
| { |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'qn_id' => $questId, |
| 'qn_id' => $questId, |
| 'qn_no' => $questNo, |
| 'qn_no' => $questNo, |
| 'response_id' => null, |
| 'response_id' => null, |
| 'response_text' => $answerText[0], |
| 'response_text' => $answerText[0], |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ] |
| ] |
| ); |
| ); |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| } |
| } |
| |
| |
| if($questionNo == $key) |
| if($questionNo == $key) |
| { |
| { |
| |
| |
| if(!empty($responseIds)) |
| if(!empty($responseIds)) |
| { |
| { |
| $lastInsertedId = null; |
| $lastInsertedId = null; |
| foreach($responseIds as $responseId) |
| foreach($responseIds as $responseId) |
| { |
| { |
| |
| |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'qn_id' => $questionID, |
| 'qn_id' => $questionID, |
| 'qn_no' => $questionNo, |
| 'qn_no' => $questionNo, |
| 'response_id' => $responseId, |
| 'response_id' => $responseId, |
| // 'response_text' => null, |
| // 'response_text' => null, |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ] |
| ] |
| ); |
| ); |
| } |
| } |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| else |
| else |
| { |
| { |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'qn_id' => $questionID, |
| 'qn_id' => $questionID, |
| 'qn_no' => $questionNo, |
| 'qn_no' => $questionNo, |
| 'response_id' => null, |
| 'response_id' => null, |
| 'response_text' => $responses[0], |
| 'response_text' => $responses[0], |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ] |
| ] |
| ); |
| ); |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| |
| |
| } |
| } |
| } |
| } |
| |
| |
| } |
| } |
| } |
| } |
| |
| |
| $questionTextArray = array('31','48'); |
| $questionTextArray = array('31','48'); |
| |
| |
| if(empty($sessionID)) { |
| if(empty($sessionID)) { |
| |
| |
| // error |
| // error |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Invalid Session' |
| 'error' => 'Invalid Session' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| if( $page == 'close') |
| if( $page == 'close') |
| { |
| { |
| $updateQuizUser = DB::table('quiz_user') |
| $updateQuizUser = DB::table('quiz_user') |
| ->where('session_id', $sessionID) |
| ->where('session_id', $sessionID) |
| ->update(['status' => 1]); |
| ->update(['status' => 1]); |
| |
| |
| $other = DB::table('question_responses')->select('id')->where([ |
| $other = DB::table('question_responses')->select('id')->where([ |
| ['qn_id', '=', '12'], |
| ['qn_id', '=', '12'], |
| ['response', '=', 'Other'] |
| ['response', '=', 'Other'] |
| ])->value('id'); |
| ])->value('id'); |
| |
| |
| $userResponse = DB::select(' |
| $userResponse = DB::select(' |
| select |
| select |
| qm.id, |
| qm.id, |
| qm.question, |
| qm.question, |
| qm.question_no, |
| qm.question_no, |
| qr.response, |
| qr.response, |
| qr.response_key, |
| qr.response_key, |
| ur.response_text |
| ur.response_text |
| from |
| from |
| user_responses as ur |
| user_responses as ur |
| join |
| join |
| question_master as qm |
| question_master as qm |
| on |
| on |
| qm.id = ur.qn_id |
| qm.id = ur.qn_id |
| left join |
| left join |
| question_responses as qr |
| question_responses as qr |
| on |
| on |
| ur.response_id = qr.id |
| ur.response_id = qr.id |
| where |
| where |
| session_id = ?', [$sessionID]); |
| session_id = ?', [$sessionID]); |
| |
| |
| $dataResult = []; |
| $dataResult = []; |
| $details = []; |
| $details = []; |
| |
| |
| |
| |
| if(!empty($userResponse)) |
| if(!empty($userResponse)) |
| { |
| { |
| |
| |
| foreach($userResponse as $response) |
| foreach($userResponse as $response) |
| { |
| { |
| $questionId = $response->id ; |
| $questionId = $response->id ; |
| $questionNo = $response->question_no; |
| $questionNo = $response->question_no; |
| $questionText = $response->question; |
| $questionText = $response->question; |
| $answerText = $response->response; |
| $answerText = $response->response; |
| $answerKey = $response->response_key; |
| $answerKey = $response->response_key; |
| $responseText = $response->response_text; |
| $responseText = $response->response_text; |
| |
| |
| if($questionNo == '11' && $responseText != null) |
| if($questionNo == '11' && $responseText != null) |
| { |
| { |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| $details[$questionNo]['AnswerText'][] = $other; |
| $details[$questionNo]['AnswerText'][] = $other; |
| continue; |
| continue; |
| } |
| } |
| |
| |
| if (!isset($details[$questionNo])){ |
| if (!isset($details[$questionNo])){ |
| $details[$questionNo] = []; |
| $details[$questionNo] = []; |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| } |
| } |
| |
| |
| if(in_array($questionNo, $questionTextArray)) |
| if(in_array($questionNo, $questionTextArray)) |
| { |
| { |
| $details[$questionNo]['AnswerText'][] = $answerText; |
| $details[$questionNo]['AnswerText'][] = $answerText; |
| } |
| } |
| else |
| else |
| { |
| { |
| $details[$questionNo]['AnswerText'][] = empty($answerKey) ? $responseText : strval($answerKey); |
| $details[$questionNo]['AnswerText'][] = empty($answerKey) ? $responseText : strval($answerKey); |
| } |
| } |
| } |
| } |
| $questionDetails = array_values($details); |
| $questionDetails = array_values($details); |
| $dataResult['SurveyAnswers']['SessionId'] = $sessionID; |
| $dataResult['SurveyAnswers']['SessionId'] = $sessionID; |
| $dataResult['SurveyAnswers']['Questions'] = $questionDetails; |
| $dataResult['SurveyAnswers']['Questions'] = $questionDetails; |
| } |
| } |
| |
| |
| $returnData = $dataResult; |
| $returnData = $dataResult; |
| $jsonData = json_encode($returnData); |
| $jsonData = json_encode($returnData); |
| Log::info($jsonData); |
| Log::info($jsonData); |
| // CALL to Recommendation API |
| // CALL to Recommendation API |
| $recommendation = $this->callRecommendation($returnData); |
| $recommendation = $this->callRecommendation($returnData); |
| Log:info($recommendation); |
| Log:info($recommendation); |
| $recommendationObj = json_decode($recommendation); |
| $recommendationObj = json_decode($recommendation); |
| if (isset($recommendationObj->Result)) { |
| if (isset($recommendationObj->Result)) { |
| $recommendationObj = $recommendationObj->Result; |
| $recommendationObj = $recommendationObj->Result; |
| } |
| } |
| |
| |
| if(isset($recommendationObj->Recommendation) && !empty($recommendationObj->Recommendation)) |
| if(isset($recommendationObj->Recommendation) && !empty($recommendationObj->Recommendation)) |
| { |
| { |
| |
| |
| $lastInsertedId = DB::table('recommendations')->insertGetId( |
| $lastInsertedId = DB::table('recommendations')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'email' => isset($recommendationObj->Email) ? $recommendationObj->Email : '', |
| 'email' => isset($recommendationObj->Email) ? $recommendationObj->Email : '', |
| 'first_name' => isset($recommendationObj->Firstname) ? $recommendationObj->Firstname : '', |
| 'first_name' => isset($recommendationObj->Firstname) ? $recommendationObj->Firstname : '', |
| 'sex_profile' => $recommendationObj->SexProfile, |
| 'sex_profile' => $recommendationObj->SexProfile, |
| 'sex' => $recommendationObj->Sex, |
| 'sex' => $recommendationObj->Sex, |
| 'age' => $recommendationObj->Age, |
| 'age' => $recommendationObj->Age, |
| 'zipcode' => $recommendationObj->ZipCode, |
| 'zipcode' => $recommendationObj->ZipCode, |
| 'latitude' => $recommendationObj->Latitude, |
| 'latitude' => $recommendationObj->Latitude, |
| 'longitude' => $recommendationObj->Longitude, |
| 'longitude' => $recommendationObj->Longitude, |
| 'city' => $recommendationObj->City, |
| 'city' => $recommendationObj->City, |
| 'state' => $recommendationObj->State, |
| 'state' => $recommendationObj->State, |
| 'allergens' => json_encode($recommendationObj->Allergens), |
| 'allergens' => json_encode($recommendationObj->Allergens), |
| 'deficiencies' => json_encode($recommendationObj->Deficiencies), |
| 'deficiencies' => json_encode($recommendationObj->Deficiencies), |
| 'recommendation' => json_encode($recommendationObj->Recommendation), |
| 'recommendation' => json_encode($recommendationObj->Recommendation), |
| 'buzz_words' => json_encode($recommendationObj->BuzzWordsTips), |
| 'buzz_words' => json_encode($recommendationObj->BuzzWordsTips), |
| 'north37' => $recommendationObj->North37, |
| 'north37' => $recommendationObj->North37, |
| 'prostate_interest' => $recommendationObj->ProstateInterest, |
| 'prostate_interest' => $recommendationObj->ProstateInterest, |
| 'prenatal_interest' => $recommendationObj->PrenatalInterest, |
| 'prenatal_interest' => $recommendationObj->PrenatalInterest, |
| 'postnatal_interest' => $recommendationObj->PostnatalInterest, |
| 'postnatal_interest' => $recommendationObj->PostnatalInterest, |
| 'healthy_interest' => $recommendationObj->HealthyMentrualCycleInterest, |
| 'healthy_interest' => $recommendationObj->HealthyMentrualCycleInterest, |
| 'perimenopause_interest' => $recommendationObj->PerimenopauseInterest, |
| 'perimenopause_interest' => $recommendationObj->PerimenopauseInterest, |
| 'menopause_interest' => $recommendationObj->MenopauseInterest, |
| 'menopause_interest' => $recommendationObj->MenopauseInterest, |
| 'planning_pregnancy' => $recommendationObj->PlanningPregnancy, |
| 'planning_pregnancy' => $recommendationObj->PlanningPregnancy, |
| 'pregnant' => $recommendationObj->Pregnant, |
| 'pregnant' => $recommendationObj->Pregnant, |
| 'breastfeeding' => $recommendationObj->Breastfeeding, |
| 'breastfeeding' => $recommendationObj->Breastfeeding, |
| 'taking_medication' => $recommendationObj->TakingMedication, |
| 'taking_medication' => $recommendationObj->TakingMedication, |
| 'blood_clotting_issue' => $recommendationObj->BloodClottingIssue, |
| 'blood_clotting_issue' => $recommendationObj->BloodClottingIssue, |
| |
| |
| ] |
| ] |
| ); |
| ); |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| // For the tagging purpose |
| // For the tagging purpose |
| $questionResponse = DB::select(' |
| $questionResponse = DB::select(' |
| select |
| select |
| qm.id, |
| qm.id, |
| qm.question, |
| qm.question, |
| qr.response |
| qr.response |
| from |
| from |
| user_responses as ur |
| user_responses as ur |
| join |
| join |
| question_master as qm |
| question_master as qm |
| on |
| on |
| qm.id = ur.qn_id |
| qm.id = ur.qn_id |
| left join |
| left join |
| question_responses as qr |
| question_responses as qr |
| on |
| on |
| ur.response_id = qr.id |
| ur.response_id = qr.id |
| where |
| where |
| session_id = ? and ur.qn_id in (14,32)', [$sessionID]); |
| session_id = ? and ur.qn_id in (14,32)', [$sessionID]); |
| |
| |
| if(!empty($questionResponse)) |
| if(!empty($questionResponse)) |
| { |
| { |
| $tagQuestion = array(); |
| $tagQuestion = array(); |
| foreach($questionResponse as $qResponse) |
| foreach($questionResponse as $qResponse) |
| { |
| { |
| if(!isset($tagQuestion[$qResponse->id])) |
| if(!isset($tagQuestion[$qResponse->id])) |
| { |
| { |
| $tagQuestion[$qResponse->id][] = $qResponse->response; |
| $tagQuestion[$qResponse->id][] = $qResponse->response; |
| } |
| } |
| else{ |
| else{ |
| $tagQuestion[$qResponse->id][] = $qResponse->response; |
| $tagQuestion[$qResponse->id][] = $qResponse->response; |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| |
| $reasonProduct = $recommendationObj->Recommendation->ReasonsForProduct; |
| $reasonProduct = $recommendationObj->Recommendation->ReasonsForProduct; |
| |
| |
| if(!empty($reasonProduct)){ |
| if(!empty($reasonProduct)){ |
| $reason = array(); |
| $reason = array(); |
| $recommendationObj = json_decode($recommendation); |
| $recommendationObj = json_decode($recommendation); |
| if (isset($recommendationObj->Result)) { |
| if (isset($recommendationObj->Result)) { |
| $recommendationObj = $recommendationObj->Result; |
| $recommendationObj = $recommendationObj->Result; |
| } |
| } |
| foreach($reasonProduct as $value){ |
| foreach($reasonProduct as $value){ |
| $stripValue = preg_replace('/[^a-zA-Z0-9-;.,+"()%\/(°) ]/', '', $value); |
| $stripValue = preg_replace('/[^a-zA-Z0-9-;.,+"()%\/(°) ]/', '', $value); |
| array_push($reason, $stripValue); |
| array_push($reason, $stripValue); |
| } |
| } |
| $recommendationObj->Recommendation->ReasonsForProduct = $reason; |
| $recommendationObj->Recommendation->ReasonsForProduct = $reason; |
| } |
| } |
| |
| |
| // Tag User |
| // Tag User |
| $tagUser = dispatch(new TagUserJob($recommendation, $tagQuestion, $sessionID)); |
| $tagUser = dispatch(new TagUserJob($recommendation, $tagQuestion, $sessionID)); |
| |
| |
| // return $this->helper->returnData(200, "success", json_decode($recommendation) ); |
| // return $this->helper->returnData(200, "success", json_decode($recommendation) ); |
| return $this->helper->returnData(200, "success", $recommendationObj ); |
| return $this->helper->returnData(200, "success", $recommendationObj ); |
| |
| |
| } |
| } |
| else{ |
| else{ |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Empty Recommendation' |
| 'error' => 'Empty Recommendation' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| } |
| } |
| |
| |
| if(empty($questionID)) { |
| if(empty($questionID)) { |
| // error |
| // error |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Quiz not found' |
| 'error' => 'Quiz not found' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| // To delete the already existing question and update the new record |
| // To delete the already existing question and update the new record |
| $deleteQuizDetails = DB::table('user_responses') |
| $deleteQuizDetails = DB::table('user_responses') |
| ->where([ |
| ->where([ |
| ['session_id', '=', $sessionID], |
| ['session_id', '=', $sessionID], |
| ['qn_id', '>=', $questionID] |
| ['qn_id', '>=', $questionID] |
| ])->delete(); |
| ])->delete(); |
| |
| |
| if(!empty($responseIds)) |
| if(!empty($responseIds)) |
| { |
| { |
| $lastInsertedId = null; |
| $lastInsertedId = null; |
| foreach($responseIds as $responseId) |
| foreach($responseIds as $responseId) |
| { |
| { |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'qn_id' => $questionID, |
| 'qn_id' => $questionID, |
| 'qn_no' => $questionNo, |
| 'qn_no' => $questionNo, |
| 'response_id' => $responseId, |
| 'response_id' => $responseId, |
| // 'response_text' => null, |
| // 'response_text' => null, |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ] |
| ] |
| ); |
| ); |
| } |
| } |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| else |
| else |
| { |
| { |
| |
| |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'qn_id' => $questionID, |
| 'qn_id' => $questionID, |
| 'qn_no' => $questionNo, |
| 'qn_no' => $questionNo, |
| 'response_id' => null, |
| 'response_id' => null, |
| 'response_text' => $responses[0], |
| 'response_text' => $responses[0], |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ] |
| ] |
| ); |
| ); |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| |
| |
| if($page == 'email') |
| if($page == 'email') |
| { |
| { |
| $email = isset($responses[0]) ? $responses[0] : ''; |
| $email = isset($responses[0]) ? $responses[0] : ''; |
| |
| |
| if(empty($email)) |
| if(empty($email)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Email is empty' |
| 'error' => 'Email is empty' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $user = DB::table('users')->where('user_email', '=', $email)->get(); |
| $user = DB::table('users')->where('user_email', '=', $email)->get(); |
| |
| |
| if(!isset($user[0]->user_email)) |
| if(!isset($user[0]->user_email)) |
| { |
| { |
| // create |
| // create |
| $userName = ''; |
| $userName = ''; |
| $userId = DB::table('users')->insertGetId([ |
| $userId = DB::table('users')->insertGetId([ |
| 'user_email' => $email, |
| 'user_email' => $email, |
| 'status' => 1 |
| 'status' => 1 |
| ]); |
| ]); |
| |
| |
| $quizId = DB::table('quiz_user')->select('id')->where([ |
| $quizId = DB::table('quiz_user')->select('id')->where([ |
| 'session_id' => $sessionID |
| 'session_id' => $sessionID |
| ])->value('id'); |
| ])->value('id'); |
| |
| |
| if($quizId) { |
| if($quizId) { |
| |
| |
| $updateQuizUser = DB::table('quiz_user')->where(['id' => $quizId]) |
| $updateQuizUser = DB::table('quiz_user')->where(['id' => $quizId]) |
| ->update(['user_id' => $userId]); |
| ->update(['user_id' => $userId]); |
| |
| |
| } else { |
| } else { |
| $quizId = DB::table('quiz_user')->insertGetId([ |
| $quizId = DB::table('quiz_user')->insertGetId([ |
| 'user_id' => $userId, |
| 'user_id' => $userId, |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ]); |
| ]); |
| } |
| } |
| |
| |
| |
| |
| $userNameResponse = DB::table('user_responses')->where([ |
| $userNameResponse = DB::table('user_responses')->where([ |
| ['session_id', '=', $sessionID], |
| ['session_id', '=', $sessionID], |
| ['qn_id', '=', '2'] |
| ['qn_id', '=', '2'] |
| ])->get(); |
| ])->get(); |
| |
| |
| if($userNameResponse[0]) |
| if($userNameResponse[0]) |
| { |
| { |
| $userName = $userNameResponse[0]->response_text; |
| $userName = $userNameResponse[0]->response_text; |
| } |
| } |
| |
| |
| // Create customer in Shopify |
| // Create customer in Shopify |
| $result = dispatch(new CreateShopifyCustomerJob($email, $userName)); |
| $result = dispatch(new CreateShopifyCustomerJob($email, $userName)); |
| } else { |
| } else { |
| $userId = $user[0]->id; |
| $userId = $user[0]->id; |
| $quizId = DB::table('quiz_user')->select('id')->where([ |
| $quizId = DB::table('quiz_user')->select('id')->where([ |
| 'session_id' => $sessionID |
| 'session_id' => $sessionID |
| ])->value('id'); |
| ])->value('id'); |
| |
| |
| if($quizId) { |
| if($quizId) { |
| |
| |
| $updateQuizUser = DB::table('quiz_user')->where(['id' => $quizId]) |
| $updateQuizUser = DB::table('quiz_user')->where(['id' => $quizId]) |
| ->update(['user_id' => $userId]); |
| ->update(['user_id' => $userId]); |
| |
| |
| } else { |
| } else { |
| $quizId = DB::table('quiz_user')->insertGetId([ |
| $quizId = DB::table('quiz_user')->insertGetId([ |
| 'user_id' => $userId, |
| 'user_id' => $userId, |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ]); |
| ]); |
| } |
| } |
| |
| |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| return $this->helper->returnData(200, "success", $returnData ); |
| return $this->helper->returnData(200, "success", $returnData ); |
| |
| |
| } |
| } |
| |
| |
| public function newRetakeQuiz(Request $request) |
| public function newRetakeQuiz(Request $request) |
| { |
| { |
| $page = $request->input('page'); |
| $page = $request->input('page'); |
| $sessionID = $request->input('sessionID'); |
| $sessionID = $request->input('sessionID'); |
| $question = $request->input('question'); |
| $question = $request->input('question'); |
| $questionID = $request->input('questionID'); |
| $questionID = $request->input('questionID'); |
| $questionNo = $request->input('questionNo'); |
| $questionNo = $request->input('questionNo'); |
| $responses = $request->input('responses'); |
| $responses = $request->input('responses'); |
| $responseIds = $request->input('responseIDs'); |
| $responseIds = $request->input('responseIDs'); |
| $responseKeys = $request->input('responseKeys'); |
| $responseKeys = $request->input('responseKeys'); |
| $email = $request->input('email'); |
| $email = $request->input('email'); |
| |
| |
| $retakeID = $request->input('retakeID'); |
| $retakeID = $request->input('retakeID'); |
| |
| |
| if($retakeID) |
| if($retakeID) |
| { |
| { |
| $recordDetails = $this->getQuizData($sessionID); |
| $recordDetails = $this->getQuizData($sessionID); |
| |
| |
| if(empty($recordDetails)){ |
| if(empty($recordDetails)){ |
| |
| |
| if(!empty($email)) |
| if(!empty($email)) |
| { |
| { |
| $retakeUserID = DB::table('users')->select('id')->where([ |
| $retakeUserID = DB::table('users')->select('id')->where([ |
| 'user_email' => $email |
| 'user_email' => $email |
| ])->value('id'); |
| ])->value('id'); |
| |
| |
| if(empty($retakeUserID)){ |
| if(empty($retakeUserID)){ |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Could not found existing User details' |
| 'error' => 'Could not found existing User details' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $quizId = DB::table('quiz_user')->insertGetId([ |
| $quizId = DB::table('quiz_user')->insertGetId([ |
| 'user_id' => $retakeUserID, |
| 'user_id' => $retakeUserID, |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ]); |
| ]); |
| |
| |
| } |
| } |
| |
| |
| $recordDetails = $this->getQuizData($retakeID); |
| $recordDetails = $this->getQuizData($retakeID); |
| |
| |
| if(empty($recordDetails)) |
| if(empty($recordDetails)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Could not found existing Quiz details' |
| 'error' => 'Could not found existing Quiz details' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $retakeQuestionData = $recordDetails['SurveyAnswers']['Questions'][$questionID]; |
| $retakeQuestionData = $recordDetails['SurveyAnswers']['Questions'][$questionID]; |
| $retakeResponseData = $recordDetails['SurveyAnswers']['Questions']; |
| $retakeResponseData = $recordDetails['SurveyAnswers']['Questions']; |
| |
| |
| foreach($retakeResponseData as $key => $value){ |
| foreach($retakeResponseData as $key => $value){ |
| |
| |
| $answerIds = null; |
| $answerIds = null; |
| if(isset($value['AnswerID'])){ |
| if(isset($value['AnswerID'])){ |
| $answerIds = $value['AnswerID']; |
| $answerIds = $value['AnswerID']; |
| } |
| } |
| |
| |
| $answerText = $value['AnswerText']; |
| $answerText = $value['AnswerText']; |
| $questNo = $value['QuestionNo']; |
| $questNo = $value['QuestionNo']; |
| $questId = $value['QuestionId']; |
| $questId = $value['QuestionId']; |
| |
| |
| if($key != $questionNo) |
| if($key != $questionNo) |
| { |
| { |
| if(!empty($answerIds)) |
| if(!empty($answerIds)) |
| { |
| { |
| $lastInsertedId = null; |
| $lastInsertedId = null; |
| foreach($answerIds as $answerId) |
| foreach($answerIds as $answerId) |
| { |
| { |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'qn_id' => $questId, |
| 'qn_id' => $questId, |
| 'qn_no' => $questNo, |
| 'qn_no' => $questNo, |
| 'response_id' => $answerId, |
| 'response_id' => $answerId, |
| // 'response_text' => null, |
| // 'response_text' => null, |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ] |
| ] |
| ); |
| ); |
| } |
| } |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| else |
| else |
| { |
| { |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'qn_id' => $questId, |
| 'qn_id' => $questId, |
| 'qn_no' => $questNo, |
| 'qn_no' => $questNo, |
| 'response_id' => null, |
| 'response_id' => null, |
| 'response_text' => $answerText[0], |
| 'response_text' => $answerText[0], |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ] |
| ] |
| ); |
| ); |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| } |
| } |
| |
| |
| if($questionNo == $key) |
| if($questionNo == $key) |
| { |
| { |
| |
| |
| if(!empty($responseIds)) |
| if(!empty($responseIds)) |
| { |
| { |
| $lastInsertedId = null; |
| $lastInsertedId = null; |
| foreach($responseIds as $responseId) |
| foreach($responseIds as $responseId) |
| { |
| { |
| |
| |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'qn_id' => $questionID, |
| 'qn_id' => $questionID, |
| 'qn_no' => $questionNo, |
| 'qn_no' => $questionNo, |
| 'response_id' => $responseId, |
| 'response_id' => $responseId, |
| // 'response_text' => null, |
| // 'response_text' => null, |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ] |
| ] |
| ); |
| ); |
| } |
| } |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| else |
| else |
| { |
| { |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| $lastInsertedId = DB::table('user_responses')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'qn_id' => $questionID, |
| 'qn_id' => $questionID, |
| 'qn_no' => $questionNo, |
| 'qn_no' => $questionNo, |
| 'response_id' => null, |
| 'response_id' => null, |
| 'response_text' => $responses[0], |
| 'response_text' => $responses[0], |
| 'deleted' => 0, |
| 'deleted' => 0, |
| 'status' => 0 |
| 'status' => 0 |
| ] |
| ] |
| ); |
| ); |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| } |
| } |
| |
| |
| } |
| } |
| } |
| } |
| |
| |
| } |
| } |
| } |
| } |
| |
| |
| $questionTextArray = array('31','48'); |
| $questionTextArray = array('31','48'); |
| |
| |
| if(empty($sessionID)) { |
| if(empty($sessionID)) { |
| |
| |
| // error |
| // error |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Invalid Session' |
| 'error' => 'Invalid Session' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| if( $page == 'close') |
| if( $page == 'close') |
| { |
| { |
| $updateQuizUser = DB::table('quiz_user') |
| $updateQuizUser = DB::table('quiz_user') |
| ->where('session_id', $sessionID) |
| ->where('session_id', $sessionID) |
| ->update(['status' => 1]); |
| ->update(['status' => 1]); |
| |
| |
| $other = DB::table('question_responses')->select('id')->where([ |
| $other = DB::table('question_responses')->select('id')->where([ |
| ['qn_id', '=', '12'], |
| ['qn_id', '=', '12'], |
| ['response', '=', 'Other'] |
| ['response', '=', 'Other'] |
| ])->value('id'); |
| ])->value('id'); |
| |
| |
| $userResponse = DB::select(' |
| $userResponse = DB::select(' |
| select |
| select |
| qm.id, |
| qm.id, |
| qm.question, |
| qm.question, |
| qm.question_no, |
| qm.question_no, |
| qr.response, |
| qr.response, |
| qr.response_key, |
| qr.response_key, |
| ur.response_text |
| ur.response_text |
| from |
| from |
| user_responses as ur |
| user_responses as ur |
| join |
| join |
| question_master as qm |
| question_master as qm |
| on |
| on |
| qm.id = ur.qn_id |
| qm.id = ur.qn_id |
| left join |
| left join |
| question_responses as qr |
| question_responses as qr |
| on |
| on |
| ur.response_id = qr.id |
| ur.response_id = qr.id |
| where |
| where |
| session_id = ?', [$sessionID]); |
| session_id = ?', [$sessionID]); |
| |
| |
| $dataResult = []; |
| $dataResult = []; |
| $details = []; |
| $details = []; |
| |
| |
| |
| |
| if(!empty($userResponse)) |
| if(!empty($userResponse)) |
| { |
| { |
| |
| |
| foreach($userResponse as $response) |
| foreach($userResponse as $response) |
| { |
| { |
| $questionId = $response->id ; |
| $questionId = $response->id ; |
| $questionNo = $response->question_no; |
| $questionNo = $response->question_no; |
| $questionText = $response->question; |
| $questionText = $response->question; |
| $answerText = $response->response; |
| $answerText = $response->response; |
| $answerKey = $response->response_key; |
| $answerKey = $response->response_key; |
| $responseText = $response->response_text; |
| $responseText = $response->response_text; |
| |
| |
| if($questionNo == '11' && $responseText != null) |
| if($questionNo == '11' && $responseText != null) |
| { |
| { |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| $details[$questionNo]['AnswerText'][] = $other; |
| $details[$questionNo]['AnswerText'][] = $other; |
| continue; |
| continue; |
| } |
| } |
| |
| |
| if (!isset($details[$questionNo])){ |
| if (!isset($details[$questionNo])){ |
| $details[$questionNo] = []; |
| $details[$questionNo] = []; |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| } |
| } |
| |
| |
| if(in_array($questionNo, $questionTextArray)) |
| if(in_array($questionNo, $questionTextArray)) |
| { |
| { |
| $details[$questionNo]['AnswerText'][] = $answerText; |
| $details[$questionNo]['AnswerText'][] = $answerText; |
| } |
| } |
| else |
| else |
| { |
| { |
| $details[$questionNo]['AnswerText'][] = empty($answerKey) ? $responseText : strval($answerKey); |
| $details[$questionNo]['AnswerText'][] = empty($answerKey) ? $responseText : strval($answerKey); |
| } |
| } |
| } |
| } |
| $questionDetails = array_values($details); |
| $questionDetails = array_values($details); |
| $dataResult['SurveyAnswers']['SessionId'] = $sessionID; |
| $dataResult['SurveyAnswers']['SessionId'] = $sessionID; |
| $dataResult['SurveyAnswers']['Questions'] = $questionDetails; |
| $dataResult['SurveyAnswers']['Questions'] = $questionDetails; |
| } |
| } |
| |
| |
| $returnData = $dataResult; |
| $returnData = $dataResult; |
| $jsonData = json_encode($returnData); |
| $jsonData = json_encode($returnData); |
| Log::info($jsonData); |
| Log::info($jsonData); |
| // CALL to Recommendation API |
| // CALL to Recommendation API |
| $recommendation = $this->callRecommendation($returnData); |
| $recommendation = $this->callRecommendation($returnData); |
| Log:info($recommendation); |
| Log:info($recommendation); |
| $recommendationObj = json_decode($recommendation); |
| $recommendationObj = json_decode($recommendation); |
| if (isset($recommendationObj->Result)) { |
| if (isset($recommendationObj->Result)) { |
| $recommendationObj = $recommendationObj->Result; |
| $recommendationObj = $recommendationObj->Result; |
| } |
| } |
| |
| |
| if(isset($recommendationObj->Recommendation) && !empty($recommendationObj->Recommendation)) |
| if(isset($recommendationObj->Recommendation) && !empty($recommendationObj->Recommendation)) |
| { |
| { |
| |
| |
| $lastInsertedId = DB::table('recommendations')->insertGetId( |
| $lastInsertedId = DB::table('recommendations')->insertGetId( |
| [ |
| [ |
| 'session_id' => $sessionID, |
| 'session_id' => $sessionID, |
| 'email' => isset($recommendationObj->Email) ? $recommendationObj->Email : '', |
| 'email' => isset($recommendationObj->Email) ? $recommendationObj->Email : '', |
| 'first_name' => isset($recommendationObj->Firstname) ? $recommendationObj->Firstname : '', |
| 'first_name' => isset($recommendationObj->Firstname) ? $recommendationObj->Firstname : '', |
| 'sex_profile' => $recommendationObj->SexProfile, |
| 'sex_profile' => $recommendationObj->SexProfile, |
| 'sex' => $recommendationObj->Sex, |
| 'sex' => $recommendationObj->Sex, |
| 'age' => $recommendationObj->Age, |
| 'age' => $recommendationObj->Age, |
| 'zipcode' => $recommendationObj->ZipCode, |
| 'zipcode' => $recommendationObj->ZipCode, |
| 'latitude' => $recommendationObj->Latitude, |
| 'latitude' => $recommendationObj->Latitude, |
| 'longitude' => $recommendationObj->Longitude, |
| 'longitude' => $recommendationObj->Longitude, |
| 'city' => $recommendationObj->City, |
| 'city' => $recommendationObj->City, |
| 'state' => $recommendationObj->State, |
| 'state' => $recommendationObj->State, |
| 'allergens' => json_encode($recommendationObj->Allergens), |
| 'allergens' => json_encode($recommendationObj->Allergens), |
| 'deficiencies' => json_encode($recommendationObj->Deficiencies), |
| 'deficiencies' => json_encode($recommendationObj->Deficiencies), |
| 'recommendation' => json_encode($recommendationObj->Recommendation), |
| 'recommendation' => json_encode($recommendationObj->Recommendation), |
| 'buzz_words' => json_encode($recommendationObj->BuzzWordsTips), |
| 'buzz_words' => json_encode($recommendationObj->BuzzWordsTips), |
| 'north37' => $recommendationObj->North37, |
| 'north37' => $recommendationObj->North37, |
| 'prostate_interest' => $recommendationObj->ProstateInterest, |
| 'prostate_interest' => $recommendationObj->ProstateInterest, |
| 'prenatal_interest' => $recommendationObj->PrenatalInterest, |
| 'prenatal_interest' => $recommendationObj->PrenatalInterest, |
| 'postnatal_interest' => $recommendationObj->PostnatalInterest, |
| 'postnatal_interest' => $recommendationObj->PostnatalInterest, |
| 'healthy_interest' => $recommendationObj->HealthyMentrualCycleInterest, |
| 'healthy_interest' => $recommendationObj->HealthyMentrualCycleInterest, |
| 'perimenopause_interest' => $recommendationObj->PerimenopauseInterest, |
| 'perimenopause_interest' => $recommendationObj->PerimenopauseInterest, |
| 'menopause_interest' => $recommendationObj->MenopauseInterest, |
| 'menopause_interest' => $recommendationObj->MenopauseInterest, |
| 'planning_pregnancy' => $recommendationObj->PlanningPregnancy, |
| 'planning_pregnancy' => $recommendationObj->PlanningPregnancy, |
| 'pregnant' => $recommendationObj->Pregnant, |
| 'pregnant' => $recommendationObj->Pregnant, |
| 'breastfeeding' => $recommendationObj->Breastfeeding, |
| 'breastfeeding' => $recommendationObj->Breastfeeding, |
| 'taking_medication' => $recommendationObj->TakingMedication, |
| 'taking_medication' => $recommendationObj->TakingMedication, |
| 'blood_clotting_issue' => $recommendationObj->BloodClottingIssue, |
| 'blood_clotting_issue' => $recommendationObj->BloodClottingIssue, |
| |
| |
| ] |
| ] |
| ); |
| ); |
| |
| |
| if(empty($lastInsertedId)) |
| if(empty($lastInsertedId)) |
| { |
| { |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Insertion Failed' |
| 'error' => 'Insertion Failed' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| // For the tagging purpose |
| // For the tagging purpose |
| $questionResponse = DB::select(' |
| $questionResponse = DB::select(' |
| select |
| select |
| qm.id, |
| qm.id, |
| qm.question, |
| qm.question, |
| qr.response |
| qr.response |
| from |
| from |
| user_responses as ur |
| user_responses as ur |
| join |
| join |
| question_master as qm |
| question_master as qm |
| on |
| on |
| qm.id = ur.qn_id |
| qm.id = ur.qn_id |
| left join |
| left join |
| question_responses as qr |
| question_responses as qr |
| on |
| on |
| ur.response_id = qr.id |
| ur.response_id = qr.id |
| where |
| where |
| session_id = ? and ur.qn_id in (14,32)', [$sessionID]); |
| session_id = ? and ur.qn_id in (14,32)', [$sessionID]); |
| |
| |
| if(!empty($questionResponse)) |
| if(!empty($questionResponse)) |
| { |
| { |
| $tagQuestion = array(); |
| $tagQuestion = array(); |
| foreach($questionResponse as $qResponse) |
| foreach($questionResponse as $qResponse) |
| { |
| { |
| if(!isset($tagQuestion[$qResponse->id])) |
| if(!isset($tagQuestion[$qResponse->id])) |
| { |
| { |
| $tagQuestion[$qResponse->id][] = $qResponse->response; |
| $tagQuestion[$qResponse->id][] = $qResponse->response; |
| } |
| } |
| else{ |
| else{ |
| $tagQuestion[$qResponse->id][] = $qResponse->response; |
| $tagQuestion[$qResponse->id][] = $qResponse->response; |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| |
| // Tag User |
| // Tag User |
| $tagUser = dispatch(new TagUserJob($recommendation, $tagQuestion, $sessionID)); |
| $tagUser = dispatch(new TagUserJob($recommendation, $tagQuestion, $sessionID)); |
| |
| |
| return $this->helper->returnData(200, "success", json_decode($recommendation) ); |
| return $this->helper->returnData(200, "success", json_decode($recommendation) ); |
| |
| |
| } |
| } |
| else{ |
| else{ |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Empty Recommendation' |
| 'error' => 'Empty Recommendation' |
| ]; |
| ]; |
| |
| |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| } |
| } |
| } |
| } |
| |
| |
| function getQuizData($sessionID){ |
| function getQuizData($sessionID){ |
| |
| |
| if(empty($sessionID)) |
| if(empty($sessionID)) |
| { |
| { |
| return null; |
| return null; |
| } |
| } |
| |
| |
| $dataResult = array(); |
| $dataResult = array(); |
| |
| |
| $results = DB::select(' |
| $results = DB::select(' |
| select |
| select |
| qm.id, |
| qm.id, |
| qm.question_no, |
| qm.question_no, |
| qm.question, |
| qm.question, |
| IFNULL(qr.response,ur.response_text) as response, |
| IFNULL(qr.response,ur.response_text) as response, |
| qr.id as response_id, |
| qr.id as response_id, |
| qm.page |
| qm.page |
| from |
| from |
| user_responses as ur |
| user_responses as ur |
| join |
| join |
| question_master as qm |
| question_master as qm |
| on |
| on |
| qm.id = ur.qn_id |
| qm.id = ur.qn_id |
| left join |
| left join |
| question_responses as qr |
| question_responses as qr |
| on |
| on |
| ur.response_id = qr.id |
| ur.response_id = qr.id |
| where |
| where |
| session_id = ?', [$sessionID]); |
| session_id = ?', [$sessionID]); |
| |
| |
| if(empty($results)) |
| if(empty($results)) |
| { |
| { |
| return null; |
| return null; |
| } |
| } |
| |
| |
| foreach($results as $result) |
| foreach($results as $result) |
| { |
| { |
| $questionId = $result->id; |
| $questionId = $result->id; |
| $questionNo = $result->question_no; |
| $questionNo = $result->question_no; |
| $questionText = $result->question; |
| $questionText = $result->question; |
| $answerText = $result->response; |
| $answerText = $result->response; |
| $questionHandle = $result->page; |
| $questionHandle = $result->page; |
| $answerID = $result->response_id; |
| $answerID = $result->response_id; |
| |
| |
| $temp = []; |
| $temp = []; |
| |
| |
| if (!isset($details[$questionNo])){ |
| if (!isset($details[$questionNo])){ |
| $details[$questionNo] = []; |
| $details[$questionNo] = []; |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| $details[$questionNo]['QuestionNo'] = $questionNo; |
| $details[$questionNo]['QuestionId'] = $questionId; |
| $details[$questionNo]['QuestionId'] = $questionId; |
| $details[$questionNo]['QuestionText'] = $questionText; |
| $details[$questionNo]['QuestionText'] = $questionText; |
| $details[$questionNo]['QuestionHandle'] = $questionHandle; |
| $details[$questionNo]['QuestionHandle'] = $questionHandle; |
| } |
| } |
| |
| |
| $details[$questionNo]['AnswerText'][] = $answerText; |
| $details[$questionNo]['AnswerText'][] = $answerText; |
| |
| |
| if(!empty($answerID)){ |
| if(!empty($answerID)){ |
| $details[$questionNo]['AnswerID'][] = $answerID; |
| $details[$questionNo]['AnswerID'][] = $answerID; |
| } |
| } |
| |
| |
| } |
| } |
| |
| |
| $questionDetails['Questions'] = $details; |
| $questionDetails['Questions'] = $details; |
| $dataResult['SessionId'] = $sessionID; |
| $dataResult['SessionId'] = $sessionID; |
| $dataResult['SurveyAnswers'] = $questionDetails; |
| $dataResult['SurveyAnswers'] = $questionDetails; |
| |
| |
| return $dataResult; |
| return $dataResult; |
| } |
| } |
| |
| |
| function createEvent($data){ |
| function createEvent($data){ |
| |
| |
| $path = $this->iterableUrl.'events/track'; |
| $path = $this->iterableUrl.'events/track'; |
| $method = 'POST'; |
| $method = 'POST'; |
| $response = $this->call($method, $path, $data); |
| $response = $this->call($method, $path, $data); |
| return json_decode($response); |
| return json_decode($response); |
| } |
| } |
| |
| |
| function triggerEmailTarget($data){ |
| function triggerEmailTarget($data){ |
| |
| |
| $path = $this->iterableUrl.'email/target'; |
| $path = $this->iterableUrl.'email/target'; |
| $method = 'POST'; |
| $method = 'POST'; |
| $response = $this->call($method, $path, $data); |
| $response = $this->call($method, $path, $data); |
| return json_decode($response); |
| return json_decode($response); |
| } |
| } |
| |
| |
| function call($method, $path, $data = []) { |
| function call($method, $path, $data = []) { |
| |
| |
| $curl = curl_init(); |
| $curl = curl_init(); |
| curl_setopt($curl, CURLOPT_URL, $path); |
| curl_setopt($curl, CURLOPT_URL, $path); |
| curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); |
| curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); |
| curl_setopt($curl, CURLOPT_ENCODING, ''); |
| curl_setopt($curl, CURLOPT_ENCODING, ''); |
| curl_setopt($curl, CURLOPT_MAXREDIRS, 10); |
| curl_setopt($curl, CURLOPT_MAXREDIRS, 10); |
| curl_setopt($curl, CURLOPT_TIMEOUT, 30); |
| curl_setopt($curl, CURLOPT_TIMEOUT, 30); |
| curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); |
| curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); |
| curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); |
| curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); |
| curl_setopt($curl, CURLOPT_HTTPHEADER, array( |
| curl_setopt($curl, CURLOPT_HTTPHEADER, array( |
| "cache-control: no-cache", |
| "cache-control: no-cache", |
| "content-type: application/json", |
| "content-type: application/json", |
| "api_key: ".$this->iterableApiKey |
| "api_key: ".$this->iterableApiKey |
| )); |
| )); |
| |
| |
| if ($method !== 'GET') { |
| if ($method !== 'GET') { |
| |
| |
| curl_setopt($curl, CURLOPT_POSTFIELDS, $data); |
| curl_setopt($curl, CURLOPT_POSTFIELDS, $data); |
| } |
| } |
| $response = curl_exec($curl); |
| $response = curl_exec($curl); |
| return $response; |
| return $response; |
| |
| |
| } |
| } |
| |
| |
| } |
| } |
| |
| |
| class ArrayValue implements JsonSerializable { |
| class ArrayValue implements JsonSerializable { |
| public function __construct(array $array) { |
| public function __construct(array $array) { |
| $this->array = $array; |
| $this->array = $array; |
| } |
| } |
| |
| |
| public function jsonSerialize() { |
| public function jsonSerialize() { |
| return $this->array; |
| return $this->array; |
| } |
| } |
| } |
| } |
| |
| |