Current path: home/webdevt/cryptoimpot.fr/module/Application/src/Mapper/
?? Go up: /home/webdevt/cryptoimpot.fr/module/Application/src
<?php
namespace Application\Mapper;
use Doctrine\ORM\EntityManager;
use TheSeer\Tokenizer\Exception;
use Laminas\Hydrator\HydratorInterface;
use Laminas\Paginator\Adapter\ArrayAdapter;
use Laminas\Paginator\Paginator;
class DeviseBitfinexMapper {
/**
* @var EntityManager
*/
protected $em;
protected $entityClass;
protected $orderAuthorized;
protected $orderByAuthorized;
public function __construct(EntityManager $em) {
$this->em = $em;
$this->entityClass = 'Application\Entity\DeviseBitfinex';
$this->orderByAuthorized = array(
'id',
'name',
);
$this->orderAuthorized = array(
'ASC',
'DESC'
);
}
public function findByCode($code) {
$er = $this->em->getRepository($this->entityClass);
return $er->findOneBy(array('code' => $code));
}
public function findAll() {
$er = $this->em->getRepository($this->entityClass);
return $er->findBy([], ['code' => 'ASC']);
}
public function getArrayMapper() {
$er = $this->em->getRepository($this->entityClass);
$list = $er->findAll();
$arrayMapper = [];
foreach($list as $deviseBitfinex) {
$arrayMapper[$deviseBitfinex->getCode()] = $deviseBitfinex;
}
return $arrayMapper;
}
public function findByName($name) {
$er = $this->em->getRepository($this->entityClass);
return $er->findOneBy(array('name' => $name));
}
public function findAllSelectable() {
$er = $this->em->getRepository($this->entityClass);
return $er->findBy(['enable' => 1], ['ordre' => 'ASC']);
}
public function getArrayForSelect() {
// $er = $this->em->getRepository($this->entityClass);
// return $er->findBy(['enable' => 1], ['ordre' => 'ASC']);
$qb = $this->em->getRepository($this->entityClass)->createQueryBuilder('e');
$qb->where('e.enable = 1')
->andWhere('e.selectable = 1')
// ->orderBy('e.ordre', 'ASC');
->orderBy('e.name', 'ASC');
//$qb->orderBy('e.name', 'ASC');
$result = $qb->getQuery()
->getArrayResult();
$arrayIndexToName = array();
foreach ($result as $row) {
$arrayIndexToName[$row['id']] = $row['name'];
}
return $arrayIndexToName;
}
public function getList($parameters, $pagination = true) {
$er = $this->em->getRepository($this->entityClass);
$query = $er->createQueryBuilder('t')
->leftJoin('t.technologie', 'te');
// ->leftJoin('t.brand', 'b')
// ->leftJoin('l.user', 'u');
// ->andWhere('l.statePublish = :statePublish');
if (isset($parameters['sort_by'])) {
$sort_by = in_array($parameters['sort_by'], $this->orderByAuthorized) ? $parameters['sort_by'] : 'id';
if (isset($parameters['sort'])) {
$sort = in_array($parameters['sort'], $this->orderAuthorized) ? $parameters['sort'] : 'DESC';
if ($parameters['sort_by'] == 'technologie') {
$query->orderBy('te.technologie', $sort);
} else {
$query->orderBy('t.' . $sort_by, $sort);
}
}
}
if (isset($parameters['search'])) {
$search = $parameters['search'];
$searchList = explode(' ', $search);
//var_dump($searchList);
if (is_array($searchList)) {
//var_dump($searchList);
$i = 1;
foreach ($searchList as $searchElement) {
$query->orWhere('t.titre LIKE ?' . $i)
->orWhere('t.description LIKE ?' . $i)
->orWhere('te.technologie LIKE ?' . $i)
//->orWhere('l.title LIKE :search')
//->setParameter('description', '%' . $search . '%')
//->setParameter('brandName', '%' . $search . '%')
->setParameter($i, '%' . $searchElement . '%');
$i++;
}
} else {
$query->orWhere('t.titre LIKE :search')
->orWhere('t.description LIKE :search')
->orWhere('te.technologie LIKE :search')
// ->orWhere('r.role LIKE :search')
//->orWhere('l.title LIKE :search')
//->setParameter('description', '%' . $search . '%')
//->setParameter('brandName', '%' . $search . '%')
->setParameter('search', '%' . $search . '%');
}
}
$arrayOfTests = $query->getQuery()
->getResult();
//->andWhere('u.state = :state')
// ->setParameter('state', 1)
if ($pagination === true) {
$paginatorAdapter = new ArrayAdapter($arrayOfTests);
return new Paginator($paginatorAdapter);
} else {
return $arrayOfTests;
}
}
public function insert($entity, $tableName = null, HydratorInterface $hydrator = null) {
return $this->persist($entity);
}
public function update($entity, $where = null, $tableName = null, HydratorInterface $hydrator = null) {
return $this->persist($entity);
}
public function delete($entity, $where = null, $tableName = null, HydratorInterface $hydrator = null) {
try {
$this->em->remove($entity);
$this->em->flush();
return true;
} catch (Exception $e) {
return false;
}
}
protected function persist($entity) {
$this->em->persist($entity);
$this->em->flush();
return $entity;
}
}