%PDF- %PDF-
Direktori : /var/www/html/workeasy-api/app/Http/Controllers/Api/ |
Current File : /var/www/html/workeasy-api/app/Http/Controllers/Api/UsersController.php |
<?php namespace Workeasy\Http\Controllers\Api; use EllipseSynergie\ApiResponse\Contracts\Response; use Illuminate\Support\Facades\DB; use Spatie\MediaLibrary\HasMedia\HasMediaTrait; use Workeasy\Http\Requests\Users\ChangeImageRequest; use Workeasy\Http\Requests\Users\UserStoreRequest; use Workeasy\Http\Requests\Users\UserUpdateRequest; use Workeasy\Models\Role; use Workeasy\Models\User; use Workeasy\Traits\AddImageTrait; use Workeasy\Transformers\UserTransformer; class UsersController extends ApiController { use AddImageTrait, HasMediaTrait; private $transformer; public function __construct(Response $response, UserTransformer $transformer) { parent::__construct($response); $this->transformer = $transformer; } public function store(UserStoreRequest $request) { DB::beginTransaction(); try { /** @var User $user */ $user = User::query()->create($request->only('email', 'password')); $company = Role::query()->where('name', 'COMPANY')->first(); $user->roles()->attach($company); $company = $request->get('company'); $user->company()->create([ 'name' => $company['name'], 'industry' => $company['industry'], 'vat' => $company['vat'], 'address' => $company['address'], 'phone_number' => $company['phone_number'], ]); if ($request->get('media')) { $user->updateProfileImage($request->get('media')); } DB::commit(); return $this->response->withItem($user, $this->transformer); } catch (\Exception $exception) { DB::rollback(); return $this->response->errorInternalError($exception->getMessage()); } } public function changeImageProfile(ChangeImageRequest $request) { /** @var User $user */ $user = $this->authenticatedUser(); $user->updateProfileImage($request->get('media')); return $this->response->withItem($user->fresh(), $this->transformer); } public function update(UserUpdateRequest $request) { DB::beginTransaction(); try { /** @var User $user */ $user = $this->authenticatedUser(); $user->update($request->only('email')); $company = $request->get('company'); $user->company()->update([ 'name' => $company['name'], 'industry' => $company['industry'], 'vat' => $company['vat'], 'address' => $company['address'], 'phone_number' => $company['phone_number'], ]); DB::commit(); return $this->response->withItem($user->fresh(), $this->transformer); } catch (\Exception $exception) { DB::rollback(); return $this->response->errorInternalError($exception->getMessage()); } } }