public function send(User $recipient, Group $group, GroupRegistration $registration, $queued = true, $contentBody = null)
 {
     // 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
     $recipient->full_name = $recipient->full_name;
     $view = 'emails.group-welcome-email';
     $viewData = ['groupId' => $group->id, 'guardian' => $recipient, 'players' => $players, 'grades' => $grades, 'shirtSizes' => $shirtSizes, 'hasEmailBody' => is_null($contentBody) ? $group->settings->hasRegistrationEmailContents() : true, 'emailBody' => is_null($contentBody) ? $group->settings->registrationEmailContents() : $contentBody];
     $callBack = function (Message $message) use($group, $recipient) {
         $message->to($recipient->email, $recipient->full_name)->subject($group->name . ' Registration');
     };
     if ($queued) {
         Mail::queue($view, $viewData, $callBack);
     } else {
         Mail::send($view, $viewData, $callBack);
     }
 }
 /**
  * @test
  */
 public function sixthGradersCanBeAddedToBeginnerOrTeen()
 {
     GroupRegistration::$gradesWithProgramChoice = [6];
     $this->visit('/register/players')->see('David Webb')->select('6', 'player[1][grade]')->press('Continue')->seePageIs('/register/program')->see('David Webb')->select(Program::BEGINNER, 'player[1]')->press('Continue');
     // assert the player is classified as beginner
     $beginner = Program::findOrFail(Program::BEGINNER);
     /** @var GroupRegistration $registration */
     $registration = Session::seasonalGroupRegistration();
     $this->arrayHasKey(1, $registration->playerInfo($beginner));
 }
 /**
  * @return mixed
  */
 public function postPlayers(PlayerRegistrationRequest $request, GroupRegistration $registration)
 {
     // map the POSTed data to the season data required
     foreach ($request->get('player') as $playerId => $playerData) {
         if (isset($playerData['register']) && $playerData['register'] == 1) {
             $registration->addPlayer($playerId, $playerData['grade'], $playerData['shirtSize']);
         }
     }
     // if they followed a link to get to the registration
     // auto-associate them with this group
     $familiarGroup = Session::getGroupToRegisterWith();
     if ($familiarGroup !== null) {
         $registration->addGroup($familiarGroup);
     }
     // save in session so we can show this info on
     // the summary page
     Session::setSeasonalGroupRegistration($registration);
     // sometimes parents can override the program selection
     if ($registration->requiresProgramSelection()) {
         return redirect('/register/program');
     }
     return redirect('/register/summary');
 }
Example #4
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;
 }
Example #5
0
 /**
  * @param GroupRegistration $seasonalGroupRegistration
  */
 public function setSeasonalGroupRegistration(GroupRegistration $seasonalGroupRegistration)
 {
     $this->set(self::SEASONAL_GROUP_REGISTRATION, $seasonalGroupRegistration->toArray());
 }
 /**
  * Seed 2 players for each Group.
  *
  * @param Group $group
  */
 public function addGroup(Group $group)
 {
     parent::addGroup($group);
     $this->addPlayer(self::TEST_PLAYER_ID_1, $group->program->min_grade, 'SM');
     $this->addPlayer(self::TEST_PLAYER_ID_2, $group->program->max_grade, 'M');
 }