<?php
namespace App\Repository;
use App\Entity\IctusCommande;
use Doctrine\Persistence\ManagerRegistry;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
/**
* @extends ServiceEntityRepository<IctusCommande>
*
* @method IctusCommande|null find($id, $lockMode = null, $lockVersion = null)
* @method IctusCommande|null findOneBy(array $criteria, array $orderBy = null)
* @method IctusCommande[] findAll()
* @method IctusCommande[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class IctusCommandeRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, IctusCommande::class);
}
public function add(IctusCommande $entity, bool $flush = false): void
{
$this->getEntityManager()->persist($entity);
if ($flush) {
$this->getEntityManager()->flush();
}
}
public function remove(IctusCommande $entity, bool $flush = false): void
{
$this->getEntityManager()->remove($entity);
if ($flush) {
$this->getEntityManager()->flush();
}
}
/**
* @return IctusCommande[] Returns an array of IctusCommande objects
*/
public function findAllByUser($user_pcie): array
{
return $this->createQueryBuilder('i')
->select('i')
->join('i.pharmacie', 'pcie')
->join('pcie.users', 'u')
->andWhere('u.id = :user_pcie')
->setParameter('user_pcie', $user_pcie)
->orderBy('i.id', 'DESC')
->getQuery()
->getResult()
;
}
public function updateIsValide(int $id): void
{
$entityManager = $this->getEntityManager();
$commande = $this->find($id);
if ($commande) {
$commande->setIsValide(1);
$entityManager->persist($commande);
$entityManager->flush();
}
}
public function findMaxReference($pharmacie)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery('
SELECT MAX(commande.reference) as maxReference
FROM App\Entity\IctusCommande commande
WHERE commande.pharmacie = :pharmacie
')->setParameter('pharmacie', $pharmacie)->setMaxResults(1);
return $query->execute();
}
public function findByMultipleIsValide($isValid = false, $pharmacie)
{
$qb = $this->createQueryBuilder('c');
$qb->where('c.pharmacie = :pharmacie')
->setParameter('pharmacie', $pharmacie)
->orderBy('c.createdAt', 'DESC');
if (!$isValid) {
$qb = $qb->andWhere('c.isValide = 0 OR c.isValide IS NULL OR c.isValide = false');
} else {
$qb = $qb->andWhere('c.isValide = 1 OR c.isValide = true');
}
return $qb->getQuery()->getResult();
}
public function findAllNonValide()
{
$qb = $this->createQueryBuilder('c');
$qb->select('c')
->join('c.pharmacie', 'pcie')
->where('c.isValide = 0 OR c.isValide IS NULL OR c.isValide = false')
->andWhere('pcie.isValid = 1')
->groupBy('pcie.id')
->orderBy('c.createdAt', 'DESC');
return $qb->getQuery()->getResult();
}
public function updateIctusCommande($id, $valeur)
{
$entityManager = $this->getEntityManager();
$ictusCommande = $this->find($id);
if ($ictusCommande) {
$ictusCommande->setIsRecuperer($valeur);
$this->getEntityManager()->persist($ictusCommande);
$this->getEntityManager()->flush();
}
}
public function findById($id): ?IctusCommande
{
return $this->find($id);
}
public function findIctusCommandeByCodeEtCodeSecretPharmacie($id, $codeSecret, $pharmacie)
{
return $this->createQueryBuilder('i')
->select('i')
->where('i.id = :id')
->andWhere('i.codeSecret = :codeSecret')
->andWhere('i.pharmacie = :pharmacie')
->setParameter('id', $id)
->setParameter('codeSecret', $codeSecret)
->setParameter('pharmacie', $pharmacie)
->getQuery()
->getOneOrNullResult();
}
//mila avadika null code et codeSecret nullable et string
public function ReinitCodeCodeSecret($id)
{
$entityManager = $this->getEntityManager();
$ic = $entityManager->find(IctusCommande::class, $id);
if ($ic) {
$ic->setCode(0);
$ic->setCodeSecret(0);
$entityManager->persist($ic);
$entityManager->flush();
}
return $ic;
}
public function findByCodeComplet($codeComplet)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery('
SELECT commande
FROM App\Entity\IctusCommande commande
WHERE CONCAT(commande.code, commande.codeSecret) = :codeComple
')->setParameter('codeComple', $codeComplet)->setMaxResults(1);
return $query->execute();
}
public function getForRateByDate($dated, $datef)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery("
SELECT commande
FROM App\Entity\IctusCommande commande
WHERE
commande.etatpaiement = 2
AND commande.isValide = 1
AND commande.createdAt BETWEEN :dated AND :datef
GROUP BY commande.user
")->setParameters(array("dated" => $dated, "datef" => $datef));
return $query->execute();
}
public function getNonPayerByUser($user)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery("
SELECT COUNT(commande.id) as nb
FROM App\Entity\IctusCommande commande
WHERE
commande.etatpaiement != '2'
AND commande.isValide = 1
AND commande.user = :user
")->setParameter("user", $user);
return $query->execute();
}
public function getNonLivrerByUser($user)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery("
SELECT COUNT(commande.id) as nb
FROM App\Entity\IctusCommande commande
WHERE
commande.isLivrer is NULL
AND commande.etatpaiement = '2'
AND commande.isValide = 1
AND commande.user = :user
")->setParameter("user", $user);
return $query->execute();
}
public function getEnAttenteByUser($user)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery("
SELECT COUNT(commande.id) as nb
FROM App\Entity\IctusCommande commande
WHERE
commande.isLivrer is NULL
AND commande.etatpaiement <> '2'
AND commande.isValide is NULL
AND commande.user = :user
")->setParameter("user", $user);
return $query->execute();
}
public function getNonPayer($user)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery("
SELECT commande
FROM App\Entity\IctusCommande commande
WHERE commande.isValide = '1' AND commande.etatpaiement != '2' AND commande.user = :user
ORDER BY commande.createdAt DESC
")->setParameter("user", $user);
return $query->execute();
}
public function getCommandeAPayerByPaiement($user, $typePaiement)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery("
SELECT commande
FROM App\Entity\IctusCommande commande
WHERE commande.isValide = '1' AND commande.etatpaiement != '2' AND commande.user = :user AND commande.typePaiement = :typepaiement
ORDER BY commande.createdAt DESC
")->setParameters(array("user" => $user, "typepaiement" => $typePaiement));
return $query->execute();
}
public function getCountNonPayer($user)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery("
SELECT COUNT(commande) as nb
FROM App\Entity\IctusCommande commande
WHERE commande.isValide = '1' AND commande.etatpaiement != '2' AND commande.user = :user
")->setParameter("user", $user);
return $query->execute();
}
public function getCountNonLivrer($user)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery("
SELECT COUNT(commande) as nb
FROM App\Entity\IctusCommande commande
WHERE commande.isLivrer is NULL AND commande.isValide = '1' AND commande.user = :user
")->setParameter("user", $user);
return $query->execute();
}
public function countAllCommandeBy($dateD, $dateF)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery("
SELECT COUNT(commande) as nb
FROM App\Entity\IctusCommande commande
WHERE commande.isValide = '1' AND commande.createdAt BETWEEN :dated AND :datef
")->setParameters(array("dated" => $dateD, "datef" => $dateF));
return $query->execute();
}
public function countPharmacieCommandeBy($pharmacie, $dateD, $dateF)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery("
SELECT COUNT(commande) as nb
FROM App\Entity\IctusCommande commande
WHERE commande.pharmacie = :pharmacie AND commande.isValide = '1' AND commande.createdAt BETWEEN :dated AND :datef
")->setParameters(array("pharmacie" => $pharmacie, "dated" => $dateD, "datef" => $dateF));
return $query->execute();
}
public function getCountEnAttente($pharmacie){
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery("
SELECT COUNT(commande) as nb
FROM App\Entity\IctusCommande commande
WHERE commande.pharmacie = :pharmacie AND commande.isValide is NULL AND commande.isAnnule is NULL
")->setParameters(array("pharmacie" => $pharmacie));
return $query->execute();
}
// /**
// * @return IctusCommande[] Returns an array of IctusCommande objects
// */
// public function findByExampleField($value): array
// {
// return $this->createQueryBuilder('i')
// ->andWhere('i.exampleField = :val')
// ->setParameter('val', $value)
// ->orderBy('i.id', 'ASC')
// ->setMaxResults(10)
// ->getQuery()
// ->getResult()
// ;
// }
// public function findOneBySomeField($value): ?IctusCommande
// {
// return $this->createQueryBuilder('i')
// ->andWhere('i.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
}