Luca Parisio 4 месяцев назад
Родитель
Сommit
1a191e996e
3 измененных файлов с 105 добавлено и 2 удалено
  1. 98 0
      app/Http/Controllers/VpnController.php
  2. 2 1
      resources/views/livewire/report.blade.php
  3. 5 1
      routes/web.php

+ 98 - 0
app/Http/Controllers/VpnController.php

@@ -0,0 +1,98 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use App\Services\VpnManager;
+use Illuminate\Support\Facades\Validator;
+
+class VpnController extends Controller
+{
+    private $vpnManager;
+
+    public function __construct(VpnManager $vpnManager)
+    {
+        $this->vpnManager = $vpnManager;
+    }
+
+    public function showCredentialsForm()
+    {
+        $status = $this->vpnManager->getVpnStatus();
+        return view('vpn.credentials', compact('status'));
+    }
+
+    public function updateCredentials(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'username' => 'required|string',
+            'password' => 'required|string',
+            'server' => 'required|string',
+        ]);
+
+        if ($validator->fails()) {
+            return redirect()->back()
+                ->withErrors($validator)
+                ->withInput();
+        }
+
+        $success = $this->vpnManager->updateCredentials(
+            $request->username,
+            $request->password,
+            $request->server
+        );
+
+        if ($success) {
+            return redirect()->back()->with('success', 'Credenziali VPN aggiornate con successo!');
+        } else {
+            return redirect()->back()->with('error', 'Errore nell\'aggiornamento delle credenziali VPN.');
+        }
+    }
+
+    public function getStatus()
+    {
+        $status = $this->vpnManager->getVpnStatus();
+        $lastUpdate = $this->vpnManager->getLastUpdate();
+
+        return response()->json([
+            'status' => $status,
+            'last_update' => $lastUpdate
+        ]);
+    }
+
+    public function connect()
+    {
+        try {
+            $result = $this->vpnManager->connectVpn();
+
+            if ($result) {
+                return response()->json(['success' => true, 'message' => 'Connessione VPN avviata']);
+            } else {
+                return response()->json(['success' => false, 'message' => 'Errore nella connessione VPN']);
+            }
+        } catch (\Exception $e) {
+            return response()->json(['success' => false, 'message' => 'Errore: ' . $e->getMessage()]);
+        }
+    }
+
+    public function disconnect()
+    {
+        try {
+            $result = $this->vpnManager->disconnectVpn();
+
+            if ($result) {
+                return response()->json(['success' => true, 'message' => 'Disconnessione VPN avviata']);
+            } else {
+                return response()->json(['success' => false, 'message' => 'Errore nella disconnessione VPN']);
+            }
+        } catch (\Exception $e) {
+            return response()->json(['success' => false, 'message' => 'Errore: ' . $e->getMessage()]);
+        }
+    }
+
+        public function showManagementPage()
+    {
+        $status = $this->vpnManager->getVpnStatus();
+        $lastUpdate = $this->vpnManager->getLastUpdate();
+        return view('vpn.management', compact('status', 'lastUpdate'));
+    }
+}

+ 2 - 1
resources/views/livewire/report.blade.php

@@ -139,7 +139,8 @@
                     ajax: {
                         url: ajaxUrl,
                         dataType: 'json'
-                    }
+                    },
+                    dropdownParent: $('#veicoloParte'),
                 });
 
                 $('.' + value).on('change', function (e) {

+ 5 - 1
routes/web.php

@@ -113,6 +113,7 @@ Route::group(['middleware' => 'auth'],function(){
     Route::get('/tipo-veicolo', \App\Http\Livewire\TipoVeicolo::class);
     Route::get('/users', \App\Http\Livewire\User::class);
     Route::get('/vpn', \App\Http\Livewire\VpnManagement::class);
+    Route::get('/vpn/status', [\App\Http\Controllers\VpnController::class, 'getStatus'])->name('vpn.status');
 
 
     Route::get('/reports', \App\Http\Livewire\Report::class);
@@ -168,7 +169,10 @@ Route::group(['middleware' => 'auth'],function(){
         $data = array();
         foreach($localita as $l)
         {
-            $data[] = array("id" => $l->id, "text" => $l->title);
+            if (strtoupper(trim($l->title)) == 'ROMA')
+                array_unshift($data, array("id" => $l->id, "text" => $l->title));
+            else
+                $data[] = array("id" => $l->id, "text" => $l->title);
         }
         return array("results" => $data);
     });