|
|
@@ -5,10 +5,13 @@ namespace App\DataTables;
|
|
5
|
5
|
use App\Models\Cucina;
|
|
6
|
6
|
use App\Models\Piatto;
|
|
7
|
7
|
use App\Models\PiattoHasAllergene;
|
|
|
8
|
+use App\Models\RigaOrdine;
|
|
|
9
|
+use App\Models\SaltacodaRigaOrdine;
|
|
8
|
10
|
use App\Services\Attivita\AttivitaService;
|
|
9
|
11
|
use Illuminate\Database\Eloquent\Model;
|
|
10
|
12
|
use Yajra\DataTables\DataTablesEditor;
|
|
11
|
13
|
use Illuminate\Support\Facades\Session;
|
|
|
14
|
+use Illuminate\Validation\ValidationException;
|
|
12
|
15
|
|
|
13
|
16
|
class PiattoDataTableEditor extends DataTablesEditor
|
|
14
|
17
|
{
|
|
|
@@ -26,6 +29,7 @@ class PiattoDataTableEditor extends DataTablesEditor
|
|
26
|
29
|
'bacheca_id.required' => 'Indicare una delle due opzioni',
|
|
27
|
30
|
'in_evidenza.required' => 'Indicare una delle due opzioni',
|
|
28
|
31
|
'cucina_id.required' => 'La cucina è richiesta',
|
|
|
32
|
+ 'ordine_visualizzazione.required' => 'Per ordine alfabetico scrivi 0 altrimenti imposta posizione ',
|
|
29
|
33
|
];
|
|
30
|
34
|
|
|
31
|
35
|
/**
|
|
|
@@ -46,6 +50,7 @@ class PiattoDataTableEditor extends DataTablesEditor
|
|
46
|
50
|
'allergeni.*' => 'integer|exists:allergene,id',
|
|
47
|
51
|
'bacheca_id' => 'nullable|boolean',
|
|
48
|
52
|
'in_evidenza' => 'nullable|boolean',
|
|
|
53
|
+ 'ordine_visualizzazione' => 'required|integer',
|
|
49
|
54
|
];
|
|
50
|
55
|
}
|
|
51
|
56
|
|
|
|
@@ -72,6 +77,7 @@ class PiattoDataTableEditor extends DataTablesEditor
|
|
72
|
77
|
'allergeni.*' => 'integer|exists:allergene,id',
|
|
73
|
78
|
'bacheca_id' => 'nullable|boolean',
|
|
74
|
79
|
'in_evidenza' => 'nullable|boolean',
|
|
|
80
|
+ 'ordine_visualizzazione' => 'nullable|integer',
|
|
75
|
81
|
];
|
|
76
|
82
|
}
|
|
77
|
83
|
|
|
|
@@ -104,6 +110,7 @@ class PiattoDataTableEditor extends DataTablesEditor
|
|
104
|
110
|
$data['bacheca_id'] = isset($data['bacheca_id']) ? true : false;
|
|
105
|
111
|
$data['in_evidenza'] = isset($data['in_evidenza']) ? true : false;
|
|
106
|
112
|
$data['is_attivo'] = isset($data['is_attivo']) ? true : false;
|
|
|
113
|
+ $data['ordine_visualizzazione'] = $this->normalizeOrdineVisualizzazione($data['ordine_visualizzazione'] ?? null);
|
|
107
|
114
|
return $data;
|
|
108
|
115
|
}
|
|
109
|
116
|
|
|
|
@@ -119,6 +126,7 @@ class PiattoDataTableEditor extends DataTablesEditor
|
|
119
|
126
|
$data['bacheca_id'] = isset($data['bacheca_id']) ? true : false;
|
|
120
|
127
|
$data['in_evidenza'] = isset($data['in_evidenza']) ? true : false;
|
|
121
|
128
|
$data['is_attivo'] = isset($data['is_attivo']) ? true : false;
|
|
|
129
|
+ $data['ordine_visualizzazione'] = $this->normalizeOrdineVisualizzazione($data['ordine_visualizzazione'] ?? null);
|
|
122
|
130
|
|
|
123
|
131
|
return $data;
|
|
124
|
132
|
}
|
|
|
@@ -127,7 +135,23 @@ class PiattoDataTableEditor extends DataTablesEditor
|
|
127
|
135
|
{
|
|
128
|
136
|
AttivitaService::garantisciAttivita($model->attivita_id);
|
|
129
|
137
|
|
|
130
|
|
- return $data;
|
|
|
138
|
+ $usatoInOrdini = RigaOrdine::where('piatto_id', $model->id)->exists();
|
|
|
139
|
+ $usatoInSaltacoda = SaltacodaRigaOrdine::where('piatto_id', $model->id)->exists();
|
|
|
140
|
+ if ($usatoInOrdini || $usatoInSaltacoda) {
|
|
|
141
|
+ throw ValidationException::withMessages([
|
|
|
142
|
+ 'piatto' => 'Non puoi eliminare questo piatto: è già presente in ordini o preordini. Modifica la disponiblità invece.',
|
|
|
143
|
+ ]);
|
|
|
144
|
+ }
|
|
|
145
|
+ return $data;
|
|
|
146
|
+ }
|
|
|
147
|
+
|
|
|
148
|
+ private function normalizeOrdineVisualizzazione(mixed $value): ?int
|
|
|
149
|
+ {
|
|
|
150
|
+ if ($value === null || $value === '' || (int) $value === 0) {
|
|
|
151
|
+ return null;
|
|
|
152
|
+ }
|
|
|
153
|
+
|
|
|
154
|
+ return (int) $value;
|
|
131
|
155
|
}
|
|
132
|
156
|
|
|
133
|
157
|
private function garantisciCucinaDiQuestaAttivita($cucinaId, $attivitaId): void
|