From c541069cb567a3ae8f7f585c28a588a47e09e815 Mon Sep 17 00:00:00 2001 From: Chaim Date: Tue, 7 Apr 2026 15:27:36 +0000 Subject: [PATCH] feat: include LegalAid data in case context for AI assistant Add getLegalAidData() to CaseContextBuilder so Shira can see existing legal aid information when working on a case. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../Services/CaseContextBuilder.php | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/files/custom/Espo/Modules/SmartAssistant/Services/CaseContextBuilder.php b/files/custom/Espo/Modules/SmartAssistant/Services/CaseContextBuilder.php index efbd23b..5d096f6 100644 --- a/files/custom/Espo/Modules/SmartAssistant/Services/CaseContextBuilder.php +++ b/files/custom/Espo/Modules/SmartAssistant/Services/CaseContextBuilder.php @@ -27,6 +27,7 @@ class CaseContextBuilder return [ 'case' => $this->getCaseData($case), 'contacts' => $this->getCaseContacts($case), + 'legalAid' => $this->getLegalAidData($caseId), 'openTasks' => $this->getOpenTasks($caseId), 'upcomingMeetings' => $this->getUpcomingMeetings($caseId), 'recentCalls' => $this->getRecentCalls($caseId), @@ -80,6 +81,38 @@ class CaseContextBuilder return $contacts; } + private function getLegalAidData(string $caseId): ?array + { + $legalAid = $this->entityManager + ->getRDBRepository('LegalAid') + ->where(['caseId' => $caseId]) + ->findOne(); + + if (!$legalAid) { + return null; + } + + return [ + 'id' => $legalAid->get('id'), + 'status' => $legalAid->get('status'), + 'legalAidNumber' => $legalAid->get('legalAidNumber'), + 'contactName' => $legalAid->get('contactName'), + 'aidType' => $legalAid->get('aidType'), + 'urgencyLevel' => $legalAid->get('urgencyLevel'), + 'appointmentDate' => $legalAid->get('appointmentDate'), + 'filingDeadline' => $legalAid->get('filingDeadline'), + 'firstContactDate' => $legalAid->get('firstContactDate'), + 'meetingDate' => $legalAid->get('meetingDate'), + 'contactStatus' => $legalAid->get('contactStatus'), + 'proceedingNumber' => $legalAid->get('proceedingNumber'), + 'courtName' => $legalAid->get('courtName'), + 'proceedingSubject' => $legalAid->get('proceedingSubject'), + 'recommendationType' => $legalAid->get('recommendationType'), + 'additionalAidNeeded' => $legalAid->get('additionalAidNeeded'), + 'notes' => $legalAid->get('notes'), + ]; + } + private function getOpenTasks(string $caseId): array { $tasks = [];