public function summary(Request $request, $regionId)
{
$region = Region::find($regionId);
$user = false;
$token = $request->header('Authorization');
if ($token) {
if (isset($token[1])) {
$token = explode(' ', $request->header('Authorization'))[1];
$payload = (array) JWT::decode($token, Config::get('app.token_secret'), array('HS256'));
$user = User::find($payload['sub']);
}
}
$participants = new Collection();
$past_competitions = new Collection();
$next_competitions = new Collection();
$next_competition = array();
$competitions = array();
if ($regionId == 1) {
$competitions = Competition::all();
$videos = DB::table('medias')->where('region_id', '<>', $region->id)->get();
$region->competitions = $competitions;
} else {
$competitions = $region->competitions;
$videos = DB::table('medias')->where('region_id', '=', $region->id)->get();
}
$competitions->each(function ($competition) use($past_competitions, $next_competitions, $participants, $user) {
$competition->users->each(function ($participant) use($participants, $competition, $user) {
if ($user && $user->id == $participant->id) {
$competition->already_participating = true;
}
$participant->medias;
$participant->competitions;
$participants->push($participant);
});
$competition->location;
$competition->videos;
if (Carbon::now()->gte($competition->event_date)) {
$competition->past = true;
$past_competitions->push($competition);
} else {
$competition->past = false;
$next_competitions->push($competition);
}
});
$region->next_competition = $next_competitions->first();
$region->next_competitions = $next_competitions;
$region->past_competitions = $past_competitions;
$region->videos = $videos;
$region->videos_count = count($videos);
$region->competitions_count = count($competitions);
$region->participants = $participants->unique();
$region->participants_count = count($region->participants);
return $region;
}