From d44d47c294d409b2d24c5aba525910b531770283 Mon Sep 17 00:00:00 2001
From: dogukanoksuz <me@dogukan.dev>
Date: Wed, 4 Sep 2024 17:17:47 +0300
Subject: [PATCH] feat-wip: View modifier role system

---
 .../API/Settings/RoleController.php           | 53 +++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/app/Http/Controllers/API/Settings/RoleController.php b/app/Http/Controllers/API/Settings/RoleController.php
index ffa134ce..852bf232 100644
--- a/app/Http/Controllers/API/Settings/RoleController.php
+++ b/app/Http/Controllers/API/Settings/RoleController.php
@@ -600,6 +600,59 @@ public function deleteVariables(Request $request)
         return response()->json('Fonksiyonlar başarıyla silindi.');
     }
 
+    /**
+     * Role based system layout view settings
+     */
+    public function views(Request $request)
+    {
+        $permissions = Permission::where([
+            'morph_id' => $request->role_id,
+            'type' => 'view',
+        ])->get();
+
+        return response()->json($permissions);
+    }
+
+    /**
+     * Set role views
+     *
+     * @param Request $request
+     * @return JsonResponse
+     */
+    public function setViews(Request $request)
+    {
+        Permission::where([
+            'morph_id' => $request->role_id,
+            'type' => 'view',
+        ])->delete();
+
+        foreach ($request->views as $view) {
+            Permission::grant(
+                $request->role_id,
+                'view',
+                'name',
+                $view,
+                null,
+                'roles'
+            );
+        }
+
+        AuditLog::write(
+            'role',
+            'edit',
+            [
+                'changed_count' => count($request->views ?? []),
+                'type' => 'views',
+                'array' => $request->views
+            ],
+            "ROLE_EDIT"
+        );
+
+        return response()->json([
+            'message' => 'Görünüm ayarları güncellendi.'
+        ]);
+    }
+
     /**
      * Retrieve all roles
      *