<?php

namespace App\DataTables;

use App\Models\Mikrotik;
use Yajra\DataTables\Facades\DataTables;

class MikrotikDataTable
{
    public function render($request)
    {
        $query = Mikrotik::query();

        return DataTables::of($query)
            ->addColumn('status_label', function (Mikrotik $mikrotik) {
                return $mikrotik->status
                    ? '<span class="badge bg-success">Active</span>'
                    : '<span class="badge bg-secondary">Inactive</span>';
            })
            ->addColumn('ssl_label', function (Mikrotik $mikrotik) {
                return $mikrotik->ssl_enabled
                    ? '<span class="badge bg-info">SSL</span>'
                    : '<span class="badge bg-secondary">Plain</span>';
            })
            ->addColumn('connection_status', function (Mikrotik $mikrotik) {
                return $mikrotik->connected
                    ? '<span class="badge bg-success">Connected</span>'
                    : '<span class="badge bg-danger">Disconnected</span>';
            })
            ->addColumn('response_time', function (Mikrotik $mikrotik) {
                return $mikrotik->response_time_ms !== null
                    ? $mikrotik->response_time_ms.' ms'
                    : '-';
            })
            ->addColumn('last_checked', function (Mikrotik $mikrotik) {
                return $mikrotik->last_checked_at ? $mikrotik->last_checked_at->format('Y-m-d H:i:s') : '-';
            })
            ->addColumn('actions', function (Mikrotik $mikrotik) {
                return view('admin.mikrotiks.partials.actions', compact('mikrotik'))->render();
            })
            ->rawColumns(['status_label', 'ssl_label', 'connection_status', 'actions'])
            ->make(true);
    }
}
