- prepare messages
This commit is contained in:
27
app/Http/Controllers/Api/MessageController.php
Normal file
27
app/Http/Controllers/Api/MessageController.php
Normal 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.'
|
||||
]);
|
||||
}
|
||||
}
|
@@ -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()),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@@ -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' => [
|
||||
|
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Http\Middleware\TrustProxies as Middleware;
|
||||
|
31
app/Http/Requests/MessageRequest.php
Normal file
31
app/Http/Requests/MessageRequest.php
Normal 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.',
|
||||
];
|
||||
}
|
||||
}
|
17
app/Http/Resources/MessageCollection.php
Normal file
17
app/Http/Resources/MessageCollection.php
Normal 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,
|
||||
];
|
||||
}
|
||||
}
|
22
app/Http/Resources/MessageResource.php
Normal file
22
app/Http/Resources/MessageResource.php
Normal 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,
|
||||
];
|
||||
}
|
||||
}
|
21
app/Models/Message.php
Normal file
21
app/Models/Message.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* @param int $id
|
||||
* @param string $message
|
||||
* @param string $email
|
||||
* @param string $sender
|
||||
*/
|
||||
class Message extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $guarded = [];
|
||||
}
|
Reference in New Issue
Block a user