'', 'status' => '', 'type' => '', 'device_id' => '', 'date_range' => '', ]; public $showSendCommandModal = false; public $showDetailsModal = false; public $selectedCommand = null; public $commandForm = [ 'device_id' => '', 'type' => '', 'custom_command' => '', 'description' => '', 'duration' => '', 'expires_at' => '', ]; protected $layout = 'layouts.app'; public function getStatsProperty() { $totalCommands = Command::count(); $successfulCommands = Command::where('status', 'acknowledged')->count(); $pendingCommands = Command::whereIn('status', ['pending', 'sent'])->count(); $failedCommands = Command::where('status', 'failed')->count(); return [ 'total_commands' => $totalCommands, 'successful_commands' => $successfulCommands, 'pending_commands' => $pendingCommands, 'failed_commands' => $failedCommands, ]; } public function render() { $commands = Command::query() ->with('user') ->when($this->filters['search'], function ($query) { $query->where(function ($q) { $q->where('type', 'like', '%' . $this->filters['search'] . '%') ->orWhere('device_id', 'like', '%' . $this->filters['search'] . '%') ->orWhere('description', 'like', '%' . $this->filters['search'] . '%'); }); }) ->when($this->filters['status'], function ($query) { $query->where('status', $this->filters['status']); }) ->when($this->filters['type'], function ($query) { $query->where('type', $this->filters['type']); }) ->when($this->filters['device_id'], function ($query) { $query->where('device_id', 'like', '%' . $this->filters['device_id'] . '%'); }) ->when($this->filters['date_range'], function ($query) { match($this->filters['date_range']) { 'today' => $query->whereDate('created_at', today()), 'week' => $query->where('created_at', '>=', now()->subWeek()), 'month' => $query->where('created_at', '>=', now()->subMonth()), default => null, }; }) ->orderBy('created_at', 'desc') ->paginate(15); return view('livewire.command-center', [ 'commands' => $commands, ]); } public function sendCommand() { $this->validate([ 'commandForm.device_id' => 'required|string', 'commandForm.type' => 'required|string', ]); $parameters = []; if ($this->commandForm['duration']) { $parameters['duration'] = $this->commandForm['duration']; } Command::create([ 'device_id' => $this->commandForm['device_id'], 'type' => $this->commandForm['type'], 'description' => $this->commandForm['description'], 'parameters' => !empty($parameters) ? $parameters : null, 'status' => 'pending', 'expires_at' => $this->commandForm['expires_at'] ? \Carbon\Carbon::parse($this->commandForm['expires_at']) : null, 'user_id' => auth()->id(), ]); $this->closeSendCommandModal(); $this->reset('commandForm'); session()->flash('message', 'Command sent successfully.'); } public function viewCommand($commandId) { $this->selectedCommand = Command::with('user')->find($commandId); $this->showDetailsModal = true; } public function cancelCommand($commandId) { Command::find($commandId)->update(['status' => 'cancelled']); session()->flash('message', 'Command cancelled successfully.'); } public function retryCommand($commandId) { Command::find($commandId)->update(['status' => 'pending']); session()->flash('message', 'Command retry initiated.'); } public function closeSendCommandModal() { $this->showSendCommandModal = false; $this->reset('commandForm'); } // Handle legacy method name (backward compatibility) public function showSendcommandModal($deviceId = null) { if ($deviceId) { $this->commandForm['device_id'] = $deviceId; } $this->showSendCommandModal = true; } // Handle legacy method name (backward compatibility) public function showCommanddetailsModal($commandId = null) { if ($commandId) { $this->viewCommand($commandId); } } public function closeDetailsModal() { $this->showDetailsModal = false; $this->selectedCommand = null; } public function updatingFilters() { $this->resetPage(); } }