Fix missing user fields #785 (#786)

This commit is contained in:
Nabeel S
2020-08-13 17:44:41 -04:00
committed by GitHub
parent e5ed66b372
commit 27316f96e8
2 changed files with 11 additions and 9 deletions

View File

@@ -101,10 +101,12 @@ class ProfileController extends Controller
} }
$airports = $this->airportRepo->all(); $airports = $this->airportRepo->all();
$userFields = $this->userRepo->getUserFields($user, true);
return view('profile.index', [ return view('profile.index', [
'user' => $user, 'user' => $user,
'airports' => $airports, 'userFields' => $userFields,
'airports' => $airports,
]); ]);
} }
@@ -131,7 +133,7 @@ class ProfileController extends Controller
$airlines = $this->airlineRepo->selectBoxList(); $airlines = $this->airlineRepo->selectBoxList();
$airports = $this->airportRepo->selectBoxList(false, setting('pilots.home_hubs_only')); $airports = $this->airportRepo->selectBoxList(false, setting('pilots.home_hubs_only'));
$userFields = $this->userRepo->getUserFields($user); $userFields = $this->userRepo->getUserFields($user, false);
return view('profile.edit', [ return view('profile.edit', [
'user' => $user, 'user' => $user,

View File

@@ -31,13 +31,15 @@ class UserRepository extends Repository
/** /**
* Get all of the fields which has the mapped values * Get all of the fields which has the mapped values
* *
* @param \App\Models\User $user * @param User $user
* @param bool $only_public_fields Only include the user's public fields
* *
* @return \App\Models\UserField[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Support\Collection * @return \App\Models\UserField[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Support\Collection
*/ */
public function getUserFields(User $user): Collection public function getUserFields(User $user, $only_public_fields = true): Collection
{ {
return (UserField::all())->map(function ($field, $_) use ($user) { $fields = UserField::where(['private' => !$only_public_fields])->get();
return $fields->map(function ($field, $_) use ($user) {
foreach ($user->fields as $userFieldValue) { foreach ($user->fields as $userFieldValue) {
if ($userFieldValue->field->slug === $field->slug) { if ($userFieldValue->field->slug === $field->slug) {
$field->value = $userFieldValue->value; $field->value = $userFieldValue->value;
@@ -59,11 +61,9 @@ class UserRepository extends Repository
'state' => UserState::PENDING, 'state' => UserState::PENDING,
]; ];
$users = $this->orderBy('created_at', 'desc') return $this->orderBy('created_at', 'desc')
->findWhere($where, ['id']) ->findWhere($where, ['id'])
->count(); ->count();
return $users;
} }
/** /**