/** * @test */ public function canDeleteAddress() { $address = $this->guardian()->addresses()->orderBy('created_at', 'DESC')->first(); // Because of the dropdown menu's functionality for delete being // in javascript we'll have to simulate the request $address->delete(); // bypassing caching, see above comments $this->assertEquals(0, Address::where('id', $address->id)->count()); }
private function seedKeithHeadCoach() { $address = Address::create(['name' => 'Home', 'address_one' => '5900 Casa Del Rey Cir', 'address_two' => null, 'latitude' => '28.470933', 'longitude' => '-81.425187', 'city' => 'Orlando', 'state' => 'FL', 'zip_code' => '32809']); $headCoach = User::create(['status' => User::STATUS_CONFIRMED, 'first_name' => 'Keith', 'last_name' => 'HeadCoach', 'email' => '*****@*****.**', 'password' => bcrypt('biblebowl'), 'primary_address_id' => $address->id]); $headCoach->addresses()->save($address); /** @var GroupCreator $groupCreator */ $groupCreator = App::make(GroupCreator::class); $groupCreator->create($headCoach, ['name' => 'Florida Homeschoolers', 'group_type_id' => GroupType::HOMESCHOOL, 'program_id' => Program::TEEN, 'address_id' => $address->id, 'meeting_address_id' => $address->id]); $address = factory(Address::class)->create(['name' => 'Church', 'latitude' => '39.285121', 'longitude' => '-84.4721087']); $headCoach->addresses()->save($address); $headCoach = User::findOrFail($headCoach->id); $this->seedGroupWithPlayers($groupCreator, $headCoach, $address, 'KSmith Christian Church', '28.472610', '-81.418877'); }
/** * Run the database seeds. * * @return void */ public function run() { Model::unguard(); $homeAddress = Address::create(['name' => 'Home', 'address_one' => '123 Acceptance Test Seeder Street', 'address_two' => null, 'city' => 'Louisville', 'state' => 'KY', 'zip_code' => '40241']); $TestUser = User::create(['status' => User::STATUS_CONFIRMED, 'first_name' => self::USER_FIRST_NAME, 'last_name' => self::USER_LAST_NAME, 'email' => self::USER_EMAIL, 'password' => bcrypt(self::USER_PASSWORD), 'primary_address_id' => $homeAddress->id]); $TestUser->addresses()->save($homeAddress); // used for asserting you can't login without being confirmed User::create(['first_name' => self::USER_FIRST_NAME . '-unconfirmed', 'last_name' => self::USER_LAST_NAME, 'email' => self::UNCONFIRMED_USER_EMAIL, 'password' => bcrypt(self::USER_PASSWORD), 'primary_address_id' => $homeAddress->id]); $this->seedGuardian(); $this->seedReceipts(); if (app()->environment('local')) { $this->updateMailchimpIds(); } }
private function seedHeadCoach() { $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']); $BKuhlHeadCoach = User::create(['status' => User::STATUS_CONFIRMED, 'first_name' => 'Ben', 'last_name' => 'HeadCoach', 'email' => self::HEAD_COACH_EMAIL, 'password' => bcrypt('changeme'), 'primary_address_id' => $address->id]); $BKuhlHeadCoach->addresses()->save($address); /** @var GroupCreator $groupCreator */ $groupCreator = App::make(GroupCreator::class); $groupCreator->create($BKuhlHeadCoach, ['name' => 'Southeast Christian Church', 'group_type_id' => GroupType::CHURCH, 'program_id' => Program::TEEN, 'address_id' => $address->id, 'meeting_address_id' => $address->id]); $address = factory(Address::class)->create(['name' => 'Church', 'latitude' => '38.316334', 'longitude' => '-85.573143']); $BKuhlHeadCoach->addresses()->save($address); $BKuhlHeadCoach = User::findOrFail($BKuhlHeadCoach->id); $group = $this->seedGroupWithPlayers($groupCreator, $BKuhlHeadCoach, $address); $this->seedTeamSet($group); return $BKuhlHeadCoach; }
/** * Handle the event. * * @param Address $address * * @return void */ public function handle(Address $address) { if (app()->environment('testing')) { app('log')->info('Not fetching coordinates for address while testing'); return; } try { // object was serialized, so get a new one with DB connectivity $address = Address::findOrFail($address->id); $response = json_decode(Geocoder::geocode('json', ['address' => implode(' ', [$address->address_one, $address->address_two, $address->city, $address->state, $address->zip_code]), 'componets' => 'country:GB'])); if ($response->status == 'OK') { $address->latitude = $response->results[0]->geometry->location->lat; $address->longitude = $response->results[0]->geometry->location->lng; // Figure out the city/state foreach ($response->results[0]->address_components as $addressParts) { if (property_exists($addressParts, 'types') && is_array($addressParts->types)) { if (in_array('administrative_area_level_1', $addressParts->types)) { $address->state = $addressParts->short_name; } elseif (in_array('locality', $addressParts->types)) { $address->city = $addressParts->long_name; } } } // use township as the city if (strlen($address->city) == 0) { foreach ($response->results[0]->address_components as $addressParts) { if (property_exists($addressParts, 'types') && is_array($addressParts->types)) { if (in_array('administrative_area_level_3', $addressParts->types)) { $address->city = $addressParts->long_name; } } } } $address->save(); $this->delete(); } elseif (DatabaseSeeder::isSeeding() === false && app()->environment('testing') === false) { Log::error('Problematic response from GMaps', ['address' => $address, 'response' => (array) $response]); } } catch (\RuntimeException $e) { //ignore failures if we're local. //useful when seeding and not on the internet if (DatabaseSeeder::isSeeding() || App::environment('local', 'testing') && $e->getMessage() == 'cURL request retuened following error: Could not resolve host: maps.googleapis.com') { Log::debug('Suppressing error when fetching coordinates for address'); return; } throw $e; } }
/** * @test */ public function associateWithExistingUserIfEmailAddressMatches() { $firstName = 'Jane'; $lastName = 'Lork'; //allow GUID to be set User::unguard(); User::create(['guid' => md5(uniqid() . microtime()), 'email' => $this->providerUser->getEmail(), 'first_name' => $firstName, 'last_name' => $lastName, 'primary_address_id' => Address::firstOrFail()->id]); User::reguard(); $this->call('GET', '/login/' . ThirdPartyAuthenticator::PROVIDER_GOOGLE, ['code' => uniqid()]); // logged in as pre-existing user $this->followRedirects()->see($firstName . ' ' . $lastName); //assert user was not created $name = explode(' ', $this->providerUser->getName()); $createdUser = User::where('first_name', $name[0])->where('last_name', $name[1])->where('email', $this->providerUser->getEmail())->where('avatar', $this->providerUser->getAvatar())->count() > 0; $this->assertFalse($createdUser); }
/** * @return mixed */ public function postSetup(Request $request, Scrubber $scrubber) { $request->merge(['name' => 'Home', 'phone' => $scrubber->integer($request->get('phone'))]); $userRules = array_only(User::validationRules(), ['gender', 'phone', 'first_name', 'last_name']); $this->validate($request, array_merge(Address::validationRules(), $userRules), Address::validationMessages()); //update the info DB::transaction(function () use($request) { $user = Auth::user(); $user->first_name = $request->get('first_name'); $user->last_name = $request->get('last_name'); $user->phone = $request->get('phone'); $user->gender = $request->get('gender'); $user->save(); // set timezone $settings = $user->settings; $settings->setTimezone($request->input('timezone')); $user->update(['settings' => $settings]); // add user address $address = App::make(Address::class, [$request->except(['first_name', 'last_name', 'phone', 'gender', 'timezone', 'answer', 'other'])]); $user->addresses()->save($address); $user->update(['primary_address_id' => $address->id]); // record survey if ($request->has('answer') && count($request->get('answer')) > 0) { $surveys = []; foreach ($request->get('answer') as $questionId => $answers) { foreach ($answers as $answerId => $true) { $surveys[] = app(RegistrationSurvey::class, [['answer_id' => $answerId]]); } // update that question's "Other" if ($request->has('other.' . $questionId) && strlen($request->get('other')[$questionId]) > 0) { $otherAnswer = RegistrationSurveyAnswer::where('question_id', $questionId)->where('answer', 'Other')->first(); $surveys[] = app(RegistrationSurvey::class, [['answer_id' => $otherAnswer->id, 'other' => $request->get('other')[$questionId]]]); } } $user->surveys()->saveMany($surveys); } }); return redirect('/dashboard'); }
@extends('emails.simple') @section('body') <?php // Serialized objects need to be re-instantiated in order // to have a successful database connection $primaryAddress = \BibleBowl\Address::findOrFail($guardian['primary_address_id']); $group = \BibleBowl\Group::findOrFail($groupId); $playerCount = count($players); ?> @if ($hasEmailBody) @include('emails.theme.text-block', [ 'body' => $emailBody ]) @include('emails.theme.empty-spacer') @endif @include('emails.theme.header', [ 'header' => 'Registration Confirmation' ]) <table cellpadding="0" cellspacing="0" bgcolor="#f4f4f4" border="0"> <tr> <!--=========== JUST ENTER YOUR INFO HERE =========--> <td valign="middle" bgcolor="#f4f4f4" height="10" class="sectionRegularInfoTextTD" style="border-collapse: collapse;color: #42484c;font-family: Arial, Tahoma, Verdana, sans-serif;font-size: 13px;font-weight: lighter;padding: 0;margin: 0;text-align: left;line-height: 165%;letter-spacing: 0;"> @include('emails.theme.text-block', [ 'body' => 'Please double check the below information to ensure everything is correct. If you find a mistake, you can '.EmailTemplate::link(url('login'), 'login to your Bible Bowl account').' and correct the mistake.' ])
public static function validationRules($groupAlreadyExists = false) { // Check to see if a group is a duplicate by looking at the location where they meet (zip code or city/state // and their program/name when the group is created Validator::extend('isnt_duplicate', function ($attribute, $value, $parameters, $validator) { $meetingAddress = Address::findOrFail($validator->getData()['meeting_address_id']); $group = Group::where('name', $value)->where('program_id', $validator->getData()['program_id'])->whereHas('meetingAddress', function ($query) use($meetingAddress) { $query->orWhere(function ($query) use($meetingAddress) { $query->where('city', '=', $meetingAddress->city); $query->where('state', '=', $meetingAddress->state); })->where('zip_code', '=', $meetingAddress->zip_code); })->first(); return is_null($group); }); return ['name' => 'required|max:128' . ($groupAlreadyExists ? '' : '|isnt_duplicate'), 'program_id' => 'required', 'owner_id' => 'required|exists:users,id', 'address_id' => 'required|exists:addresses,id']; }
/** * @param AddressOwnerOnlyRequest $request * @param $id * * @return mixed */ public function destroy(AddressOwnerOnlyRequest $request, $id) { $address = Address::find($id); $address->delete(); return redirect('/account/address')->withFlashSuccess('Your ' . $address->name . ' address has been deleted'); }
public function messages() { return array_merge(['first_name.required_unless' => 'The first name field is required', 'last_name.required_unless' => 'The last name field is required', 'email.required_unless' => 'The email field is required', 'gender.required_unless' => 'The gender field is required', 'address_one.required_unless' => 'The street address field is required', 'zip_code.required_unless' => 'The zip code field is required', 'spouse_gender.required' => "Your spouse's gender is required", 'spouse_shirt_size.required' => "Your spouse's shirt size is required"], Address::validationMessages()); }
/** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return Address::where('id', $this->route('address'))->where('user_id', Auth::id())->exists(); }
/** * @param array $attributes * * @return static */ public function create(array $attributes) { // coordinates are fetched via model events return Address::create($attributes); }