%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/workeasy-api/app/Http/Controllers/Api/
Upload File :
Create Path :
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());
        }
    }

}

Zerion Mini Shell 1.0