Kaynağa Gözat

Limita i CRUD admin all'attivita in sessione.

Così un operatore non legge o modifica dati di un'altra sagra.

Co-authored-by: Cursor <cursoragent@cursor.com>
marcofalabretti 2 hafta önce
ebeveyn
işleme
fb76759f44
49 değiştirilmiş dosya ile 643 ekleme ve 203 silme
  1. 91
    22
      app/DataTables/AttivitaDataTableEditor.php
  2. 6
    1
      app/DataTables/BachecaDataTable.php
  3. 13
    8
      app/DataTables/BachecaDataTableEditor.php
  4. 14
    8
      app/DataTables/CategoriacontabileDataTableEditor.php
  5. 6
    1
      app/DataTables/ChiusuraServizioDataTable.php
  6. 13
    5
      app/DataTables/ChiusuraServizioDataTableEditor.php
  7. 6
    1
      app/DataTables/ContenutoBachecaDataTable.php
  8. 21
    2
      app/DataTables/ContenutoBachecaDataTableEditor.php
  9. 9
    2
      app/DataTables/DispositivoDataTable.php
  10. 15
    12
      app/DataTables/DispositivoDataTableEditor.php
  11. 13
    8
      app/DataTables/FornitoreDataTableEditor.php
  12. 13
    9
      app/DataTables/ImpostazioniDataTableEditor.php
  13. 17
    12
      app/DataTables/MonitorDataTableEditor.php
  14. 2
    0
      app/DataTables/OperatoreDataTable.php
  15. 14
    9
      app/DataTables/OperatoreDataTableEditor.php
  16. 8
    1
      app/DataTables/PuntoOperatoreDataTable.php
  17. 17
    7
      app/DataTables/PuntoOperatoreDataTableEditor.php
  18. 19
    14
      app/DataTables/StampanteDataTableEditor.php
  19. 7
    4
      app/DataTables/TavoloDataTable.php
  20. 13
    10
      app/DataTables/TavoloDataTableEditor.php
  21. 13
    10
      app/DataTables/TestiDataTableEditor.php
  22. 10
    5
      app/DataTables/VariantePiattoDataTable.php
  23. 36
    9
      app/DataTables/VariantePiattoDataTableEditor.php
  24. 2
    0
      app/Http/Controllers/AllergeneController.php
  25. 9
    1
      app/Http/Controllers/BachecaController.php
  26. 14
    4
      app/Http/Controllers/BachecaHasContenutoController.php
  27. 2
    0
      app/Http/Controllers/CategoriaContabileController.php
  28. 3
    1
      app/Http/Controllers/ChiusuraServizioController.php
  29. 7
    0
      app/Http/Controllers/ContenutoBachecaController.php
  30. 14
    3
      app/Http/Controllers/Controller.php
  31. 4
    0
      app/Http/Controllers/DispositivoController.php
  32. 2
    0
      app/Http/Controllers/EventoFormController.php
  33. 6
    1
      app/Http/Controllers/FornitoreController.php
  34. 5
    1
      app/Http/Controllers/ImpostazioniController.php
  35. 5
    4
      app/Http/Controllers/ListinoPrezziController.php
  36. 25
    2
      app/Http/Controllers/MonitorController.php
  37. 3
    1
      app/Http/Controllers/RoleController.php
  38. 2
    0
      app/Http/Controllers/StampanteController.php
  39. 2
    0
      app/Http/Controllers/TavoloController.php
  40. 9
    2
      app/Http/Controllers/TestiController.php
  41. 8
    8
      app/Http/Controllers/TombolaController.php
  42. 3
    1
      app/Http/Controllers/UserController.php
  43. 9
    9
      app/Http/Controllers/VariantePiattoController.php
  44. 0
    0
      app/Models/AbstractModels/AbstractSaltacodaRigaOrdine.php
  45. 2
    2
      app/Models/AbstractModels/AbstractUser.php
  46. 66
    3
      app/Models/Attivita.php
  47. 0
    0
      app/Models/SaltacodaRigaOrdine.php
  48. 19
    0
      app/Observers/AttivitaObserver.php
  49. 46
    0
      app/Services/Attivita/AttivitaService.php

+ 91
- 22
app/DataTables/AttivitaDataTableEditor.php Dosyayı Görüntüle

8
 use Yajra\DataTables\DataTablesEditor;
8
 use Yajra\DataTables\DataTablesEditor;
9
 use Illuminate\Http\Request;
9
 use Illuminate\Http\Request;
10
 use Illuminate\Validation\ValidationException;
10
 use Illuminate\Validation\ValidationException;
11
+use Illuminate\Http\UploadedFile;
12
+use Illuminate\Support\Facades\Auth;
11
 use Illuminate\Support\Facades\Storage;
13
 use Illuminate\Support\Facades\Storage;
12
 use Illuminate\Support\Str;
14
 use Illuminate\Support\Str;
13
 use Illuminate\Http\JsonResponse;
15
 use Illuminate\Http\JsonResponse;
83
 
85
 
84
   public function creating(Model $model, array $data): array
86
   public function creating(Model $model, array $data): array
85
   {
87
   {
86
-    // $model->roles()->sync([$data['ruolo_id']]);
87
     $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
88
     $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
89
+    $data['user_id'] = Auth::id();
90
+
88
     return $data;
91
     return $data;
89
   }
92
   }
90
 
93
 
91
   public function updating(Model $model, array $data): array
94
   public function updating(Model $model, array $data): array
92
   {
95
   {
93
-    // dd($data['ruolo']);
94
-    // $model->roles()->sync([$data['ruolo_id']]);
96
+    $this->garantisciQuestaAttivita($model);
95
     $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
97
     $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
98
+    unset($data['user_id']);
99
+
96
     return $data;
100
     return $data;
97
   }
101
   }
98
 
102
 
99
-  public function created(Model $model, array $data): Model
103
+  public function deleting(Model $model, array $data): array
100
   {
104
   {
101
-    return $model;
105
+    $this->garantisciQuestaAttivita($model);
106
+
107
+    return $data;
108
+  }
109
+
110
+  private function garantisciQuestaAttivita(Model $model): void
111
+  {
112
+    $user = Auth::user();
113
+    if ($user?->hasRole('superadmin')) {
114
+      return;
115
+    }
116
+
117
+    if (! $model instanceof Attivita || (int) $model->user_id !== (int) $user?->id) {
118
+      abort(404);
119
+    }
120
+  }
121
+
122
+  public function uploadRules(): array
123
+  {
124
+    $image = ['required', 'file', 'image', 'mimes:jpeg,png,jpg,gif,webp', 'max:5120'];
125
+
126
+    return [
127
+      'path_logo' => $image,
128
+      'path_icon' => $image,
129
+      'path_image' => $image,
130
+    ];
102
   }
131
   }
103
 
132
 
104
   public function upload(Request $request): JsonResponse
133
   public function upload(Request $request): JsonResponse
105
   {
134
   {
106
     $this->action = 'upload';
135
     $this->action = 'upload';
107
 
136
 
108
-    $field   = $request->input('uploadField');
109
-    $storage = Storage::disk($this->disk);
137
+    $field = $request->input('uploadField');
138
+    if (! $field || ! is_string($field)) {
139
+      $field = 'file';
140
+    }
110
 
141
 
111
     try {
142
     try {
112
-      $rules      = $this->uploadRules();
113
-      $fieldRules = ['upload' => data_get($rules, $field, [])];
143
+      $storage = Storage::disk($this->disk);
144
+      $rules = $this->uploadRules();
145
+      $fieldRules = ['upload' => $rules[$field] ?? $rules['path_image']];
114
 
146
 
115
       $this->validate($request, $fieldRules, $this->messages(), $this->attributes());
147
       $this->validate($request, $fieldRules, $this->messages(), $this->attributes());
116
 
148
 
117
       $uploadedFile = $request->file('upload');
149
       $uploadedFile = $request->file('upload');
118
-      $filename     = $this->getUploadedFilename($field, $uploadedFile);
119
-      $id           = $storage->putFileAs($request->id, $uploadedFile, $filename);
150
+      if (! $uploadedFile instanceof UploadedFile) {
151
+        throw ValidationException::withMessages([
152
+          'upload' => 'File non valido.',
153
+        ]);
154
+      }
155
+
156
+      $directory = $this->resolveUploadDirectory($request);
157
+      $filename = $this->getUploadedFilename($field, $uploadedFile);
158
+      $id = $storage->putFileAs($directory, $uploadedFile, $filename);
159
+
160
+      if (! is_string($id)) {
161
+        throw ValidationException::withMessages([
162
+          'upload' => 'Impossibile salvare il file caricato.',
163
+        ]);
164
+      }
120
 
165
 
121
       if (method_exists($this, 'uploaded')) {
166
       if (method_exists($this, 'uploaded')) {
122
         $id = $this->uploaded($id);
167
         $id = $this->uploaded($id);
124
 
169
 
125
       return response()->json([
170
       return response()->json([
126
         'action' => $this->action,
171
         'action' => $this->action,
127
-        'data'   => [],
128
-        'files'  => [
172
+        'data' => [],
173
+        'files' => [
129
           'files' => [
174
           'files' => [
130
             $id => [
175
             $id => [
131
-              'filename'      => $id,
176
+              'filename' => $id,
132
               'original_name' => $uploadedFile->getClientOriginalName(),
177
               'original_name' => $uploadedFile->getClientOriginalName(),
133
-              'size'          => $uploadedFile->getSize(),
134
-              'directory'     => $request->id,
135
-              'disk'          => $this->disk,
136
-              'url'           => $storage->url($id),
178
+              'size' => $uploadedFile->getSize(),
179
+              'directory' => $directory,
180
+              'disk' => $this->disk,
181
+              'url' => $storage->url($id),
137
             ],
182
             ],
138
           ],
183
           ],
139
         ],
184
         ],
143
       ]);
188
       ]);
144
     } catch (ValidationException $exception) {
189
     } catch (ValidationException $exception) {
145
       return response()->json([
190
       return response()->json([
146
-        'action'      => $this->action,
147
-        'data'        => [],
191
+        'action' => $this->action,
192
+        'data' => [],
148
         'fieldErrors' => [
193
         'fieldErrors' => [
149
           [
194
           [
150
-            'name'   => $field,
151
-            'status' => str_replace('upload', $field, $exception->errors()['upload'][0]),
195
+            'name' => $field,
196
+            'status' => str_replace('upload', $field, (string) ($exception->errors()['upload'][0] ?? 'Errore di validazione')),
152
           ],
197
           ],
153
         ],
198
         ],
154
       ]);
199
       ]);
155
     }
200
     }
156
   }
201
   }
157
 
202
 
203
+  protected function resolveUploadDirectory(Request $request): string
204
+  {
205
+    $id = $request->input('id');
206
+    if ($id === null || $id === '' || ! is_numeric($id)) {
207
+      return 'tmp';
208
+    }
209
+
210
+    $attivita = Attivita::find((int) $id);
211
+    if (! $attivita) {
212
+      abort(404);
213
+    }
214
+
215
+    $this->garantisciQuestaAttivita($attivita);
216
+
217
+    return (string) $attivita->id;
218
+  }
219
+
220
+  protected function getUploadedFilename(string $field, UploadedFile $uploadedFile): string
221
+  {
222
+    $ext = $uploadedFile->getClientOriginalExtension();
223
+
224
+    return $field.'_'.time().'_'.Str::random(4).($ext !== '' ? '.'.$ext : '');
225
+  }
226
+
158
   public function messages(): array
227
   public function messages(): array
159
   {
228
   {
160
     return $this->messages;
229
     return $this->messages;

+ 6
- 1
app/DataTables/BachecaDataTable.php Dosyayı Görüntüle

43
      */
43
      */
44
     public function query(Bacheca $model): QueryBuilder
44
     public function query(Bacheca $model): QueryBuilder
45
     {
45
     {
46
-        return $model->newQuery()->where('attivita_id', $this->attivita_id);
46
+        $attivitaId = (int) $this->attivita_id;
47
+        if ($attivitaId <= 0) {
48
+            return $model->newQuery()->whereRaw('1 = 0');
49
+        }
50
+
51
+        return $model->newQuery()->where('attivita_id', $attivitaId);
47
     }
52
     }
48
 
53
 
49
     /**
54
     /**

+ 13
- 8
app/DataTables/BachecaDataTableEditor.php Dosyayı Görüntüle

3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
 use App\Models\Bacheca;
5
 use App\Models\Bacheca;
6
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
7
 use Illuminate\Database\Eloquent\Model;
7
-use Illuminate\Validation\Rule;
8
+use Illuminate\Support\Facades\Session;
8
 use Yajra\DataTables\DataTablesEditor;
9
 use Yajra\DataTables\DataTablesEditor;
9
-use Illuminate\Http\Request;
10
-use Illuminate\Validation\ValidationException;
11
-use Storage;
12
-use Illuminate\Support\Str;
13
 
10
 
14
 class BachecaDataTableEditor extends DataTablesEditor
11
 class BachecaDataTableEditor extends DataTablesEditor
15
 {
12
 {
76
 
73
 
77
   public function creating(Model $model, array $data): array
74
   public function creating(Model $model, array $data): array
78
   {
75
   {
79
-    // $model->roles()->sync([$data['ruolo_id']]);
76
+    $data['attivita_id'] = Session::get('attivita_attuale');
77
+    AttivitaService::garantisciAttivita($data['attivita_id']);
80
     $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
78
     $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
81
     return $data;
79
     return $data;
82
   }
80
   }
83
 
81
 
84
   public function updating(Model $model, array $data): array
82
   public function updating(Model $model, array $data): array
85
   {
83
   {
86
-    // dd($data['ruolo']);
87
-    // $model->roles()->sync([$data['ruolo_id']]);
84
+    AttivitaService::garantisciAttivita($model->attivita_id);
85
+    unset($data['attivita_id']);
88
     $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
86
     $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
89
     return $data;
87
     return $data;
90
   }
88
   }
89
+
90
+  public function deleting(Model $model, array $data): array
91
+  {
92
+    AttivitaService::garantisciAttivita($model->attivita_id);
93
+
94
+    return $data;
95
+  }
91
   public function messages(): array
96
   public function messages(): array
92
   {
97
   {
93
     return $this->messages;
98
     return $this->messages;

+ 14
- 8
app/DataTables/CategoriacontabileDataTableEditor.php Dosyayı Görüntüle

3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
 use App\Models\Categoriacontabile;
5
 use App\Models\Categoriacontabile;
6
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
7
 use Illuminate\Database\Eloquent\Model;
8
+use Illuminate\Support\Facades\Session;
7
 use Illuminate\Validation\Rule;
9
 use Illuminate\Validation\Rule;
8
 use Yajra\DataTables\DataTablesEditor;
10
 use Yajra\DataTables\DataTablesEditor;
9
-use Illuminate\Http\Request;
10
-use Illuminate\Validation\ValidationException;
11
-use Storage;
12
-use Illuminate\Support\Str;
13
 
11
 
14
 class CategoriacontabileDataTableEditor extends DataTablesEditor
12
 class CategoriacontabileDataTableEditor extends DataTablesEditor
15
 {
13
 {
35
       'nome'  => [
33
       'nome'  => [
36
         'required',
34
         'required',
37
         Rule::unique('categoria_contabile', 'nome')
35
         Rule::unique('categoria_contabile', 'nome')
38
-            ->where('attivita_id', $data['attivita_id'] ?? null),
36
+            ->where('attivita_id', Session::get('attivita_attuale')),
39
       ],
37
       ],
40
       'descrizione' => 'nullable',
38
       'descrizione' => 'nullable',
41
       'is_attiva' => 'boolean',
39
       'is_attiva' => 'boolean',
83
 
81
 
84
   public function creating(Model $model, array $data): array
82
   public function creating(Model $model, array $data): array
85
   {
83
   {
86
-    // $model->roles()->sync([$data['ruolo_id']]);
84
+    $data['attivita_id'] = Session::get('attivita_attuale');
85
+    AttivitaService::garantisciAttivita($data['attivita_id']);
87
     $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
86
     $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
88
     return $data;
87
     return $data;
89
   }
88
   }
90
 
89
 
91
   public function updating(Model $model, array $data): array
90
   public function updating(Model $model, array $data): array
92
   {
91
   {
93
-    // dd($data['ruolo']);
94
-    // $model->roles()->sync([$data['ruolo_id']]);
92
+    AttivitaService::garantisciAttivita($model->attivita_id);
93
+    unset($data['attivita_id']);
95
     $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
94
     $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
96
     return $data;
95
     return $data;
97
   }
96
   }
97
+
98
+  public function deleting(Model $model, array $data): array
99
+  {
100
+    AttivitaService::garantisciAttivita($model->attivita_id);
101
+
102
+    return $data;
103
+  }
98
   public function messages(): array
104
   public function messages(): array
99
   {
105
   {
100
     return $this->messages;
106
     return $this->messages;

+ 6
- 1
app/DataTables/ChiusuraServizioDataTable.php Dosyayı Görüntüle

54
      */
54
      */
55
     public function query(ChiusuraServizio $model): QueryBuilder
55
     public function query(ChiusuraServizio $model): QueryBuilder
56
     {
56
     {
57
-        return $model->newQuery()->where('attivita_id', $this->attivita_id)->orderBy('chiusura_at', 'desc');
57
+        $attivitaId = (int) $this->attivita_id;
58
+        if ($attivitaId <= 0) {
59
+            return $model->newQuery()->whereRaw('1 = 0');
60
+        }
61
+
62
+        return $model->newQuery()->where('attivita_id', $attivitaId)->orderBy('chiusura_at', 'desc');
58
     }
63
     }
59
 
64
 
60
     /**
65
     /**

+ 13
- 5
app/DataTables/ChiusuraServizioDataTableEditor.php Dosyayı Görüntüle

3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
 use App\Models\ChiusuraServizio;
5
 use App\Models\ChiusuraServizio;
6
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
7
 use Illuminate\Database\Eloquent\Model;
7
-use Illuminate\Validation\Rule;
8
+use Illuminate\Support\Facades\Session;
8
 use Yajra\DataTables\DataTablesEditor;
9
 use Yajra\DataTables\DataTablesEditor;
9
-use Illuminate\Http\Request;
10
-use Illuminate\Validation\ValidationException;
11
 
10
 
12
 
11
 
13
 class ChiusuraServizioDataTableEditor extends DataTablesEditor
12
 class ChiusuraServizioDataTableEditor extends DataTablesEditor
29
   public function createRules(): array
28
   public function createRules(): array
30
   {
29
   {
31
     return [
30
     return [
32
-      'attivita_id'  => 'required',
33
       'chiusura_at' => 'required|date',
31
       'chiusura_at' => 'required|date',
34
       'user_id' => 'required',
32
       'user_id' => 'required',
35
       'note' => 'nullable',
33
       'note' => 'nullable',
49
   public function editRules(Model $model): array
47
   public function editRules(Model $model): array
50
   {
48
   {
51
     return [
49
     return [
52
-      'attivita_id'  => 'required',
53
       'chiusura_at' => 'required|date',
50
       'chiusura_at' => 'required|date',
54
       'note' => 'nullable',
51
       'note' => 'nullable',
55
       'info' => 'nullable',
52
       'info' => 'nullable',
73
 
70
 
74
   public function creating(Model $model, array $data): array
71
   public function creating(Model $model, array $data): array
75
   {
72
   {
73
+    $data['attivita_id'] = Session::get('attivita_attuale');
74
+    AttivitaService::garantisciAttivita($data['attivita_id']);
76
     return $data;
75
     return $data;
77
   }
76
   }
78
 
77
 
79
   public function updating(Model $model, array $data): array
78
   public function updating(Model $model, array $data): array
80
   {
79
   {
80
+    AttivitaService::garantisciAttivita($model->attivita_id);
81
+    unset($data['attivita_id']);
82
+    return $data;
83
+  }
84
+
85
+  public function deleting(Model $model, array $data): array
86
+  {
87
+    AttivitaService::garantisciAttivita($model->attivita_id);
88
+
81
     return $data;
89
     return $data;
82
   }
90
   }
83
   public function messages(): array
91
   public function messages(): array

+ 6
- 1
app/DataTables/ContenutoBachecaDataTable.php Dosyayı Görüntüle

46
      */
46
      */
47
     public function query(ContenutoBacheca $model): QueryBuilder
47
     public function query(ContenutoBacheca $model): QueryBuilder
48
     {
48
     {
49
-        $model = $model->newQuery()->where('attivita_id', $this->attivita_id);
49
+        $attivitaId = (int) $this->attivita_id;
50
+        if ($attivitaId <= 0) {
51
+            return $model->newQuery()->whereRaw('1 = 0');
52
+        }
53
+
54
+        $model = $model->newQuery()->where('attivita_id', $attivitaId);
50
         if($this->bacheca_id){
55
         if($this->bacheca_id){
51
             return $model->join('bacheca_has_contenuto', 'contenuto_bacheca.id', '=', 'bacheca_has_contenuto.contenuto_id')->where('bacheca_has_contenuto.bacheca_id', $this->bacheca_id);
56
             return $model->join('bacheca_has_contenuto', 'contenuto_bacheca.id', '=', 'bacheca_has_contenuto.contenuto_id')->where('bacheca_has_contenuto.bacheca_id', $this->bacheca_id);
52
         }
57
         }

+ 21
- 2
app/DataTables/ContenutoBachecaDataTableEditor.php Dosyayı Görüntüle

3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
 use App\Models\ContenutoBacheca;
5
 use App\Models\ContenutoBacheca;
6
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
7
 use Illuminate\Database\Eloquent\Model;
7
-use Illuminate\Validation\Rule;
8
+use Illuminate\Support\Facades\Session;
8
 use Yajra\DataTables\DataTablesEditor;
9
 use Yajra\DataTables\DataTablesEditor;
9
 use Illuminate\Http\Request;
10
 use Illuminate\Http\Request;
10
 use Illuminate\Validation\ValidationException;
11
 use Illuminate\Validation\ValidationException;
79
 
80
 
80
   public function creating(Model $model, array $data): array
81
   public function creating(Model $model, array $data): array
81
   {
82
   {
83
+    $data['attivita_id'] = Session::get('attivita_attuale');
84
+    AttivitaService::garantisciAttivita($data['attivita_id']);
82
     return $data;
85
     return $data;
83
   }
86
   }
84
 
87
 
85
   public function updating(Model $model, array $data): array
88
   public function updating(Model $model, array $data): array
86
   {
89
   {
90
+    AttivitaService::garantisciAttivita($model->attivita_id);
91
+    unset($data['attivita_id']);
92
+    return $data;
93
+  }
94
+
95
+  public function deleting(Model $model, array $data): array
96
+  {
97
+    AttivitaService::garantisciAttivita($model->attivita_id);
87
 
98
 
88
     return $data;
99
     return $data;
89
   }
100
   }
107
 
118
 
108
       $uploadedFile = $request->file('upload');
119
       $uploadedFile = $request->file('upload');
109
       $filename     = $this->getUploadedFilename($field, $uploadedFile);
120
       $filename     = $this->getUploadedFilename($field, $uploadedFile);
110
-      $id           = $storage->putFileAs($request->id, $uploadedFile, $filename);
121
+      $rowId        = $request->id;
122
+      if ($rowId !== null && $rowId !== '' && is_numeric($rowId)) {
123
+        $contenuto = ContenutoBacheca::find((int) $rowId);
124
+        if (! $contenuto) {
125
+          abort(404);
126
+        }
127
+        AttivitaService::garantisciAttivita($contenuto->attivita_id);
128
+      }
129
+      $id           = $storage->putFileAs($rowId, $uploadedFile, $filename);
111
 
130
 
112
       if (method_exists($this, 'uploaded')) {
131
       if (method_exists($this, 'uploaded')) {
113
         $id = $this->uploaded($id);
132
         $id = $this->uploaded($id);

+ 9
- 2
app/DataTables/DispositivoDataTable.php Dosyayı Görüntüle

16
 
16
 
17
 class DispositivoDataTable extends DataTable
17
 class DispositivoDataTable extends DataTable
18
 {
18
 {
19
+    public ?int $attivita_id = null;
20
+
19
     public function __construct()
21
     public function __construct()
20
     {
22
     {
21
         $this->dataTableVariable = 'dataTable_dispositivo';
23
         $this->dataTableVariable = 'dataTable_dispositivo';
47
      */
49
      */
48
     public function query(Dispositivo $model): QueryBuilder
50
     public function query(Dispositivo $model): QueryBuilder
49
     {
51
     {
50
-        return $model->newQuery();
52
+        $attivitaId = (int) $this->attivita_id;
53
+        if ($attivitaId <= 0) {
54
+            return $model->newQuery()->whereRaw('1 = 0');
55
+        }
56
+
57
+        return $model->newQuery()->where('attivita_id', $attivitaId);
51
     }
58
     }
52
 
59
 
53
     /**
60
     /**
74
                     ->editor(
81
                     ->editor(
75
                         Editor::make()
82
                         Editor::make()
76
                             ->fields([
83
                             ->fields([
77
-                                Fields\Hidden::make('attivita_id')->label('Attività')->default($this->attivita_id),
84
+                                Fields\Hidden::make('attivita_id')->label('Attività')->default((int) $this->attivita_id),
78
                                 Fields\Hidden::make('endpoint_id')->label('Endpoint ID'),
85
                                 Fields\Hidden::make('endpoint_id')->label('Endpoint ID'),
79
                                 Fields\Text::make('nome')->label('Nome'),
86
                                 Fields\Text::make('nome')->label('Nome'),
80
                                 Fields\Select2::make('tipo')->label('Tipo')->options(Dispositivo::getTipoDispositivo()->pluck('value', 'label')),
87
                                 Fields\Select2::make('tipo')->label('Tipo')->options(Dispositivo::getTipoDispositivo()->pluck('value', 'label')),

+ 15
- 12
app/DataTables/DispositivoDataTableEditor.php Dosyayı Görüntüle

3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
 use App\Models\Dispositivo;
5
 use App\Models\Dispositivo;
6
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
7
 use Illuminate\Database\Eloquent\Model;
7
-use Illuminate\Validation\Rule;
8
+use Illuminate\Support\Facades\Session;
8
 use Yajra\DataTables\DataTablesEditor;
9
 use Yajra\DataTables\DataTablesEditor;
9
-use Illuminate\Http\Request;
10
-use Illuminate\Validation\ValidationException;
11
-use Storage;
12
-use Illuminate\Support\Str;
13
 
10
 
14
 class DispositivoDataTableEditor extends DataTablesEditor
11
 class DispositivoDataTableEditor extends DataTablesEditor
15
 {
12
 {
50
     return [
47
     return [
51
       'nome'  => 'required',
48
       'nome'  => 'required',
52
       'tipo' => 'required',
49
       'tipo' => 'required',
53
-      'attivita_id' => 'required|exists:attivita,id',
54
       'licenza' => 'nullable',
50
       'licenza' => 'nullable',
55
       'url_stampante' => 'nullable',
51
       'url_stampante' => 'nullable',
56
       'ubicazione' => 'nullable',
52
       'ubicazione' => 'nullable',
77
     return [
73
     return [
78
       'nome'  => 'required',
74
       'nome'  => 'required',
79
       'tipo' => 'required',
75
       'tipo' => 'required',
80
-      'attivita_id' => 'required|exists:attivita,id',
81
       'licenza' => 'nullable',
76
       'licenza' => 'nullable',
82
       'url_stampante' => 'nullable',
77
       'url_stampante' => 'nullable',
83
       'ubicazione' => 'nullable',
78
       'ubicazione' => 'nullable',
106
 
101
 
107
   public function creating(Model $model, array $data): array
102
   public function creating(Model $model, array $data): array
108
   {
103
   {
109
-    // $model->roles()->sync([$data['ruolo_id']]);
110
-    $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
104
+    $data['attivita_id'] = Session::get('attivita_attuale');
105
+    AttivitaService::garantisciAttivita($data['attivita_id']);
106
+    $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
111
     return $data;
107
     return $data;
112
   }
108
   }
113
 
109
 
114
   public function updating(Model $model, array $data): array
110
   public function updating(Model $model, array $data): array
115
   {
111
   {
116
-    // dd($data['ruolo']);
117
-    // $model->roles()->sync([$data['ruolo_id']]);
118
-    $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
112
+    AttivitaService::garantisciAttivita($model->attivita_id);
113
+    unset($data['attivita_id']);
114
+    $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
115
+    return $data;
116
+  }
117
+
118
+  public function deleting(Model $model, array $data): array
119
+  {
120
+    AttivitaService::garantisciAttivita($model->attivita_id);
121
+
119
     return $data;
122
     return $data;
120
   }
123
   }
121
   public function messages(): array
124
   public function messages(): array

+ 13
- 8
app/DataTables/FornitoreDataTableEditor.php Dosyayı Görüntüle

3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
 use App\Models\Fornitore;
5
 use App\Models\Fornitore;
6
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
7
 use Illuminate\Database\Eloquent\Model;
7
-use Illuminate\Validation\Rule;
8
+use Illuminate\Support\Facades\Session;
8
 use Yajra\DataTables\DataTablesEditor;
9
 use Yajra\DataTables\DataTablesEditor;
9
-use Illuminate\Http\Request;
10
-use Illuminate\Validation\ValidationException;
11
-use Storage;
12
-use Illuminate\Support\Str;
13
 
10
 
14
 class FornitoreDataTableEditor extends DataTablesEditor
11
 class FornitoreDataTableEditor extends DataTablesEditor
15
 {
12
 {
88
 
85
 
89
   public function creating(Model $model, array $data): array
86
   public function creating(Model $model, array $data): array
90
   {
87
   {
91
-    // $model->roles()->sync([$data['ruolo_id']]);
88
+    $data['attivita_id'] = Session::get('attivita_attuale');
89
+    AttivitaService::garantisciAttivita($data['attivita_id']);
92
     return $data;
90
     return $data;
93
   }
91
   }
94
 
92
 
95
   public function updating(Model $model, array $data): array
93
   public function updating(Model $model, array $data): array
96
   {
94
   {
97
-    // dd($data['ruolo']);
98
-    // $model->roles()->sync([$data['ruolo_id']]);
95
+    AttivitaService::garantisciAttivita($model->attivita_id);
96
+    unset($data['attivita_id']);
97
+    return $data;
98
+  }
99
+
100
+  public function deleting(Model $model, array $data): array
101
+  {
102
+    AttivitaService::garantisciAttivita($model->attivita_id);
103
+
99
     return $data;
104
     return $data;
100
   }
105
   }
101
   public function messages(): array
106
   public function messages(): array

+ 13
- 9
app/DataTables/ImpostazioniDataTableEditor.php Dosyayı Görüntüle

3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
 use App\Models\Impostazioni;
5
 use App\Models\Impostazioni;
6
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
7
 use Illuminate\Database\Eloquent\Model;
7
-use Illuminate\Validation\Rule;
8
+use Illuminate\Support\Facades\Session;
8
 use Yajra\DataTables\DataTablesEditor;
9
 use Yajra\DataTables\DataTablesEditor;
9
-use Illuminate\Http\Request;
10
-use Illuminate\Validation\ValidationException;
11
-use Storage;
12
-use Illuminate\Support\Str;
13
 
10
 
14
 class ImpostazioniDataTableEditor extends DataTablesEditor
11
 class ImpostazioniDataTableEditor extends DataTablesEditor
15
 {
12
 {
114
 
111
 
115
   public function creating(Model $model, array $data): array
112
   public function creating(Model $model, array $data): array
116
   {
113
   {
117
-    // $model->roles()->sync([$data['ruolo_id']]);
114
+    $data['attivita_id'] = Session::get('attivita_attuale');
115
+    AttivitaService::garantisciAttivita($data['attivita_id']);
118
     return $data;
116
     return $data;
119
   }
117
   }
120
 
118
 
121
   public function updating(Model $model, array $data): array
119
   public function updating(Model $model, array $data): array
122
   {
120
   {
123
-    // $data['valore'] = $data['valore'] == 'true' ? true : false;
124
-    // dd($data['ruolo']);
125
-    // $model->roles()->sync([$data['ruolo_id']]);
121
+    AttivitaService::garantisciAttivita($model->attivita_id);
122
+    unset($data['attivita_id']);
123
+    return $data;
124
+  }
125
+
126
+  public function deleting(Model $model, array $data): array
127
+  {
128
+    AttivitaService::garantisciAttivita($model->attivita_id);
129
+
126
     return $data;
130
     return $data;
127
   }
131
   }
128
   public function messages(): array
132
   public function messages(): array

+ 17
- 12
app/DataTables/MonitorDataTableEditor.php Dosyayı Görüntüle

3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
 use App\Models\Dispositivo;
5
 use App\Models\Dispositivo;
6
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
7
 use Illuminate\Database\Eloquent\Model;
7
-use Illuminate\Validation\Rule;
8
+use Illuminate\Support\Facades\Session;
8
 use Yajra\DataTables\DataTablesEditor;
9
 use Yajra\DataTables\DataTablesEditor;
9
-use Illuminate\Http\Request;
10
-use Illuminate\Validation\ValidationException;
11
-use Storage;
12
-use Illuminate\Support\Str;
13
 
10
 
14
 class MonitorDataTableEditor extends DataTablesEditor
11
 class MonitorDataTableEditor extends DataTablesEditor
15
 {
12
 {
50
     return [
47
     return [
51
       'nome'  => 'required',
48
       'nome'  => 'required',
52
       'tipo' => 'required|in:'.Dispositivo::MONITOR,
49
       'tipo' => 'required|in:'.Dispositivo::MONITOR,
53
-      'attivita_id' => 'required|exists:attivita,id',
54
       'licenza' => 'nullable',
50
       'licenza' => 'nullable',
55
       'url_stampante' => 'nullable',
51
       'url_stampante' => 'nullable',
56
       'ubicazione' => 'nullable',
52
       'ubicazione' => 'nullable',
77
     return [
73
     return [
78
       'nome'  => 'required',
74
       'nome'  => 'required',
79
       'tipo' => 'required|in:'.Dispositivo::MONITOR,
75
       'tipo' => 'required|in:'.Dispositivo::MONITOR,
80
-      'attivita_id' => 'required|exists:attivita,id',
81
       'licenza' => 'nullable',
76
       'licenza' => 'nullable',
82
       'url_stampante' => 'nullable',
77
       'url_stampante' => 'nullable',
83
       'ubicazione' => 'nullable',
78
       'ubicazione' => 'nullable',
106
 
101
 
107
   public function creating(Model $model, array $data): array
102
   public function creating(Model $model, array $data): array
108
   {
103
   {
109
-    // $model->roles()->sync([$data['ruolo_id']]);
110
-    $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
104
+    $data['attivita_id'] = Session::get('attivita_attuale');
105
+    AttivitaService::garantisciAttivita($data['attivita_id']);
106
+    $data['tipo'] = Dispositivo::MONITOR;
107
+    $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
111
     return $data;
108
     return $data;
112
   }
109
   }
113
 
110
 
114
   public function updating(Model $model, array $data): array
111
   public function updating(Model $model, array $data): array
115
   {
112
   {
116
-    // dd($data['ruolo']);
117
-    // $model->roles()->sync([$data['ruolo_id']]);
118
-    $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
113
+    AttivitaService::garantisciAttivita($model->attivita_id);
114
+    unset($data['attivita_id']);
115
+    $data['tipo'] = Dispositivo::MONITOR;
116
+    $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
117
+    return $data;
118
+  }
119
+
120
+  public function deleting(Model $model, array $data): array
121
+  {
122
+    AttivitaService::garantisciAttivita($model->attivita_id);
123
+
119
     return $data;
124
     return $data;
120
   }
125
   }
121
   public function messages(): array
126
   public function messages(): array

+ 2
- 0
app/DataTables/OperatoreDataTable.php Dosyayı Görüntüle

15
 
15
 
16
 class OperatoreDataTable extends DataTable
16
 class OperatoreDataTable extends DataTable
17
 {
17
 {
18
+    public ?int $attivita_id = null;
19
+
18
     public function __construct()
20
     public function __construct()
19
     {
21
     {
20
         $this->dataTableVariable = 'dataTable_operatore';
22
         $this->dataTableVariable = 'dataTable_operatore';

+ 14
- 9
app/DataTables/OperatoreDataTableEditor.php Dosyayı Görüntüle

3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
 use App\Models\Operatore;
5
 use App\Models\Operatore;
6
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
7
 use Illuminate\Database\Eloquent\Model;
7
-use Illuminate\Validation\Rule;
8
-use Yajra\DataTables\DataTablesEditor;
9
-use Illuminate\Http\Request;
10
-use Illuminate\Validation\ValidationException;
11
-use Storage;
8
+use Illuminate\Support\Facades\Session;
12
 use Illuminate\Support\Str;
9
 use Illuminate\Support\Str;
13
-use Illuminate\Support\Facades\Hash;
10
+use Yajra\DataTables\DataTablesEditor;
14
 
11
 
15
 class OperatoreDataTableEditor extends DataTablesEditor
12
 class OperatoreDataTableEditor extends DataTablesEditor
16
 {
13
 {
84
 
81
 
85
   public function creating(Model $model, array $data): array
82
   public function creating(Model $model, array $data): array
86
   {
83
   {
87
-    // $model->roles()->sync([$data['ruolo_id']]);
84
+    $data['attivita_id'] = Session::get('attivita_attuale');
85
+    AttivitaService::garantisciAttivita($data['attivita_id']);
88
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
86
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
89
     if(!isset($data['password'])){
87
     if(!isset($data['password'])){
90
       $data['password'] = Str::random(8);
88
       $data['password'] = Str::random(8);
95
 
93
 
96
   public function updating(Model $model, array $data): array
94
   public function updating(Model $model, array $data): array
97
   {
95
   {
98
-    // dd($data['ruolo']);
99
-    // $model->roles()->sync([$data['ruolo_id']]);
96
+    AttivitaService::garantisciAttivita($model->attivita_id);
97
+    unset($data['attivita_id']);
100
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
98
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
101
     $data['username'] = $this->createUsername($data);
99
     $data['username'] = $this->createUsername($data);
102
     return $data;
100
     return $data;
103
   }
101
   }
102
+
103
+  public function deleting(Model $model, array $data): array
104
+  {
105
+    AttivitaService::garantisciAttivita($model->attivita_id);
106
+
107
+    return $data;
108
+  }
104
   public function messages(): array
109
   public function messages(): array
105
   {
110
   {
106
     return $this->messages;
111
     return $this->messages;

+ 8
- 1
app/DataTables/PuntoOperatoreDataTable.php Dosyayı Görüntüle

17
 
17
 
18
 class PuntoOperatoreDataTable extends DataTable
18
 class PuntoOperatoreDataTable extends DataTable
19
 {
19
 {
20
+    public ?int $attivita_id = null;
21
+
20
     public function __construct()
22
     public function __construct()
21
     {
23
     {
22
         $this->dataTableVariable = 'dataTable_punto_operatore';
24
         $this->dataTableVariable = 'dataTable_punto_operatore';
45
      */
47
      */
46
     public function query(Dispositivo $model): QueryBuilder
48
     public function query(Dispositivo $model): QueryBuilder
47
     {
49
     {
50
+        $attivitaId = (int) $this->attivita_id;
51
+        if ($attivitaId <= 0) {
52
+            return $model->newQuery()->whereRaw('1 = 0');
53
+        }
54
+
48
         return $model->newQuery()
55
         return $model->newQuery()
49
         ->where('tipo', Dispositivo::OPERATORE)
56
         ->where('tipo', Dispositivo::OPERATORE)
50
-        ->where('attivita_id', $this->attivita_id);
57
+        ->where('attivita_id', $attivitaId);
51
     }
58
     }
52
 
59
 
53
     /**
60
     /**

+ 17
- 7
app/DataTables/PuntoOperatoreDataTableEditor.php Dosyayı Görüntüle

3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
 use App\Models\Dispositivo;
5
 use App\Models\Dispositivo;
6
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
7
 use Illuminate\Database\Eloquent\Model;
8
+use Illuminate\Support\Facades\Session;
7
 use Yajra\DataTables\DataTablesEditor;
9
 use Yajra\DataTables\DataTablesEditor;
8
-use Auth;
9
 
10
 
10
 class PuntoOperatoreDataTableEditor extends DataTablesEditor
11
 class PuntoOperatoreDataTableEditor extends DataTablesEditor
11
 {
12
 {
33
   {
34
   {
34
     return [
35
     return [
35
       'nome'  => 'required',
36
       'nome'  => 'required',
36
-      'attivita_id' => 'required|exists:attivita,id',
37
-      'tipo' => 'required',
37
+      'tipo' => 'required|in:'.Dispositivo::OPERATORE,
38
       'licenza' => 'nullable',
38
       'licenza' => 'nullable',
39
       'url_stampante' => 'nullable',
39
       'url_stampante' => 'nullable',
40
       'ubicazione' => 'nullable',
40
       'ubicazione' => 'nullable',
60
   {
60
   {
61
     return [
61
     return [
62
       'nome'  => 'required',
62
       'nome'  => 'required',
63
-      'attivita_id' => 'required|exists:attivita,id',
64
-      'tipo' => 'required',
63
+      'tipo' => 'required|in:'.Dispositivo::OPERATORE,
65
       'licenza' => 'nullable',
64
       'licenza' => 'nullable',
66
       'url_stampante' => 'nullable',
65
       'url_stampante' => 'nullable',
67
       'ubicazione' => 'nullable',
66
       'ubicazione' => 'nullable',
90
 
89
 
91
   public function creating(Model $model, array $data): array
90
   public function creating(Model $model, array $data): array
92
   {
91
   {
93
-    // L'Editor manda `allergeni` come array di ID selezionati:
94
-    // salviamo la relazione nella pivot `piatto_allergene`, non nella colonna `piatto.allergeni`.
92
+    $data['attivita_id'] = Session::get('attivita_attuale');
93
+    AttivitaService::garantisciAttivita($data['attivita_id']);
94
+    $data['tipo'] = Dispositivo::OPERATORE;
95
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
95
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
96
     return $data;
96
     return $data;
97
   }
97
   }
98
 
98
 
99
   public function updating(Model $model, array $data): array
99
   public function updating(Model $model, array $data): array
100
   {
100
   {
101
+    AttivitaService::garantisciAttivita($model->attivita_id);
102
+    unset($data['attivita_id']);
103
+    $data['tipo'] = Dispositivo::OPERATORE;
101
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
104
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
102
     return $data;
105
     return $data;
103
   }
106
   }
104
 
107
 
108
+  public function deleting(Model $model, array $data): array
109
+  {
110
+    AttivitaService::garantisciAttivita($model->attivita_id);
111
+
112
+    return $data;
113
+  }
114
+
105
   public function saved(Model $model, array $data): Model
115
   public function saved(Model $model, array $data): Model
106
   {
116
   {
107
     return $model;
117
     return $model;

+ 19
- 14
app/DataTables/StampanteDataTableEditor.php Dosyayı Görüntüle

3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
 use App\Models\Dispositivo;
5
 use App\Models\Dispositivo;
6
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
7
 use Illuminate\Database\Eloquent\Model;
7
-use Illuminate\Validation\Rule;
8
+use Illuminate\Support\Facades\Session;
8
 use Yajra\DataTables\DataTablesEditor;
9
 use Yajra\DataTables\DataTablesEditor;
9
-use Illuminate\Http\Request;
10
-use Illuminate\Validation\ValidationException;
11
-use Storage;
12
-use Illuminate\Support\Str;
13
 
10
 
14
 class StampanteDataTableEditor extends DataTablesEditor
11
 class StampanteDataTableEditor extends DataTablesEditor
15
 {
12
 {
49
   {
46
   {
50
     return [
47
     return [
51
       'nome'  => 'required',
48
       'nome'  => 'required',
52
-      'tipo' => 'required',
53
-      'attivita_id' => 'required|exists:attivita,id',
49
+      'tipo' => 'required|in:'.Dispositivo::STAMPANTE,
54
       'licenza' => 'nullable',
50
       'licenza' => 'nullable',
55
       'url_stampante' => 'nullable',
51
       'url_stampante' => 'nullable',
56
       'ubicazione' => 'nullable',
52
       'ubicazione' => 'nullable',
76
   {
72
   {
77
     return [
73
     return [
78
       'nome'  => 'required',
74
       'nome'  => 'required',
79
-      'tipo' => 'required',
80
-      'attivita_id' => 'required|exists:attivita,id',
75
+      'tipo' => 'required|in:'.Dispositivo::STAMPANTE,
81
       'licenza' => 'nullable',
76
       'licenza' => 'nullable',
82
       'url_stampante' => 'nullable',
77
       'url_stampante' => 'nullable',
83
       'ubicazione' => 'nullable',
78
       'ubicazione' => 'nullable',
106
 
101
 
107
   public function creating(Model $model, array $data): array
102
   public function creating(Model $model, array $data): array
108
   {
103
   {
109
-    // $model->roles()->sync([$data['ruolo_id']]);
110
-    $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
104
+    $data['attivita_id'] = Session::get('attivita_attuale');
105
+    AttivitaService::garantisciAttivita($data['attivita_id']);
106
+    $data['tipo'] = Dispositivo::STAMPANTE;
107
+    $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
111
     return $data;
108
     return $data;
112
   }
109
   }
113
 
110
 
114
   public function updating(Model $model, array $data): array
111
   public function updating(Model $model, array $data): array
115
   {
112
   {
116
-    // dd($data['ruolo']);
117
-    // $model->roles()->sync([$data['ruolo_id']]);
118
-    $data['is_attiva'] = isset($data['is_attiva']) ? true : false;
113
+    AttivitaService::garantisciAttivita($model->attivita_id);
114
+    unset($data['attivita_id']);
115
+    $data['tipo'] = Dispositivo::STAMPANTE;
116
+    $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
117
+    return $data;
118
+  }
119
+
120
+  public function deleting(Model $model, array $data): array
121
+  {
122
+    AttivitaService::garantisciAttivita($model->attivita_id);
123
+
119
     return $data;
124
     return $data;
120
   }
125
   }
121
   public function messages(): array
126
   public function messages(): array

+ 7
- 4
app/DataTables/TavoloDataTable.php Dosyayı Görüntüle

15
 
15
 
16
 class TavoloDataTable extends DataTable
16
 class TavoloDataTable extends DataTable
17
 {
17
 {
18
+    public ?int $attivita_id = null;
19
+
18
     public function __construct(){
20
     public function __construct(){
19
         $this->dataTableVariable = 'dataTable_tavolo';
21
         $this->dataTableVariable = 'dataTable_tavolo';
20
     }
22
     }
42
      */
44
      */
43
     public function query(Tavolo $model): QueryBuilder
45
     public function query(Tavolo $model): QueryBuilder
44
     {
46
     {
45
-        if($this->attivita_id){
46
-            return $model->newQuery()->where('attivita_id', $this->attivita_id);
47
-        }else{
47
+        $attivitaId = (int) $this->attivita_id;
48
+        if ($attivitaId <= 0) {
48
             return $model->newQuery()->whereRaw('1 = 0');
49
             return $model->newQuery()->whereRaw('1 = 0');
49
         }
50
         }
51
+
52
+        return $model->newQuery()->where('attivita_id', $attivitaId);
50
     }
53
     }
51
 
54
 
52
     /**
55
     /**
81
                     ->editor(
84
                     ->editor(
82
                         Editor::make()
85
                         Editor::make()
83
                             ->fields([
86
                             ->fields([
84
-                                Fields\Hidden::make('attivita_id')->label('Attività')->default($this->attivita_id),
87
+                                Fields\Hidden::make('attivita_id')->label('Attività')->default((int) $this->attivita_id),
85
                                 Fields\Text::make('label')->label('Label'),
88
                                 Fields\Text::make('label')->label('Label'),
86
                                 Fields\Text::make('posti')->label('Posti'),
89
                                 Fields\Text::make('posti')->label('Posti'),
87
                                 Fields\Text::make('ubicazione')->label('Ubicazione'),
90
                                 Fields\Text::make('ubicazione')->label('Ubicazione'),

+ 13
- 10
app/DataTables/TavoloDataTableEditor.php Dosyayı Görüntüle

3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
 use App\Models\Tavolo;
5
 use App\Models\Tavolo;
6
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
7
 use Illuminate\Database\Eloquent\Model;
7
-use Illuminate\Validation\Rule;
8
 use Yajra\DataTables\DataTablesEditor;
8
 use Yajra\DataTables\DataTablesEditor;
9
-use Illuminate\Http\Request;
10
-use Illuminate\Validation\ValidationException;
11
-use Storage;
12
-use Illuminate\Support\Str;
9
+use Illuminate\Support\Facades\Session;
13
 
10
 
14
 class TavoloDataTableEditor extends DataTablesEditor
11
 class TavoloDataTableEditor extends DataTablesEditor
15
 {
12
 {
33
   {
30
   {
34
     return [
31
     return [
35
       'label'  => 'required',
32
       'label'  => 'required',
36
-      'attivita_id' => 'required|exists:attivita,id',
37
       'posti' => 'nullable|numeric|min:0',
33
       'posti' => 'nullable|numeric|min:0',
38
       'ubicazione' => 'nullable',
34
       'ubicazione' => 'nullable',
39
       'is_attivo' => 'boolean',
35
       'is_attivo' => 'boolean',
54
   {
50
   {
55
     return [
51
     return [
56
       'label'  => 'required',
52
       'label'  => 'required',
57
-      'attivita_id' => 'required|exists:attivita,id',
58
       'posti' => 'nullable|numeric|min:0',
53
       'posti' => 'nullable|numeric|min:0',
59
       'ubicazione' => 'nullable',
54
       'ubicazione' => 'nullable',
60
       'is_attivo' => 'boolean',
55
       'is_attivo' => 'boolean',
78
 
73
 
79
   public function creating(Model $model, array $data): array
74
   public function creating(Model $model, array $data): array
80
   {
75
   {
81
-    // $model->roles()->sync([$data['ruolo_id']]);
76
+    $data['attivita_id'] = Session::get('attivita_attuale');
77
+    AttivitaService::garantisciAttivita($data['attivita_id']);
82
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
78
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
83
     return $data;
79
     return $data;
84
   }
80
   }
85
 
81
 
86
   public function updating(Model $model, array $data): array
82
   public function updating(Model $model, array $data): array
87
   {
83
   {
88
-    // dd($data['ruolo']);
89
-    // $model->roles()->sync([$data['ruolo_id']]);
84
+    AttivitaService::garantisciAttivita($model->attivita_id);
85
+    unset($data['attivita_id']);
90
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
86
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
91
     return $data;
87
     return $data;
92
   }
88
   }
89
+
90
+  public function deleting(Model $model, array $data): array
91
+  {
92
+    AttivitaService::garantisciAttivita($model->attivita_id);
93
+
94
+    return $data;
95
+  }
93
   public function messages(): array
96
   public function messages(): array
94
   {
97
   {
95
     return $this->messages;
98
     return $this->messages;

+ 13
- 10
app/DataTables/TestiDataTableEditor.php Dosyayı Görüntüle

3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
 use App\Models\Testi;
5
 use App\Models\Testi;
6
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
7
 use Illuminate\Database\Eloquent\Model;
7
-use Illuminate\Validation\Rule;
8
+use Illuminate\Support\Facades\Session;
8
 use Yajra\DataTables\DataTablesEditor;
9
 use Yajra\DataTables\DataTablesEditor;
9
-use Illuminate\Http\Request;
10
-use Illuminate\Validation\ValidationException;
11
-use Storage;
12
-use Illuminate\Support\Str;
13
 
10
 
14
 class TestiDataTableEditor extends DataTablesEditor
11
 class TestiDataTableEditor extends DataTablesEditor
15
 {
12
 {
35
   {
32
   {
36
     return [
33
     return [
37
       'titolo'  => 'required',
34
       'titolo'  => 'required',
38
-      'attivita_id' => 'required|exists:attivita,id',
39
       'descrizione' => 'nullable',
35
       'descrizione' => 'nullable',
40
       'testo' => 'nullable',
36
       'testo' => 'nullable',
41
       'ambiente' => 'nullable',
37
       'ambiente' => 'nullable',
58
   {
54
   {
59
     return [
55
     return [
60
       'titolo'  => 'required',
56
       'titolo'  => 'required',
61
-      'attivita_id' => 'required|exists:attivita,id',
62
       'descrizione' => 'nullable',
57
       'descrizione' => 'nullable',
63
       'testo' => 'nullable',
58
       'testo' => 'nullable',
64
       'ambiente' => 'nullable',
59
       'ambiente' => 'nullable',
84
 
79
 
85
   public function creating(Model $model, array $data): array
80
   public function creating(Model $model, array $data): array
86
   {
81
   {
87
-    // $model->roles()->sync([$data['ruolo_id']]);
82
+    $data['attivita_id'] = Session::get('attivita_attuale');
83
+    AttivitaService::garantisciAttivita($data['attivita_id']);
88
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
84
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
89
     return $data;
85
     return $data;
90
   }
86
   }
91
 
87
 
92
   public function updating(Model $model, array $data): array
88
   public function updating(Model $model, array $data): array
93
   {
89
   {
94
-    // dd($data['ruolo']);
95
-    // $model->roles()->sync([$data['ruolo_id']]);
90
+    AttivitaService::garantisciAttivita($model->attivita_id);
91
+    unset($data['attivita_id']);
96
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
92
     $data['is_attivo'] = isset($data['is_attivo']) ? true : false;
97
     return $data;
93
     return $data;
98
   }
94
   }
95
+
96
+  public function deleting(Model $model, array $data): array
97
+  {
98
+    AttivitaService::garantisciAttivita($model->attivita_id);
99
+
100
+    return $data;
101
+  }
99
   public function messages(): array
102
   public function messages(): array
100
   {
103
   {
101
     return $this->messages;
104
     return $this->messages;

+ 10
- 5
app/DataTables/VariantePiattoDataTable.php Dosyayı Görüntüle

58
      */
58
      */
59
     public function query(VariantePiatto $model): QueryBuilder
59
     public function query(VariantePiatto $model): QueryBuilder
60
     {
60
     {
61
-        $query = $model->newQuery()->where('attivita_id', $this->attivita_id);
61
+        $attivitaId = (int) $this->attivita_id;
62
+        if ($attivitaId <= 0) {
63
+            return $model->newQuery()->whereRaw('1 = 0');
64
+        }
65
+
66
+        $query = $model->newQuery()->where('attivita_id', $attivitaId);
62
         if (isset($this->cucina_id)) {
67
         if (isset($this->cucina_id)) {
63
             $query->where('cucina_id', $this->cucina_id);
68
             $query->where('cucina_id', $this->cucina_id);
64
         }
69
         }
92
                     ->editor(Editor::make()
97
                     ->editor(Editor::make()
93
                         ->ajax(route('variante-piatto.store'))
98
                         ->ajax(route('variante-piatto.store'))
94
                         ->fields([
99
                         ->fields([
95
-                            Fields\Hidden::make('attivita_id')->label('Attività')->default($this->attivita_id),
100
+                            Fields\Hidden::make('attivita_id')->label('Attività')->default((int) $this->attivita_id),
96
                             Fields\Text::make('label')->label('Nome'),
101
                             Fields\Text::make('label')->label('Nome'),
97
                             Fields\Text::make('prezzo')->label('Prezzo'),
102
                             Fields\Text::make('prezzo')->label('Prezzo'),
98
-                            Fields\Select2::make('piatto_id')->label('Associa al Piatto')->options(Piatto::where('attivita_id', $this->attivita_id)->pluck('id', 'nome')),
99
-                            Fields\Select2::make('cucina_id')->label('Associa alla Cucina')->options(Cucina::where('attivita_id', $this->attivita_id)->pluck('id', 'nome'))->default($this->cucina_id),
100
-                            Fields\Checkbox::make('is_attivo')->label('Attiva')->default(true),
103
+                            Fields\Select2::make('piatto_id')->label('Associa al Piatto')->options(Piatto::where('attivita_id', (int) $this->attivita_id)->pluck('id', 'nome')),
104
+                            Fields\Select2::make('cucina_id')->label('Associa alla Cucina')->options(Cucina::where('attivita_id', (int) $this->attivita_id)->pluck('id', 'nome'))->default($this->cucina_id),
105
+                            Fields\Boolean::make('is_attivo')->label('Attiva')->default(true),
101
                         ])
106
                         ])
102
                     )
107
                     )
103
                     ->language(asset('assets/Italian.json'))
108
                     ->language(asset('assets/Italian.json'))

+ 36
- 9
app/DataTables/VariantePiattoDataTableEditor.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\DataTables;
3
 namespace App\DataTables;
4
 
4
 
5
+use App\Models\Cucina;
6
+use App\Models\Piatto;
5
 use App\Models\VariantePiatto;
7
 use App\Models\VariantePiatto;
8
+use App\Services\Attivita\AttivitaService;
6
 use Illuminate\Database\Eloquent\Model;
9
 use Illuminate\Database\Eloquent\Model;
7
-use Illuminate\Validation\Rule;
8
 use Yajra\DataTables\DataTablesEditor;
10
 use Yajra\DataTables\DataTablesEditor;
9
-use Illuminate\Http\Request;
10
-use Illuminate\Validation\ValidationException;
11
-use Storage;
12
-use Illuminate\Support\Str;
11
+use Illuminate\Support\Facades\Session;
13
 
12
 
14
 class VariantePiattoDataTableEditor extends DataTablesEditor
13
 class VariantePiattoDataTableEditor extends DataTablesEditor
15
 {
14
 {
38
   {
37
   {
39
     return [
38
     return [
40
       'label'  => 'required',
39
       'label'  => 'required',
41
-      'attivita_id' => 'required|exists:attivita,id',
42
       'prezzo' => 'required',
40
       'prezzo' => 'required',
43
-      'is_attivo' => 'boolean',
44
       'piatto_id' => 'nullable|exists:piatto,id',
41
       'piatto_id' => 'nullable|exists:piatto,id',
45
       'cucina_id' => 'required|exists:cucina,id',
42
       'cucina_id' => 'required|exists:cucina,id',
46
     ];
43
     ];
60
   {
57
   {
61
     return [
58
     return [
62
       'label'  => 'required',
59
       'label'  => 'required',
63
-      'attivita_id' => 'required|exists:attivita,id',
64
       'prezzo' => 'required',
60
       'prezzo' => 'required',
65
-      'is_attivo' => 'boolean',
66
       'piatto_id' => 'nullable|exists:piatto,id',
61
       'piatto_id' => 'nullable|exists:piatto,id',
67
       'cucina_id' => 'required|exists:cucina,id',
62
       'cucina_id' => 'required|exists:cucina,id',
68
     ];
63
     ];
86
 
81
 
87
   public function creating(Model $model, array $data): array
82
   public function creating(Model $model, array $data): array
88
   {
83
   {
84
+    $data['attivita_id'] = Session::get('attivita_attuale');
85
+    AttivitaService::garantisciAttivita($data['attivita_id']);
86
+    $this->garantisciRelazioniDiQuestaAttivita($data, $data['attivita_id']);
87
+
89
     $data['is_attivo'] = array_key_exists('is_attivo', $data)
88
     $data['is_attivo'] = array_key_exists('is_attivo', $data)
90
       ? filter_var($data['is_attivo'], FILTER_VALIDATE_BOOLEAN)
89
       ? filter_var($data['is_attivo'], FILTER_VALIDATE_BOOLEAN)
91
       : true;
90
       : true;
94
 
93
 
95
   public function updating(Model $model, array $data): array
94
   public function updating(Model $model, array $data): array
96
   {
95
   {
96
+    AttivitaService::garantisciAttivita($model->attivita_id);
97
+    unset($data['attivita_id']);
98
+    $this->garantisciRelazioniDiQuestaAttivita($data, $model->attivita_id, $model);
99
+
97
     if (array_key_exists('is_attivo', $data)) {
100
     if (array_key_exists('is_attivo', $data)) {
98
       $data['is_attivo'] = filter_var($data['is_attivo'], FILTER_VALIDATE_BOOLEAN);
101
       $data['is_attivo'] = filter_var($data['is_attivo'], FILTER_VALIDATE_BOOLEAN);
99
     }
102
     }
100
     return $data;
103
     return $data;
101
   }
104
   }
105
+
106
+  public function deleting(Model $model, array $data): array
107
+  {
108
+    AttivitaService::garantisciAttivita($model->attivita_id);
109
+
110
+    return $data;
111
+  }
112
+
113
+  private function garantisciRelazioniDiQuestaAttivita(array $data, $attivitaId, ?Model $model = null): void
114
+  {
115
+    $cucinaId = $data['cucina_id'] ?? $model?->cucina_id;
116
+    $cucina = Cucina::find($cucinaId);
117
+    if (! $cucina || (int) $cucina->attivita_id !== (int) $attivitaId) {
118
+      abort(404);
119
+    }
120
+
121
+    $piattoId = $data['piatto_id'] ?? $model?->piatto_id;
122
+    if ($piattoId) {
123
+      $piatto = Piatto::find($piattoId);
124
+      if (! $piatto || (int) $piatto->attivita_id !== (int) $attivitaId) {
125
+        abort(404);
126
+      }
127
+    }
128
+  }
102
   public function messages(): array
129
   public function messages(): array
103
   {
130
   {
104
     return $this->messages;
131
     return $this->messages;

+ 2
- 0
app/Http/Controllers/AllergeneController.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
+
6
+use Illuminate\Routing\Controllers\Middleware;
5
 use Illuminate\Http\Request;
7
 use Illuminate\Http\Request;
6
 use App\Models\Allergene;
8
 use App\Models\Allergene;
7
 use App\DataTables\AllergeneDataTable;
9
 use App\DataTables\AllergeneDataTable;

+ 9
- 1
app/Http/Controllers/BachecaController.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
+
6
+use Illuminate\Routing\Controllers\Middleware;
5
 use Illuminate\Http\Request;
7
 use Illuminate\Http\Request;
6
 use App\Models\Bacheca;
8
 use App\Models\Bacheca;
7
 use App\DataTables\BachecaDataTable;
9
 use App\DataTables\BachecaDataTable;
9
 use Illuminate\Support\Facades\Auth;
11
 use Illuminate\Support\Facades\Auth;
10
 use App\DataTables\ContenutoBachecaDataTable;
12
 use App\DataTables\ContenutoBachecaDataTable;
11
 use Illuminate\Support\Facades\Session;
13
 use Illuminate\Support\Facades\Session;
14
+use App\Services\Attivita\AttivitaService;
12
 
15
 
13
 class BachecaController extends Controller
16
 class BachecaController extends Controller
14
 {
17
 {
23
     public static function middleware(): array
26
     public static function middleware(): array
24
     {
27
     {
25
         return [
28
         return [
26
-            new Middleware('permission:view-bacheca', only: ['index']),
29
+            new Middleware('permission:view-bacheca', only: ['index', 'show']),
27
             new Middleware('permission:create-bacheca|edit-bacheca|delete-bacheca', only: ['store', 'update', 'destroy']),
30
             new Middleware('permission:create-bacheca|edit-bacheca|delete-bacheca', only: ['store', 'update', 'destroy']),
28
         ];
31
         ];
29
     }
32
     }
57
     public function show(ContenutoBachecaDataTable $datatable, Request $request)
60
     public function show(ContenutoBachecaDataTable $datatable, Request $request)
58
     {
61
     {
59
         $bacheca = Bacheca::find($request->get('bacheca_id'));
62
         $bacheca = Bacheca::find($request->get('bacheca_id'));
63
+        if (! $bacheca) {
64
+            abort(404);
65
+        }
66
+        AttivitaService::garantisciAttivita($bacheca->attivita_id);
67
+        $datatable->attivita_id = Session::get('attivita_attuale');
60
         $datatable->bacheca_id = $bacheca->id;
68
         $datatable->bacheca_id = $bacheca->id;
61
         return $datatable->render('bacheca.show', ['bacheca' => $bacheca]);
69
         return $datatable->render('bacheca.show', ['bacheca' => $bacheca]);
62
     }
70
     }

+ 14
- 4
app/Http/Controllers/BachecaHasContenutoController.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
+
6
+use Illuminate\Routing\Controllers\Middleware;
5
 use Illuminate\Http\Request;
7
 use Illuminate\Http\Request;
6
 use App\Models\BachecaHasContenuto;
8
 use App\Models\BachecaHasContenuto;
7
 use App\Models\Bacheca;
9
 use App\Models\Bacheca;
8
 use App\Models\ContenutoBacheca;
10
 use App\Models\ContenutoBacheca;
9
 use Illuminate\Support\Facades\Auth;
11
 use Illuminate\Support\Facades\Auth;
10
 use Illuminate\Support\Facades\Session;
12
 use Illuminate\Support\Facades\Session;
13
+use App\Services\Attivita\AttivitaService;
11
 
14
 
12
 class BachecaHasContenutoController extends Controller
15
 class BachecaHasContenutoController extends Controller
13
 {
16
 {
22
     public static function middleware(): array
25
     public static function middleware(): array
23
     {
26
     {
24
         return [
27
         return [
25
-            new Middleware('permission:view-bacheca_has_contenuto', only: ['index']),
26
-            new Middleware('permission:create-bacheca_has_contenuto|edit-bacheca_has_contenuto|delete-bacheca_has_contenuto', only: ['store', 'update', 'destroy']),
28
+            new Middleware('permission:view-bacheca_has_contenuto', only: ['index', 'associa_contenuto']),
29
+            new Middleware('permission:create-bacheca_has_contenuto|edit-bacheca_has_contenuto|delete-bacheca_has_contenuto', only: ['store', 'update', 'destroy', 'associa_contenuto_bacheca']),
27
         ];
30
         ];
28
     }
31
     }
29
     
32
     
34
 
37
 
35
     public function associa_contenuto(Request $request)
38
     public function associa_contenuto(Request $request)
36
     {
39
     {
37
-        $contenuti = ContenutoBacheca::all();
40
+        $attivitaId = Session::get('attivita_attuale');
41
+        AttivitaService::garantisciAttivita($attivitaId);
42
+        $contenuti = ContenutoBacheca::query()->where('attivita_id', $attivitaId)->get();
38
         return view('contenuto_bacheca.associa_contenuto', ['contenuti' => $contenuti]);
43
         return view('contenuto_bacheca.associa_contenuto', ['contenuti' => $contenuti]);
39
     }
44
     }
40
 
45
 
47
         
52
         
48
         $bacheca = Bacheca::find($request->bacheca_id);
53
         $bacheca = Bacheca::find($request->bacheca_id);
49
         $contenuto = ContenutoBacheca::find($request->contenuto_id);
54
         $contenuto = ContenutoBacheca::find($request->contenuto_id);
50
-        
55
+        if (! $bacheca || ! $contenuto) {
56
+            abort(404);
57
+        }
58
+        AttivitaService::garantisciAttivita($bacheca->attivita_id);
59
+        AttivitaService::garantisciAttivita($contenuto->attivita_id);
60
+
51
         $bacheca->contenuti()->attach($contenuto);
61
         $bacheca->contenuti()->attach($contenuto);
52
         
62
         
53
         return response()->json(['message' => 'Contenuto associato con successo']);
63
         return response()->json(['message' => 'Contenuto associato con successo']);

+ 2
- 0
app/Http/Controllers/CategoriaContabileController.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
+
6
+use Illuminate\Routing\Controllers\Middleware;
5
 use Illuminate\Http\Request;
7
 use Illuminate\Http\Request;
6
 use App\Models\Categoriacontabile;
8
 use App\Models\Categoriacontabile;
7
 use App\DataTables\CategoriacontabileDataTable;
9
 use App\DataTables\CategoriacontabileDataTable;

+ 3
- 1
app/Http/Controllers/ChiusuraServizioController.php Dosyayı Görüntüle

12
 use Illuminate\Routing\Controllers\Middleware;
12
 use Illuminate\Routing\Controllers\Middleware;
13
 use Illuminate\Support\Facades\Auth;
13
 use Illuminate\Support\Facades\Auth;
14
 use Illuminate\Support\Facades\Session;
14
 use Illuminate\Support\Facades\Session;
15
+use App\Services\Attivita\AttivitaService;
15
 
16
 
16
 class ChiusuraServizioController extends Controller
17
 class ChiusuraServizioController extends Controller
17
 {
18
 {
101
       return redirect()->back()->with('error', 'Non autorizzato');
102
       return redirect()->back()->with('error', 'Non autorizzato');
102
     }
103
     }
103
 
104
 
104
-    $attivitaId = (int) ($request->input('attivita_id') ?: Session::get('attivita_attuale'));
105
+    $attivitaId = (int) Session::get('attivita_attuale');
106
+    AttivitaService::garantisciAttivita($attivitaId);
105
     $attivita = Attivita::find($attivitaId);
107
     $attivita = Attivita::find($attivitaId);
106
     if (!$attivita) {
108
     if (!$attivita) {
107
       return redirect()->back()->with('error', 'Attività non trovata');
109
       return redirect()->back()->with('error', 'Attività non trovata');

+ 7
- 0
app/Http/Controllers/ContenutoBachecaController.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
+
6
+use Illuminate\Routing\Controllers\Middleware;
5
 use Illuminate\Http\Request;
7
 use Illuminate\Http\Request;
6
 use App\Models\ContenutoBacheca;
8
 use App\Models\ContenutoBacheca;
7
 use App\DataTables\ContenutoBachecaDataTable;
9
 use App\DataTables\ContenutoBachecaDataTable;
8
 use App\DataTables\ContenutoBachecaDataTableEditor;
10
 use App\DataTables\ContenutoBachecaDataTableEditor;
9
 use Illuminate\Support\Facades\Auth;
11
 use Illuminate\Support\Facades\Auth;
10
 use Illuminate\Support\Facades\Session;
12
 use Illuminate\Support\Facades\Session;
13
+use App\Services\Attivita\AttivitaService;
11
 
14
 
12
 class ContenutoBachecaController extends Controller
15
 class ContenutoBachecaController extends Controller
13
 {
16
 {
56
     public function show(Request $request)
59
     public function show(Request $request)
57
     {
60
     {
58
         $contenuto_bacheca = ContenutoBacheca::find($request->get('contenuto_bacheca_id'));
61
         $contenuto_bacheca = ContenutoBacheca::find($request->get('contenuto_bacheca_id'));
62
+        if (! $contenuto_bacheca) {
63
+            abort(404);
64
+        }
65
+        AttivitaService::garantisciAttivita($contenuto_bacheca->attivita_id);
59
         return view('contenuto_bacheca.show', ['contenuto_bacheca' => $contenuto_bacheca]);
66
         return view('contenuto_bacheca.show', ['contenuto_bacheca' => $contenuto_bacheca]);
60
     }
67
     }
61
     
68
     

+ 14
- 3
app/Http/Controllers/Controller.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
-abstract class Controller
5
+use Illuminate\Routing\Controllers\HasMiddleware;
6
+
7
+abstract class Controller implements HasMiddleware
6
 {
8
 {
7
-  //
8
-}
9
+    /**
10
+     * Laravel 12 applica il middleware dei controller solo se la classe
11
+     * implementa HasMiddleware. I figli possono sovrascrivere questo metodo.
12
+     *
13
+     * @return array<int, \Illuminate\Routing\Controllers\Middleware|\Closure|string>
14
+     */
15
+    public static function middleware(): array
16
+    {
17
+        return [];
18
+    }
19
+}

+ 4
- 0
app/Http/Controllers/DispositivoController.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
+
6
+use Illuminate\Routing\Controllers\Middleware;
5
 use Illuminate\Http\Request;
7
 use Illuminate\Http\Request;
6
 use App\Models\Dispositivo;
8
 use App\Models\Dispositivo;
7
 use App\DataTables\DispositivoDataTable;
9
 use App\DataTables\DispositivoDataTable;
8
 use App\DataTables\DispositivoDataTableEditor;
10
 use App\DataTables\DispositivoDataTableEditor;
9
 use Illuminate\Support\Facades\Auth;
11
 use Illuminate\Support\Facades\Auth;
12
+use Illuminate\Support\Facades\Session;
10
 
13
 
11
 
14
 
12
 class DispositivoController extends Controller
15
 class DispositivoController extends Controller
29
     
32
     
30
     public function index(DispositivoDataTable $dataTable)
33
     public function index(DispositivoDataTable $dataTable)
31
     {
34
     {
35
+        $dataTable->attivita_id = Session::get('attivita_attuale');
32
         return $dataTable->render('dispositivo.index');
36
         return $dataTable->render('dispositivo.index');
33
     }
37
     }
34
     public function store(DispositivoDataTableEditor $editor)
38
     public function store(DispositivoDataTableEditor $editor)

+ 2
- 0
app/Http/Controllers/EventoFormController.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
+
6
+use Illuminate\Routing\Controllers\Middleware;
5
 use Illuminate\Http\Request;
7
 use Illuminate\Http\Request;
6
 use App\Models\EventoForm;
8
 use App\Models\EventoForm;
7
 use App\Models\Evento;
9
 use App\Models\Evento;

+ 6
- 1
app/Http/Controllers/FornitoreController.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
+
6
+use Illuminate\Routing\Controllers\Middleware;
5
 use Illuminate\Http\Request;
7
 use Illuminate\Http\Request;
6
 use App\Models\Fornitore;
8
 use App\Models\Fornitore;
7
 use App\DataTables\FornitoreDataTable;
9
 use App\DataTables\FornitoreDataTable;
8
 use App\DataTables\FornitoreDataTableEditor;
10
 use App\DataTables\FornitoreDataTableEditor;
9
 use Illuminate\Support\Facades\Auth;
11
 use Illuminate\Support\Facades\Auth;
12
+use App\Services\Attivita\AttivitaService;
10
 
13
 
11
 class FornitoreController extends Controller
14
 class FornitoreController extends Controller
12
 {
15
 {
21
     public static function middleware(): array
24
     public static function middleware(): array
22
     {
25
     {
23
         return [
26
         return [
24
-            new Middleware('permission:view-fornitore', only: ['index', 'show']),
27
+            new Middleware('permission:view-fornitore', only: ['index', 'show', 'show_modal']),
25
             new Middleware('permission:create-fornitore|edit-fornitore|delete-fornitore', only: ['store', 'update', 'destroy']),
28
             new Middleware('permission:create-fornitore|edit-fornitore|delete-fornitore', only: ['store', 'update', 'destroy']),
26
         ];
29
         ];
27
     }
30
     }
56
     {
59
     {
57
         $fornitore = Fornitore::find($request->get('fornitore_id'));
60
         $fornitore = Fornitore::find($request->get('fornitore_id'));
58
         if(!$fornitore) return redirect()->route('fornitore.index')->with('error', 'Fornitore non trovato');
61
         if(!$fornitore) return redirect()->route('fornitore.index')->with('error', 'Fornitore non trovato');
62
+        AttivitaService::garantisciAttivita($fornitore->attivita_id);
59
         if(!Auth::user()->can('view-fornitore')) return abort(403, 'Non hai permesso di vedere questo fornitore');
63
         if(!Auth::user()->can('view-fornitore')) return abort(403, 'Non hai permesso di vedere questo fornitore');
60
         return view('fornitore.show_modal', ['fornitore' => $fornitore]);
64
         return view('fornitore.show_modal', ['fornitore' => $fornitore]);
61
     }
65
     }
64
     {
68
     {
65
         $fornitore = Fornitore::find($request->get('fornitore_id'));
69
         $fornitore = Fornitore::find($request->get('fornitore_id'));
66
         if(!$fornitore) return redirect()->route('fornitore.index')->with('error', 'Fornitore non trovato');
70
         if(!$fornitore) return redirect()->route('fornitore.index')->with('error', 'Fornitore non trovato');
71
+        AttivitaService::garantisciAttivita($fornitore->attivita_id);
67
         if(!Auth::user()->can('view-fornitore')) return abort(403, 'Non hai permesso di vedere questo fornitore');
72
         if(!Auth::user()->can('view-fornitore')) return abort(403, 'Non hai permesso di vedere questo fornitore');
68
         return view('fornitore.show', ['fornitore' => $fornitore]);
73
         return view('fornitore.show', ['fornitore' => $fornitore]);
69
     }
74
     }

+ 5
- 1
app/Http/Controllers/ImpostazioniController.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
+
6
+use Illuminate\Routing\Controllers\Middleware;
5
 use App\Models\Attivita;
7
 use App\Models\Attivita;
6
 use Illuminate\Http\Request;
8
 use Illuminate\Http\Request;
7
 use App\Models\Impostazioni;
9
 use App\Models\Impostazioni;
9
 use Illuminate\Support\Facades\Session;
11
 use Illuminate\Support\Facades\Session;
10
 use App\DataTables\ImpostazioniDataTable;
12
 use App\DataTables\ImpostazioniDataTable;
11
 use App\DataTables\ImpostazioniDataTableEditor;
13
 use App\DataTables\ImpostazioniDataTableEditor;
14
+use App\Services\Attivita\AttivitaService;
12
 
15
 
13
 class ImpostazioniController extends Controller
16
 class ImpostazioniController extends Controller
14
 {
17
 {
24
     {
27
     {
25
         return [
28
         return [
26
             new Middleware('permission:view-impostazioni', only: ['index']),
29
             new Middleware('permission:view-impostazioni', only: ['index']),
27
-            new Middleware('permission:create-impostazioni|edit-impostazioni|delete-impostazioni', only: ['store']),
30
+            new Middleware('permission:create-impostazioni|edit-impostazioni|delete-impostazioni', only: ['store', 'edit']),
28
         ];
31
         ];
29
     }
32
     }
30
     
33
     
69
     {
72
     {
70
         $impostazione = Impostazioni::find($impostazione_id);
73
         $impostazione = Impostazioni::find($impostazione_id);
71
         if(!$impostazione) return redirect()->route('impostazioni.index')->with('error', 'Impostazione non trovata');
74
         if(!$impostazione) return redirect()->route('impostazioni.index')->with('error', 'Impostazione non trovata');
75
+        AttivitaService::garantisciAttivita($impostazione->attivita_id);
72
         return view('impostazioni.edit', compact('impostazione'));
76
         return view('impostazioni.edit', compact('impostazione'));
73
     }
77
     }
74
 }
78
 }

+ 5
- 4
app/Http/Controllers/ListinoPrezziController.php Dosyayı Görüntüle

3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
 use Illuminate\Http\Request;
5
 use Illuminate\Http\Request;
6
+use Illuminate\Routing\Controllers\Middleware;
6
 use App\Models\ListinoPrezzi;
7
 use App\Models\ListinoPrezzi;
7
 use Illuminate\Support\Facades\Auth;
8
 use Illuminate\Support\Facades\Auth;
8
 use Illuminate\Support\Facades\Validator;
9
 use Illuminate\Support\Facades\Validator;
22
     
23
     
23
     public static function middleware(): array
24
     public static function middleware(): array
24
     {
25
     {
25
-        return  [
26
-                    new Middleware('role:superadmin', ['only' => ['index', 'store']]),
27
-                    new Middleware('role:amministratore', ['only' => ['show_listino_cliente']]),
28
-                ];
26
+        return [
27
+            new Middleware('role:superadmin', only: ['index', 'store']),
28
+            new Middleware('role:amministratore', only: ['show_listino_cliente']),
29
+        ];
29
     }
30
     }
30
 
31
 
31
     public function index(ListinoPrezziDataTable $dataTable)
32
     public function index(ListinoPrezziDataTable $dataTable)

+ 25
- 2
app/Http/Controllers/MonitorController.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
+
6
+use Illuminate\Routing\Controllers\Middleware;
5
 use Illuminate\Http\Request;
7
 use Illuminate\Http\Request;
6
 use App\Models\Dispositivo;
8
 use App\Models\Dispositivo;
7
 use App\Models\MonitorHasContenuto;
9
 use App\Models\MonitorHasContenuto;
11
 use Illuminate\Support\Facades\Auth;
13
 use Illuminate\Support\Facades\Auth;
12
 use Carbon\Carbon;
14
 use Carbon\Carbon;
13
 use Illuminate\Support\Facades\Session;
15
 use Illuminate\Support\Facades\Session;
16
+use App\Services\Attivita\AttivitaService;
14
 
17
 
15
 
18
 
16
 class MonitorController extends Controller
19
 class MonitorController extends Controller
26
     public static function middleware(): array
29
     public static function middleware(): array
27
     {
30
     {
28
         return [
31
         return [
29
-            new Middleware('permission:view-monitor', only: ['index']),
30
-            new Middleware('permission:create-monitor|edit-monitor|delete-monitor', only: ['store', 'update', 'destroy']),
32
+            new Middleware('permission:view-monitor', only: ['index', 'show']),
33
+            new Middleware('permission:create-monitor|edit-monitor|delete-monitor', only: ['store', 'update', 'destroy', 'gestisci_contenuto_monitor', 'gestisci_contenuto_store']),
31
         ];
34
         ];
32
     }
35
     }
33
     
36
     
61
         if($monitor == null){
64
         if($monitor == null){
62
             return redirect()->route('monitor.index')->with('error', 'Dispositivo monitor non trovato');
65
             return redirect()->route('monitor.index')->with('error', 'Dispositivo monitor non trovato');
63
         }
66
         }
67
+        AttivitaService::garantisciAttivita($monitor->attivita_id);
64
 
68
 
65
         $monitor_has_contenuto = MonitorHasContenuto::with(['cucina', 'contenuto_bacheca', 'bacheca.contenuti'])
69
         $monitor_has_contenuto = MonitorHasContenuto::with(['cucina', 'contenuto_bacheca', 'bacheca.contenuti'])
66
             ->where('monitor_id', $monitor->id)
70
             ->where('monitor_id', $monitor->id)
102
         if($monitor == null){
106
         if($monitor == null){
103
             abort(404, 'Dispositivo monitor non trovato');
107
             abort(404, 'Dispositivo monitor non trovato');
104
         }
108
         }
109
+        AttivitaService::garantisciAttivita($monitor->attivita_id);
105
         $monitor_has_contenuto = MonitorHasContenuto::where('monitor_id', $monitor->id)->first();
110
         $monitor_has_contenuto = MonitorHasContenuto::where('monitor_id', $monitor->id)->first();
106
 
111
 
107
         $bacheche = Bacheca::query()
112
         $bacheche = Bacheca::query()
146
 
151
 
147
         $isBacheca = (bool) $request->boolean('is_bacheca');
152
         $isBacheca = (bool) $request->boolean('is_bacheca');
148
 
153
 
154
+        $monitor = Dispositivo::find($request->get('monitor_id'));
155
+        if (! $monitor) {
156
+            abort(404);
157
+        }
158
+        AttivitaService::garantisciAttivita($monitor->attivita_id);
159
+
160
+        if ($isBacheca) {
161
+            $bacheca = Bacheca::find($request->get('bacheca_id'));
162
+            if (! $bacheca || (int) $bacheca->attivita_id !== (int) $monitor->attivita_id) {
163
+                abort(404);
164
+            }
165
+        } else {
166
+            $cucina = \App\Models\Cucina::find($request->get('cucina_id'));
167
+            if (! $cucina || (int) $cucina->attivita_id !== (int) $monitor->attivita_id) {
168
+                abort(404);
169
+            }
170
+        }
171
+
149
         MonitorHasContenuto::updateOrCreate([
172
         MonitorHasContenuto::updateOrCreate([
150
             'monitor_id' => $request->get('monitor_id'),
173
             'monitor_id' => $request->get('monitor_id'),
151
         ], [
174
         ], [

+ 3
- 1
app/Http/Controllers/RoleController.php Dosyayı Görüntüle

33
   public static function middleware(): array
33
   public static function middleware(): array
34
   {
34
   {
35
     return [
35
     return [
36
-      new Middleware('permission:view-role', only: ['index']),
36
+      new Middleware('permission:view-role', only: ['index', 'showEdit', 'showNew', 'getPermissions']),
37
+      new Middleware('permission:create-role', only: ['createRole']),
38
+      new Middleware('permission:edit-role', only: ['updatePermission']),
37
       new Middleware('permission:create-role|edit-role|remove-role', only: ['store']),
39
       new Middleware('permission:create-role|edit-role|remove-role', only: ['store']),
38
     ];
40
     ];
39
   }
41
   }

+ 2
- 0
app/Http/Controllers/StampanteController.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
+
6
+use Illuminate\Routing\Controllers\Middleware;
5
 use Illuminate\Http\Request;
7
 use Illuminate\Http\Request;
6
 use App\Models\Dispositivo;
8
 use App\Models\Dispositivo;
7
 use App\DataTables\StampanteDataTable;
9
 use App\DataTables\StampanteDataTable;

+ 2
- 0
app/Http/Controllers/TavoloController.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
+
6
+use Illuminate\Routing\Controllers\Middleware;
5
 use App\Models\Tavolo;
7
 use App\Models\Tavolo;
6
 use App\DataTables\TavoloDataTable;
8
 use App\DataTables\TavoloDataTable;
7
 use App\DataTables\TavoloDataTableEditor;
9
 use App\DataTables\TavoloDataTableEditor;

+ 9
- 2
app/Http/Controllers/TestiController.php Dosyayı Görüntüle

3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
 use Illuminate\Http\Request;
5
 use Illuminate\Http\Request;
6
+use Illuminate\Routing\Controllers\Middleware;
6
 use App\Models\Testi;
7
 use App\Models\Testi;
7
 use App\DataTables\TestiDataTable;
8
 use App\DataTables\TestiDataTable;
8
 use App\DataTables\TestiDataTableEditor;
9
 use App\DataTables\TestiDataTableEditor;
24
         return [
25
         return [
25
             new Middleware('permission:view-testi', only: ['index']),
26
             new Middleware('permission:view-testi', only: ['index']),
26
             new Middleware('permission:create-testi|edit-testi|delete-testi', only: ['store', 'update', 'destroy']),
27
             new Middleware('permission:create-testi|edit-testi|delete-testi', only: ['store', 'update', 'destroy']),
27
-            new Middleware('permission:show-testi-cliente', only: ['show_cliente']),
28
         ];
28
         ];
29
     }
29
     }
30
 
30
 
57
     {
57
     {
58
         switch($request->get('oggetto')){
58
         switch($request->get('oggetto')){
59
             case 'privacy':
59
             case 'privacy':
60
+                $attivitaId = (int) ($request->get('attivita_id') ?: Session::get('attivita_attuale'));
61
+                if ($attivitaId <= 0) {
62
+                    abort(404);
63
+                }
60
                 $testi = Testi::where('ambiente', 'cliente')
64
                 $testi = Testi::where('ambiente', 'cliente')
61
                 ->where('tipo', 'privacy')
65
                 ->where('tipo', 'privacy')
62
                 ->where('is_attivo', true)
66
                 ->where('is_attivo', true)
67
+                ->where('attivita_id', $attivitaId)
63
                 ->orderBy('created_at', 'desc')
68
                 ->orderBy('created_at', 'desc')
64
                 ->first();
69
                 ->first();
65
                 break;
70
                 break;
66
             default:
71
             default:
67
-                $testi = Testi::find($request->get('testi_id'));
72
+                $testi = Testi::query()
73
+                    ->where('is_attivo', true)
74
+                    ->find($request->get('testi_id'));
68
                 break;
75
                 break;
69
         }
76
         }
70
 
77
 

+ 8
- 8
app/Http/Controllers/TombolaController.php Dosyayı Görüntüle

3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
 use Illuminate\Http\Request;
5
 use Illuminate\Http\Request;
6
+use Illuminate\Routing\Controllers\Middleware;
6
 use App\Models\Tombola;
7
 use App\Models\Tombola;
7
 use Illuminate\Support\Facades\Session;
8
 use Illuminate\Support\Facades\Session;
8
 use Illuminate\Support\Facades\Auth;
9
 use Illuminate\Support\Facades\Auth;
9
 use App\Models\Attivita;
10
 use App\Models\Attivita;
11
+use App\Services\Attivita\AttivitaService;
10
 
12
 
11
 class TombolaController extends Controller
13
 class TombolaController extends Controller
12
 {
14
 {
21
     public static function middleware(): array
23
     public static function middleware(): array
22
     {
24
     {
23
         return [
25
         return [
24
-            new Middleware('permission:view-tombola', only: ['index']),
25
-            new Middleware('permission:create-tombola|edit-tombola|delete-tombola', only: ['getTabellone', 'estrai', 'azzera', 'estratti']),
26
+            new Middleware('permission:view-tombola', only: ['index', 'tabellone']),
27
+            new Middleware('permission:create-tombola|edit-tombola|delete-tombola', only: ['getTabellone', 'estrai', 'azzera']),
26
         ];
28
         ];
27
     }
29
     }
28
     public function getTabellone(Request $request, $attivita_id){
30
     public function getTabellone(Request $request, $attivita_id){
30
         if(!$attivita){
32
         if(!$attivita){
31
             return redirect()->route('tombola.index')->with('error', 'Attivita non trovata.');
33
             return redirect()->route('tombola.index')->with('error', 'Attivita non trovata.');
32
         }
34
         }
35
+        AttivitaService::garantisciAttivita($attivita->id);
33
         if(!Auth::user()->can('create-tombola')){
36
         if(!Auth::user()->can('create-tombola')){
34
             return redirect()->route('tombola.index')->with('error', 'Non hai permesso di creare il tabellone.');
37
             return redirect()->route('tombola.index')->with('error', 'Non hai permesso di creare il tabellone.');
35
         }
38
         }
73
     public function tabellone(Request $request, $attivita_id){
76
     public function tabellone(Request $request, $attivita_id){
74
         if(!Auth::user()->can('view-tombola')){
77
         if(!Auth::user()->can('view-tombola')){
75
             return redirect()->route('tombola.index')->with('error', 'Non hai permesso di vedere il tabellone.');
78
             return redirect()->route('tombola.index')->with('error', 'Non hai permesso di vedere il tabellone.');
76
-        }elseif(!Attivita::find($attivita_id)->user_id == Auth::user()->id){
77
-            return redirect()->route('tombola.index')->with('error', 'Non sei autorizzato a vedere il tabellone di questa attività.');
78
         }
79
         }
79
         $attivita = Attivita::find($attivita_id);
80
         $attivita = Attivita::find($attivita_id);
80
         if(!$attivita){
81
         if(!$attivita){
81
             return redirect()->route('tombola.index')->with('error', 'Attivita non trovata.');
82
             return redirect()->route('tombola.index')->with('error', 'Attivita non trovata.');
82
         }
83
         }
84
+        AttivitaService::garantisciAttivita($attivita->id);
83
         return view('tombola.tabellone', [
85
         return view('tombola.tabellone', [
84
             'attivita' => $attivita,
86
             'attivita' => $attivita,
85
         ]);
87
         ]);
90
         if(!$attivita){
92
         if(!$attivita){
91
             return redirect()->route('tombola.index')->with('error', 'Attivita non trovata.');
93
             return redirect()->route('tombola.index')->with('error', 'Attivita non trovata.');
92
         }
94
         }
95
+        AttivitaService::garantisciAttivita($attivita->id);
93
         if(!Auth::user()->can('view-tombola')){
96
         if(!Auth::user()->can('view-tombola')){
94
             return redirect()->route('tombola.index')->with('error', 'Non hai permesso di estrarre numeri.');
97
             return redirect()->route('tombola.index')->with('error', 'Non hai permesso di estrarre numeri.');
95
-        }elseif($attivita->user_id != Auth::user()->id){
96
-            return redirect()->route('tombola.index')->with('error', 'Non sei autorizzato a estrarre numeri da questa attività.');
97
         }
98
         }
98
         $tabellone = Tombola::where('attivita_id', $attivita_id);
99
         $tabellone = Tombola::where('attivita_id', $attivita_id);
99
         $tombola = $tabellone->where('estratto', false)->inRandomOrder()->first();
100
         $tombola = $tabellone->where('estratto', false)->inRandomOrder()->first();
165
         if(!$attivita){
166
         if(!$attivita){
166
             return redirect()->route('tombola.index')->with('error', 'Attivita non trovata.');
167
             return redirect()->route('tombola.index')->with('error', 'Attivita non trovata.');
167
         }
168
         }
169
+        AttivitaService::garantisciAttivita($attivita->id);
168
         if(!Auth::user()->can('delete-tombola')){
170
         if(!Auth::user()->can('delete-tombola')){
169
             return redirect()->route('tombola.index')->with('error', 'Non hai permesso di azzerare la tombola.');
171
             return redirect()->route('tombola.index')->with('error', 'Non hai permesso di azzerare la tombola.');
170
-        }elseif($attivita->user_id != Auth::user()->id){
171
-            return redirect()->route('tombola.index')->with('error', 'Non sei autorizzato a azzerare la tombola di questa attività.');
172
         }
172
         }
173
 
173
 
174
         Tombola::where('attivita_id', $attivita_id)->update([
174
         Tombola::where('attivita_id', $attivita_id)->update([

+ 3
- 1
app/Http/Controllers/UserController.php Dosyayı Görüntüle

50
   public static function middleware(): array
50
   public static function middleware(): array
51
   {
51
   {
52
     return [
52
     return [
53
-      new Middleware('permission:view-user', only: ['index']),
53
+      new Middleware('permission:view-user', only: ['index', 'admin_list']),
54
+      new Middleware('permission:create-user', only: ['create']),
55
+      new Middleware('permission:edit-user', only: ['edit_profilo', 'updateProfile', 'upload_foto_profilo', 'showCropImage', 'cropImage']),
54
       new Middleware('permission:create-user|edit-user|remove-user', only: ['store', 'admin_aggiorna']),
56
       new Middleware('permission:create-user|edit-user|remove-user', only: ['store', 'admin_aggiorna']),
55
       new Middleware('role:superadmin', only: ['superadmin_impersonate']),
57
       new Middleware('role:superadmin', only: ['superadmin_impersonate']),
56
     ];
58
     ];

+ 9
- 9
app/Http/Controllers/VariantePiattoController.php Dosyayı Görüntüle

2
 
2
 
3
 namespace App\Http\Controllers;
3
 namespace App\Http\Controllers;
4
 
4
 
5
+
6
+use Illuminate\Routing\Controllers\Middleware;
5
 use Illuminate\Http\Request;
7
 use Illuminate\Http\Request;
6
 use App\Models\VariantePiatto;
8
 use App\Models\VariantePiatto;
7
 use App\DataTables\VariantePiattoDataTable;
9
 use App\DataTables\VariantePiattoDataTable;
8
 use App\DataTables\VariantePiattoDataTableEditor;
10
 use App\DataTables\VariantePiattoDataTableEditor;
9
 use Illuminate\Support\Facades\Session;
11
 use Illuminate\Support\Facades\Session;
10
 use Illuminate\Support\Facades\Auth;
12
 use Illuminate\Support\Facades\Auth;
13
+use App\Services\Attivita\AttivitaService;
11
 
14
 
12
 class VariantePiattoController extends Controller
15
 class VariantePiattoController extends Controller
13
 {
16
 {
22
     public static function middleware(): array
25
     public static function middleware(): array
23
     {
26
     {
24
         return [
27
         return [
25
-            new Middleware('permission:view-variante-piatto', only: ['index']),
28
+            new Middleware('permission:view-variante-piatto', only: ['index', 'datatable', 'list']),
26
             new Middleware('permission:create-variante-piatto|edit-variante-piatto|delete-variante-piatto', only: ['store', 'update', 'destroy']),
29
             new Middleware('permission:create-variante-piatto|edit-variante-piatto|delete-variante-piatto', only: ['store', 'update', 'destroy']),
27
         ];
30
         ];
28
     }
31
     }
76
       }
79
       }
77
 
80
 
78
     public function list(Request $request){
81
     public function list(Request $request){
79
-        $attivita = \App\Models\Attivita::find(Session::get('attivita_attuale'));
82
+        $attivitaId = Session::get('attivita_attuale');
83
+        AttivitaService::garantisciAttivita($attivitaId);
84
+        $attivita = \App\Models\Attivita::find($attivitaId);
80
         if(!$attivita){
85
         if(!$attivita){
81
           return response()->json([
86
           return response()->json([
82
             'success' => false,
87
             'success' => false,
83
             'message' => 'Attività non trovata',
88
             'message' => 'Attività non trovata',
84
           ]);
89
           ]);
85
         }
90
         }
86
-        $rigaOrdine = \App\Models\RigaOrdine::find($request->riga_ordine_id);
87
-        if(!$rigaOrdine){
88
-          return response()->json([
89
-            'success' => false,
90
-            'message' => 'Riga ordine non trovata',
91
-          ]);
92
-        }
91
+        $rigaOrdine = app(\App\Services\Carrello\CarrelloService::class)
92
+            ->rigaDiQuestaCassa((int) $request->riga_ordine_id);
93
     
93
     
94
       $variantiCucina = VariantePiatto::query()
94
       $variantiCucina = VariantePiatto::query()
95
       ->where('attivita_id', $attivita->id)
95
       ->where('attivita_id', $attivita->id)

app/Models/AbstractModels/AbstractSaltacodaRigaordine.php → app/Models/AbstractModels/AbstractSaltacodaRigaOrdine.php Dosyayı Görüntüle


+ 2
- 2
app/Models/AbstractModels/AbstractUser.php Dosyayı Görüntüle

85
     {
85
     {
86
         return $this->hasMany('\App\Models\Attivita', 'user_id', 'id');
86
         return $this->hasMany('\App\Models\Attivita', 'user_id', 'id');
87
     }
87
     }
88
-    public function fatturazione()
88
+    public function fattura()
89
     {
89
     {
90
-        return $this->hasMany('\App\Models\Fatturazione', 'user_id', 'id');
90
+        return $this->hasMany('\App\Models\Fattura', 'user_id', 'id');
91
     }
91
     }
92
     
92
     
93
 }
93
 }

+ 66
- 3
app/Models/Attivita.php Dosyayı Görüntüle

19
             return null;
19
             return null;
20
         }
20
         }
21
 
21
 
22
-        return str_starts_with($this->path_logo, 'http')
23
-            ? $this->path_logo
24
-            : asset($this->path_logo);
22
+        if (str_starts_with($this->path_logo, 'http')) {
23
+            return $this->path_logo;
24
+        }
25
+
26
+        if (str_starts_with($this->path_logo, 'assets/')) {
27
+            return asset($this->path_logo);
28
+        }
29
+
30
+        $disk = Storage::disk('copertinaAttivita');
31
+        if ($disk->exists($this->path_logo)) {
32
+            return $disk->url($this->path_logo);
33
+        }
34
+
35
+        return asset($this->path_logo);
36
+    }
37
+
38
+    /**
39
+     * Path filesystem assoluto del logo (per DomPDF).
40
+     */
41
+    public function logoLocalPath(): ?string
42
+    {
43
+        if (empty($this->path_logo)) {
44
+            return null;
45
+        }
46
+
47
+        $raw = (string) $this->path_logo;
48
+        if (str_starts_with($raw, 'http://') || str_starts_with($raw, 'https://')) {
49
+            return $raw;
50
+        }
51
+
52
+        if (str_starts_with($raw, 'assets/')) {
53
+            $candidate = public_path($raw);
54
+
55
+            return is_file($candidate) ? $candidate : null;
56
+        }
57
+
58
+        $candidate = storage_path('app/public/copertinaAttivita/'.ltrim($raw, '/'));
59
+        if (is_file($candidate)) {
60
+            return $candidate;
61
+        }
62
+
63
+        $candidate = public_path(ltrim($raw, '/'));
64
+        if (is_file($candidate)) {
65
+            return $candidate;
66
+        }
67
+
68
+        $candidate = public_path('storage/'.ltrim($raw, '/'));
69
+
70
+        return is_file($candidate) ? $candidate : null;
25
     }
71
     }
26
 
72
 
27
     public static function defaultLogoUrl(): string
73
     public static function defaultLogoUrl(): string
81
         return mb_strtoupper(mb_substr($parts[0], 0, 1) . mb_substr($parts[1], 0, 1));
127
         return mb_strtoupper(mb_substr($parts[0], 0, 1) . mb_substr($parts[1], 0, 1));
82
     }
128
     }
83
 
129
 
130
+    /**
131
+     * Slug pubblico (fallback se mancante in DB).
132
+     */
133
+    public function publicSlug(): string
134
+    {
135
+        if (filled($this->slug)) {
136
+            return (string) $this->slug;
137
+        }
138
+
139
+        return \Illuminate\Support\Str::slug((string) $this->nome) ?: 'attivita-'.$this->id;
140
+    }
141
+
142
+    public function publicUrl(): string
143
+    {
144
+        return route('cliente.attivita.show', ['slug' => $this->publicSlug()]);
145
+    }
146
+
84
     public static function E_Mia($attivita_id)
147
     public static function E_Mia($attivita_id)
85
     {
148
     {
86
         return self::where('id', $attivita_id)->where('user_id', Auth::user()->id)->exists();
149
         return self::where('id', $attivita_id)->where('user_id', Auth::user()->id)->exists();

app/Models/SaltacodaRigaordine.php → app/Models/SaltacodaRigaOrdine.php Dosyayı Görüntüle


+ 19
- 0
app/Observers/AttivitaObserver.php Dosyayı Görüntüle

7
 use App\Models\Impostazioni;
7
 use App\Models\Impostazioni;
8
 use App\Models\Saltacoda;
8
 use App\Models\Saltacoda;
9
 use App\Models\Asporto;
9
 use App\Models\Asporto;
10
+use Illuminate\Support\Str;
10
 
11
 
11
 class AttivitaObserver
12
 class AttivitaObserver
12
 {
13
 {
14
+    /**
15
+     * Default slug prima del salvataggio.
16
+     */
17
+    public function creating(Attivita $attivita): void
18
+    {
19
+        if (! filled($attivita->slug)) {
20
+            $base = Str::slug((string) $attivita->nome) ?: 'attivita';
21
+            $slug = $base;
22
+            $i = 2;
23
+            while (Attivita::where('slug', $slug)->exists()) {
24
+                $slug = $base.'-'.$i;
25
+                $i++;
26
+            }
27
+            $attivita->slug = $slug;
28
+        }
29
+    }
30
+
13
     /**
31
     /**
14
      * Handle the Attivita "created" event.
32
      * Handle the Attivita "created" event.
15
      */
33
      */
27
             'sito_web' => '',
45
             'sito_web' => '',
28
             'note' => '',
46
             'note' => '',
29
         ]);
47
         ]);
48
+        $attivita->saveQuietly();
30
 
49
 
31
         //crea saltacoda
50
         //crea saltacoda
32
         Saltacoda::create([
51
         Saltacoda::create([

+ 46
- 0
app/Services/Attivita/AttivitaService.php Dosyayı Görüntüle

1
+<?php
2
+
3
+namespace App\Services\Attivita;
4
+
5
+use App\Models\Evento;
6
+use App\Models\Attivita;
7
+
8
+class AttivitaService
9
+{
10
+
11
+    public static function garantisciEventoDiQuestaAttivita(?Evento $evento)
12
+    {
13
+        if (auth()->user()?->hasRole('superadmin')) {
14
+            return;
15
+        }
16
+
17
+        $attuale = (int) session('attivita_attuale');
18
+        if (! $evento || $attuale <= 0 || (int) $evento->attivita_id !== $attuale) {
19
+            abort(404);
20
+        }
21
+    }
22
+
23
+    public static function garantisciAttivita($attivita_id)
24
+    {
25
+        if (auth()->user()?->hasRole('superadmin')) {
26
+            return;
27
+        }
28
+
29
+        $attuale = (int) session('attivita_attuale');
30
+        if (! $attivita_id || $attuale <= 0 || (int) $attivita_id !== $attuale) {
31
+            abort(404);
32
+        }
33
+    }
34
+
35
+    public static function api_garantisciAttivita($attivita_id)
36
+    {
37
+        if (auth()->user()?->hasRole('superadmin')) {
38
+            return;
39
+        }
40
+        //Se non c'è o non è mia return 404
41
+        if (! $attivita_id || ! Attivita::E_Mia($attivita_id)) {
42
+            abort(404);
43
+        }
44
+    }
45
+
46
+}

Loading…
İptal
Kaydet