diff --git a/app/Classes/Modules/Accounts/ControllersLogic/FetchUserByEmailLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/FetchUserByEmailLogic.php new file mode 100644 index 00000000..aa563b02 --- /dev/null +++ b/app/Classes/Modules/Accounts/ControllersLogic/FetchUserByEmailLogic.php @@ -0,0 +1,63 @@ + 'Fetch Users', + 'message' => 'You have successfully retrieved the user by email' + ]; + } + + /** @var CanFetchUser */ + private $canFetchUser; + + /** @var FetchesUser */ + private $fetchesUser; + + /** + * FetchUserByEmailLogic constructor. + * @param CanFetchUser $canFetchUser + * @param FetchesUser $fetchessUser + */ + public function __construct(CanFetchUser $canFetchUser, FetchesUser $fetchesUser) + { + $this->canFetchUser = $canFetchUser; + $this->fetchesUser = $fetchesUser; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canFetchUser->passes(); + + $query = $this->fetchesUser->execute(['email' => $request->route('email')]); + + return $this->resourceResponse(new UserCompanyResource($query)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + } + +} diff --git a/app/Http/Controllers/Accounts/FetchUserByEmailController.php b/app/Http/Controllers/Accounts/FetchUserByEmailController.php new file mode 100644 index 00000000..f09d3532 --- /dev/null +++ b/app/Http/Controllers/Accounts/FetchUserByEmailController.php @@ -0,0 +1,22 @@ +execute($request); + } + +} diff --git a/app/Http/Resources/UserCompanyResource.php b/app/Http/Resources/UserCompanyResource.php new file mode 100644 index 00000000..27c56079 --- /dev/null +++ b/app/Http/Resources/UserCompanyResource.php @@ -0,0 +1,26 @@ + $this->id, + 'name' => $this->name, + 'reference' => $this->companyModule()->first()->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference, + 'type' => (int) $this->type, + 'status' => (int) $this->status, + 'email' => $this->email + ]; + } +} diff --git a/resources/assets/vue/components/companies/elements/UserCompanyComponent.vue b/resources/assets/vue/components/companies/elements/UserCompanyComponent.vue new file mode 100644 index 00000000..ed8a2463 --- /dev/null +++ b/resources/assets/vue/components/companies/elements/UserCompanyComponent.vue @@ -0,0 +1,39 @@ + + diff --git a/resources/assets/vue/components/reports/sections/SearchCustomerByEmailComponent.vue b/resources/assets/vue/components/reports/sections/SearchCustomerByEmailComponent.vue new file mode 100644 index 00000000..5de7509b --- /dev/null +++ b/resources/assets/vue/components/reports/sections/SearchCustomerByEmailComponent.vue @@ -0,0 +1,86 @@ + + diff --git a/resources/views/pages/admin/customers.blade.php b/resources/views/pages/admin/customers.blade.php index 307bb99b..d11f50dc 100644 --- a/resources/views/pages/admin/customers.blade.php +++ b/resources/views/pages/admin/customers.blade.php @@ -3,6 +3,7 @@
+
diff --git a/routes/account.php b/routes/account.php index b62064aa..e857cf0a 100644 --- a/routes/account.php +++ b/routes/account.php @@ -35,6 +35,7 @@ Route::group(['prefix' => 'account', 'namespace' => 'Accounts', 'as' => 'account }); Route::group(['middleware' => 'valid.token', 'prefix' => 'user', 'as' => 'user.'], function () { + Route::get('/{email}', 'FetchUserByEmailController@fetch')->name('company'); Route::post('/show', 'FetchUserController@fetch')->name('show'); Route::get('/list', 'ListUsersController@list')->name('list'); Route::put('/update/{id}', 'UpdateUserController@update')->name('update');