ref: Repositories
* Refactor all files
This commit is contained in:
110
src/Repository/Case/CaseItineraryRepository.php
Normal file
110
src/Repository/Case/CaseItineraryRepository.php
Normal file
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository\Case;
|
||||
|
||||
use App\Entity\Case\CaseItinerary;
|
||||
use App\Entity\Case\MemberCase;;
|
||||
use App\Entity\System\User;
|
||||
use App\Entity\System\UserCase;
|
||||
use DateTime;
|
||||
use DateTimeZone;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<CaseItinerary>
|
||||
*/
|
||||
class CaseItineraryRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, CaseItinerary::class);
|
||||
}
|
||||
|
||||
public function getRecentTravel(User $user, ?array $params = null): ?array
|
||||
{
|
||||
$query = $this->createQueryBuilder('ci')
|
||||
->leftJoin(UserCase::class, 'uc', 'WITH', 'uc.memberCase = ci.memberCase')
|
||||
->andWhere('uc.user = :user')
|
||||
->setParameter('user', $user->getId()->toBinary())
|
||||
;
|
||||
|
||||
if (isset($params['case']) && is_a($params['case'], MemberCase::class)) {
|
||||
$query->andWhere('ci.memberCase = :case')->setParameter('case', $params['case']->getId()->toBinary());
|
||||
}
|
||||
|
||||
if (isset($params['from']) && is_a($params['from'], \DateTime::class)) {
|
||||
$query->andWhere('ci.date >= :from')->setParameter('from', $params['from']->format('Y-m-d'));
|
||||
}
|
||||
|
||||
if (isset($params['to']) && is_a($params['to'], \DateTime::class)) {
|
||||
$query->andWhere('ci.date <= :to')->setParameter('to', $params['to']->format('Y-m-d'));
|
||||
}
|
||||
|
||||
$query->orderBy('ci.date', 'DESC')
|
||||
->addOrderBy('ci.departure', 'DESC');
|
||||
|
||||
//dd($query->getQuery());
|
||||
|
||||
return $query->getQuery()->getResult();
|
||||
}
|
||||
|
||||
public function getYTDTravel(User $user): ?array
|
||||
{
|
||||
$startDate = new DateTime('now', new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
|
||||
|
||||
$query = $this->createQueryBuilder('ci')
|
||||
->leftJoin(UserCase::class, 'uc', 'WITH', 'uc.memberCase = ci.memberCase')
|
||||
->andWhere('uc.user = :user')
|
||||
->setParameter('user', $user->getId()->toBinary())
|
||||
->andWhere('ci.date >= :from')
|
||||
->setParameter('from', $startDate->format('Y-01-01'))
|
||||
->orderBy('ci.date', 'DESC')
|
||||
->addOrderBy('ci.departure', 'DESC')
|
||||
;
|
||||
|
||||
return $query->getQuery()->getResult();
|
||||
}
|
||||
|
||||
public function getTravelLast30Days(User $user): ?array
|
||||
{
|
||||
$startDate = new DateTime('now', new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
|
||||
|
||||
$query = $this->createQueryBuilder('ci')
|
||||
->leftJoin(UserCase::class, 'uc', 'WITH', 'uc.memberCase = ci.memberCase')
|
||||
->andWhere('uc.user = :user')
|
||||
->setParameter('user', $user->getId()->toBinary())
|
||||
->andWhere('ci.date >= :from')
|
||||
->setParameter('from', $startDate->modify('-30 days')->format('Y-m-d'))
|
||||
->orderBy('ci.date', 'DESC')
|
||||
->addOrderBy('ci.departure', 'DESC')
|
||||
;
|
||||
|
||||
return $query->getQuery()->getResult();
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return CaseLocation[] Returns an array of CaseLocation objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('c')
|
||||
// ->andWhere('c.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('c.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?CaseLocation
|
||||
// {
|
||||
// return $this->createQueryBuilder('c')
|
||||
// ->andWhere('c.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
57
src/Repository/Case/CaseLocationRepository.php
Normal file
57
src/Repository/Case/CaseLocationRepository.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository\Case;
|
||||
|
||||
use App\Entity\Case\CaseLocation;
|
||||
use App\Entity\System\Location;
|
||||
use App\Entity\Case\MemberCase;;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<CaseLocation>
|
||||
*/
|
||||
class CaseLocationRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, CaseLocation::class);
|
||||
}
|
||||
|
||||
public function getCaseLocations(MemberCase $case): array
|
||||
{
|
||||
return $this->createQueryBuilder('cl')
|
||||
->leftJoin(Location::class, 'l', 'WITH', 'l.id = cl.location')
|
||||
->andWhere('cl.memberCase = :case')
|
||||
->setParameter('case', $case->getId()->toBinary())
|
||||
->orderBy('l.name', 'ASC')
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return CaseLocation[] Returns an array of CaseLocation objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('c')
|
||||
// ->andWhere('c.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('c.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?CaseLocation
|
||||
// {
|
||||
// return $this->createQueryBuilder('c')
|
||||
// ->andWhere('c.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
53
src/Repository/Case/MemberCaseRepository.php
Normal file
53
src/Repository/Case/MemberCaseRepository.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository\Case;
|
||||
|
||||
use App\Entity\Company\Company;
|
||||
use App\Entity\Case\MemberCase;;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<MemberCase>
|
||||
*/
|
||||
class MemberCaseRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, MemberCase::class);
|
||||
}
|
||||
|
||||
public function getCompanyCases(Company $company): array
|
||||
{
|
||||
return $this->createQueryBuilder('m')
|
||||
->andWhere('m.company = :company')
|
||||
->setParameter('company', $company)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return MemberCase[] Returns an array of MemberCase objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('m')
|
||||
// ->andWhere('m.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('m.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?MemberCase
|
||||
// {
|
||||
// return $this->createQueryBuilder('m')
|
||||
// ->andWhere('m.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
56
src/Repository/Case/MemberDocumentRepository.php
Normal file
56
src/Repository/Case/MemberDocumentRepository.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository\Case;
|
||||
|
||||
use App\Entity\Case\MemberDocument;
|
||||
use App\Entity\Case\Member;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<CaseDocument>
|
||||
*/
|
||||
class MemberDocumentRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, MemberDocument::class);
|
||||
}
|
||||
|
||||
public function removeUnsigned(Member $member)
|
||||
{
|
||||
$conn = $this->getEntityManager()->getConnection();
|
||||
$sql = "DELETE FROM member_document WHERE client_id = :client_id AND client_signed IS NULL";
|
||||
$stmt = $conn->prepare($sql);
|
||||
$result = $stmt->executeQuery([
|
||||
'client_id' => $member->getId()->toBinary()
|
||||
]);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return CaseDocument[] Returns an array of CaseDocument objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('m')
|
||||
// ->andWhere('m.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('m.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?CaseDocument
|
||||
// {
|
||||
// return $this->createQueryBuilder('m')
|
||||
// ->andWhere('m.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
55
src/Repository/Case/MemberRepository.php
Normal file
55
src/Repository/Case/MemberRepository.php
Normal file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository\Case;
|
||||
|
||||
use App\Entity\Case\Member;
|
||||
use App\Entity\Case\MemberCase;;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<Member>
|
||||
*/
|
||||
class MemberRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, Member::class);
|
||||
}
|
||||
|
||||
public function getCaseMembersByName(MemberCase $case): array
|
||||
{
|
||||
return $this->createQueryBuilder('m')
|
||||
->andWhere('m.memberCase = :case')
|
||||
->setParameter('case', $case->getId()->toBinary())
|
||||
->orderBy('m.lastName, m.firstName', 'ASC')
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return Member[] Returns an array of Member objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('m')
|
||||
// ->andWhere('m.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('m.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?Member
|
||||
// {
|
||||
// return $this->createQueryBuilder('m')
|
||||
// ->andWhere('m.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
43
src/Repository/Case/MonthlyCaseNoteRepository.php
Normal file
43
src/Repository/Case/MonthlyCaseNoteRepository.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository\Case;
|
||||
|
||||
use App\Entity\Case\MonthlyCaseNote;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<MonthlyCaseNote>
|
||||
*/
|
||||
class MonthlyCaseNoteRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, MonthlyCaseNote::class);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return MonthlyCaseNote[] Returns an array of MonthlyCaseNote objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('m')
|
||||
// ->andWhere('m.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('m.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?MonthlyCaseNote
|
||||
// {
|
||||
// return $this->createQueryBuilder('m')
|
||||
// ->andWhere('m.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
61
src/Repository/Case/NoteRepository.php
Normal file
61
src/Repository/Case/NoteRepository.php
Normal file
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository\Case;
|
||||
|
||||
use App\Entity\Case\Note;
|
||||
use App\Entity\Case\Referral;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<Notes>
|
||||
*/
|
||||
class NoteRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, Note::class);
|
||||
}
|
||||
|
||||
public function getHoursUsed(Referral $referral): int
|
||||
{
|
||||
$ret = 0;
|
||||
|
||||
$query = $this->createQueryBuilder('n')
|
||||
->select('SUM(n.hours) AS hours')
|
||||
->andWhere('n.referral = :referral')
|
||||
->setParameter('referral', $referral->getId()->toBinary())
|
||||
->getQuery()
|
||||
//->getResult()
|
||||
;
|
||||
|
||||
dd($query->getSQL());
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return Notes[] Returns an array of Notes objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('n')
|
||||
// ->andWhere('n.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('n.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?Notes
|
||||
// {
|
||||
// return $this->createQueryBuilder('n')
|
||||
// ->andWhere('n.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
103
src/Repository/Case/ReferralRepository.php
Normal file
103
src/Repository/Case/ReferralRepository.php
Normal file
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository\Case;
|
||||
|
||||
use App\Entity\Case\MemberCase;;
|
||||
use App\Entity\Case\Referral;
|
||||
use App\Enums\Case\ReferralServiceType;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<Referral>
|
||||
*/
|
||||
class ReferralRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, Referral::class);
|
||||
}
|
||||
|
||||
public function getActiveReferrals(MemberCase $case): array
|
||||
{
|
||||
$referrals = $this->createQueryBuilder('r')
|
||||
->andWhere('r.dischargeDate IS NULL')
|
||||
->andWhere('r.memberCase = :case')
|
||||
->setParameter('case', $case->getId()->toBinary())
|
||||
->orderBy('r.hours', 'ASC')
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
|
||||
foreach ($referrals as $idx => $ref) {
|
||||
$this->populateNotes($referrals[$idx]);
|
||||
}
|
||||
|
||||
return $referrals;
|
||||
}
|
||||
|
||||
public function getClosedReferrals(MemberCase $case): array
|
||||
{
|
||||
$referrals = $this->createQueryBuilder('r')
|
||||
->andWhere('r.dischargeDate IS NOT NULL')
|
||||
->andWhere('r.memberCase = :case')
|
||||
->setParameter('case', $case->getId()->toBinary())
|
||||
->orderBy('r.dischargeDate', 'DESC')
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
|
||||
foreach ($referrals as $idx => $ref) {
|
||||
$this->populateNotes($referrals[$idx]);
|
||||
}
|
||||
|
||||
return $referrals;
|
||||
}
|
||||
|
||||
public function populateNotes(Referral &$referral): void
|
||||
{
|
||||
$noteType = 'App\Entity\Case\StandardNote';
|
||||
|
||||
if ($referral->getServiceCode() == ReferralServiceType::VS_THBB) {
|
||||
$noteType = 'App\Entity\Case\VisitNote';
|
||||
}
|
||||
|
||||
$query = $this->getEntityManager()->createQuery("
|
||||
SELECT n
|
||||
FROM $noteType n
|
||||
WHERE n.referral = :referral
|
||||
");
|
||||
$query->setParameter('referral', $referral->getId()->toBinary());
|
||||
$res = $query->getResult();
|
||||
|
||||
if (!count($res)){
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return Referral[] Returns an array of Referral objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('r')
|
||||
// ->andWhere('r.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('r.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?Referral
|
||||
// {
|
||||
// return $this->createQueryBuilder('r')
|
||||
// ->andWhere('r.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
43
src/Repository/Case/StandardNoteMemberRepository.php
Normal file
43
src/Repository/Case/StandardNoteMemberRepository.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository\Case;
|
||||
|
||||
use App\Entity\Case\StandardNoteMember;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<StandardNoteMember>
|
||||
*/
|
||||
class StandardNoteMemberRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, StandardNoteMember::class);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return StandardNoteMember[] Returns an array of StandardNoteMember objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('s')
|
||||
// ->andWhere('s.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('s.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?StandardNoteMember
|
||||
// {
|
||||
// return $this->createQueryBuilder('s')
|
||||
// ->andWhere('s.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
128
src/Repository/Case/StandardNoteRepository.php
Normal file
128
src/Repository/Case/StandardNoteRepository.php
Normal file
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository\Case;
|
||||
|
||||
use App\Entity\Case\Referral;
|
||||
use App\Entity\Case\StandardNote;
|
||||
use App\Entity\System\User;
|
||||
use App\Entity\System\UserCase;
|
||||
use App\Enums\Case\ReferralType;
|
||||
use DateTime;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<StandardNote>
|
||||
*/
|
||||
class StandardNoteRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, StandardNote::class);
|
||||
}
|
||||
|
||||
public function getOrderedNotes(Referral $referral): array
|
||||
{
|
||||
return $this->createQueryBuilder('s')
|
||||
->andWhere('s.referral = :referral')
|
||||
->setParameter('referral', $referral->getId()->toBinary())
|
||||
->orderBy('s.date', 'DESC')
|
||||
->addOrderBy('s.startTime', 'DESC')
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
}
|
||||
|
||||
public function filterNotes(User $user, array $params = []): array
|
||||
{
|
||||
$query = $this->createQueryBuilder('s')
|
||||
->leftJoin(Referral::class, 'r', 'WITH', 's.referral = r.id')
|
||||
->leftJoin(UserCase::class, 'uc', 'WITH', 'r.memberCase = uc.memberCase')
|
||||
->andWhere('uc.user = :user')
|
||||
->setParameter('user', $user->getId()->toBinary())
|
||||
;
|
||||
|
||||
if ($params['case']) {
|
||||
$query->andWhere('r.memberCase = :memberCase')
|
||||
->setParameter('memberCase', $params['case']->getId()->toBinary());
|
||||
}
|
||||
|
||||
if ($params['referral']) {
|
||||
$query->andWhere('s.referral = :referral')
|
||||
->setParameter('referral', $params['referral']->getId()->toBinary());
|
||||
}
|
||||
|
||||
if ($params['startDate']) {
|
||||
$query->andWhere('s.date >= :startDate')
|
||||
->setParameter('startDate', $params['startDate']);
|
||||
}
|
||||
|
||||
if ($params['endDate']) {
|
||||
$query->andWhere('s.date <= :endDate')
|
||||
->setParameter('endDate', $params['endDate']);
|
||||
}
|
||||
|
||||
//dd($query->getQuery()->getResult());
|
||||
|
||||
return $query->orderBy('s.date', 'DESC')
|
||||
->addOrderBy('s.startTime', 'DESC')
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to return the total time billed
|
||||
*
|
||||
* @param User $user
|
||||
* @param DateTime $startDate
|
||||
*
|
||||
* @return int
|
||||
* Total minutes rounded to the nearest 15 min increment
|
||||
*/
|
||||
public function getTotalBillableHours(User $user, DateTime $startDate, ReferralType $referralType = null): array
|
||||
{
|
||||
$res = $this->createQueryBuilder('s')
|
||||
->leftJoin(Referral::class, 'r', 'WITH', 'r.id = s.referral')
|
||||
->leftJoin(UserCase::class, 'uc', 'WITH', 'uc.memberCase = r.memberCase')
|
||||
->where('uc.user = :user')
|
||||
->andWhere('s.date >= :startDate')
|
||||
->setParameter('user', $user->getId()->toBinary())
|
||||
->setParameter('startDate', $startDate->format('Y-m-d'))
|
||||
;
|
||||
|
||||
if (null !== $referralType) {
|
||||
$res->andWhere('r.serviceCode = :referralType')
|
||||
->setParameter('referralType', $referralType);
|
||||
}
|
||||
|
||||
$ret = $res->getQuery()->getResult();
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return StandardNote[] Returns an array of StandardNote objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('s')
|
||||
// ->andWhere('s.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('s.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?StandardNote
|
||||
// {
|
||||
// return $this->createQueryBuilder('s')
|
||||
// ->andWhere('s.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
43
src/Repository/Case/VisitNoteMembersRepository.php
Normal file
43
src/Repository/Case/VisitNoteMembersRepository.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository\Case;
|
||||
|
||||
use App\Entity\Case\VisitNoteMembers;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<VisitNoteMembers>
|
||||
*/
|
||||
class VisitNoteMembersRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, VisitNoteMembers::class);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return VisitNoteMembers[] Returns an array of VisitNoteMembers objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('v')
|
||||
// ->andWhere('v.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('v.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?VisitNoteMembers
|
||||
// {
|
||||
// return $this->createQueryBuilder('v')
|
||||
// ->andWhere('v.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
126
src/Repository/Case/VisitNoteRepository.php
Normal file
126
src/Repository/Case/VisitNoteRepository.php
Normal file
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository\Case;
|
||||
|
||||
use App\Entity\Case\Referral;
|
||||
use App\Entity\System\UserCase;
|
||||
use App\Entity\System\User;
|
||||
use App\Entity\Case\VisitNote;
|
||||
use App\Enums\Case\ReferralType;
|
||||
use DateTime;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<VisitNote>
|
||||
*/
|
||||
class VisitNoteRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, VisitNote::class);
|
||||
}
|
||||
|
||||
public function getOrderedNotes(Referral $referral): array
|
||||
{
|
||||
return $this->createQueryBuilder('v')
|
||||
->andWhere('v.referral = :referral')
|
||||
->setParameter('referral', $referral->getId()->toBinary())
|
||||
->orderBy('v.date', 'DESC')
|
||||
->addOrderBy('v.startTime', 'DESC')
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
}
|
||||
|
||||
public function filterNotes(User $user, array $params = []): array
|
||||
{
|
||||
$query = $this->createQueryBuilder('v')
|
||||
->leftJoin(Referral::class, 'r', 'WITH', 'v.referral = r.id')
|
||||
->leftJoin(UserCase::class, 'uc', 'WITH', 'r.memberCase = uc.memberCase')
|
||||
->andWhere('uc.user = :user')
|
||||
->setParameter('user', $user->getId()->toBinary())
|
||||
;
|
||||
|
||||
if ($params['case']) {
|
||||
$query->andWhere('r.memberCase = :memberCase')
|
||||
->setParameter('memberCase', $params['case']->getId()->toBinary());
|
||||
}
|
||||
|
||||
if ($params['referral']) {
|
||||
$query->andWhere('v.referral = :referral')
|
||||
->setParameter('referral', $params['referral']->getId()->toBinary());
|
||||
}
|
||||
|
||||
if ($params['startDate']) {
|
||||
$query->andWhere('v.date >= :startDate')
|
||||
->setParameter('startDate', $params['startDate']);
|
||||
}
|
||||
|
||||
if ($params['endDate']) {
|
||||
$query->andWhere('v.date <= :endDate')
|
||||
->setParameter('endDate', $params['endDate']);
|
||||
}
|
||||
|
||||
return $query->orderBy('v.date', 'DESC')
|
||||
->addOrderBy('v.startTime', 'DESC')
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to return the total time billed
|
||||
*
|
||||
* @param User $user
|
||||
* @param DateTime $startDate
|
||||
*
|
||||
* @return int
|
||||
* Total minutes rounded to the nearest 15 min increment
|
||||
*/
|
||||
public function getTotalBillableHours(User $user, DateTime $startDate, ReferralType $referralType = null): array
|
||||
{
|
||||
$res = $this->createQueryBuilder('v')
|
||||
->leftJoin(Referral::class, 'r', 'WITH', 'r.id = v.referral')
|
||||
->leftJoin(UserCase::class, 'uc', 'WITH', 'uc.memberCase = r.memberCase')
|
||||
->where('uc.user = :user')
|
||||
->andWhere('v.date >= :startDate')
|
||||
->setParameter('user', $user->getId()->toBinary())
|
||||
->setParameter('startDate', $startDate->format('Y-m-d'))
|
||||
;
|
||||
|
||||
if (null !== $referralType) {
|
||||
$res->andWhere('r.serviceCode = :referralType')
|
||||
->setParameter('referralType', $referralType);
|
||||
}
|
||||
|
||||
$ret = $res->getQuery()->getResult();
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return VisitNote[] Returns an array of VisitNote objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('v')
|
||||
// ->andWhere('v.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('v.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?VisitNote
|
||||
// {
|
||||
// return $this->createQueryBuilder('v')
|
||||
// ->andWhere('v.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
Reference in New Issue
Block a user