%PDF- %PDF-
Direktori : /var/www/html/diaspora/api_internal/app/Http/Controllers/Api/v1/ |
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(), ]); } } }