public static function boot() { parent::boot(); // assign a guid for each model static::creating(function ($tournamentQuizmaster) { $tournamentQuizmaster->guid = Uuid::uuid4(); return true; }); // Make sure the user has the quizmaster role // Using a saved event since the user could be assigned // after the initial creation static::saved(function ($tournamentQuizmaster) { $user = $tournamentQuizmaster->user; // if no user is linked, try to find one if (is_null($user)) { $user = User::where('email', $tournamentQuizmaster->email)->first(); } if (!is_null($user)) { // label the user as a quizmaster if ($user->isNotA(Role::QUIZMASTER)) { $role = Role::where('name', Role::QUIZMASTER)->firstOrFail(); $user->assign($role); } // associate the user with the quizmaster if ($tournamentQuizmaster->user_id == null) { $tournamentQuizmaster->update(['user_id' => $user->id]); } } }); }
/** * Run the database seeds. * * @return void */ public function run() { Season::create(['name' => date('Y') . '-' . (date('y') + 1)]); Program::create(['name' => 'Beginner Bible Bowl', 'abbreviation' => 'Beginner', 'slug' => 'beginner', 'registration_fee' => '25.00', 'min_grade' => 2, 'max_grade' => 5]); Program::create(['name' => 'Teen Bible Bowl', 'abbreviation' => 'Teen', 'slug' => 'teen', 'registration_fee' => '35.00', 'min_grade' => 6, 'max_grade' => 12]); GroupType::create(['name' => 'Christian School']); GroupType::create(['name' => 'Homeschool']); GroupType::create(['name' => 'Church']); GroupType::create(['name' => 'Other']); ParticipantType::create(['name' => 'Team']); ParticipantType::create(['name' => 'Player']); ParticipantType::create(['name' => 'Quizmaster']); ParticipantType::create(['name' => 'Spectator - Adult', 'description' => 'Single adult']); ParticipantType::create(['name' => 'Spectator - Family', 'description' => 'Up to 2 adults and children who are not players']); EventType::create(['participant_type_id' => ParticipantType::TEAM, 'name' => 'Round Robin']); EventType::create(['participant_type_id' => ParticipantType::PLAYER, 'name' => 'Quote Bee']); EventType::create(['participant_type_id' => ParticipantType::TEAM, 'name' => 'Double Elimination']); EventType::create(['participant_type_id' => ParticipantType::PLAYER, 'name' => 'BuzzOff']); EventType::create(['participant_type_id' => ParticipantType::PLAYER, 'name' => 'King of the Hill']); Bouncer::allow(Role::ADMIN)->to([Ability::VIEW_REPORTS, Ability::MANAGE_ROLES, Ability::MANAGE_USERS, Ability::MANAGE_GROUPS, Ability::MANAGE_PLAYERS, Ability::CREATE_TOURNAMENTS, Ability::SWITCH_ACCOUNTS, Ability::MANAGE_SETTINGS]); Bouncer::allow(Role::BOARD_MEMBER)->to(Ability::VIEW_REPORTS); Bouncer::allow(Role::HEAD_COACH)->to([Ability::MANAGE_ROSTER, Ability::MANAGE_TEAMS]); Role::create(['name' => Role::COACH, 'mailchimp_interest_id' => '29a52dd6fc']); Role::create(['name' => Role::LEAGUE_COORDINATOR, 'mailchimp_interest_id' => '9b90dc8bdd']); Role::create(['name' => Role::QUIZMASTER, 'mailchimp_interest_id' => 'fe3a183033']); Bouncer::allow(Role::QUIZMASTER); Bouncer::allow(Role::GUARDIAN)->to(Ability::REGISTER_PLAYERS); Role::where('name', Role::HEAD_COACH)->update(['mailchimp_interest_id' => 'be4c459134']); Role::where('name', Role::GUARDIAN)->update(['mailchimp_interest_id' => '0f83e0f312']); $howDidYouHearAbout = RegistrationSurveyQuestion::create(['question' => 'How did you hear about Bible Bowl?', 'order' => 1]); $howDidYouHearAbout->answers()->saveMany([app(RegistrationSurveyAnswer::class, [['answer' => 'Friend', 'order' => '1']]), app(RegistrationSurveyAnswer::class, [['answer' => 'Church brochure/bulletin', 'order' => '2']]), app(RegistrationSurveyAnswer::class, [['answer' => 'Homeschool convention', 'order' => '3']]), app(RegistrationSurveyAnswer::class, [['answer' => 'TV', 'order' => '4']]), app(RegistrationSurveyAnswer::class, [['answer' => 'Web Advertisement', 'order' => '5']]), app(RegistrationSurveyAnswer::class, [['answer' => 'Internet', 'order' => '6']]), app(RegistrationSurveyAnswer::class, [['answer' => 'Other', 'order' => '7']])]); $mostInfluential = RegistrationSurveyQuestion::create(['question' => 'Which of the following were most influential in your decision to join Bible Bowl?', 'order' => 2]); $mostInfluential->answers()->saveMany([app(RegistrationSurveyAnswer::class, [['answer' => "Friend's recommendation", 'order' => '1']]), app(RegistrationSurveyAnswer::class, [['answer' => 'Attending a practice/demo/meeting', 'order' => '2']]), app(RegistrationSurveyAnswer::class, [['answer' => 'Learning about it on the web site', 'order' => '3']]), app(RegistrationSurveyAnswer::class, [['answer' => 'Homeschool curriculum potential', 'order' => '4']]), app(RegistrationSurveyAnswer::class, [['answer' => 'Other', 'order' => '5']])]); }
/** * Update the mailchimp ids so they match the staging list instead of production. */ private function updateMailchimpIds() { Role::where('name', Role::LEAGUE_COORDINATOR)->update(['mailchimp_interest_id' => 'da431848e5']); Role::where('name', Role::HEAD_COACH)->update(['mailchimp_interest_id' => '8eb76f09f0']); Role::where('name', Role::COACH)->update(['mailchimp_interest_id' => 'd531b08cdb']); Role::where('name', Role::QUIZMASTER)->update(['mailchimp_interest_id' => 'bddc8cb120']); Role::where('name', Role::GUARDIAN)->update(['mailchimp_interest_id' => 'f29d2ce1ef']); }
/** * @return User */ private function seedAdmin() { $address = Address::create(['name' => 'Home', 'address_one' => '11025 Eagles Cove Dr.', 'address_two' => null, 'latitude' => '38.2515659', 'longitude' => '-85.615241', 'city' => 'Louisville', 'state' => 'KY', 'zip_code' => '40241']); $director = User::create(['status' => User::STATUS_CONFIRMED, 'first_name' => 'Ben', 'last_name' => 'Director', 'email' => self::DIRECTOR_EMAIL, 'password' => bcrypt('changeme'), 'primary_address_id' => $address->id]); $director->addresses()->save($address); $role = Role::where('name', Role::ADMIN)->firstOrFail(); $director->assign($role); return $director; }
/** * @return User */ function seedGuardian($attrs = [], $addressAttrs = []) { $address = factory(Address::class)->create($addressAttrs); $attrs['primary_address_id'] = $address->id; $user = factory(User::class)->create($attrs); $address->user_id = $user->id; $address->save(); $role = Role::where('name', Role::GUARDIAN)->firstOrFail(); $user->assign($role); return $user; }
/** * @param User $guardian * @param array $attributes * * @return static */ public function create(User $guardian, array $attributes) { $attributes['guardian_id'] = $guardian->id; DB::beginTransaction(); $player = Player::create($attributes); if ($guardian->isNotA(Role::GUARDIAN)) { $role = Role::where('name', Role::GUARDIAN)->firstOrFail(); $guardian->assign($role); } DB::commit(); return $player; }
public static function boot() { parent::boot(); //assign a guid for each user static::creating(function ($player) { $player->guid = Uuid::uuid4(); return true; }); static::deleting(function ($player) { $guardian = $player->guardian; // if it's the last player if ($guardian->players()->count() == 1 && $guardian->isAn(Role::GUARDIAN)) { $role = Role::where('name', Role::GUARDIAN)->firstOrFail(); $guardian->retract($role); } }); }
public function removeHeadCoach(User $user) { $user->groups()->detach($this->id); if ($user->groups()->count() == 0) { $role = Role::where('name', Role::HEAD_COACH)->firstOrFail(); $user->retract($role); } }
/** * Update the mailchimp ids so they match the staging list instead of production. */ private function updateMailchimpIds() { Role::where('name', Role::LEAGUE_COORDINATOR)->update(['mailchimp_interest_id' => '4548244911']); Role::where('name', Role::HEAD_COACH)->update(['mailchimp_interest_id' => 'cea4f8e0dd']); Role::where('name', Role::COACH)->update(['mailchimp_interest_id' => 'e11132acbf']); Role::where('name', Role::QUIZMASTER)->update(['mailchimp_interest_id' => 'e58faebc7c']); Role::where('name', Role::GUARDIAN)->update(['mailchimp_interest_id' => '295ac3a88c']); }
/** * @test */ public function canEditRoles() { $guardian = User::whereEmail(DatabaseSeeder::GUARDIAN_EMAIL)->firstOrFail(); $role = Role::where('name', Role::ADMIN)->firstOrFail(); $this->visit('/admin/users/' . $guardian->id)->click('(add/remove)')->check('role[' . $role->id . ']')->press('Save')->see('Your changes were saved')->click('(add/remove)')->uncheck('role[' . $role->id . ']')->press('Save'); }