- add send CV status

This commit is contained in:
2023-08-04 16:25:09 +02:00
parent 6a033d108c
commit 2a2869e2c6
10 changed files with 104 additions and 11 deletions

View File

@@ -56,6 +56,17 @@ class CVController extends Controller
->with('success', 'Utworzono nowe CV dla firmy ' . $request->get('recipient'));
}
public function updateSendStatus(CV $cv): RedirectResponse
{
$cv->update([
'sended' => true,
'sended_timestamp' => now()
]);
return redirect()
->route('admin.cv.show', ['cv' => $cv])
->with('success', 'Status wysłania ustawiono jako "wysłano".');
}
public function edit(CV $cv): InertiaResponse
{
return inertia('CV/Edit', [
@@ -65,16 +76,30 @@ class CVController extends Controller
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'),
'notes' => $request->get('notes'),
$toUpdate = [
'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'),
'notes' => $request->get('notes'),
];
if ($cv->sended && ! $request->boolean('sended')) {
$toUpdate = array_merge($toUpdate, [
'sended' => false,
'sended_timestamp' => null,
]);
} else if (! $cv->sended && $request->boolean('sended')) {
$toUpdate = array_merge($toUpdate, [
'sended' => true,
'sended_timestamp' => now(),
]);
}
$cv->update($toUpdate);
return redirect()
->back()
->with('success', 'Zaktualizowano CV dla firmy ' . $request->get('recipient'));

View File

@@ -19,6 +19,19 @@ class CVRequest extends FormRequest
'rodo' => 'nullable|string',
'position' => 'nullable|string',
'notes' => 'nullable|string',
'sended' => 'nullable|boolean',
];
}
protected function prepareForValidation(): void
{
$this->merge([
'sended' => $this->toBoolean($this->sended),
]);
}
private function toBoolean($booleable): bool
{
return filter_var($booleable, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
}
}

View File

@@ -23,7 +23,7 @@ class ProjectRequest extends FormRequest
'project_url' => 'nullable|string',
'project_version' => 'nullable|string',
'description' => 'nullable|string',
'description' => 'required|string|min:3',
'visible' => 'required|boolean'
];
}

View File

@@ -21,6 +21,10 @@ class FullCVResource extends JsonResource
'locations' => $this->locations,
'views' => $this->resource->info()->select('id')->get()->count(),
'registeredViews' => $this->views,
'sended' => [
'status' => $this->sended,
'datetime' => $this->sended_timestamp?->format('d-m-Y H:i:s'),
],
'position' => $this->position,
'mission' => explode(PHP_EOL, $this->mission ?? '', 5),
'rodo' => $this->rodo,