feat: implement domain guard for commission calculation and enhance representation dashboard
- Added domain guard in CommissionService to ensure commission is calculated only when the appointment is booked under the same representation as the doctor. - Updated RepresentationController to filter statistics by representation, ensuring accurate data is shown for each representative. - Introduced new endpoints for the representation dashboard to provide summary statistics, doctor performance, and financial reports. - Created new pages for RepresentationFinance and RepresentationSettlement to display financial data and allow for settlement requests. - Added migration to include booking_representation_id in appointments for tracking the representative under which the appointment was booked.
This commit is contained in:
@@ -43,6 +43,16 @@ class SettlementRepository extends ServiceEntityRepository
|
||||
return $credit - $debit;
|
||||
}
|
||||
|
||||
/** @param string[] $statuses */
|
||||
public function sumByStatus(User $user, array $statuses): int
|
||||
{
|
||||
return (int) ($this->getEntityManager()->createQuery(
|
||||
'SELECT SUM(s.amountRials) FROM App\Settlement\Entity\Settlement s
|
||||
WHERE s.user = :user AND s.status IN (:statuses)'
|
||||
)->setParameters(['user' => $user, 'statuses' => $statuses])
|
||||
->getSingleScalarResult() ?? 0);
|
||||
}
|
||||
|
||||
public function save(Settlement $entity, bool $flush = true): void
|
||||
{
|
||||
$this->getEntityManager()->persist($entity);
|
||||
|
||||
Reference in New Issue
Block a user