- add delete for messages

This commit is contained in:
Kamil Niemczycki 2023-08-04 16:45:15 +02:00
parent 2a2869e2c6
commit 252f5ee6b7
Signed by: kamilniemczycki
GPG Key ID: 04D4E2012F969213
5 changed files with 63 additions and 1 deletions

View File

@ -8,6 +8,7 @@ use App\Http\Controllers\Controller;
use App\Http\Resources\MessageCollection;
use App\Http\Resources\MessageResource;
use App\Models\Message;
use Illuminate\Http\RedirectResponse;
use Inertia\Response as InertiaResponse;
class MessageController extends Controller
@ -24,4 +25,21 @@ class MessageController extends Controller
'message' => new MessageResource($message),
]);
}
public function delete(Message $message) : InertiaResponse
{
return inertia('Messages/ConfirmDelete', [
'message' => new MessageResource($message),
]);
}
public function destroy(Message $message) : RedirectResponse
{
$sender = $message->sender;
$message->delete();
return redirect()
->route('admin.message.index')
->with(['success' => 'Wiadomość od '. $sender .' została usunięta']);
}
}

View File

@ -6,6 +6,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @param int $id
@ -15,7 +16,8 @@ use Illuminate\Database\Eloquent\Model;
*/
class Message extends Model
{
use HasFactory;
use HasFactory,
SoftDeletes;
protected $guarded = [];
}

View File

@ -15,6 +15,7 @@ return new class extends Migration
$table->string('message', 500);
$table->string('email', 250);
$table->string('sender', 50);
$table->softDeletes();
$table->timestamps();
});
}

View File

@ -0,0 +1,37 @@
<script setup>
import { router } from '@inertiajs/vue3';
const props = defineProps({
message: {
type: Object,
required: true,
},
});
function confirmDelete() {
router.delete(`/dashboard/message/${props.message.id}/delete`);
}
</script>
<template>
<InertiaHead title="Usuwanie wiadomości" />
<div class="p-4">
<header class="pb-4">
<h1 class="text-3xl font-roboto font-light">Usuwanie wiadomości</h1>
</header>
<div class="max-w-[600px]">
<p class="mb-4">Na pewno usunąć wiadomość od {{ message.sender }}?</p>
<div class="grid grid-cols-3 gap-2">
<InertiaLink
as="button"
:href="`/dashboard/message/${message.id}`"
class="col-span-1 flex justify-center items-center gap-3 w-full px-2 py-1 border-t-4 border-b-4 border-transparent hover:border-b-black"
><FontAwesomeIcon :icon="['fas', 'backward']" />Anuluj</InertiaLink>
<button
@click.prevent="confirmDelete"
class="col-span-2 flex justify-center items-center gap-3 w-full px-2 py-1 rounded-md bg-red-600 border-4 border-red-600 text-white text-lg hover:bg-transparent hover:text-red-600"
><FontAwesomeIcon :icon="['fas', 'trash']" /><span class="whitespace-nowrap overflow-hidden overflow-ellipsis">Usuń wiadomość od {{ message.sender }}</span></button>
</div>
</div>
</div>
</template>

View File

@ -12,6 +12,10 @@ Route::name('admin.')->group(function () {
->name('index');
Route::get('{message}', 'MessageController@show')
->name('show');
Route::get('{message}/delete', 'MessageController@delete')
->name('delete');
Route::delete('{message}/delete', 'MessageController@destroy')
->name('destroy');
});
Route::name('cv.')->prefix('cv')->group(function (): void {
Route::get('', 'CVController@index')