/** * Execute the console command. * * @return mixed */ public function fire() { /** @var Group[] $groups */ $groups = Group::active()->with('owner', 'meetingAddress')->get(); DB::beginTransaction(); $map = Map::findOrFail(Map::GROUPS); $activeLocations = []; foreach ($groups as $group) { /** @var Location $location */ $location = $group->wordpressLocation(); if ($group->isInactive()) { $location->delete(); } else { if ($location == null) { $location = app(Location::class); } $location->updateMarkerInformation($group); $location->save(); $activeLocations[] = $location->location_id; } } $map->map_locations = $activeLocations; $map->save(); DB::commit(); }
public function averageGroupSize($playerCount) : int { $groupsWithPlayers = Group::active()->has('players')->count(); if ($groupsWithPlayers > 0) { return round($playerCount / $groupsWithPlayers); } return 0; }
/** * @test */ public function canAcceptGroupInvitations() { $group = Group::active()->firstOrFail(); $invitation = Invitation::create(['type' => Invitation::TYPE_MANAGE_GROUP, 'inviter_id' => $group->owner_id, 'group_id' => $group->id]); $this->setupAsDirector(); $this->visit('/invitation/' . $invitation->guid . '/accept')->followRedirects()->see('Invitation has been accepted')->assertSessionHas(\BibleBowl\Users\Auth\SessionManager::GROUP, $invitation->group->toArray()); $invitation = Invitation::findOrFail($invitation->id); $this->assertEquals(Invitation::ACCEPTED, $invitation->status); }
/** * @param array $groups */ public function deactivateInactiveGroups($season) { $groupsToDeactivate = Group::active($season)->withoutActivePlayers($season)->get(); // notify the group owner foreach ($groupsToDeactivate as $group) { $group->update(['inactive' => 1]); Mail::queue('emails.inactive-group-notification', ['group' => $group, 'season' => $season], function (Message $message) use($group) { $message->to($group->owner->email, $group->owner->full_name)->subject($group->name . ' Automatically Deactivated'); }); } // summarize impacted groups for the office $deactivatedGroups = $groupsToDeactivate->count(); if ($deactivatedGroups > 0) { Mail::queue('emails.inactive-group-summary', ['groupIds' => $groupsToDeactivate->modelKeys()], function (Message $message) use($deactivatedGroups) { $message->to(config('biblebowl.officeEmail'))->subject('Group' . ($deactivatedGroups > 1 ? 's' : '') . ' Automatically Deactivated'); }); } }
/** * @param $name * @param null $selected * @param array $options * * @return string */ public function selectGroup(int $programId, $name, $selected = null, $options = [], $optional = false) { $availableGroups = Group::active()->byProgram($programId)->orderBy('name')->with('meetingAddress')->get(); $groups = $optional ? ['' => ''] : []; foreach ($availableGroups as $group) { $groups[$group->id] = $group->name . ' - ' . $group->meetingAddress->city . ', ' . $group->meetingAddress->state; } return $this->select($name, $groups, $selected, $options); }