67 lines
1.7 KiB
PHP
67 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use App\Exceptions\WrongHourException;
|
|
use App\Mail\DailyNotification;
|
|
use App\Services\HourService;
|
|
use App\User;
|
|
use Illuminate\Console\Command;
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
class SendDailyNotification extends Command
|
|
{
|
|
/**
|
|
* The name and signature of the console command.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $signature = 'send:daily';
|
|
|
|
/**
|
|
* The console command description.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $description = 'Send daily notification to write a post';
|
|
|
|
/**
|
|
* Create a new command instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* Execute the console command.
|
|
*
|
|
* @param HourService $hour_service
|
|
* @return mixed
|
|
*/
|
|
public function handle(HourService $hour_service)
|
|
{
|
|
try {
|
|
$notification_id = $hour_service->getCurrentNotificationId();
|
|
$this->info(sprintf('Notification id = %s', $notification_id));
|
|
} catch (WrongHourException $e) {
|
|
$this->error($e->getMessage());
|
|
exit;
|
|
}
|
|
$users = User::where('notification_hour', '=', $notification_id)
|
|
->where('email_verified_at', '!=', null)
|
|
->whereNotExists(function($query) {
|
|
$query->select()
|
|
->from('posts')
|
|
->whereRaw('posts.user_id = users.id')
|
|
->whereDate('date_post', date('Y-m-d'));
|
|
})
|
|
->get();
|
|
foreach ($users as $user) {
|
|
Mail::to($user)->queue(new DailyNotification($user));
|
|
}
|
|
}
|
|
}
|