<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Description of LicenseDataBase
* @ORM\Table(name="license_database")
* @ORM\Entity(repositoryClass="App\Repository\LicenseDataBaseRepository")
* @ORM\HasLifecycleCallbacks
*/
class LicenseDataBase {
/**
* constantes para el esto de la creacion de las bases de datos
*/
const LICENSE_DATABASE_STATUS_NULL = 1;
const LICENSE_DATABASE_STATUS_HALF = 2;
const LICENSE_DATABASE_STATUS_FULL = 3;
/**
* @var integer
* @ORM\Column(name="lida_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
* @ORM\Column(name="lida_dbhost", type="string", length=50, nullable=false)
*/
private $dbhost;
/**
* @var string
* @ORM\Column(name="lida_dbname", type="string", length=50, nullable=false)
*/
private $dbname;
/**
* @var float
* @ORM\Column(name="lida_dbuser", type="string", length=50, nullable=true)
*/
protected $dbuser;
/**
* @var string
* @ORM\Column(name="lida_dbpass", type="string", length=50)
*/
protected $dbpass;
/**
* Un modulo puede tener otro modulo padre, lo que lo hace un submodulo
* @ORM\ManyToOne(targetEntity="App\Entity\AccountLicense", cascade={"remove"})
* @ORM\JoinColumn(name="lida_license_id", referencedColumnName="al_id", nullable=false, unique=true, onDelete="CASCADE")
*/
protected $license;
/**
* @var boolean
* @ORM\Column(name="lida_database_created", type="boolean", nullable=true)
*/
private $isDatabaseCreated;
/**
* @var boolean
* @ORM\Column(name="lida_schema_created", type="boolean", nullable=true)
*/
private $isSchemaCreated;
/**
* @var boolean
* @ORM\Column(name="lida_initial_insert_done", type="boolean", nullable=true)
*/
private $isInitialInsert;
/**
* @var boolean
* @ORM\Column(name="lida_initial_data_configured", type="boolean", nullable=true)
*/
private $isInitialConfigured;
/**
* @var string
* @ORM\Column(name="lida_has_error", type="boolean", nullable=true, options={"default":"0"})
*/
private $hasPersistentError;
/**
* @var DateTime
* @ORM\Column(name="lida_date_cron_last_schema", type="datetime", nullable=true)
*/
private $dateCronLastSchemaLicense;
/**
* @var DateTime
* @ORM\Column(name="lida_date_cron_last_procedure", type="datetime", nullable=true)
*/
private $dateCronLastLicense;
public function showEverything() {
return get_object_vars($this);
}
/**
* @return type
*/
public function getId() {
return $this->id;
}
/**
* @return type
*/
public function getDbhost() {
return $this->dbhost;
}
/**
* @return type
*/
public function getDbname() {
return $this->dbname;
}
/**
* @return type
*/
public function getDbuser() {
return $this->dbuser;
}
/**
* @return type
*/
public function getDbpass() {
return $this->dbpass;
}
/**
* @return type
*/
public function getLicense() {
return $this->license;
}
/**
* @param type $dbhost
*/
public function setDbhost($dbhost) {
$this->dbhost = $dbhost;
}
/**
* @param type $dbname
*/
public function setDbname($dbname) {
$this->dbname = $dbname;
}
/**
* @param type $dbuser
*/
public function setDbuser($dbuser) {
$this->dbuser = $dbuser;
}
/**
* @param type $dbpass
*/
public function setDbpass($dbpass) {
$this->dbpass = $dbpass;
}
/**
* @param \App\Entity\AccountLicense $license
*/
public function setLicense(\App\Entity\AccountLicense $license) {
$this->license = $license;
}
/**
* @return type
*/
public function getIsDatabaseCreated() {
return $this->isDatabaseCreated;
}
/**
* @param type $isDatabaseCreated
*/
public function setIsDatabaseCreated($isDatabaseCreated) {
$this->isDatabaseCreated = $isDatabaseCreated;
}
/**
* @return type
*/
public function getIsSchemaCreated() {
return $this->isSchemaCreated;
}
/**
* @param type $isSchemaCreated
*/
public function setIsSchemaCreated($isSchemaCreated) {
$this->isSchemaCreated = $isSchemaCreated;
}
/**
* @return type
*/
public function getHasPersistentError() {
return $this->hasPersistentError;
}
/**
* @param type $hasPersistentError
*/
public function setHasPersistentError($hasPersistentError) {
$this->hasPersistentError = $hasPersistentError;
}
/**
* @return type
*/
public function getDateCronLastLicense() {
return $this->dateCronLastLicense;
}
/**
* @param type $dateCronLastLicense
*/
public function setDateCronLastLicense($dateCronLastLicense) {
$this->dateCronLastLicense = $dateCronLastLicense;
}
/**
* @return type
*/
public function getDateCronLastSchemaLicense() {
return $this->dateCronLastSchemaLicense;
}
/**
* @param type $dateCronLastSchemaLicense
*/
public function setDateCronLastSchemaLicense($dateCronLastSchemaLicense) {
$this->dateCronLastSchemaLicense = $dateCronLastSchemaLicense;
}
/**
* @return type
*/
public function getIsInitialInsert() {
return $this->isInitialInsert;
}
/**
* @param type $isInitialInsert
*/
public function setIsInitialInsert($isInitialInsert) {
$this->isInitialInsert = $isInitialInsert;
}
/**
* @return type
*/
public function getIsInitialConfigured() {
return $this->isInitialConfigured;
}
/**
* @param type $isInitialConfigured
*/
public function setIsInitialConfigured($isInitialConfigured) {
$this->isInitialConfigured = $isInitialConfigured;
}
/**
* Funcion para realizar el filtrado de parametros de busqueda
* correspondientes a esta entidad
* @author Aealan Z <lrobledo@kijho.com> 29/07/2016
* @param type $alias salchichas y mucho mas
* @param type $search arreglo con los parametros de busqueda a filtrar
* correspondientes a la entidad
* @return type un arreglo con un arreglo que contiene los parametros de
* busqueda filtrados para una consulta y un string que sera parte del DQL
* que realizara la busqueda correspondiente de las entidades en la base
* de datos
*/
public static function filterSearchParameters($alias, $secondAlias, $search) {
$textParameters = $join = '';
$parameters = [];
if (isset($search ['alLicenseUsername']) && $search ['alLicenseUsername'] != '') {
$textParameters .= " AND " . $secondAlias . ".alLicenseUsername LIKE :alLicenseUsername";
$parameters ['alLicenseUsername'] = "%" . $search ['alLicenseUsername'] . "%";
}
if (isset($search ['dbname']) && $search ['dbname'] != '') {
$textParameters .= " AND " . $alias . ".dbname LIKE :dbname";
$parameters ['dbname'] = "%" . $search ['dbname'] . "%";
}
if (isset($search['account']) && $search['account'] != '') {
$parameters['account'] = $search['account'];
$textParameters .= " AND " . $secondAlias . ".alAccountLicense = :account";
}
if (isset($search ['deviceUid']) && $search ['deviceUid'] != '') {
$textParameters .= " AND " . $secondAlias . ".deviceUid LIKE :deviceUid";
$parameters ['deviceUid'] = "%" . $search ['deviceUid'] . "%";
}
if (isset($search['user']) && $search['user'] instanceof User && $search['user']->getUsType() != User::USER_SUPER_ADMIN && $search['user']->getUsType() != User::USER_INTERNAL_SUPPORT) {
if ($search['user']->getUsType() == User::USER_ADMINISTRATOR) {
// $join = " LEFT JOIN App\Entity\User U WITH $secondAlias.alUserCreator = U.id ";
$textParameters .= " AND $secondAlias.alCompanyId = :USER_COMPANY ";
$parameters['USER_COMPANY'] = $search['user']->getUsCompany()->getId();
}else{
$textParameters .= " AND " . $secondAlias . ".alUserCreator = :USERCREATOR";
$parameters['USERCREATOR'] = $search['user']->getId();
}
}
return ['text' => $textParameters, 'parameters' => $parameters, 'join' => $join];
}
/**
* Funcion que permite filtrar los parametros de ordenamiento para la
* entidad y retornar un DQL para realizar la consulta pertienete en la
* base de datos
* @author Aealan Z <lrobledo@kijho.com> 29/07/2016
* @param type $alias salchichas y mucho mas
* @param type $order array que contiene los parametros de ordenamiento
* para la entidad
* @return string que contiene el DQL con los parametros de ordenamiento
* filtrados para esta entidad
*/
public static function filterOrderParameters($alias, $secondAlias, $order) {
$orderBy = ' ORDER BY ' . $secondAlias . '.id ASC';
if (isset($order ['order_by_nickname']) && $order ['order_by_nickname'] != '') {
if ($order ['order_by_nickname'] % 2) {
$orderBy = " ORDER BY " . $secondAlias . ".id DESC";
} else {
$orderBy = " ORDER BY " . $secondAlias . ".id ASC";
}
} elseif (isset($order ['order_by_dbname']) && $order ['order_by_dbname'] != '') {
if ($order ['order_by_dbname'] % 2) {
$orderBy = " ORDER BY " . $alias . ".dbname DESC";
} else {
$orderBy = " ORDER BY " . $alias . ".dbname ASC";
}
}
return $orderBy;
}
}