Esempio n. 1
0
 /**
  * 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();
 }
Esempio n. 2
0
 public function averageGroupSize($playerCount) : int
 {
     $groupsWithPlayers = Group::active()->has('players')->count();
     if ($groupsWithPlayers > 0) {
         return round($playerCount / $groupsWithPlayers);
     }
     return 0;
 }
Esempio n. 3
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');
         });
     }
 }
Esempio n. 5
0
 /**
  * @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);
 }