diff --git a/app/Http/Controllers/Api/MessageController.php b/app/Http/Controllers/Api/MessageController.php
new file mode 100644
index 0000000..e8d0a54
--- /dev/null
+++ b/app/Http/Controllers/Api/MessageController.php
@@ -0,0 +1,27 @@
+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.'
+ ]);
+ }
+}
diff --git a/app/Http/Controllers/Dashboard/MessageController.php b/app/Http/Controllers/Dashboard/MessageController.php
index 326c0f5..f8da6ae 100644
--- a/app/Http/Controllers/Dashboard/MessageController.php
+++ b/app/Http/Controllers/Dashboard/MessageController.php
@@ -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()),
+ ]);
}
}
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
index 67c4b51..c6f1137 100644
--- a/app/Http/Kernel.php
+++ b/app/Http/Kernel.php
@@ -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' => [
diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php
index 149f405..9fc74ae 100644
--- a/app/Http/Middleware/TrustProxies.php
+++ b/app/Http/Middleware/TrustProxies.php
@@ -1,5 +1,7 @@
'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.',
+ ];
+ }
+}
diff --git a/app/Http/Resources/MessageCollection.php b/app/Http/Resources/MessageCollection.php
new file mode 100644
index 0000000..88adf7a
--- /dev/null
+++ b/app/Http/Resources/MessageCollection.php
@@ -0,0 +1,17 @@
+ $this->collection,
+ ];
+ }
+}
diff --git a/app/Http/Resources/MessageResource.php b/app/Http/Resources/MessageResource.php
new file mode 100644
index 0000000..461d9a7
--- /dev/null
+++ b/app/Http/Resources/MessageResource.php
@@ -0,0 +1,22 @@
+ $this->id,
+ 'sender' => $this->sender,
+ 'email' => $this->email,
+ 'message' => $this->message,
+ ];
+ }
+}
diff --git a/app/Models/Message.php b/app/Models/Message.php
new file mode 100644
index 0000000..e3f5320
--- /dev/null
+++ b/app/Models/Message.php
@@ -0,0 +1,21 @@
+id();
+ $table->string('message', 500);
+ $table->string('email', 250);
+ $table->string('sender', 50);
+ $table->timestamps();
+ });
+ }
+
+ public function down(): void
+ {
+ Schema::dropIfExists('messages');
+ }
+};
diff --git a/resources/js/Pages/Messages/Index.vue b/resources/js/Pages/Messages/Index.vue
index 82f50a9..9e9b610 100644
--- a/resources/js/Pages/Messages/Index.vue
+++ b/resources/js/Pages/Messages/Index.vue
@@ -1,3 +1,12 @@
+
+
@@ -5,30 +14,42 @@
Wiadomości
-
+
-
+
+
+
+
- ID |
- Wysyłający |
- E-mail |
- |
+ ID |
+ Wysyłający |
+ E-mail |
+ |
-
+ :href="`/dashboard/message/${message.id}`">
+ #{{ message.id }} |
+ {{ message.sender }} |
+ {{ message.email }} |
+
+
+ |
+
+
+ Lista pusta!
+
diff --git a/resources/js/Share/Layout/App.vue b/resources/js/Share/Layout/App.vue
index 6938efe..1130520 100644
--- a/resources/js/Share/Layout/App.vue
+++ b/resources/js/Share/Layout/App.vue
@@ -27,9 +27,8 @@ defineProps({
diff --git a/routes/api.php b/routes/api.php
index 06d1a68..40aaea1 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -19,3 +19,5 @@ Route::prefix('project')->group(function() {
});
Route::get('cv/{cv}', 'CVController@show');
+
+Route::post('message', 'MessageController@store');