http://modulesgarden.com * CONTACT -> contact@modulesgarden.com * * * This software is furnished under a license and may be used and copied * only in accordance with the terms of such license and with the * inclusion of the above copyright notice. This software or any other * copies thereof may not be provided or otherwise made available to any * other person. No title to and ownership of the software is hereby * transferred. * * * ******************************************************************** */ namespace ModulesGarden\ProxmoxAddon\App\UI\Vms\Pages; use ModulesGarden\ProxmoxAddon as main; use ModulesGarden\ProxmoxAddon\App\UI\Vms\Buttons\DetailButton; use ModulesGarden\ProxmoxAddon\Core\Models\Whmcs\Hosting; use ModulesGarden\ProxmoxAddon\Core\Models\Whmcs\Server; use ModulesGarden\ProxmoxAddon\Core\UI\Interfaces\AdminArea; use ModulesGarden\ProxmoxAddon\Core\UI\Widget\DataTable\Column; use ModulesGarden\ProxmoxAddon\Core\UI\Widget\DataTable\DataProviders\Providers\QueryDataProvider; use ModulesGarden\ProxmoxAddon\Core\UI\Widget\RawDataTable\RawDataTable; use function ModulesGarden\ProxmoxAddon\Core\Helper\sl; /** * Description of ServersDataTable * * @author Pawel Kopec */ class VmsDataTableRaw extends RawDataTable implements AdminArea { use main\App\Services\BaseService; protected $id = 'vms'; protected $name = 'vms'; protected $title = 'vmsTitle'; public function isRawTitle() { return false; } public function initContent() { $this->addActionButton(new DetailButton); } public function replaceFieldName($key, $row) { return sprintf('%s', $row->packageid, $row->productName); } public function replaceFieldDomain($key, $row) { if (!$row->domain) { return sprintf('%s', $row->userid, $row->id, '-'); } return sprintf('%s', $row->userid, $row->id, $row->domain); } public function replaceFieldDomainstatus($key, $row) { switch ($row->domainstatus) { case 'Pending': return '' . sl('lang')->tr($row->domainstatus) . ''; case 'Active': case 'Completed': return '' . sl('lang')->tr($row->domainstatus) . ''; break; case 'Suspended': return '' . sl('lang')->tr($row->domainstatus) . ''; break; case 'Cancelled': return '' . sl('lang')->tr($row->domainstatus) . ''; break; case 'Fraud': return '' . sl('lang')->tr($row->domainstatus) . ''; case 'Terminated': return '' . sl('lang')->tr($row->domainstatus) . ''; default: return '' . sl('lang')->tr($row->domainstatus) . ''; } } public function replaceFieldDedicatedip($key, $row) { return $row->dedicatedip ? $row->dedicatedip : "-"; } public function replaceFieldAssignedips($key, $row) { if($row->assignedips){ $ips = explode("\n", $row->assignedips); $ips = array_filter($ips); $ips = array_unique($ips); return implode(", ", $ips); } return "-"; } public function replaceFieldFirstname($key, $row) { return sprintf('%s %s', $row->userid, $row->firstname, $row->lastname); } public function replaceFieldServer($key, $row) { return sprintf('%s', $row->server, $row->serverName); } protected function loadHtml() { $h = (new Hosting)->getTable(); $p = (new main\Core\Models\Whmcs\Product)->getTable(); $s = (new Server)->getTable(); $c = (new main\Core\Models\Whmcs\Client)->getTable(); $this->addColumn((new Column('id', $h))->setSearchable(true, Column::TYPE_INT)->setOrderable('DESC')) ->addColumn((new Column('name', $p))->setSearchable(true, Column::TYPE_STRING)->setOrderable()) ->addColumn((new Column('domain', $h))) ->addColumn((new Column('domainstatus', $h))->setSearchable(true, Column::TYPE_STRING)->setOrderable()) ->addColumn((new Column('bwusage', $h))->setSearchable(true, Column::TYPE_STRING)->setOrderable()) ->addColumn((new Column('dedicatedip', $h))->setSearchable(true, Column::TYPE_STRING)->setOrderable()) ->addColumn((new Column('assignedips', $h))->setSearchable(true, Column::TYPE_STRING)->setOrderable()) ->addColumn((new Column('firstname', $c))->setSearchable(true, Column::TYPE_STRING)->setOrderable() ); } public function replaceFieldBwusage($key, $row) { if ($row->bwusage == 0) { return '-'; } return $row->bwusage . " MB"; } protected function loadData() { $h = (new Hosting)->getTable(); $p = (new main\Core\Models\Whmcs\Product)->getTable(); $s = (new Server)->getTable(); $c = (new main\Core\Models\Whmcs\Client)->getTable(); $query = (new Hosting) ->query() ->getQuery() ->leftJoin($p, "{$h}.packageid", '=', "{$p}.id") ->leftJoin($c, "{$h}.userid", '=', "{$c}.id") ->leftJoin($s, "{$h}.server", '=', "{$s}.id") ->select("{$h}.id", "{$h}.domain", "{$h}.domainstatus", "{$h}.dedicatedip", "{$h}.assignedips", "{$h}.userid", "{$h}.server", "{$h}.packageid", "{$h}.bwusage", "{$c}.firstname", "{$c}.lastname", "{$s}.name AS serverName", "{$p}.name AS productName") ->where("{$h}.server", $this->getRequestValue('id')); $dataProv = new QueryDataProvider(); $dataProv->setDefaultSorting("id", 'DESC'); $dataProv->setData($query); $this->setDataProvider($dataProv); } }