diff --git a/app/Http/Controllers/Admin/MainRoleController.php b/app/Http/Controllers/Admin/MainRoleController.php index 6c31f1c..f765755 100644 --- a/app/Http/Controllers/Admin/MainRoleController.php +++ b/app/Http/Controllers/Admin/MainRoleController.php @@ -6,8 +6,12 @@ * @copyright Copyright (c) 2023 Notsoweb (https://notsoweb.com) - All rights reserved. */ -use App\Models\MainRole; +use App\Http\Requests\StoreMainRole; +use App\Http\Requests\UpdateMainRole; +use App\Models\department; +use App\Models\mainRole; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Log; use Notsoweb\Core\Http\Controllers\VueController; /** @@ -21,22 +25,50 @@ class MainRoleController extends VueController { public function __construct() { - $this->vueRoot('admin.main-role'); + $this->vueRoot('admin.mainRole'); } public function index() { $q = request()->get('q'); + $mainRoles = mainRole::orderBy('name', 'ASC') + ->where('name', 'LIKE', "%{$q}%") + ->with('department:id,name') + ->paginate(config('app.pagination')); + return $this->vuew('index', [ - 'roles' => MainRole::where('name', 'LIKE', "%{$q}%") - ->orWhere('description', 'LIKE', "%{$q}%") - ->select([ - 'id', - 'name', - 'description', - ]) - ->paginate(config('app.pagination')) + 'mainRoles' => $mainRoles, ]); } + + public function create() + { + $department = department::orderBy('name', 'ASC')->get(); + + return $this->vuew('create', [ + 'departments' => $department, + ]); + } + + public function store(StoreMainRole $request) + { + mainRole::create($request->all()); + + return $this->index(); + } + + public function update(UpdateMainRole $request, mainRole $mainRole) + { + $mainRole->update($request->all()); + } + + public function destroy(mainRole $mainRole) + { try{ + $mainRole = mainRole::find($mainRole); + $mainRole->delete(); + }catch (\Throwable $th) { + Log::channel('mainRole')->error($th->getMessage()); + } + } } diff --git a/app/Http/Requests/StoreMainRole.php b/app/Http/Requests/StoreMainRole.php index b798988..3bc0ec7 100644 --- a/app/Http/Requests/StoreMainRole.php +++ b/app/Http/Requests/StoreMainRole.php @@ -34,6 +34,7 @@ public function rules() return [ 'name' => ['required', 'string'], 'description' => ['nullable', 'string'], + 'department_id' => ['required', 'integer'], ]; } } diff --git a/app/Http/Requests/UpdateMainRole.php b/app/Http/Requests/UpdateMainRole.php index 0968dcc..2fb4d8b 100644 --- a/app/Http/Requests/UpdateMainRole.php +++ b/app/Http/Requests/UpdateMainRole.php @@ -34,6 +34,7 @@ public function rules() return [ 'name' => ['required', 'string'], 'description' => ['nullable', 'string'], + 'department_id' => ['required', 'integer','exists:departments,id'], ]; } } diff --git a/app/Models/main_role.php b/app/Models/mainRole.php similarity index 94% rename from app/Models/main_role.php rename to app/Models/mainRole.php index b72cc32..9ef8cc2 100644 --- a/app/Models/main_role.php +++ b/app/Models/mainRole.php @@ -38,6 +38,6 @@ class MainRole extends Model */ public function department() { - return $this->belongsTo(Department::class); + return $this->belongsTo(department::class); } } diff --git a/resources/js/Lang/es.js b/resources/js/Lang/es.js index 78b1c51..644b7a2 100644 --- a/resources/js/Lang/es.js +++ b/resources/js/Lang/es.js @@ -236,6 +236,7 @@ export default { }, department:{ system: 'Sistema de departamentos', + title: 'Departamentos', create:{ title:'Crear departamento', description:'Permite crear nuevos departamentos para los usuarios.', @@ -243,5 +244,14 @@ export default { onError:'Error al crear el departamento', } }, + mainRole: { + system: 'Sistema de roles principales', + create:{ + title:'Crear rol principal', + description:'Permite crear nuevos roles principales para los usuarios.', + onSuccess:'Rol principal creado exitosamente', + onError:'Error al crear el rol principal', + }, + }, version:'Versión', } diff --git a/resources/js/Layouts/DashboardLayout.vue b/resources/js/Layouts/DashboardLayout.vue index 682b8c0..dc1bf11 100644 --- a/resources/js/Layouts/DashboardLayout.vue +++ b/resources/js/Layouts/DashboardLayout.vue @@ -80,6 +80,11 @@ onMounted(()=> { name="Departamentos" to="admin.departments.index" /> + form.post(route(goTo('store')), { onSuccess: () => Notify.success(transl('create.onSuccess')), onError: () => Notify.error(transl('create.onError')), - onFinish: () => form.reset('password') }); diff --git a/resources/js/Pages/Admin/Departments/Index.vue b/resources/js/Pages/Admin/Departments/Index.vue index 2bf392e..a400033 100644 --- a/resources/js/Pages/Admin/Departments/Index.vue +++ b/resources/js/Pages/Admin/Departments/Index.vue @@ -86,13 +86,6 @@ const query = ref(Searcher.query);
- `admin.mainRoles.${route}` +// Obtener traducción del componente +const transl = (lang) => t(`mainRole.${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/MainRole/Create.vue b/resources/js/Pages/Admin/MainRole/Create.vue new file mode 100644 index 0000000..8c02a53 --- /dev/null +++ b/resources/js/Pages/Admin/MainRole/Create.vue @@ -0,0 +1,89 @@ + + + diff --git a/resources/js/Pages/Admin/MainRole/Destroy.vue b/resources/js/Pages/Admin/MainRole/Destroy.vue new file mode 100644 index 0000000..698d010 --- /dev/null +++ b/resources/js/Pages/Admin/MainRole/Destroy.vue @@ -0,0 +1,43 @@ + + + diff --git a/resources/js/Pages/Admin/MainRole/Edit.vue b/resources/js/Pages/Admin/MainRole/Edit.vue new file mode 100644 index 0000000..76a4df2 --- /dev/null +++ b/resources/js/Pages/Admin/MainRole/Edit.vue @@ -0,0 +1,67 @@ + + diff --git a/resources/js/Pages/Admin/MainRole/Index.vue b/resources/js/Pages/Admin/MainRole/Index.vue new file mode 100644 index 0000000..24651c7 --- /dev/null +++ b/resources/js/Pages/Admin/MainRole/Index.vue @@ -0,0 +1,151 @@ + + + diff --git a/resources/js/Pages/Admin/MainRole/Show.vue b/resources/js/Pages/Admin/MainRole/Show.vue new file mode 100644 index 0000000..8211c9e --- /dev/null +++ b/resources/js/Pages/Admin/MainRole/Show.vue @@ -0,0 +1,41 @@ + + diff --git a/routes/web.php b/routes/web.php index ff80d72..92074ed 100644 --- a/routes/web.php +++ b/routes/web.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Dashboard\IndexController; use App\Http\Controllers\Dashboard\NotificationController; use App\Http\Controllers\Admin\DepartmentController; +use App\Http\Controllers\Admin\MainRoleController; use App\Http\Controllers\Developer\RoleController; use App\Http\Controllers\Example\IndexController as ExampleIndexController; use Illuminate\Support\Facades\Route; @@ -57,6 +58,7 @@ Route::resource('users', UserController::class); Route::resource('scores', ScoreController::class); Route::resource('departments', DepartmentController::class); + Route::resource('mainRoles', MainRoleController::class); Route::prefix('/users')->name('users.')->group(function() {