| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- <?php
- /* * ********************************************************************
- * ProxmoxAddon product developed. (Jan 17, 2019)
- * *
- *
- * CREATED BY MODULESGARDEN -> 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\Models\Whmcs;
- /**
- * Description of Hosting
- *
- * @author Pawel Kopec <pawelk@modulesgardne.com>
- * @property int $id
- * @property int $userid
- * @property int $orderid
- * @property int $packageid
- * @property int $server
- * @property string $regdate
- * @property string $domain
- * @property string $paymentmethod
- * @property float $firstpaymentamount
- * @property float $amount
- * @property string $billingcycle
- * @property string $nextduedate
- * @property string $nextinvoicedate
- * @property string $termination_date
- * @property string $completed_date
- * @property string $domainstatus
- * @property string $username
- * @property string $password
- * @property string $notes
- * @property string $subscriptionid
- * @property int $promoid
- * @property string $suspendreason
- * @property int $overideautosuspend
- * @property string $overidesuspenduntil
- * @property string $dedicatedip
- * @property string $assignedips
- * @property string $ns1
- * @property string $ns2
- * @property int $diskusage
- * @property int $disklimit
- * @property int $bwusage
- * @property int $bwlimit
- * @property string $lastupdate
- * @property string $created_at
- * @property string $updated_at
- * @method Hosting active()
- * @method Hosting activeAndSuspended
- * @method Hosting ofUserId($userId)
- * @method Hosting ofServerId($serverId)
- * @method Hosting ofCustomFieldNode($node)
- * @method Hosting ofvServerNode($node)
- * @method Hosting ofCustomFielVmid($vmid)
- * @method Hosting ofvServerVmid($vmid)
- * @method Hosting ofStatus($status)
- * @method static Hosting ofServerType($hostingId, $moduleName)
- * @method static Hosting ofId($id)
- * @method Hosting[] get()
- * @property CustomFieldValue[] $customFieldValues
- * @method static Hosting ofProxmoxVps()
- * @method static Hosting ofProxmoxCloud()
- * @method static Hosting ofProxmoxCloudAndStatusActiveAndSuspended
- * @method static Hosting ofProxmoxVpsAndProxmoxCloud()
- * @method static Hosting ofProductId($id)
- */
- class Hosting extends \ModulesGarden\ProxmoxAddon\Core\Models\Whmcs\Hosting
- {
- public function scopeActive($query)
- {
- return $query->where('domainstatus', 'Active');
- }
- public function scopeActiveAndSuspended($query)
- {
- return $query->whereIn('domainstatus', ['Active', 'Suspended']);
- }
- public function scopeOfId($query, $id)
- {
- return $query->where('id', $id);
- }
- public function scopeOfServerId($query, $serverId)
- {
- return $query->where('server', $serverId);
- }
- public function scopeOfUserId($query, $userId)
- {
- return $query->where('userid', $userId);
- }
- public function scopeOfCustomFieldNode($query, $node)
- {
- $h = 'tblhosting';
- $cf = 'tblcustomfields';
- $cfv = 'tblcustomfieldsvalues';
- $query->select("{$h}.*")
- ->rightJoin($cfv, "{$cfv}.relid", '=', "{$h}.id")
- ->rightJoin($cf, "{$cfv}.fieldid", '=', "{$cf}.id")
- ->where("{$cf}.type", "product")
- ->where("{$cf}.fieldname", "LIKE", "node%")
- ->where("{$cfv}.value", $node);
- return $query;
- }
- public function scopeOfCustomFielVmid($query, $vmid)
- {
- $h = 'tblhosting';
- $cf = 'tblcustomfields';
- $cfv = 'tblcustomfieldsvalues';
- $query->select("{$h}.*")
- ->rightJoin($cfv, "{$cfv}.relid", '=', "{$h}.id")
- ->rightJoin($cf, "{$cfv}.fieldid", '=', "{$cf}.id")
- ->where("{$cf}.type", "product")
- ->where("{$cf}.fieldname", "LIKE", "vmid%")
- ->where("{$cfv}.value", $vmid);
- return $query;
- }
- public function scopeOfvServerNode($query, $node)
- {
- $h = 'tblhosting';
- $vs = 'ProxmoxAddon_Vm';
- $query->select("{$h}.*")
- ->rightJoin($vs, "{$vs}.hosting_id", '=', "{$h}.id")
- ->where("{$vs}.node", $node);
- return $query;
- }
- public function scopeOfvServerVmid($query, $vmid)
- {
- $h = 'tblhosting';
- $vs = 'ProxmoxAddon_Vm';
- $query->select("{$h}.*")
- ->rightJoin($vs, "{$vs}.hosting_id", '=', "{$h}.id")
- ->where("{$vs}.vmid", $vmid);
- return $query;
- }
- public function scopeOfStatus($query, $status)
- {
- return $query->whereIn('domainstatus', $status);
- }
- public function scopeOfServerType($query, $hostingId, $moduleName)
- {
- $h = "tblhosting";
- $p = "tblproducts";
- $query->select("{$h}.*");
- return $query->rightJoin($p, function ($join) use ($p)
- {
- $join->on('packageid', '=', "{$p}.id");
- })->where("{$h}.id", $hostingId)
- ->where("{$p}.servertype", $moduleName);
- }
- public function ipAdd($ip)
- {
- if (!$this->dedicatedip)
- {
- $this->dedicatedip = $ip;
- return $this;
- }
- $ips = explode("\n", $this->assignedips);
- $ips[] = $ip;
- $ips = array_unique($ips);
- $this->assignedips = implode("\n", $ips);
- return $this;
- }
- public function ipDelete($ip)
- {
- if ($this->dedicatedip == $ip)
- {
- $this->dedicatedip = null;
- return $this;
- }
- $ips = explode("\n", $this->assignedips);
- foreach ($ips as $k => $v)
- {
- if (trim($v) == trim($ip))
- {
- unset($ips[$k]);
- }
- }
- $this->assignedips = implode("\n", $ips);
- return $this;
- }
- /**
- * @return \DateTime
- * @throws \Exception
- */
- public function getLastUpdate()
- {
- return new \DateTime($this->lastupdate);
- }
- public function customFieldValues()
- {
- return $this->hasMany("ModulesGarden\ProxmoxAddon\App\Models\Whmcs\CustomFieldValue", "relid");
- }
- public function scopeOfProxmoxVps($query)
- {
- $h = 'tblhosting';
- $s = 'tblservers';
- $query->select("{$h}.id", "{$h}.packageid", "{$h}.lastupdate", "{$h}.bwusage", "{$h}.bwlimit", "{$h}.regdate")
- ->rightJoin($s, "{$h}.server", '=', "{$s}.id")
- ->where("{$s}.type", "proxmoxVPS");
- return $query;
- }
- public function scopeOfProxmoxVpsAndProxmoxCloud($query)
- {
- $h = 'tblhosting';
- $s = 'tblservers';
- $query->select("{$h}.id", "{$h}.packageid", "{$h}.lastupdate", "{$h}.bwusage", "{$h}.bwlimit", "{$h}.regdate")
- ->rightJoin($s, "{$h}.server", '=', "{$s}.id")
- ->whereIn("{$s}.type", ["proxmoxVPS", "ProxmoxCloudVps" ]);
- return $query;
- }
- public function scopeOfProxmoxCloud($query)
- {
- $h = 'tblhosting';
- $s = 'tblservers';
- $query->select("{$h}.id", "{$h}.packageid", "{$h}.lastupdate", "{$h}.bwusage", "{$h}.bwlimit", "{$h}.regdate")
- ->rightJoin($s, "{$h}.server", '=', "{$s}.id")
- ->where("{$s}.type", "ProxmoxCloudVps");
- return $query;
- }
- public function scopeOfProxmoxCloudAndStatusActiveAndSuspended($query)
- {
- $h = 'tblhosting';
- $s = 'tblservers';
- $query->select("{$h}.*")
- ->rightJoin($s, "{$h}.server", '=', "{$s}.id")
- ->where("{$s}.type", "ProxmoxCloudVps")
- ->whereIn("{$h}.domainstatus", ['Active', 'Suspended']);
- return $query;
- }
- public function isBandwidthOverageUsage()
- {
- return $this->bwlimit && $this->bwlimit < $this->bwusage;
- }
- public function scopeOfProductId($query, $id){
- return $query->where('packageid', $id);
- }
- }
|