В laravel 5.8 у меня есть отчет с кнопкой «Отправить письмо», нажав на эту кнопку, запускается ajax-запрос, с содержимым отчета в «report_html» var, который можно контролировать следующим образом:
public function sentReportEmailContent()
{
$request= request();
$requestData= $request->all();
$report_html= $requestData['report_html'];
$loggedUser= Auth::user();
$reportAvailableSpacesByZonesAcceptorsArray = config('app.reportAvailableSpacesByZonesAcceptorsArray', []);
$site_name = config('app.name', '');
if ( count($reportAvailableSpacesByZonesAcceptorsArray) == 0 ) {
return response()->json(['error_code' => 1, 'message' => 'There are no receiver emails specified !'], HTTP_RESPONSE_INTERNAL_SERVER_ERROR);
}
$to= $reportAvailableSpacesByZonesAcceptorsArray[0];
$subject= 'Available Spaces By Zones report was sent at ' . $site_name;
$additiveVars= [ 'html'=> $report_html ];
unset($reportAvailableSpacesByZonesAcceptorsArray[0]);
$cc= $reportAvailableSpacesByZonesAcceptorsArray;
Mail::to($to)->send( new SendgridMail( 'emailContainer', $to, $cc, $subject , $additiveVars ) );
return response()->json(['error_code' => 0, 'message' => '', 'user'=> $loggedUser->id], HTTP_RESPONSE_OK);
}
а с сервисом Sendgrid отчет отправляется пользователям, определенным в конфиге ок.
Теперь мне нужно запустить этот отчет и отправить письмо получателям в планировщике.
Я создал новую команду:
php artisan make:command reportAvailableSpacesByZones --command=report:available-spaces-by-zones
у которого есть метод handle:
public function handle()
{
Log::info( 'Report run # ' . time() );
}
который срабатывает в запланированное время. Но как я могу запустить свой отчет и отправить его содержимое, как будто это делается вручную?
Спасибо!
Всего 1 ответ
В app / Console / Kernal.php добавьте команду в массив защищенных команд
'AppConsoleCommands
eportAvailableSpacesByZones',
в методе Scheudle добавить
$schedule->command('cron:reportAvailableSpacesByZones')->weeklyOn(2, ཐ:30');
другие доступные команды
https://laravel.com/docs/5.8/scheduling
на сервере crontab
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1