diff --git a/app/Http/Controllers/Member/CreateMemberController.php b/app/Http/Controllers/Member/CreateMemberController.php index c9798c6..cb989ed 100644 --- a/app/Http/Controllers/Member/CreateMemberController.php +++ b/app/Http/Controllers/Member/CreateMemberController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Member; +use App\Models\Squad; use Ramsey\Uuid\Uuid; use App\Models\Member; use Illuminate\Http\Request; @@ -13,10 +14,24 @@ public function __invoke(Request $request, string $squadUuid) { $member = new Member(); + $request->validate([ + + 'name' => ['required', 'string', 'max:60'], + 'role' => ['required', 'string', 'max:30'] + + ], [ + 'name.required' => 'O campo nome é obrigatório.', + 'name.string' => 'O campo nome deve ser uma string.', + 'name.max' => 'O campo nome não pode ter mais de :max caracteres.', + 'role.required' => 'O campo cargo é obrigatório', + 'role.string' => 'O campo cargo deve ser uma string.', + 'role.max' => 'O campo cargo não pode ter mais de :max caracteres.' + ]); + $member->uuid = Uuid::uuid4()->toString(); $member->name = $request->input('name'); $member->role = $request->input('role'); - $member->squad_uuid = $request->input('squad_uuid'); + $member->squad_uuid = $squadUuid; $member->save(); return response()->json([ diff --git a/app/Http/Controllers/Member/EditMemberController.php b/app/Http/Controllers/Member/EditMemberController.php index 2ea1e13..c169bb4 100644 --- a/app/Http/Controllers/Member/EditMemberController.php +++ b/app/Http/Controllers/Member/EditMemberController.php @@ -13,10 +13,23 @@ public function __invoke(request $request, string $uuid, string $memberUuid) $member = Member::query()->where(['squad_uuid' => $uuid, 'uuid' => $memberUuid])->first(); if (!$member) { - return response()->json(['error' => 'Membro não encontrado'], 404); } + $request->validate([ + + 'name' => ['required', 'string', 'max:60'], + 'role' => ['required', 'string', 'max:30'] + + ], [ + 'name.required' => 'O campo nome é obrigatório.', + 'name.string' => 'O campo nome deve ser uma string.', + 'name.max' => 'O campo nome não pode ter mais de :max caracteres.', + 'role.required' => 'O campo cargo é obrigatório', + 'role.string' => 'O campo cargo deve ser uma string.', + 'role.max' => 'O campo cargo não pode ter mais de :max caracteres.' + ]); + $member->name = $request->input('name'); $member->role = $request->input('role'); $member->save(); diff --git a/app/Http/Controllers/Product/CreateProductController.php b/app/Http/Controllers/Product/CreateProductController.php index 2330cdd..363bfd0 100644 --- a/app/Http/Controllers/Product/CreateProductController.php +++ b/app/Http/Controllers/Product/CreateProductController.php @@ -15,6 +15,19 @@ public function __invoke(Request $request) $product = new Product(); + $request->validate([ + + 'name' => ['required', 'string', 'max:60'], + 'description' => ['required', 'string'] + + ], [ + 'name.required' => 'O campo nome é obrigatório.', + 'name.string' => 'O campo nome deve ser uma string.', + 'name.max' => 'O campo nome não pode ter mais de :max caracteres.', + 'description.required' => 'Ocampo descrição é obrigatório', + 'description.string' => 'O campo descrição deve ser uma string.' + ]); + $product->uuid = Uuid::uuid4()->toString(); $product->owner_uuid = $user->uuid; $product->name = $request->input('name'); diff --git a/app/Http/Controllers/Product/EditProductController.php b/app/Http/Controllers/Product/EditProductController.php index c182a94..3104703 100644 --- a/app/Http/Controllers/Product/EditProductController.php +++ b/app/Http/Controllers/Product/EditProductController.php @@ -28,6 +28,19 @@ public function __invoke(Request $request, string $uuid) ], 403); } + $request->validate([ + + 'name' => ['required', 'string', 'max:60'], + 'description' => ['required', 'string'] + + ], [ + 'name.required' => 'O campo nome é obrigatório.', + 'name.string' => 'O campo nome deve ser uma string.', + 'name.max' => 'O campo nome não pode ter mais de :max caracteres.', + 'description.required' => 'Ocampo descrição é obrigatório', + 'description.string' => 'O campo descrição deve ser uma string.' + ]); + $product->name = $request->input('name'); $product->description = $request->input('description'); $product->save(); diff --git a/app/Http/Controllers/Squad/CreateSquadController.php b/app/Http/Controllers/Squad/CreateSquadController.php index 61e0e3b..bf53ba9 100644 --- a/app/Http/Controllers/Squad/CreateSquadController.php +++ b/app/Http/Controllers/Squad/CreateSquadController.php @@ -16,6 +16,19 @@ public function __invoke(Request $request) $product = Product::query()->where('owner_uuid', $user->uuid)->first(); $squad = new Squad(); + $request->validate([ + + 'name' => ['required', 'string', 'max:60'], + 'description' => ['required', 'string'] + + ], [ + 'name.required' => 'O campo nome é obrigatório.', + 'name.string' => 'O campo nome deve ser uma string.', + 'name.max' => 'O campo nome não pode ter mais de :max caracteres.', + 'description.required' => 'Ocampo descrição é obrigatório', + 'description.string' => 'O campo descrição deve ser uma string.' + ]); + $squad->uuid = Uuid::uuid4()->toString(); $squad->product_uuid = $product->uuid; $squad->name = $request->input('name'); diff --git a/app/Http/Controllers/Squad/EditSquadController.php b/app/Http/Controllers/Squad/EditSquadController.php index 7b966f6..f9af62c 100644 --- a/app/Http/Controllers/Squad/EditSquadController.php +++ b/app/Http/Controllers/Squad/EditSquadController.php @@ -19,7 +19,6 @@ public function __invoke(Request $request, string $uuid) return response()->json(['error' => 'Squad não encontrada'], 404); } - $product = Product::query()->where('uuid', $squad->product_uuid)->first(); if (!$product) { @@ -27,13 +26,26 @@ public function __invoke(Request $request, string $uuid) return response()->json(['error' => 'Produto não encontrado'], 404); } - if ($user->uuid !== $product->owner_uuid) { return response()->json(['error' => 'Você não tem permissão para atualizar esse produto'], 403); } + $request->validate([ + + 'name' => ['required', 'string', 'max:60'], + 'role' => ['required', 'string', 'max:30'] + + ], [ + 'name.required' => 'O campo nome é obrigatório.', + 'name.string' => 'O campo nome deve ser uma string.', + 'name.max' => 'O campo nome não pode ter mais de :max caracteres.', + 'role.required' => 'O campo cargo é obrigatório', + 'role.string' => 'O campo cargo deve ser uma string.', + 'role.max' => 'O campo cargo não pode ter mais de :max caracteres.' + ]); + $squad->name = $request->input('name'); $squad->description = $request->input('description'); $squad->save(); diff --git a/app/Http/Controllers/User/CreateUserController.php b/app/Http/Controllers/User/CreateUserController.php index 3a1ec2d..7ce9e5c 100644 --- a/app/Http/Controllers/User/CreateUserController.php +++ b/app/Http/Controllers/User/CreateUserController.php @@ -26,10 +26,12 @@ public function __invoke(Request $request) 'name' => ['required', 'string', 'max:60'], 'email' => ['required', 'email', 'unique:users'], - 'linkedin' => ['required'], + 'linkedin' => ['required', 'string', 'max:101'], + 'discord' => ['nullable', 'string', 'max:33'], + 'city' => ['nullable', 'string', 'max:60'], + 'state' => ['nullable', 'string', 'max:20'], 'password' => ['required', 'min:8'], - 'register_token' => ['required', 'string'] - + 'register_token' => ['required', 'string'], ], [ 'name.required' => 'O campo nome é obrigatório.', 'name.string' => 'O campo nome deve ser uma string.', @@ -37,10 +39,14 @@ public function __invoke(Request $request) 'email.required' => 'O campo e-mail é obrigatório.', 'email.email' => 'O campo e-mail deve ser um endereço de e-mail válido.', 'email.unique' => 'Já existe uma conta com este e-mail.', + 'linkedin.required' => 'O campo Perfil no LinkedIn é obrigatório.', + 'discord.string' => 'O campo Perfil no Discord deve ser uma string.', + 'city.string' => 'O campo Cidade deve ser uma string.', + 'state.string' => 'O campo Estado deve ser uma string.', 'password.required' => 'O campo senha é obrigatório.', 'password.min' => 'O campo senha deve ter pelo menos :min caracteres.', 'register_token.required' => 'O campo register_token é obrigatório.', - 'linkedin.required' => 'O campo Linkedin é obrigatório.' + 'linkedin.required' => 'O campo Linkedin é obrigatório.', ]); $user = User::query()->create([ @@ -49,6 +55,9 @@ public function __invoke(Request $request) 'name' => $request->input('name'), 'email' => $request->input('email'), 'linkedin' => $request->input('linkedin'), + 'discord' => $request->input('discord'), + 'city' => $request->input('city'), + 'state' => $request->input('state'), 'permission' => 'founder', 'password' => bcrypt($request->input('password')), 'created_at' => Carbon::now(), diff --git a/app/Http/Controllers/User/EditUserController.php b/app/Http/Controllers/User/EditUserController.php index 5022ff1..9f39ef6 100644 --- a/app/Http/Controllers/User/EditUserController.php +++ b/app/Http/Controllers/User/EditUserController.php @@ -23,27 +23,57 @@ public function __invoke(Request $request, string $uuid) 'name' => ['required', 'string', 'max:60'], 'email' => ['nullable', 'email'], - 'password' => ['min:8'] - + 'password' => ['min:8'], + 'linkedin' => ['nullable', 'string', 'max:101'], + 'discord' => ['nullable', 'string', 'max:33'], + 'city' => ['nullable', 'string', 'max:60'], + 'state' => ['nullable', 'string', 'max:20'] ], [ 'name.string' => 'O campo nome deve ser uma string.', 'name.max' => 'O campo nome não pode ter mais de :max caracteres.', 'email.email' => 'O campo e-mail deve ser um endereço de e-mail válido.', - 'password.min' => 'O campo senha deve ter pelo menos :min caracteres.' + 'password.min' => 'O campo senha deve ter pelo menos :min caracteres.', + 'linkedin.string' => 'O campo LinkedIn deve ser uma string.', + 'linkedin.max' => 'O campo LinkedIn não pode ter mais de :max caracteres.', + 'discord.string' => 'O campo Discord deve ser uma string.', + 'discord.max' => 'O campo Discord não pode ter mais de :max caracteres.', + 'city.string' => 'O campo cidade deve ser uma string.', + 'city.max' => 'O campo cidade não pode ter mais de :max caracteres.', + 'state.string' => 'O campo estado deve ser uma string.', + 'state.max' => 'O campo estado não pode ter mais de :max caracteres.', ]); $email = $request->input('email'); $name = $request->input('name'); $linkedin = $request->input('linkedin'); + $discord = $request->input('discord'); + $city = $request->input('city'); + $state = $request->input('state'); $password = $request->input('password'); - $user->name = $name; + if ($name) { + $user->name = $name; + } if ($email) { $user->email = $email; } - $user->linkedin = $linkedin; + if ($linkedin) { + $user->linkedin = $linkedin; + } + + if ($discord) { + $user->discord = $discord; + } + + if ($city) { + $user->city = $city; + } + + if ($state) { + $user->state = $state; + } if ($password) { $user->password = bcrypt($password); diff --git a/app/Http/Controllers/User/ListUserController.php b/app/Http/Controllers/User/ListUserController.php index a9c2ebf..67ca84a 100644 --- a/app/Http/Controllers/User/ListUserController.php +++ b/app/Http/Controllers/User/ListUserController.php @@ -14,6 +14,9 @@ public function __invoke() 'uuid', 'name', 'linkedin', + 'discord', + 'city', + 'state', 'created_at', 'updated_at' )->get(); diff --git a/app/Models/User.php b/app/Models/User.php index 34694aa..23a1027 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -24,7 +24,10 @@ class User extends Authenticatable 'name', 'email', 'password', + 'city', + 'state', 'linkedin', + 'discord', 'permission', ]; diff --git a/database/migrations/2024_01_25_210912_create_users_table.php b/database/migrations/2024_01_25_210912_create_users_table.php index 0e96a19..4e56a9d 100644 --- a/database/migrations/2024_01_25_210912_create_users_table.php +++ b/database/migrations/2024_01_25_210912_create_users_table.php @@ -17,7 +17,10 @@ public function up(): void $table->string('name', 60); $table->string('email', 60)->unique(); $table->string('password'); - $table->string('linkedin')->nullable(); + $table->string('city', 60)->nullable(); + $table->string('state', 20)->nullable(); + $table->string('linkedin', 101)->nullable()->unique(); + $table->string('discord', 33)->nullable()->unique(); $table->string('permission')->nullable(); $table->integer('active')->nullable()->default(1); $table->rememberToken(); diff --git a/database/migrations/2024_11_29_185241_add_new_fields.php b/database/migrations/2024_11_29_185241_add_new_fields.php new file mode 100644 index 0000000..ca1490b --- /dev/null +++ b/database/migrations/2024_11_29_185241_add_new_fields.php @@ -0,0 +1,31 @@ +string('city', 60)->nullable(); + $table->string('state', 20)->nullable(); + $table->string('linkedin', 101)->nullable()->unique(); + $table->string('discord', 33)->nullable()->unique(); + }); + } + + /** + * Reverse the migrations. + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn(['city', 'state', 'linkedin', 'discord']); + }); + } +}; diff --git a/routes/api.php b/routes/api.php index a5aa1b7..f65b82f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -59,7 +59,7 @@ Route::put('/{uuid}', [EditUserController::class, '__invoke']) ->whereUuid('uuid') - ->name('apr.user.edit'); + ->name('api.user.edit'); Route::delete('/{uuid}', [DeleteUserController::class, '__invoke']) ->whereUuid('uuid') @@ -116,6 +116,7 @@ ->name('api.member.show'); Route::post('/', [CreateMemberController::class, '__invoke']) + ->whereUuid('uuid') ->name('api.member.create'); Route::put('/{memberUuid}', [EditMemberController::class, '__invoke']) @@ -138,4 +139,4 @@ Route::prefix('user')->group(function () { Route::post('/', [CreateUserController::class, '__invoke']) ->name('api.user.create'); -}); \ No newline at end of file +});