/** * Execute the console command. * * @return mixed */ public function fire() { $jobs = Job::whereNull('texted_at')->where('job_status_id', '=', JobStatus::$OPEN)->where('start_date', '>=', date("Y-m-d"))->orderBy("start_date")->get(); $catJobs = array(); $users = array(); $userJobs = array(); $userCategories = array(); $user_ids = array(); $jobs->load("jobCategory", "user"); // echo '<pre>'; //print_r($jobs); //echo '</pre>'; foreach ($jobs as $job) { if (trim($job->latitude) != "" && trim($job->longitude) != "") { $userAddresses = Address::select("addresses.*", "student_profile.preferred_job_radius", Address::distanceSelectStatement($job->latitude, $job->longitude, 'distance', 'addresses'))->join("student_profile", "addresses.user_id", "=", "student_profile.user_id")->get(); foreach ($userAddresses as $address) { if ($address->distance > 0 && $address->distance <= $address->preferred_job_radius) { //echo "here".$address->distance; if (!isset($userCategories[$address->user_id])) { $userCategories[$address->user_id] = StudentJobPreference::where('user_id', '=', $address->user_id)->lists('job_category_id'); } if (in_array($job->job_category_id, $userCategories[$address->user_id]) == 1) { if (!isset($userJobs[$address->user_id])) { $user_ids[] = $address->user_id; $userJobs[$address->user_id] = array(); $users[$address->user_id] = $address->user; } $userJobs[$address->user_id][] = $job; } } } } //$job->notified_at=date('Y-m-d h:i:s'); $job->texted_at = date('Y-m-d h:i:s'); $job->save(); } $c = 0; if (count($user_ids) > 0) { $notifications = UserNotification::whereIn('user_id', $user_ids)->where("notification_types_id", '=', NotificationType::$SMS)->get(); foreach ($notifications as $notification) { $user = $users[$notification->user_id]; //$this->info($user->id); $c++; $this->info($notification->notification_value); $message = View::make('sms.commands.job_notifications'); if (trim($notification->notification_value) != "" && !is_null($notification->notification_value)) { try { Twilio::message($notification->notification_value, substr($message, 0, 160)); } catch (Exception $e) { \Log::info('Error: ' . $e->getMessage()); $this->info('Error: ' . $e->getMessage()); } } } } \Log::info('Cron Notification Text: ' . $c); $this->info($c . 'text sent'); }