Big update for category controller - for admin panel

This commit is contained in:
2022-02-15 15:26:10 +01:00
parent 982438a26e
commit 38e5a8f485
19 changed files with 363 additions and 14 deletions

View File

@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
@@ -15,6 +16,9 @@ class LoginController extends Controller
public function authenticate(Request $request)
{
if (Auth::check())
return redirect()->route('admin.home');
$credentials = $request->validate([
'email' => ['required', 'email'],
'password' => ['required'],
@@ -39,8 +43,11 @@ class LoginController extends Controller
return redirect()->route('admin.auth.login');
}
public function login(): View
public function login(): View|RedirectResponse
{
if (Auth::check())
return redirect()->route('admin.home');
return view('auth.login');
}

View File

@@ -3,6 +3,8 @@
namespace App\Http\Controllers\Dashboard;
use App\Http\Controllers\Controller;
use App\Repository\Interfaces\CategoryRepository;
use App\Repository\Interfaces\ProjectRepository;
use Illuminate\Http\Request;
use Illuminate\View\View;
@@ -10,12 +12,18 @@ class AdminPanelController extends Controller
{
public function __construct(
) {}
private CategoryRepository $categoryRepository,
private ProjectRepository $projectRepository
) {
$this->categoryRepository->auth = true;
}
public function __invoke(Request $request): View
{
return view('dashboard.home');
$categories = $this->categoryRepository->all();
$projects = $this->projectRepository->all();
return view('dashboard.home', compact('categories', 'projects'));
}
}

View File

@@ -0,0 +1,63 @@
<?php
declare(strict_types=1);
namespace App\Http\Controllers\Dashboard;
use App\Http\Requests\CategoryRequest;
use App\Models\Category;
use App\Repository\Interfaces\CategoryRepository;
use Illuminate\Http\RedirectResponse;
use Illuminate\View\View;
class CategoryController
{
public function __construct(
private CategoryRepository $categoryRepository
) {}
public function update(CategoryRequest $request, Category $category)
{
$validate = $request->validated();
if ($this->categoryRepository->update($category, $validate)) {
return back()->with('message', 'Zaktualizowano kategorię!');
}
return back()->withError(['message_error', 'Wystąpił błąd podczas aktualizacji!']);
}
public function store(CategoryRequest $request)
{
$validate = $request->validated();
if ($category = $this->categoryRepository->create($validate)) {
return redirect()->route('admin.category.update', ['category' => $category])->with('message', 'Utworzono kategorię!');
}
return back()->withError(['message_error', 'Wystąpił błąd podczas tworzenia!']);
}
public function create(): View
{
return view('dashboard.categories.create');
}
public function edit(Category $category): View
{
return view('dashboard.categories.edit', compact('category'));
}
public function delete(Category $category): View
{
return view('dashboard.categories.delete', compact('category'));
}
public function destroy(Category $category): RedirectResponse
{
$name = $category->name;
$category->delete();
return redirect()->route('admin.home')->with('message', 'Usunięto kategorię "'. $name .'"');
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CategoryRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|string|min:3|max:25',
'slug' => 'required|string|min:3|max:25',
'priority' => 'required|numeric|min:0|max:10',
'default' => 'nullable|in:yes,1,true,on',
'visible' => 'nullable|in:yes,1,true,on'
];
}
}