diff --git a/app/Http/Controllers/SourceController.php b/app/Http/Controllers/SourceController.php new file mode 100644 index 0000000..4b9dff7 --- /dev/null +++ b/app/Http/Controllers/SourceController.php @@ -0,0 +1,102 @@ +sources = $sourceRepo; + } + + public function index(Request $request) + { + $member = Auth::user(); + return view('back.sources', [ + 'mode' => 'index', + 'handle' => $member->handle, + 'sources' => $this->sources->getAll(), + 'title' => "Manage Sources"]); + } + + public function editSource(Request $request, $id = 0) + { + $source = $this->sources->get($id); + + return view('back.sources', [ + 'mode' => 'source-edit', + 'source' => $source, + 'title' => "Edit Source Info"]); + } + + public function createSource(Request $Request) + { + return view('back.sources', [ + 'mode' => 'source-create', + 'title' => "Enter a new Source"]); + } + + //actions + + public function sourceEdit(Request $request) + { + $token = csrf_token(); + //role check + $member = Auth::user(); + if ($member->role == 0) { + $valid = $request->validate([ + 'url' => ['required'], + 'type' => ['required'], + 'status' => ['required'], + 'format' => ['required'], + ]); + + if ($valid) { + $response = $this->sources->edit($request); + if ($response['status'] == true) { + return back()->with('message', $response['message']); + } else { + return back()->withErrors([$response['message']]); + } + } else { + return back()->withErrors(['Misssing some required info, homie.']); + } + } else { + return back()->withErrors(['Nah, you can\'t do this. Wrong permissions.']); + } + } + + public function sourceCreate(Request $request) + { + $token = csrf_token(); + $member = Auth::user(); + if ($member->role == 0) { + $valid = $request->validate([ + 'url' => ['required'], + 'type' => ['required'], + 'status' => ['required'], + 'format' => ['required'], + ]); + + if ($valid) { + $response = $this->sources->add($request); + if ($response['status'] == true) { + return redirect('/den/sources')->with('message', $response['message']); + } else { + return back()->withErrors([$response['message']]); + } + } else { + return back()->withErrors(['Misssing some required info, homie.']); + } + } else { + return back()->withErrors(['Nah, you can\'t do this. Wrong permissions.']); + } + } +} diff --git a/app/Repositories/SourceRepository.php b/app/Repositories/SourceRepository.php index 25409ca..28670c3 100644 --- a/app/Repositories/SourceRepository.php +++ b/app/Repositories/SourceRepository.php @@ -21,11 +21,61 @@ class SourceRepository $this->sources = $source::where("active", true)->get(); } + public function getAll() + { + return $this->source::all(); + } + + public function get($id) + { + return $this->source::where("id", $id)->first(); + } + public function getActive() { return $this->source::where("active", true)->get(); } + public function edit($request) + { + $source = $this->get($request->id); + $source->url = $request->url; + $source->type = $request->type; + $source->format = $request->format; + $source->active = $request->status; + $source->last_updated = Carbon::now(); + //token check + if ($request->token != '' && $request->token != 'none') { + $source->token = $request->token; + } else { + $source->token = ''; + } + + if ($source->save()) { + return ['status' => true, 'message' => "Source Editited"]; + } else { + return ['status' => false, 'message' => "Source Not Editited"]; + } + } + + public function add($request) + { + $newSource = $this->source::create([ + 'url' => $request->url, + 'type' => $request->type, + 'format' => $request->format, + 'active' => $request->status, + 'token' => $request->token, + 'last_udated' => Carbon::now(), + ]); + + if ($newSource) { + return ['status' => true, 'message' => "New Source Created!"]; + } else { + return ['status' => false, 'message' => "Uh oh, New Source Not Created!"]; + } + } + public function updateSourceData($index = 0) { //checks all the sources to refresh data diff --git a/resources/views/back/sources.blade.php b/resources/views/back/sources.blade.php new file mode 100644 index 0000000..ada42ee --- /dev/null +++ b/resources/views/back/sources.blade.php @@ -0,0 +1,42 @@ +@extends('frame') + +@section('title', 'Den | Sources Admin') + + @php + switch($mode) + { + case 'source-create': + $action_url = '/den/source/create'; + break; + case 'source-edit': + $action_url = '/den/source/edit'; + break; + } + @endphp + @section('main-content') +
+
+ @switch($mode) + @case('source-edit') +

Edit Info for {{$source->url}}

+ @include('forms.source-edit') +
+ @break + + @case('source-create') +

New Source Info

+ @include('forms.source-edit') +
+ @break + + @default +

Current Sources

+ @foreach($sources as $source) + {{$source->url}}
+ @endforeach +

Add Source

+ Add a new Source
+ @endswitch +
+
+ @endsection \ No newline at end of file diff --git a/resources/views/forms/source-edit.blade.php b/resources/views/forms/source-edit.blade.php new file mode 100644 index 0000000..0a926aa --- /dev/null +++ b/resources/views/forms/source-edit.blade.php @@ -0,0 +1,66 @@ +
+
+ @php + isset($source->url) ? $url = $source->url : $url = ''; + @endphp +
+ +
+ @php + isset($source->type) ? $type = $source->type : $type = ''; + @endphp +
+ +
+ @php + isset($source->format) ? $format = $source->format : $format = ''; + @endphp +
+ +
+ + @php + isset($source->active) ? $status = $source->active : $status = false; + @endphp +
+ +
+ @php + isset($source->token) ? $token = $source->token : $token = ''; + @endphp +
+ +
+ +
+ @csrf + @php + isset($source->id) ? $id = $source->id : $id = 0; + @endphp + + +
\ No newline at end of file diff --git a/routes/web.php b/routes/web.php index d58148e..87ba852 100644 --- a/routes/web.php +++ b/routes/web.php @@ -8,6 +8,7 @@ use App\Http\Controllers\LocationController; use App\Http\Controllers\MemberController; use App\Http\Controllers\ExportController; use App\Http\Controllers\AppealController; +use App\Http\Controllers\SourceController; /* |-------------------------------------------------------------------------- @@ -55,9 +56,13 @@ Route::group(['prefix' => 'den', 'middleware' => 'member.check'], function () { Route::get("/member/{uuid}", [MemberController::class, 'editMember']); Route::get("/member/edit/create", [MemberController::class, 'createMember']); //source stuff - Route::get("/sources", [MemberController::class, 'index']); + Route::get("/sources", [SourceController::class, 'index']); + Route::get("/source/{id}", [SourceController::class, 'editSource']); + Route::get("/source/edit/create", [SourceController::class, 'createSource']); //actions Route::post("/profile/edit", [MemberController::class, 'profileEdit']); Route::post("/member/edit", [MemberController::class, 'memberEdit']); Route::post("/member/create", [MemberController::class, 'memberCreate']); + Route::post("/source/edit", [SourceController::class, 'sourceEdit']); + Route::post("/source/create", [SourceController::class, 'sourceCreate']); });