нотификейшены по погоде но только для активных юзеров, сейчас по одному юзеру нахожу всю необходимую инфу, и даю запрос на погоду, получаю данные. Куда запихнуть все это дело, что бы все юзеров проверять и как захендлить этот метод. мой код:
public function testUsersData()
{
$lastFiveDays = Track::where('created_at', '>', Carbon::now()->subDays(41))->where('user_id', 9)->get();
$sortOfTracksByDay = $lastFiveDays->groupBy
(function ($item, $key) {
return substr($item['created_at'], 8, 2);
});
$amountOfDays = $sortOfTracksByDay->count();
function getAverageStartTime($arr, $amount) {
$hours = 0;
$minutes = 0;
foreach ($arr as $item) {
$hours += Carbon::parse($item->first()->created_at)->hour;
$minutes += Carbon::parse($item->first()->created_at)->minute;
$realMinute = ceil((floor((($hours*60 + $minutes)/$amount)/60*100 - intval((($hours*60 + $minutes)
/$amount)/60)*100))*60/100);
if ($realMinute < 10) {
$realMinute = '0' . $realMinute;
}
}
return floor((($hours*60 + $minutes)/$amount)/60) . ":" . $realMinute;
}
function getAverageFinishTime($arr, $amount) {
$hours = 0;
$minutes = 0;
foreach ($arr as $item) {
$hours += Carbon::parse($item->last()->created_at)->hour;
$minutes += Carbon::parse($item->last()->created_at)->minute;
$realMinute = ceil((floor((($hours*60 + $minutes)/$amount)/60*100 - intval((($hours*60 + $minutes)
/$amount)/60)*100))*60/100);
if ($realMinute < 10) {
$realMinute = '0' . $realMinute;
}
}
return floor((($hours*60 + $minutes)/$amount)/60) . ":" . $realMinute;
}
$average_start_time = getAverageStartTime($sortOfTracksByDay, $amountOfDays);
$average_finish_time = getAverageFinishTime($sortOfTracksByDay, $amountOfDays);
$lastGeoPoints = $sortOfTracksByDay->last()->last()->points;
$lastpoint = end($lastGeoPoints);
$weather = app('Gmopx\LaravelOWM\LaravelOWM');
$nearestWeather = $weather->getWeatherForecast($lastpoint);
$user = User::where('id', 9)->get();
return [
'user' => $user,
'avg_start_time' => $average_start_time,
'avg_finish_time' => $average_finish_time,
'last_geo_point' => $lastpoint,
"temperature" => $nearestWeather->current()->temperature->getValue(),
"isItRain" => $nearestWeather->current()->precipitation->getValue(),
"humidity" => $nearestWeather->current()->humidity->getValue(),
"weather" => $nearestWeather->current()->weather,
];
}
в schedule или в джобс это впихнуть? просто не понимаю, как юзеры будут получаться и проверятся, так как сейчас делаю для одного
Мне показалось или у тебя и правда функция объявлена внутри метода?
Обсуждают сегодня