serialNo = $serialNo; $this->data = $data; } /** * Execute the job. */ public function handle(): void { try { $machine = Machine::where('serial_no', $this->serialNo)->firstOrFail(); TimerStatus::updateOrCreate( ['machine_id' => $machine->id, 'slot_no' => $this->data['slot_no']], [ 'status' => $this->data['status'], 'remaining_seconds' => $this->data['remaining_seconds'], 'end_at' => isset($this->data['end_at']) ? \Carbon\Carbon::parse($this->data['end_at']) : null, ] ); } catch (\Exception $e) { Log::error("Failed to process timer status for machine {$this->serialNo}: " . $e->getMessage()); throw $e; } } }