Ejemplo n.º 1
0
 private function seedGroupWithPlayers(GroupCreator $groupCreator, User $headCoach, Address $address, $groupName, $guardianLat, $guardianLng)
 {
     $group = $groupCreator->create($headCoach, ['name' => $groupName, 'group_type_id' => GroupType::CHURCH, 'program_id' => Program::TEEN, 'address_id' => $address->id, 'meeting_address_id' => $address->id]);
     $shirtSizes = ['S', 'YS', 'M', 'L', 'YL', 'YM'];
     $guardian = seedGuardian([], ['latitude' => $guardianLat, 'longitude' => $guardianLng]);
     for ($x = 0; $x <= 2; $x++) {
         $player = seedPlayer($guardian);
         $this->season->players()->attach($player->id, ['group_id' => $group->id, 'grade' => rand(6, 12), 'shirt_size' => $shirtSizes[array_rand($shirtSizes)]]);
     }
     // Seed inactive player
     $player = seedPlayer($guardian);
     $this->season->players()->attach($player->id, ['inactive' => Carbon::now()->toDateTimeString(), 'group_id' => $group->id, 'grade' => rand(6, 12), 'shirt_size' => $shirtSizes[array_rand($shirtSizes)]]);
 }
Ejemplo n.º 2
0
 private function seedGroupWithPlayers(GroupCreator $groupCreator, User $headCoach, Address $address)
 {
     $group = $groupCreator->create($headCoach, ['name' => self::GROUP_NAME, 'group_type_id' => GroupType::CHURCH, 'program_id' => Program::TEEN, 'address_id' => $address->id, 'meeting_address_id' => $address->id]);
     $shirtSizes = ['S', 'YS', 'M', 'L', 'YL', 'YM'];
     $guardian = seedGuardian([], ['latitude' => '38.301815', 'longitude' => '-85.597701']);
     for ($x = 0; $x <= 2; $x++) {
         $player = seedPlayer($guardian);
         $this->season->players()->attach($player->id, ['group_id' => $group->id, 'grade' => rand(6, 12), 'shirt_size' => $shirtSizes[array_rand($shirtSizes)], 'created_at' => Carbon::now()->subWeeks('10')->toDateTimeString()]);
     }
     // Seed inactive player
     $player = seedPlayer($guardian);
     $player->update(['first_name' => 'Inactive', 'first_name' => 'Joe']);
     $this->season->players()->attach($player->id, ['inactive' => Carbon::now()->toDateTimeString(), 'group_id' => $group->id, 'grade' => rand(6, 12), 'shirt_size' => $shirtSizes[array_rand($shirtSizes)]]);
     return $group;
 }
Ejemplo n.º 3
0
 public function register(Season $season, User $guardian, GroupRegistration $registration)
 {
     DB::beginTransaction();
     foreach ($registration->groups() as $group) {
         foreach ($registration->playerInfo($group->program) as $playerId => $playerData) {
             $playerData['group_id'] = $group->id;
             $season->players()->attach($playerId, $playerData);
         }
         // Since this email is queued, we need to get pivot data now and include it with $players
         // because once it actually gets processed $players won't be an object making it more
         // difficult to fetch this data
         $players = [];
         $grades = [];
         $shirtSizes = [];
         foreach ($registration->players($group->program) as $player) {
             $player->full_name = $player->full_name;
             $grades[$player->id] = $registration->grade($player->id);
             $shirtSizes[$player->id] = $registration->shirtSize($player->id);
             $players[] = $player;
         }
         // setting this value so that it's available in the toArray() so queued mail can use it
         $guardian->full_name = $guardian->full_name;
         /** @var User $user */
         foreach ($group->users()->with('roles')->get() as $user) {
             if ($user->isA(Role::HEAD_COACH) && $user->settings->shouldBeNotifiedWhenUserJoinsGroup()) {
                 Mail::queue('emails.group-registration-notification', ['groupId' => $group->id, 'guardian' => $guardian, 'players' => $players, 'grades' => $grades, 'shirtSizes' => $shirtSizes], function (Message $message) use($group, $user, $players) {
                     $message->to($user->email, $user->full_name)->subject('New ' . $group->name . ' Registration' . (count($players) > 1 ? 's' : ''));
                 });
             }
         }
         $this->registrationConfirmation->send($guardian, $group, $registration);
     }
     DB::commit();
     event('players.registered.with.group', [$group, $guardian]);
     return $group;
 }
Ejemplo n.º 4
0
 public function activate(Season $season)
 {
     $season->players()->wherePivot('season_id', $season->id)->updateExistingPivot($this->id, ['inactive' => null]);
 }