| <?php |
| <?php |
| |
| |
| namespace App\Http\Controllers; |
| namespace App\Http\Controllers; |
| |
| |
| use DB; |
| use DB; |
| use Log; |
| use Log; |
| use Illuminate\Http\Request; |
| use Illuminate\Http\Request; |
| use Config; |
| use Config; |
| use App\Http\Controllers\QuizController; |
| use App\Http\Controllers\QuizController; |
| use App\Http\ResponseHelper; |
| use App\Http\ResponseHelper; |
| |
| |
| class MailController extends Controller |
| class MailController extends Controller |
| { |
| { |
| public function __construct() |
| public function __construct() |
| { |
| { |
| $this->helper = new ResponseHelper(); |
| $this->helper = new ResponseHelper(); |
| $this->campaignId = env('CAMPAIGN_ID', true); |
| $this->campaignId = env('CAMPAIGN_ID', true); |
| } |
| } |
| |
| |
| public function sendMail(){ |
| public function sendMail(){ |
| |
| |
| Log::channel('email')->info("Cron Strted-----------------"); |
| Log::channel('email')->info("Cron Strted-----------------"); |
| |
| |
| $controller = new QuizController(); |
| $controller = new QuizController(); |
| $userQuizDetails = DB::table('quiz_user') |
| $userQuizDetails = DB::table('quiz_user') |
| ->select('created_at', 'recommended_at', 'mail_sent', 'session_id','id') |
| ->select('created_at', 'recommended_at', 'mail_sent', 'session_id','id') |
| ->where([ |
| ->where([ |
| ['mail_sent', '=', '0'], |
| ['mail_sent', '=', '0'], |
| ['recommended_at', '=', NULL] |
| ['recommended_at', '=', NULL] |
| ])->get(); |
| ])->get(); |
| |
| |
| if(!empty($userQuizDetails)) |
| if(!empty($userQuizDetails)) |
| { |
| { |
| $updateIDs = array(); |
| $updateIDs = array(); |
| foreach($userQuizDetails as $userQuiz){ |
| foreach($userQuizDetails as $userQuiz){ |
| |
| |
| $email = DB::table('users')->select('user_email')->where([ |
| $email = DB::table('users')->select('user_email')->where([ |
| 'id' => $userQuiz->id |
| 'id' => $userQuiz->id |
| ])->value('user_email'); |
| ])->value('user_email'); |
| // $email = "testing@p80w.com"; |
| // $email = "testing@p80w.com"; |
| |
| |
| $quizStartTime = $userQuiz->created_at; |
| $quizStartTime = $userQuiz->created_at; |
| $recommendedAt = $userQuiz->recommended_at; |
| $recommendedAt = $userQuiz->recommended_at; |
| $currentTime = date('Y-m-d H:i:s'); |
| $currentTime = date('Y-m-d H:i:s'); |
| $sentMail = $userQuiz->mail_sent; |
| $sentMail = $userQuiz->mail_sent; |
| $sessionID = $userQuiz->session_id; |
| $sessionID = $userQuiz->session_id; |
| |
| |
| $timeDiff = $this->getTimeDiff($quizStartTime, $currentTime); |
| $timeDiff = $this->getTimeDiff($quizStartTime, $currentTime); |
| |
| |
| // Send Mail if difference is 1 hour and mail is not sent earlier |
| // Send Mail if difference is 1 hour and mail is not sent earlier |
| if($timeDiff >= 1 && $sentMail !== 1) |
| if($timeDiff >= 1 && $sentMail !== 1) |
| { |
| { |
| $eventRequest = array( |
| $eventRequest = array( |
| "email" => $email, |
| "email" => $email, |
| "eventName" => "Quiz Abandonment" |
| "eventName" => "Quiz Abandonment" |
| // "campaignId" => $this->campaignId |
| // "campaignId" => $this->campaignId |
| ); |
| ); |
| // Trigger Event |
| // Trigger Event |
| $eventResponse = $controller->createEvent(json_encode($eventRequest)); |
| $eventResponse = $controller->createEvent(json_encode($eventRequest)); |
| |
| |
| if(isset($eventResponse->code) && $eventResponse->code == 'Success'){ |
| if(isset($eventResponse->code) && $eventResponse->code == 'Success'){ |
| Log::channel('email')->info('Quiz Abandonment Event triggered successfully Please check mail : '.$email); |
| Log::channel('email')->info('Quiz Abandonment Event triggered successfully Please check mail : '.$email); |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true, |
| 'stored' => true, |
| 'message' => 'success' |
| 'message' => 'success' |
| ]; |
| ]; |
| |
| |
| array_push($updateIDs, $sessionID); // To update the sent_email to 1 |
| array_push($updateIDs, $sessionID); // To update the sent_email to 1 |
| } |
| } |
| else{ |
| else{ |
| Log::channel('email')->info('Event not triggered'); |
| Log::channel('email')->info('Event not triggered'); |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Event not triggered' |
| 'error' => 'Event not triggered' |
| ]; |
| ]; |
| } |
| } |
| |
| |
| } |
| } |
| else{ |
| else{ |
| Log::channel('email')->info('No need to send mail notification to the user '.$email.' with sessionID ='.$sessionID); |
| Log::channel('email')->info('No need to send mail notification to the user '.$email.' with sessionID ='.$sessionID); |
| } |
| } |
| |
| |
| } |
| } |
| |
| |
| $updateQuizUser = DB::table('quiz_user') |
| $updateQuizUser = DB::table('quiz_user') |
| ->whereIn('session_id', $updateIDs) |
| ->whereIn('session_id', $updateIDs) |
| ->update(['mail_sent' => 1]); |
| ->update(['mail_sent' => 1]); |
| |
| |
| echo"done";die; |
| echo"done";die; |
| } |
| } |
| |
| |
| |
| |
| } |
| } |
| |
| |
| public function getTimeDiff($date1, $date2){ |
| public function getTimeDiff($date1, $date2){ |
| |
| |
| $diff = abs(strtotime($date2) - strtotime($date1)); |
| $diff = abs(strtotime($date2) - strtotime($date1)); |
| |
| |
| $years = floor($diff / (365*60*60*24)); |
| $years = floor($diff / (365*60*60*24)); |
| |
| |
| $months = floor(($diff - $years * 365*60*60*24) |
| $months = floor(($diff - $years * 365*60*60*24) |
| / (30*60*60*24)); |
| / (30*60*60*24)); |
| |
| |
| $days = floor(($diff - $years * 365*60*60*24 - |
| $days = floor(($diff - $years * 365*60*60*24 - |
| $months*30*60*60*24)/ (60*60*24)); |
| $months*30*60*60*24)/ (60*60*24)); |
| |
| |
| $hours = floor(($diff - $years * 365*60*60*24 |
| $hours = floor(($diff - $years * 365*60*60*24 |
| - $months*30*60*60*24 - $days*60*60*24) / (60*60)); |
| - $months*30*60*60*24 - $days*60*60*24) / (60*60)); |
| |
| |
| return $hours; |
| return $hours; |
| } |
| } |
| |
| |
| public function sendProspectNotification(Request $request){ |
| public function sendProspectNotification(Request $request){ |
| |
| |
| $controller = new QuizController(); |
| $controller = new QuizController(); |
| $email = $request->input('email'); |
| $email = $request->input('email'); |
| |
| |
| 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 ); |
| } |
| } |
| |
| |
| $eventRequest = array( |
| $eventRequest = array( |
| "email" => $email, |
| "email" => $email, |
| "eventName" => "Prospect" |
| "eventName" => "Prospect" |
| // "campaignId" => $this->campaignId |
| // "campaignId" => $this->campaignId |
| ); |
| ); |
| // Trigger Event |
| // Trigger Event |
| $eventResponse = $controller->createEvent(json_encode($eventRequest)); |
| $eventResponse = $controller->createEvent(json_encode($eventRequest)); |
| |
| |
| if(isset($eventResponse->code) && $eventResponse->code == 'Success'){ |
| if(isset($eventResponse->code) && $eventResponse->code == 'Success'){ |
. | Log::info('status => Event triggered successfully Please check mail : '.$email); |
| Log::channel('email')->info('status => Event triggered successfully Please check mail : '.$email); |
| $returnData = [ |
| $returnData = [ |
| 'stored' => true |
| 'stored' => true |
| ]; |
| ]; |
| return $this->helper->returnData(200, "success", $returnData ); |
| return $this->helper->returnData(200, "success", $returnData ); |
| } |
| } |
| else{ |
| else{ |
. | Log::info('status =>Event not triggered'); |
| Log::channel('email')->info('status =>Event not triggered'); |
| |
| |
| $returnData = [ |
| $returnData = [ |
| 'error' => 'Event not triggered' |
| 'error' => 'Event not triggered' |
| ]; |
| ]; |
| return $this->helper->returnData(600, "error", $returnData ); |
| return $this->helper->returnData(600, "error", $returnData ); |
| } |
| } |
| |
| |
| } |
| } |
| |
| |
| } |
| } |
| |
| |