?? GreyFile — Mystic File Browser

Current path: home/webdevt/cryptoimpot.fr/module/Application/src/Mapper/



?? Go up: /home/webdevt/cryptoimpot.fr/module/Application/src

?? Viewing: DeviseKrakenMapper.php

<?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 DeviseKrakenMapper {

    /**
     * @var EntityManager
     */
    protected $em;
    protected $entityClass;
    protected $orderAuthorized;
    protected $orderByAuthorized;

    public function __construct(EntityManager $em) {
        $this->em = $em;
        $this->entityClass = 'Application\Entity\DeviseKraken';

        $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 getArrayMapper() {
        $er = $this->em->getRepository($this->entityClass);
        $list = $er->findAll();
        $arrayMapper = [];
        foreach($list as $deviseKraken) {
            $arrayMapper[$deviseKraken->getCode()] = $deviseKraken;
        }
        
        return $arrayMapper;
    }

    public function findByName($name) {
        $er = $this->em->getRepository($this->entityClass);
        return $er->findOneBy(array('name' => $name));
    }

    public function findAll() {
        $er = $this->em->getRepository($this->entityClass);
        return $er->findBy([], ['code' => '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);
                }

//                var_dump($sort_by);
//                exit;
            }
        }




        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;
    }

}


??

??