From 023fd8d2f8351bbfc2c3ba37196e8fce4aefc3ad Mon Sep 17 00:00:00 2001 From: Juan Felipe Zapata Moreno Date: Thu, 17 Jul 2025 19:50:45 +0000 Subject: [PATCH] Habilidades Puntuadas (#2) Co-authored-by: Juan Felipe Zapata Moreno Reviewed-on: https://gitea.golsystems.mx/juan.zapata/Scores/pulls/2 Co-authored-by: Juan Felipe Zapata Moreno Co-committed-by: Juan Felipe Zapata Moreno --- app/Http/Controllers/.prettierrc | 4 + .../Admin/MainRoleSkillsController.php | 151 +++++ .../Controllers/Admin/SkillController.php | 65 ++ app/Http/Requests/StoreMainRoleSkills.php | 41 ++ app/Http/Requests/StoreSkill.php | 40 ++ app/Http/Requests/UpdateMainRoleSkills.php | 38 ++ app/Http/Requests/UpdateSkill.php | 40 ++ app/Models/MainRoleSkills.php | 45 ++ app/Models/Score.php | 5 + app/Models/Skill.php | 46 ++ app/Models/department.php | 5 + app/Models/mainRole.php | 12 +- ...25_07_01_151840_create_main_role_table.php | 4 +- .../2025_07_02_131157_create_skills_table.php | 30 + ...2_162405_create_main_role_skills_table.php | 32 + .../js/Components/App/DepartmentSelector.vue | 32 + .../js/Components/App/MainRoleSelector.vue | 47 ++ .../js/Components/App/SkillAssignment.vue | 177 ++++++ resources/js/Components/App/SkillsRole.vue | 135 +++++ resources/js/Components/App/StepIndicator.vue | 38 ++ .../Components/Dashboard/Form/Selectable.vue | 46 +- .../js/Components/Dashboard/Modal/Edit.vue | 12 +- .../js/Components/Dashboard/Modal/Show.vue | 8 +- resources/js/Lang/es.js | 559 ++++++++++-------- resources/js/Layouts/DashboardLayout.vue | 10 + resources/js/Pages/Admin/App/Create.vue | 2 +- resources/js/Pages/Admin/App/Edit.vue | 109 ++-- .../js/Pages/Admin/Departments/Create.vue | 2 +- .../js/Pages/Admin/Departments/Index.vue | 1 - resources/js/Pages/Admin/MainRole/Create.vue | 2 +- .../Pages/Admin/MainRoleSkills/Component.js | 15 + .../js/Pages/Admin/MainRoleSkills/Create.vue | 169 ++++++ .../js/Pages/Admin/MainRoleSkills/Destroy.vue | 42 ++ .../js/Pages/Admin/MainRoleSkills/Edit.vue | 87 +++ .../js/Pages/Admin/MainRoleSkills/Index.vue | 92 +++ resources/js/Pages/Admin/Skills/Component.js | 15 + resources/js/Pages/Admin/Skills/Create.vue | 89 +++ resources/js/Pages/Admin/Skills/Destroy.vue | 43 ++ resources/js/Pages/Admin/Skills/Edit.vue | 67 +++ resources/js/Pages/Admin/Skills/Index.vue | 149 +++++ routes/web.php | 14 +- 41 files changed, 2167 insertions(+), 353 deletions(-) create mode 100644 app/Http/Controllers/.prettierrc create mode 100644 app/Http/Controllers/Admin/MainRoleSkillsController.php create mode 100644 app/Http/Controllers/Admin/SkillController.php create mode 100644 app/Http/Requests/StoreMainRoleSkills.php create mode 100644 app/Http/Requests/StoreSkill.php create mode 100644 app/Http/Requests/UpdateMainRoleSkills.php create mode 100644 app/Http/Requests/UpdateSkill.php create mode 100644 app/Models/MainRoleSkills.php create mode 100644 app/Models/Skill.php create mode 100644 database/migrations/2025_07_02_131157_create_skills_table.php create mode 100644 database/migrations/2025_07_02_162405_create_main_role_skills_table.php create mode 100644 resources/js/Components/App/DepartmentSelector.vue create mode 100644 resources/js/Components/App/MainRoleSelector.vue create mode 100644 resources/js/Components/App/SkillAssignment.vue create mode 100644 resources/js/Components/App/SkillsRole.vue create mode 100644 resources/js/Components/App/StepIndicator.vue create mode 100644 resources/js/Pages/Admin/MainRoleSkills/Component.js create mode 100644 resources/js/Pages/Admin/MainRoleSkills/Create.vue create mode 100644 resources/js/Pages/Admin/MainRoleSkills/Destroy.vue create mode 100644 resources/js/Pages/Admin/MainRoleSkills/Edit.vue create mode 100644 resources/js/Pages/Admin/MainRoleSkills/Index.vue create mode 100644 resources/js/Pages/Admin/Skills/Component.js create mode 100644 resources/js/Pages/Admin/Skills/Create.vue create mode 100644 resources/js/Pages/Admin/Skills/Destroy.vue create mode 100644 resources/js/Pages/Admin/Skills/Edit.vue create mode 100644 resources/js/Pages/Admin/Skills/Index.vue diff --git a/app/Http/Controllers/.prettierrc b/app/Http/Controllers/.prettierrc new file mode 100644 index 0000000..222861c --- /dev/null +++ b/app/Http/Controllers/.prettierrc @@ -0,0 +1,4 @@ +{ + "tabWidth": 2, + "useTabs": false +} diff --git a/app/Http/Controllers/Admin/MainRoleSkillsController.php b/app/Http/Controllers/Admin/MainRoleSkillsController.php new file mode 100644 index 0000000..d2dfa07 --- /dev/null +++ b/app/Http/Controllers/Admin/MainRoleSkillsController.php @@ -0,0 +1,151 @@ + + * + * @version 1.0.0 + */ +class MainRoleSkillsController extends VueController +{ + public function __construct() + { + return $this->vueRoot('admin.mainRoleSkills'); + } + + public function index() + { + $q = request()->get('q'); + + $mainRole = mainRole::where('name', 'LIKE', "%{$q}%")->pluck('id'); + $skills = Skill::where('name', 'LIKE', "%{$q}%")->pluck('id'); + $scores = Score::where('alias', 'LIKE', "%{$q}%")->pluck('id'); + + $mainRoleSkills = MainRoleSkills::whereIn('main_role_id', $mainRole) + ->orWhereIn('skill_id', $skills) + ->orWhereIn('scored_id', $scores) + ->with([ + 'mainRole:id,name,department_id', + 'mainRole.department:id,name', + 'skill:id,name', + 'score:id,alias' + ]) + ->paginate(config('app.pagination')); + + $departments = department::select(['id', 'name', 'description'])->orderBy('name', 'ASC')->get(); + $mainRoles = mainRole::with(['department:id,name'])->orderBy('name', 'ASC')->get(); + $skills = Skill::with(['department:id,name'])->orderBy('name', 'ASC')->get(); + $scores = Score::orderBy('alias', 'ASC')->get(); + + + return $this->vuew('index', [ + 'mainRoleSkills' => $mainRoleSkills, + 'departments' => $departments, + 'mainRoles' => $mainRoles, + 'skills' => $skills, + 'scores' => $scores, + ]); + } + + public function create() + { + $roleId = request()->get('role_id'); + $departmentId = request()->get('department_id'); + + // Obtener el rol seleccionado y su departamento + $selectedRole = null; + $selectedDepartment = null; + + if ($roleId) { + $selectedRole = mainRole::with('department:id,name')->find($roleId); + if ($selectedRole && $selectedRole->department) { + $selectedDepartment = $selectedRole->department; + } + } elseif ($departmentId) { + $selectedDepartment = department::find($departmentId); + } + $mainRoles = mainRole::with('department:id,name')->orderBy('name', 'ASC')->get(); + $skills = Skill::with('department:id,name')->orderBy('name', 'ASC')->get(); + $scores = Score::orderBy('alias', 'ASC')->get(); + + return $this->vuew('create', [ + 'mainRoles' => $mainRoles, + 'skills' => $skills, + 'scores' => $scores, + 'selectedRole' => $selectedRole, + 'selectedDepartment' => $selectedDepartment + ]); + } + + public function store(StoreMainRoleSkills $request) + { + $create = []; + foreach ($request['skills'] as $skill) { + $create[] = [ + 'main_role_id' => $request['main_role_id'], + 'skill_id' => $skill['skill_id'], + 'scored_id' => $skill['scored_id'], + 'created_at' => now(), + 'updated_at' => now(), + ]; + } + + MainRoleSkills::insert($create); + + return $this->index(); + } + + public function edit(MainRoleSkills $mainRoleSkills) + { + $mainRoleSkills->load(['mainRole.department', 'skill.department', 'score']); + $scores = Score::orderBy('alias', 'ASC')->get(); + + return $this->vuew('edit', [ + 'mainRoleSkills' => $mainRoleSkills, + 'scores' => $scores, + ]); + } + + + public function update(UpdateMainRoleSkills $request, $id) + { + $mainRoleSkills = MainRoleSkills::findOrFail($id); + + $mainRoleSkills->update([ + 'scored_id' => $request->scored_id, + ]); + + return redirect()->back(); + } + + public function destroy($id) + { + try { + $mainRoleSkills = MainRoleSkills::findOrFail($id); + + $mainRoleSkills->delete(); + + return $this->index(); + } catch (\Throwable $th) { + Log::error($th->getMessage()); + return response()->json(['error' => 'Error al eliminar las habilidades']); + } + } +} diff --git a/app/Http/Controllers/Admin/SkillController.php b/app/Http/Controllers/Admin/SkillController.php new file mode 100644 index 0000000..a33c24a --- /dev/null +++ b/app/Http/Controllers/Admin/SkillController.php @@ -0,0 +1,65 @@ + + * + * @version 1.0.0 + */ +class SkillController extends VueController +{ + public function __construct() + { + return $this->vueRoot('admin.skills'); + } + + public function index() + { + $q = request()->get('q'); + + $skills = Skill::orderBy('name', 'ASC') + ->where('name', 'LIKE', "%{$q}%") + ->with('department:id,name') + ->paginate(config('app.pagination')); + + return $this->vuew('index', [ + 'skills' => $skills, + ]); + } + + public function create() + { + $department = department::orderBy('name', 'ASC')->get(); + + return $this->vuew('create', [ + 'departments' => $department, + ]); + } + + public function store(StoreSkill $request) + { + Skill::create($request->all()); + + return $this->index(); + } + + public function update(UpdateSkill $request, Skill $skill) + { + $skill->update($request->all()); + } + + public function destroy (Skill $skill) + { + $skill->delete(); + } +} diff --git a/app/Http/Requests/StoreMainRoleSkills.php b/app/Http/Requests/StoreMainRoleSkills.php new file mode 100644 index 0000000..d859494 --- /dev/null +++ b/app/Http/Requests/StoreMainRoleSkills.php @@ -0,0 +1,41 @@ + + * + * @version 1.0.0 + */ +class StoreMainRoleSkills extends FormRequest +{ + /** + * Determinar si el usuario esta autorizado + * + * @return bool + */ + public function authorize() + { + return true; + } + + /** + * Reglas de validación + * + * @return array + */ + public function rules() + { + return [ + 'main_role_id' => ['required', 'integer'], + 'skills' => ['required', 'array', 'min:1'], + 'skills.*.skill_id' => ['required', 'integer'], + 'skills.*.scored_id' => ['required', 'integer'], + ]; + } +} diff --git a/app/Http/Requests/StoreSkill.php b/app/Http/Requests/StoreSkill.php new file mode 100644 index 0000000..7af14b8 --- /dev/null +++ b/app/Http/Requests/StoreSkill.php @@ -0,0 +1,40 @@ + + * + * @version 1.0.0 + */ +class StoreSkill extends FormRequest +{ + /** + * Determinar si el usuario esta autorizado + * + * @return bool + */ + public function authorize() + { + return true; + } + + /** + * Reglas de validación + * + * @return array + */ + public function rules() + { + return [ + 'name' => ['required', 'string'], + 'description' => ['nullable', 'string'], + 'department_id' => ['required', 'integer'], + ]; + } +} diff --git a/app/Http/Requests/UpdateMainRoleSkills.php b/app/Http/Requests/UpdateMainRoleSkills.php new file mode 100644 index 0000000..85c3f59 --- /dev/null +++ b/app/Http/Requests/UpdateMainRoleSkills.php @@ -0,0 +1,38 @@ + + * + * @version 1.0.0 + */ +class UpdateMainRoleSkills extends FormRequest +{ + /** + * Determinar si el usuario esta autorizado + * + * @return bool + */ + public function authorize() + { + return true; + } + + /** + * Reglas de validación + * + * @return array + */ + public function rules() + { + return [ + 'scored_id' => ['required', 'integer'], + ]; + } +} diff --git a/app/Http/Requests/UpdateSkill.php b/app/Http/Requests/UpdateSkill.php new file mode 100644 index 0000000..3613e72 --- /dev/null +++ b/app/Http/Requests/UpdateSkill.php @@ -0,0 +1,40 @@ + + * + * @version 1.0.0 + */ +class UpdateSkill extends FormRequest +{ + /** + * Determinar si el usuario esta autorizado + * + * @return bool + */ + public function authorize() + { + return true; + } + + /** + * Reglas de validación + * + * @return array + */ + public function rules() + { + return [ + 'name' => ['required', 'string'], + 'description' => ['nullable', 'string'], + 'department_id' => ['required', 'integer','exists:departments,id'], + ]; + } +} diff --git a/app/Models/MainRoleSkills.php b/app/Models/MainRoleSkills.php new file mode 100644 index 0000000..e357e71 --- /dev/null +++ b/app/Models/MainRoleSkills.php @@ -0,0 +1,45 @@ + + * + * @version 1.0.0 + */ +class MainRoleSkills extends Model +{ + use HasFactory, + ModelExtend; + + /** + * Atributos llenables masivamente + */ + protected $fillable = [ + 'main_role_id', + 'skill_id', + 'scored_id', + ]; + + public function mainRole() + { + return $this->belongsTo(mainRole::class, 'main_role_id'); + } + + public function skill() + { + return $this->belongsTo(Skill::class, 'skill_id'); + } + + public function score() + { + return $this->belongsTo(Score::class, 'scored_id'); + } +} diff --git a/app/Models/Score.php b/app/Models/Score.php index cad93f4..ac55e72 100644 --- a/app/Models/Score.php +++ b/app/Models/Score.php @@ -27,4 +27,9 @@ class Score extends Model 'value', 'description', ]; + + public function mainRoleSkills() + { + return $this->hasMany(MainRoleSkills::class); + } } diff --git a/app/Models/Skill.php b/app/Models/Skill.php new file mode 100644 index 0000000..6307b7d --- /dev/null +++ b/app/Models/Skill.php @@ -0,0 +1,46 @@ + + * + * @version 1.0.0 + */ +class Skill extends Model +{ + use HasFactory, + ModelExtend; + + /** + * Atributos llenables masivamente + */ + protected $fillable = [ + 'name', + 'description', + 'department_id', + ]; + + + public function department() + { + return $this->belongsTo(department::class); + } + + public function mainRoles() + { + return $this->belongsTo(MainRole::class); + } + + public function mainRoleSkills() + { + return $this->hasMany(MainRoleSkills::class); + } +} diff --git a/app/Models/department.php b/app/Models/department.php index 5de561b..a7c7ee2 100644 --- a/app/Models/department.php +++ b/app/Models/department.php @@ -34,4 +34,9 @@ public function mainRoles() { return $this->hasMany(MainRole::class); } + + public function skills() + { + return $this->hasMany(Skill::class); + } } diff --git a/app/Models/mainRole.php b/app/Models/mainRole.php index 9ef8cc2..8878701 100644 --- a/app/Models/mainRole.php +++ b/app/Models/mainRole.php @@ -22,7 +22,7 @@ class MainRole extends Model /** * Nombre de la tabla */ - protected $table = 'main_role'; + protected $table = 'main_roles'; /** * Atributos llenables masivamente @@ -40,4 +40,14 @@ public function department() { return $this->belongsTo(department::class); } + + public function skills() + { + return $this->hasMany(Skill::class); + } + + public function mainRoleSkills() + { + return $this->hasMany(MainRoleSkills::class); + } } diff --git a/database/migrations/2025_07_01_151840_create_main_role_table.php b/database/migrations/2025_07_01_151840_create_main_role_table.php index 4992c6c..8319c36 100644 --- a/database/migrations/2025_07_01_151840_create_main_role_table.php +++ b/database/migrations/2025_07_01_151840_create_main_role_table.php @@ -11,7 +11,7 @@ */ public function up(): void { - Schema::create('main_role', function (Blueprint $table) { + Schema::create('main_roles', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('description')->nullable(); @@ -25,6 +25,6 @@ public function up(): void */ public function down(): void { - Schema::dropIfExists('main_role'); + Schema::dropIfExists('main_roles'); } }; diff --git a/database/migrations/2025_07_02_131157_create_skills_table.php b/database/migrations/2025_07_02_131157_create_skills_table.php new file mode 100644 index 0000000..e135060 --- /dev/null +++ b/database/migrations/2025_07_02_131157_create_skills_table.php @@ -0,0 +1,30 @@ +id(); + $table->string('name'); + $table->string('description'); + $table->foreignId('department_id')->constrained('departments')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('skills'); + } +}; diff --git a/database/migrations/2025_07_02_162405_create_main_role_skills_table.php b/database/migrations/2025_07_02_162405_create_main_role_skills_table.php new file mode 100644 index 0000000..936726a --- /dev/null +++ b/database/migrations/2025_07_02_162405_create_main_role_skills_table.php @@ -0,0 +1,32 @@ +id(); + $table->foreignId('main_role_id')->constrained('main_roles')->onDelete('cascade'); + $table->foreignId('skill_id')->constrained('skills')->onDelete('cascade'); + $table->foreignId('scored_id')->constrained('scores')->onDelete('cascade'); + $table->timestamps(); + + $table->unique(['main_role_id', 'skill_id']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('main_role_skills'); + } +}; diff --git a/resources/js/Components/App/DepartmentSelector.vue b/resources/js/Components/App/DepartmentSelector.vue new file mode 100644 index 0000000..42ee4e9 --- /dev/null +++ b/resources/js/Components/App/DepartmentSelector.vue @@ -0,0 +1,32 @@ + + + diff --git a/resources/js/Components/App/MainRoleSelector.vue b/resources/js/Components/App/MainRoleSelector.vue new file mode 100644 index 0000000..22259e7 --- /dev/null +++ b/resources/js/Components/App/MainRoleSelector.vue @@ -0,0 +1,47 @@ + + + diff --git a/resources/js/Components/App/SkillAssignment.vue b/resources/js/Components/App/SkillAssignment.vue new file mode 100644 index 0000000..1c24276 --- /dev/null +++ b/resources/js/Components/App/SkillAssignment.vue @@ -0,0 +1,177 @@ + + + diff --git a/resources/js/Components/App/SkillsRole.vue b/resources/js/Components/App/SkillsRole.vue new file mode 100644 index 0000000..da54744 --- /dev/null +++ b/resources/js/Components/App/SkillsRole.vue @@ -0,0 +1,135 @@ + + + diff --git a/resources/js/Components/App/StepIndicator.vue b/resources/js/Components/App/StepIndicator.vue new file mode 100644 index 0000000..65adf05 --- /dev/null +++ b/resources/js/Components/App/StepIndicator.vue @@ -0,0 +1,38 @@ + + + diff --git a/resources/js/Components/Dashboard/Form/Selectable.vue b/resources/js/Components/Dashboard/Form/Selectable.vue index c312f4a..5968e3e 100644 --- a/resources/js/Components/Dashboard/Form/Selectable.vue +++ b/resources/js/Components/Dashboard/Form/Selectable.vue @@ -46,34 +46,34 @@ const onRemove = () => { \ No newline at end of file + diff --git a/resources/js/Components/Dashboard/Modal/Edit.vue b/resources/js/Components/Dashboard/Modal/Edit.vue index 6a71834..ec1ed6a 100644 --- a/resources/js/Components/Dashboard/Modal/Edit.vue +++ b/resources/js/Components/Dashboard/Modal/Edit.vue @@ -1,10 +1,10 @@ diff --git a/resources/js/Pages/Admin/Departments/Create.vue b/resources/js/Pages/Admin/Departments/Create.vue index afcd7bf..d11fb12 100644 --- a/resources/js/Pages/Admin/Departments/Create.vue +++ b/resources/js/Pages/Admin/Departments/Create.vue @@ -54,7 +54,7 @@ const submit = () => form.post(route(goTo('store')), { required /> required /> `admin.mainRoleSkills.${route}` +// Obtener traducción del componente +const transl = (lang) => t(`mainRoleSkills.${lang}`) +// Determina si un usuario puede hacer algo no en base a los permisos +const can = (permission) => hasPermission(`users.${permission}`) + +export{ + can, + goTo, + transl +} diff --git a/resources/js/Pages/Admin/MainRoleSkills/Create.vue b/resources/js/Pages/Admin/MainRoleSkills/Create.vue new file mode 100644 index 0000000..2e51467 --- /dev/null +++ b/resources/js/Pages/Admin/MainRoleSkills/Create.vue @@ -0,0 +1,169 @@ + + + diff --git a/resources/js/Pages/Admin/MainRoleSkills/Destroy.vue b/resources/js/Pages/Admin/MainRoleSkills/Destroy.vue new file mode 100644 index 0000000..0ed3d2e --- /dev/null +++ b/resources/js/Pages/Admin/MainRoleSkills/Destroy.vue @@ -0,0 +1,42 @@ + + + diff --git a/resources/js/Pages/Admin/MainRoleSkills/Edit.vue b/resources/js/Pages/Admin/MainRoleSkills/Edit.vue new file mode 100644 index 0000000..20518f6 --- /dev/null +++ b/resources/js/Pages/Admin/MainRoleSkills/Edit.vue @@ -0,0 +1,87 @@ + + diff --git a/resources/js/Pages/Admin/MainRoleSkills/Index.vue b/resources/js/Pages/Admin/MainRoleSkills/Index.vue new file mode 100644 index 0000000..987357f --- /dev/null +++ b/resources/js/Pages/Admin/MainRoleSkills/Index.vue @@ -0,0 +1,92 @@ + + + diff --git a/resources/js/Pages/Admin/Skills/Component.js b/resources/js/Pages/Admin/Skills/Component.js new file mode 100644 index 0000000..a3596a9 --- /dev/null +++ b/resources/js/Pages/Admin/Skills/Component.js @@ -0,0 +1,15 @@ +import { t } from '@/Lang/i18n'; +import { hasPermission } from '@/rolePermission.js'; + +// Obtener ruta +const goTo = (route) => `admin.skills.${route}` +// Obtener traducción del componente +const transl = (lang) => t(`skill.${lang}`) +// Determina si un usuario puede hacer algo no en base a los permisos +const can = (permission) => hasPermission(`users.${permission}`) + +export{ + can, + goTo, + transl +} diff --git a/resources/js/Pages/Admin/Skills/Create.vue b/resources/js/Pages/Admin/Skills/Create.vue new file mode 100644 index 0000000..322c436 --- /dev/null +++ b/resources/js/Pages/Admin/Skills/Create.vue @@ -0,0 +1,89 @@ + + + diff --git a/resources/js/Pages/Admin/Skills/Destroy.vue b/resources/js/Pages/Admin/Skills/Destroy.vue new file mode 100644 index 0000000..698d010 --- /dev/null +++ b/resources/js/Pages/Admin/Skills/Destroy.vue @@ -0,0 +1,43 @@ + + + diff --git a/resources/js/Pages/Admin/Skills/Edit.vue b/resources/js/Pages/Admin/Skills/Edit.vue new file mode 100644 index 0000000..76a4df2 --- /dev/null +++ b/resources/js/Pages/Admin/Skills/Edit.vue @@ -0,0 +1,67 @@ + + diff --git a/resources/js/Pages/Admin/Skills/Index.vue b/resources/js/Pages/Admin/Skills/Index.vue new file mode 100644 index 0000000..5eedd84 --- /dev/null +++ b/resources/js/Pages/Admin/Skills/Index.vue @@ -0,0 +1,149 @@ + + + diff --git a/routes/web.php b/routes/web.php index 92074ed..d62e826 100644 --- a/routes/web.php +++ b/routes/web.php @@ -7,8 +7,11 @@ use App\Http\Controllers\Dashboard\NotificationController; use App\Http\Controllers\Admin\DepartmentController; use App\Http\Controllers\Admin\MainRoleController; +use App\Http\Controllers\Admin\MainRoleSkillsController; +use App\Http\Controllers\Admin\SkillController; use App\Http\Controllers\Developer\RoleController; use App\Http\Controllers\Example\IndexController as ExampleIndexController; +use App\Models\MainRoleSkills; use Illuminate\Support\Facades\Route; /** @@ -17,7 +20,6 @@ * Rutas accesibles por todos los usuarios y no usuarios */ Route::redirect('/', '/login'); - /** * Rutas del Dashboard * @@ -55,10 +57,12 @@ 'auth:sanctum', config('jetstream.auth_session') ])->group(function () { - Route::resource('users', UserController::class); - Route::resource('scores', ScoreController::class); - Route::resource('departments', DepartmentController::class); - Route::resource('mainRoles', MainRoleController::class); + Route::resource('users', UserController::class); + Route::resource('scores', ScoreController::class); + Route::resource('departments', DepartmentController::class); + Route::resource('mainRoles', MainRoleController::class); + Route::resource('skills', SkillController::class); + Route::resource('mainRoleSkills', MainRoleSkillsController::class); Route::prefix('/users')->name('users.')->group(function() {