- prepare messages

This commit is contained in:
2023-08-03 18:32:27 +02:00
parent a7e93681f3
commit 620217e1d5
12 changed files with 190 additions and 18 deletions

View File

@@ -0,0 +1,27 @@
<?php
declare(strict_types=1);
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Http\Requests\MessageRequest;
use App\Models\Message;
use Illuminate\Http\JsonResponse;
class MessageController extends Controller
{
public function store(MessageRequest $request): JsonResponse
{
$data = $request->toArray();
Message::query()->create([
'message' => $data['message'],
'email' => $data['email'],
'sender' => $data['sender'],
]);
return response()->json([
'message' => 'Dziękuję za wiadomość! Odpowiem możliwie najszybciej.'
]);
}
}

View File

@@ -5,11 +5,15 @@ declare(strict_types=1);
namespace App\Http\Controllers\Dashboard;
use App\Http\Controllers\Controller;
use App\Http\Resources\MessageCollection;
use App\Models\Message;
use Inertia\Response as InertiaResponse;
class MessageController extends Controller
{
public function index() : InertiaResponse {
return inertia('Messages/Index');
return inertia('Messages/Index', [
'messages' => new MessageCollection(Message::all()),
]);
}
}

View File

@@ -18,7 +18,6 @@ class Kernel extends HttpKernel
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
Core::class,
\App\Http\Middleware\HandleInertiaRequests::class,
];
protected $middlewareGroups = [
@@ -29,6 +28,7 @@ class Kernel extends HttpKernel
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\HandleInertiaRequests::class,
],
'api' => [

View File

@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustProxies as Middleware;

View File

@@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class MessageRequest extends FormRequest
{
public function rules(): array
{
return [
'message' => 'required|string|min:3|max:500',
'sender' => 'required|string|min:3|max:50',
'email' => 'required|email|max:250',
];
}
public function messages(): array
{
return [
'message.required' => 'Pole wiadomości jest wymagane.',
'sender.required' => 'Pole nadawcy jest wymagane.',
'email.required' => 'Pole e-mail jest wymagane.',
'message.min' => 'Pole wiadomości wymaga 3 znaki.',
'sender.min' => 'Pole nadawcy wymaga 3 znaki.',
'email.email' => 'Pole musi być e-mailem.',
];
}
}

View File

@@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\ResourceCollection;
class MessageCollection extends ResourceCollection
{
public function toArray($request): array
{
return [
'data' => $this->collection,
];
}
}

View File

@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class MessageResource extends JsonResource
{
public static $wrap = null;
public function toArray($request): array
{
return [
'id' => $this->id,
'sender' => $this->sender,
'email' => $this->email,
'message' => $this->message,
];
}
}