Explorar el Código

fix(cupon): prevent null-date crashes and prefill validity

Co-authored-by: Cursor <cursoragent@cursor.com>
marcofalabretti hace 2 semanas
padre
commit
f88d2bce19

+ 22
- 9
app/DataTables/CuponDataTable.php Ver fichero

@@ -13,7 +13,7 @@ use Yajra\DataTables\Html\Editor\Fields;
13 13
 use Yajra\DataTables\Services\DataTable;
14 14
 use Illuminate\Support\Facades\Auth;
15 15
 use Illuminate\Support\Str;
16
-
16
+use Carbon\Carbon;
17 17
 
18 18
 class CuponDataTable extends DataTable
19 19
 {
@@ -37,12 +37,25 @@ class CuponDataTable extends DataTable
37 37
                 return '€ ' . number_format($entity->importo, 2, ',', '.');
38 38
             })
39 39
             ->editColumn('validita_display', function ($entity) {
40
-                if($entity->validita_da->isSameDay($entity->validita_a)){
41
-                    return $entity->validita_da->format('d/m/Y');
42
-                }else{
43
-                    return $entity->validita_da->format('d/m/Y') . ' - ' . $entity->validita_a->format('d/m/Y');
44
-                }   
45
-            })
40
+                $da = $entity->validita_da;
41
+                $a = $entity->validita_a;
42
+
43
+                if (! $da && ! $a) {
44
+                    return '—';
45
+                }
46
+
47
+                if ($da && ! $a) {
48
+                    return $da->format('d/m/Y');
49
+                }
50
+
51
+                if (! $da && $a) {
52
+                    return $a->format('d/m/Y');
53
+                }
54
+
55
+                return $da->isSameDay($a)
56
+                    ? $da->format('d/m/Y')
57
+                    : $da->format('d/m/Y') . ' - ' . $a->format('d/m/Y');
58
+            })  
46 59
             ->addColumn('stato_display', function ($entity) {
47 60
                 return view('cupon.stato', ['stato' => $entity->stato]);
48 61
             })
@@ -122,8 +135,8 @@ class CuponDataTable extends DataTable
122 135
                         Fields\Number::make('importo')->label('Importo')->required(),
123 136
                         Fields\Text::make('nominativo')->label('Nominativo')->required(),
124 137
                         Fields\Text::make('email')->label('Email'),
125
-                        Fields\Date::make('validita_da')->label('Validità da')->required(),
126
-                        Fields\Date::make('validita_a')->label('Validità a')->required(),
138
+                        Fields\Date::make('validita_da')->label('Validità da')->required()->default(Carbon::now()->format('Y-m-d')),
139
+                        Fields\Date::make('validita_a')->label('Validità a')->required()->default(Carbon::now()->format('Y-m-d')),
127 140
                     ]));
128 141
     }
129 142
 

+ 8
- 1
app/Http/Controllers/CuponController.php Ver fichero

@@ -207,6 +207,13 @@ class CuponController extends Controller
207 207
                     $message = 'Cupon utilizzabile';
208 208
                 }
209 209
 
210
+                $validitaDa = $cupon->validita_da;
211
+                $validitaA = $cupon->validita_a;
212
+                $oggi = $validitaDa
213
+                    && $validitaA
214
+                    && $validitaDa->isSameDay($validitaA)
215
+                    && $validitaDa->isSameDay(Carbon::today());
216
+
210 217
                 return response()->json([
211 218
                     'success'    => $success,
212 219
                     'message'    => $message,
@@ -214,7 +221,7 @@ class CuponController extends Controller
214 221
                     'nominativo' => $cupon->nominativo,
215 222
                     'validita_da' => $cupon->validita_da?->format('d/m/Y'),
216 223
                     'validita_a'  => $cupon->validita_a?->format('d/m/Y'),
217
-                    'oggi' => $oggi = $cupon->validita_da->isSameDay($cupon->validita_a) && $cupon->validita_da->isSameDay(Carbon::today()),
224
+                    'oggi' => $oggi,
218 225
                 ]);
219 226
             case Cupon::USATO:
220 227
                 return response()->json(['success' => false, 'message' => 'Cupon già utilizzato']);

+ 1
- 1
resources/views/cupon/stato.blade.php Ver fichero

@@ -8,7 +8,7 @@
8 8
 @endphp
9 9
 
10 10
 @if($codice !== '' && $stato === '')
11
-    <span class="badge bg-body font-monospace fs-6" title="Codice {{ $codice }}">
11
+    <span class="badge font-monospace fs-6" title="Codice {{ $codice }}">
12 12
         {{ $codice }}
13 13
     </span>
14 14
 @else

Loading…
Cancelar
Guardar