- add cv management
This commit is contained in:
95
app/Http/Controllers/Dashboard/CVController.php
Normal file
95
app/Http/Controllers/Dashboard/CVController.php
Normal file
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Controllers\Dashboard;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\CVRequest;
|
||||
use App\Http\Resources\CVInfoCollection;
|
||||
use App\Http\Resources\FullCVCollection;
|
||||
use App\Http\Resources\FullCVResource;
|
||||
use App\Models\CV;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Str;
|
||||
use Inertia\Response as InertiaResponse;
|
||||
|
||||
class CVController extends Controller
|
||||
{
|
||||
public function index(Request $request): InertiaResponse
|
||||
{
|
||||
return inertia('CV/Index', [
|
||||
'cvs' => new FullCVCollection(CV::all()),
|
||||
]);
|
||||
}
|
||||
|
||||
public function show(CV $cv): InertiaResponse
|
||||
{
|
||||
return inertia('CV/Show', [
|
||||
'cv' => new FullCVResource($cv),
|
||||
'cvInfo' => new CVInfoCollection($cv->info()->orderByDesc('id')->get()),
|
||||
]);
|
||||
}
|
||||
|
||||
public function create(): InertiaResponse
|
||||
{
|
||||
return inertia('CV/Create');
|
||||
}
|
||||
|
||||
public function store(CVRequest $request): RedirectResponse
|
||||
{
|
||||
CV::query()
|
||||
->create([
|
||||
'token' => Str::random(50),
|
||||
'recipient' => $request->get('recipient'),
|
||||
'email' => $request->get('email'),
|
||||
'phone_number' => $request->get('phone_number'),
|
||||
'locations' => ($locations = $request->get('locations')) === [''] ? [] : $locations,
|
||||
'mission' => ($mission = $request->get('mission')) === [''] ? [] : $mission,
|
||||
'rodo' => ($rodo =$request->get('rodo')) === '' ? null : $rodo,
|
||||
'position' => $request->get('position'),
|
||||
]);
|
||||
return redirect()
|
||||
->route('admin.cv.store')
|
||||
->with('success', 'Utworzono nowe CV dla firmy ' . $request->get('recipient'));
|
||||
}
|
||||
|
||||
public function edit(CV $cv): InertiaResponse
|
||||
{
|
||||
return inertia('CV/Edit', [
|
||||
'cv' => new FullCVResource($cv),
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(CVRequest $request, CV $cv): RedirectResponse
|
||||
{
|
||||
$cv->update([
|
||||
'recipient' => $request->get('recipient'),
|
||||
'email' => $request->get('email'),
|
||||
'phone_number' => $request->get('phone_number'),
|
||||
'locations' => ($locations = $request->get('locations')) === [''] ? [] : $locations,
|
||||
'mission' => ($mission = $request->get('mission')) === [''] ? [] : $mission,
|
||||
'rodo' => ($rodo =$request->get('rodo')) === '' ? null : $rodo,
|
||||
'position' => $request->get('position'),
|
||||
]);
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', 'Zaktualizowano CV dla firmy ' . $request->get('recipient'));
|
||||
}
|
||||
|
||||
public function delete(CV $cv): InertiaResponse
|
||||
{
|
||||
return inertia('CV/ConfirmDelete', compact('cv'));
|
||||
}
|
||||
|
||||
public function destroy(CV $cv): RedirectResponse
|
||||
{
|
||||
$name = $cv->recipient;
|
||||
$cv->delete();
|
||||
|
||||
return redirect()
|
||||
->route('admin.cv.index')
|
||||
->with('info', 'Usunięto CV dla firmy "'. $name .'"');
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user