| @@ -57,9 +57,24 @@ | ||
| 57 | 57 | $discount->valid_from = $data['valid_from'] ?? null; |
| 58 | 58 | $discount->expiry_date = $data['expiry_date'] ?? null; |
| 59 | 59 | $discount->status = $data['status'] ?? 'active'; |
| 60 | 60 | $discount->applicable_to = $data['applicable_to'] ?? 'all'; |
| 61 | - $discount->trip_ids = isset($data['trip_ids']) ? (is_array($data['trip_ids']) ? $data['trip_ids'] : maybe_unserialize($data['trip_ids'])) : null; | |
| 61 | + if (!isset($data['trip_ids']) || $data['trip_ids'] === '' || $data['trip_ids'] === null) { | |
| 62 | + $discount->trip_ids = null; | |
| 63 | + } elseif (is_array($data['trip_ids'])) { | |
| 64 | + $discount->trip_ids = $data['trip_ids']; | |
| 65 | + } elseif (is_string($data['trip_ids'])) { | |
| 66 | + $raw = trim($data['trip_ids']); | |
| 67 | + if ($raw !== '' && ($raw[0] === '[' || $raw[0] === '{')) { | |
| 68 | + $decoded = json_decode($raw, true); | |
| 69 | + $discount->trip_ids = is_array($decoded) ? $decoded : null; | |
| 70 | + } else { | |
| 71 | + $unser = maybe_unserialize($data['trip_ids']); | |
| 72 | + $discount->trip_ids = is_array($unser) ? $unser : array_values(array_filter(array_map('trim', explode(',', $raw)))); | |
| 73 | + } | |
| 74 | + } else { | |
| 75 | + $discount->trip_ids = null; | |
| 76 | + } | |
| 62 | 77 | $discount->min_amount = isset($data['min_amount']) ? (float) $data['min_amount'] : null; |
| 63 | 78 | $discount->first_time_customer_only = (bool) ($data['first_time_customer_only'] ?? false); |
| 64 | 79 | $discount->is_group_discount = (bool) ($data['is_group_discount'] ?? false); |
| 65 | 80 | $discount->min_group_size = isset($data['min_group_size']) ? (int) $data['min_group_size'] : null; |