Skip to content

Commit

Permalink
#5 - added creating students
Browse files Browse the repository at this point in the history
  • Loading branch information
kamilpiech97 committed Sep 17, 2023
1 parent d8a3fa0 commit 2c3cc6f
Show file tree
Hide file tree
Showing 33 changed files with 882 additions and 25 deletions.
19 changes: 16 additions & 3 deletions app/Http/Controllers/Dashboard/StudentController.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,32 @@
namespace App\Http\Controllers\Dashboard;

use App\Http\Controllers\Controller;
use App\Http\Requests\StoreStudentRequest;
use App\Models\Student;
use Illuminate\Http\RedirectResponse;
use Inertia\Response;

class StudentController extends Controller
{
public function index(): void
public function index(): Response
{
return inertia("Dashboard/Student/Index", [
"students" => Student::query()->paginate(),
]);
}

public function create(): void
public function create(): Response
{
return inertia("Dashboard/Student/Create");
}

public function store(): void
public function store(StoreStudentRequest $request): RedirectResponse
{
Student::query()->create($request->validated());

return redirect()
->route("students.index")
->with("success", "Dodano studenta");
}

public function edit(): void
Expand Down
11 changes: 11 additions & 0 deletions app/Http/Middleware/HandleInertiaRequests.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Inertia\Middleware;

Expand All @@ -19,6 +20,16 @@ public function version(Request $request): ?string
public function share(Request $request): array
{
return array_merge(parent::share($request), [
"flash" => $this->getFlashedData($request),
]);
}

protected function getFlashedData(Request $request): Closure
{
return fn(): array => [
"success" => $request->session()->get("success"),
"error" => $request->session()->get("error"),
"info" => $request->session()->get("info"),
];
}
}
2 changes: 1 addition & 1 deletion app/Http/Requests/StoreStudentRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public function rules(): array
return [
"name" => ["required", "max:255"],
"surname" => ["required", "max:255"],
"index_number" => ["required", "integer", "unique:students,index_number"],
"index_number" => ["required", "numeric", "max:999999", "unique:students,index_number"],
];
}
}
2 changes: 1 addition & 1 deletion config/app.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"url" => env("APP_URL", "http://localhost"),
"asset_url" => env("ASSET_URL"),
"timezone" => "UTC",
"locale" => "en",
"locale" => "pl",
"fallback_locale" => "en",
"faker_locale" => "en_US",
"key" => env("APP_KEY"),
Expand Down
20 changes: 20 additions & 0 deletions lang/en/auth.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

declare(strict_types=1);

return [
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/

"failed" => "These credentials do not match our records.",
"password" => "The provided password is incorrect.",
"throttle" => "Too many login attempts. Please try again in :seconds seconds.",
];
19 changes: 19 additions & 0 deletions lang/en/pagination.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

declare(strict_types=1);

return [
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/

"previous" => "&laquo; Previous",
"next" => "Next &raquo;",
];
22 changes: 22 additions & 0 deletions lang/en/passwords.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

declare(strict_types=1);

return [
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/

"reset" => "Your password has been reset.",
"sent" => "We have emailed your password reset link.",
"throttled" => "Please wait before retrying.",
"token" => "This password reset token is invalid.",
"user" => "We can't find a user with that email address.",
];
185 changes: 185 additions & 0 deletions lang/en/validation.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
<?php

declare(strict_types=1);

return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/

"accepted" => "The :attribute field must be accepted.",
"accepted_if" => "The :attribute field must be accepted when :other is :value.",
"active_url" => "The :attribute field must be a valid URL.",
"after" => "The :attribute field must be a date after :date.",
"after_or_equal" => "The :attribute field must be a date after or equal to :date.",
"alpha" => "The :attribute field must only contain letters.",
"alpha_dash" => "The :attribute field must only contain letters, numbers, dashes, and underscores.",
"alpha_num" => "The :attribute field must only contain letters and numbers.",
"array" => "The :attribute field must be an array.",
"ascii" => "The :attribute field must only contain single-byte alphanumeric characters and symbols.",
"before" => "The :attribute field must be a date before :date.",
"before_or_equal" => "The :attribute field must be a date before or equal to :date.",
"between" => [
"array" => "The :attribute field must have between :min and :max items.",
"file" => "The :attribute field must be between :min and :max kilobytes.",
"numeric" => "The :attribute field must be between :min and :max.",
"string" => "The :attribute field must be between :min and :max characters.",
],
"boolean" => "The :attribute field must be true or false.",
"can" => "The :attribute field contains an unauthorized value.",
"confirmed" => "The :attribute field confirmation does not match.",
"current_password" => "The password is incorrect.",
"date" => "The :attribute field must be a valid date.",
"date_equals" => "The :attribute field must be a date equal to :date.",
"date_format" => "The :attribute field must match the format :format.",
"decimal" => "The :attribute field must have :decimal decimal places.",
"declined" => "The :attribute field must be declined.",
"declined_if" => "The :attribute field must be declined when :other is :value.",
"different" => "The :attribute field and :other must be different.",
"digits" => "The :attribute field must be :digits digits.",
"digits_between" => "The :attribute field must be between :min and :max digits.",
"dimensions" => "The :attribute field has invalid image dimensions.",
"distinct" => "The :attribute field has a duplicate value.",
"doesnt_end_with" => "The :attribute field must not end with one of the following: :values.",
"doesnt_start_with" => "The :attribute field must not start with one of the following: :values.",
"email" => "The :attribute field must be a valid email address.",
"ends_with" => "The :attribute field must end with one of the following: :values.",
"enum" => "The selected :attribute is invalid.",
"exists" => "The selected :attribute is invalid.",
"file" => "The :attribute field must be a file.",
"filled" => "The :attribute field must have a value.",
"gt" => [
"array" => "The :attribute field must have more than :value items.",
"file" => "The :attribute field must be greater than :value kilobytes.",
"numeric" => "The :attribute field must be greater than :value.",
"string" => "The :attribute field must be greater than :value characters.",
],
"gte" => [
"array" => "The :attribute field must have :value items or more.",
"file" => "The :attribute field must be greater than or equal to :value kilobytes.",
"numeric" => "The :attribute field must be greater than or equal to :value.",
"string" => "The :attribute field must be greater than or equal to :value characters.",
],
"image" => "The :attribute field must be an image.",
"in" => "The selected :attribute is invalid.",
"in_array" => "The :attribute field must exist in :other.",
"integer" => "The :attribute field must be an integer.",
"ip" => "The :attribute field must be a valid IP address.",
"ipv4" => "The :attribute field must be a valid IPv4 address.",
"ipv6" => "The :attribute field must be a valid IPv6 address.",
"json" => "The :attribute field must be a valid JSON string.",
"lowercase" => "The :attribute field must be lowercase.",
"lt" => [
"array" => "The :attribute field must have less than :value items.",
"file" => "The :attribute field must be less than :value kilobytes.",
"numeric" => "The :attribute field must be less than :value.",
"string" => "The :attribute field must be less than :value characters.",
],
"lte" => [
"array" => "The :attribute field must not have more than :value items.",
"file" => "The :attribute field must be less than or equal to :value kilobytes.",
"numeric" => "The :attribute field must be less than or equal to :value.",
"string" => "The :attribute field must be less than or equal to :value characters.",
],
"mac_address" => "The :attribute field must be a valid MAC address.",
"max" => [
"array" => "The :attribute field must not have more than :max items.",
"file" => "The :attribute field must not be greater than :max kilobytes.",
"numeric" => "The :attribute field must not be greater than :max.",
"string" => "The :attribute field must not be greater than :max characters.",
],
"max_digits" => "The :attribute field must not have more than :max digits.",
"mimes" => "The :attribute field must be a file of type: :values.",
"mimetypes" => "The :attribute field must be a file of type: :values.",
"min" => [
"array" => "The :attribute field must have at least :min items.",
"file" => "The :attribute field must be at least :min kilobytes.",
"numeric" => "The :attribute field must be at least :min.",
"string" => "The :attribute field must be at least :min characters.",
],
"min_digits" => "The :attribute field must have at least :min digits.",
"missing" => "The :attribute field must be missing.",
"missing_if" => "The :attribute field must be missing when :other is :value.",
"missing_unless" => "The :attribute field must be missing unless :other is :value.",
"missing_with" => "The :attribute field must be missing when :values is present.",
"missing_with_all" => "The :attribute field must be missing when :values are present.",
"multiple_of" => "The :attribute field must be a multiple of :value.",
"not_in" => "The selected :attribute is invalid.",
"not_regex" => "The :attribute field format is invalid.",
"numeric" => "The :attribute field must be a number.",
"password" => [
"letters" => "The :attribute field must contain at least one letter.",
"mixed" => "The :attribute field must contain at least one uppercase and one lowercase letter.",
"numbers" => "The :attribute field must contain at least one number.",
"symbols" => "The :attribute field must contain at least one symbol.",
"uncompromised" => "The given :attribute has appeared in a data leak. Please choose a different :attribute.",
],
"present" => "The :attribute field must be present.",
"prohibited" => "The :attribute field is prohibited.",
"prohibited_if" => "The :attribute field is prohibited when :other is :value.",
"prohibited_unless" => "The :attribute field is prohibited unless :other is in :values.",
"prohibits" => "The :attribute field prohibits :other from being present.",
"regex" => "The :attribute field format is invalid.",
"required" => "The :attribute field is required.",
"required_array_keys" => "The :attribute field must contain entries for: :values.",
"required_if" => "The :attribute field is required when :other is :value.",
"required_if_accepted" => "The :attribute field is required when :other is accepted.",
"required_unless" => "The :attribute field is required unless :other is in :values.",
"required_with" => "The :attribute field is required when :values is present.",
"required_with_all" => "The :attribute field is required when :values are present.",
"required_without" => "The :attribute field is required when :values is not present.",
"required_without_all" => "The :attribute field is required when none of :values are present.",
"same" => "The :attribute field must match :other.",
"size" => [
"array" => "The :attribute field must contain :size items.",
"file" => "The :attribute field must be :size kilobytes.",
"numeric" => "The :attribute field must be :size.",
"string" => "The :attribute field must be :size characters.",
],
"starts_with" => "The :attribute field must start with one of the following: :values.",
"string" => "The :attribute field must be a string.",
"timezone" => "The :attribute field must be a valid timezone.",
"unique" => "The :attribute has already been taken.",
"uploaded" => "The :attribute failed to upload.",
"uppercase" => "The :attribute field must be uppercase.",
"url" => "The :attribute field must be a valid URL.",
"ulid" => "The :attribute field must be a valid ULID.",
"uuid" => "The :attribute field must be a valid UUID.",

/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/

"custom" => [
"attribute-name" => [
"rule-name" => "custom-message",
],
],

/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap our attribute placeholder
| with something more reader friendly such as "E-Mail Address" instead
| of "email". This simply helps us make our message more expressive.
|
*/

"attributes" => [],
];
8 changes: 8 additions & 0 deletions lang/pl/pagination.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php

declare(strict_types=1);

return [
"next" => "Następna",
"previous" => "Poprzednia",
];
Loading

0 comments on commit 2c3cc6f

Please sign in to comment.