public static function make(User $user, UserRequest $request) { $avatarName = static::generateName(null, $request->file('avatar')->getClientOriginalExtension()); $avatarUrl = static::url($avatarName); $avatarMime = $request->file('avatar')->getMimeType(); $avatarSize = $request->file('avatar')->getSize(); // Move avatar file $request->file('avatar')->move(public_path('avatars'), $avatarName); if (isset($user->avatar) && !is_null($user->avatar->name)) { $avatar = $user->avatar; Avatar::deleteFile($avatar->name); } else { // New up Avatar object $avatar = new Avatar(); // Associate user to the avatar $avatar->user()->associate($user); } // Assign required properties $avatar->name = $avatarName; $avatar->url = $avatarUrl; $avatar->mime = $avatarMime; $avatar->size = $avatarSize; // Save the avatar $avatar->save(); }
/** * Run the database seeds. * * @return void */ public function run() { $faker = Faker\Factory::create(); foreach (range(1, 30) as $index) { Avatar::create(['name' => "image{$index}.jpg", 'url' => $faker->imageUrl(300, 300, 'people'), 'mime' => "image/jpeg", 'size' => 17000, 'user_id' => $index]); } }
/** * Update the specified resource in storage. * * @param UserRequest|Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(UserRequest $request, $id) { // Get only User related input fields $userFields = Input::only('first_name', 'last_name', 'phone_number', 'email', 'password', 'date_of_birth'); // Hash the password if (!empty($userFields['password'])) { $userFields['password'] = bcrypt($request['password']); } // Get only Address $addressFields = Input::only('address')['address']; // If any exceptions are thrown any DB operations // will be automatically rolled back. DB::transaction(function () use($request, $userFields, $addressFields, $id) { // Fetch User from the database $user = User::findOrFail($id); // Update user details foreach ($userFields as $k => $v) { if (!($k == 'password' && empty($v))) { $user->{$k} = $v; } } // Create new Address if does not exist in the database if (is_null($user->address)) { // Create new Address if input fields not empty. if (!empty($addressFields)) { $user->address()->create($addressFields); } } else { // Update Address foreach ($addressFields as $k => $v) { $user->address->{$k} = $v; } $user->address->save(); } // Create new Avatar if (Input::hasFile('avatar') && Input::file('avatar')->isValid()) { Avatar::make($user, $request); } // Assign user to a Local Club $user->club()->associate(Club::find($request['club_id'])); // Assign User to a Role $user->role()->associate(Role::find($request['role_id'])); // Remove user categories if (is_null($request['categories'])) { $user->categories()->detach(); } else { if (is_array($request['categories'])) { // Assign User to categories $user->categories()->sync($request['categories']); } } // Save user $user->save(); }); flash()->success('Success!', "User data has been updated!"); return redirect(route('admin.users.show', $id)); }