fix: MemberRepository

* Fix getting selected members from a note
This commit is contained in:
Ryan Prather 2025-02-10 15:00:10 -05:00
parent 52f835bbda
commit 2cd4c68baf

View File

@ -3,9 +3,17 @@
namespace App\Repository\Case;
use App\Entity\Case\Member;
use App\Entity\Case\MemberCase;;
use App\Entity\Case\MemberCase;
use App\Entity\Case\Note;
use App\Entity\Case\StandardNote;
use App\Entity\Case\VisitNote;
use App\Enums\Case\RelationshipType;
use App\Enums\System\GenderType;
;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\Uid\Uuid;
/**
* @extends ServiceEntityRepository<Member>
@ -28,6 +36,73 @@ class MemberRepository extends ServiceEntityRepository
;
}
public function getMembersByCaseAndNote(MemberCase $case, Note $note)
{
$table = 'standard_note_member';
if ($note instanceof VisitNote) {
$table = 'visit_note_members';
}
$conn = $this->getEntityManager()->getConnection();
$sql = "SELECT m.*,
(
SELECT COUNT(1)
FROM {$table} n
WHERE n.note_id = :note_id
AND
n.person_id = m.id
) as 'checked'
FROM member m
JOIN member_case mc ON mc.id = m.member_case_id
WHERE
mc.id = :case_id";
$stmt = $conn->prepare($sql);
$result = $stmt->executeQuery([
'note_id' => $note->getId()->toBinary(),
'case_id' => $case->getId()->toBinary()
]);
$res = [];
foreach ($result->fetchAllAssociative() as $row) {
$member = new Member();
$member->setId(Uuid::fromBinary($row['id']))
->setCaseId($this->getEntityManager()->find(MemberCase::class, Uuid::fromBinary($row['member_case_id'])))
->setFirstName($row['first_name'])
->setLastName($row['last_name'])
->setRelationship(RelationshipType::from($row['relationship']))
->setPersonalId($row['personal_id'])
->setGender(GenderType::from($row['gender']))
->setDob(new \DateTime($row['dob']))
->setLanguage($row['language'])
->setEmergencyContact($row['emergency_contact'])
->setPhone($row['phone'])
->setDayPhone($row['day_phone'])
->setEveningPhone($row['evening_phone'])
->setCellPhone($row['cell_phone'])
->setEmail($row['email'])
->setSchool($row['school'])
->setAddress($row['address'])
->setCity($row['city'])
->setState($row['state'])
->setZip($row['zip'])
->setMaritalStatus($row['marital_status'])
->setChild($row['is_child'])
->setParent($row['is_parent'])
->setAdultChild($row['is_adult_child'])
->setLegalGuardian($row['is_legal_guardian'])
->setParentsLiveTogether($row['parents_live_together'])
->setDcsApproved($row['dcs_approved'])
->setChecked($row['checked'])
;
$res[] = $member;
}
return $res;
}
// /**
// * @return Member[] Returns an array of Member objects
// */