%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/diaspora/api_internal/app/Http/Controllers/Api/v1/
Upload File :
Create Path :
Current File : /var/www/html/diaspora/api_internal/app/Http/Controllers/Api/v1/MembersController.php

<?php

namespace App\Http\Controllers\Api\v1;

use App\Http\Controllers\Api\ApiController;
use App\Http\Requests\Api\v1\Members\CreateMemberRequest;
use App\Models\Member;
use App\Transformers\MemberTransformer;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;

class MembersController extends ApiController
{
    /**
     * User $user.
     */
    protected $user;

    /**
     * MembersController constructor.
     */
    public function __construct()
    {
        $this->user = auth()
            ->guard('api')
            ->user();
    }

    /**
     * @param Request $request
     * @return MembersController
     */
    public function index(Request $request)
    {
        /** @var LengthAwarePaginator $result */
        $result = Member::query();

        if ($name = $request->get('name')) {
            $result = $result->where('name', 'like', "%$name%");
        }

        $result = $result->orderBy('created_at', 'desc')
                         ->paginate();

        return $this->withPaginated($result, new MemberTransformer());
    }

    /**
     * @param $id
     * @return MembersController
     */
    public function show($id)
    {
        $Member = Member::query()
                        ->findOrFail($id);
        return $this->item($Member, new MemberTransformer());
    }

    public function store(CreateMemberRequest $request)
    {
        DB::beginTransaction();
        try {
            /** @var Member $member */
            $member = Member::query()
                            ->make($request->only(['name', 'position', 'description', 'video_type', 'video_url']));

            if ($avatar = $request->get('avatar')) {
                $member->uploadImage($avatar);
            }

            $member->save();

            activity()
                ->causedBy($this->user)
                ->performedOn($member)
                ->log('created');

            DB::commit();
            return $this->item($member, new MemberTransformer());
        } catch (\Exception $e) {
            DB::rollBack();
            return $this->wrongArguments([
                'message' => $e->getMessage(),
            ]);
        }
    }

    public function update(CreateMemberRequest $request, $id)
    {
        DB::beginTransaction();
        try {
            $member = Member::query()
                            ->findOrFail($id);
            $member->update($request->only(['name', 'position', 'description', 'video_type', 'video_url']));

            // $member->save();

            activity()
                ->causedBy($this->user)
                ->performedOn($member)
                ->log('created');

            DB::commit();
            return $this->item($member, new MemberTransformer());
        } catch (\Exception $e) {
            DB::rollBack();
            return $this->wrongArguments([
                'message' => $e->getMessage(),
            ]);
        }
    }

    public function publish(Member $member)
    {
        $member->publish();
        activity()
            ->causedBy($this->user)
            ->performedOn($member)
            ->log('published');
        return $this->item($member->fresh(), new MemberTransformer);
    }

    public function archive(Member $member)
    {
        $member->archive();
        activity()
            ->causedBy($this->user)
            ->performedOn($member)
            ->log('archived');
        return $this->item($member->fresh(), new MemberTransformer);
    }

    public function unArchive(Member $member)
    {
        $member->unArchive();
        activity()
            ->causedBy($this->user)
            ->performedOn($member)
            ->log('unarchived');
        return $this->item($member->fresh(), new MemberTransformer);
    }

    public function getVideoTypes()
    {
        return response()->json([
            ['code' => Member::VIDEO_YOUTUBE, 'description' => trans("videoTypes." . Member::VIDEO_YOUTUBE)],
        ]);
    }

    public function updateAvatar(Request $request, Member $member)
    {
        DB::beginTransaction();
        try {
            $member->uploadImage($request->get('avatar'));

            activity()
                ->causedBy($this->user)
                ->performedOn($member)
                ->log('updated-avatar');

            DB::commit();
            return $this->item($member->fresh(), new MemberTransformer());
        } catch (\Exception $e) {
            DB::rollBack();
            return $this->wrongArguments([
                'message' => $e->getMessage(),
            ]);
        }
    }

}

Zerion Mini Shell 1.0