ManagementStatsController.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\DB;
  5. use Illuminate\Support\Facades\Http;
  6. class ManagementStatsController extends Controller
  7. {
  8. public function index(Request $request)
  9. {
  10. $filters = $request->all();
  11. $clientsWePaidToAcquire = [
  12. ['date_trunc' => '2022-01-01 00:00:00', 'count' => 1445]
  13. ];
  14. $activeClients = [
  15. ['date_trunc' => '2022-01-01 00:00:00', 'count' => 1445]
  16. ];
  17. $startDate = '2022-01-01';
  18. $endDate = '2022-02-01';
  19. $resultMap = [
  20. "AcquiredClients" => $this->getAcquiredClients($startDate, $endDate),
  21. "AcquiredClientsCount" => $this->getAcquiredClientsCount($startDate, $endDate),
  22. "NoteCountByMonth" => $this->getNoteCountByMonth($startDate, $endDate),
  23. "ActiveClientsByMonth" => $this->getActiveClientsByMonth($startDate, $endDate),
  24. "ActiveProsByMonth" => $this->getActiveProsByMonth($startDate, $endDate),
  25. "CptCodesBilled" => $this->getCptCodesBilled($startDate, $endDate),
  26. "CptCodesBilledByMonth" => $this->getCptCodesBilledByMonth($startDate, $endDate),
  27. "TotalBilledAmount" => $this->getTotalBilledAmount($startDate, $endDate)
  28. ];
  29. return view('app.admin.management-stats.index', compact('clientsWePaidToAcquire', 'activeClients', 'filters'));
  30. }
  31. private function getAcquiredClients($startDate, $endDate){
  32. $query = "SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY'";
  33. return DB::select( DB::raw($query), array($startDate,$endDate));
  34. }
  35. private function getAcquiredClientsCount($startDate, $endDate){
  36. $query = "SELECT COUNT(*) FROM client WHERE id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ?) AND client_engagement_status_category != 'DUMMY'";
  37. return DB::select( DB::raw($query), array($startDate,$endDate));
  38. }
  39. private function getNoteCountByMonth($startDate, $endDate){
  40. $query= "
  41. SELECT COUNT(*), DATE_TRUNC('month', created_at)
  42. FROM note
  43. WHERE (is_signed_by_hcp IS NOT FALSE AND is_bill_closed IS NOT FALSE AND is_claim_closed IS NOT FALSE AND is_cancelled IS NOT TRUE)
  44. AND client_id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY')
  45. GROUP BY 2
  46. ORDER BY 2 ASC;
  47. ";
  48. return DB::select( DB::raw($query), array($startDate,$endDate));
  49. }
  50. private function getActiveClientsByMonth($startDate, $endDate){
  51. $query= "
  52. SELECT COUNT(DISTINCT(client_id)), DATE_TRUNC('month', created_at)
  53. FROM note
  54. WHERE (is_signed_by_hcp IS NOT FALSE AND is_bill_closed IS NOT FALSE AND is_claim_closed IS NOT FALSE AND is_cancelled IS NOT TRUE)
  55. AND client_id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY')
  56. GROUP BY 2
  57. ORDER BY 2 ASC;
  58. ";
  59. return DB::select( DB::raw($query), array($startDate,$endDate));
  60. }
  61. private function getActiveProsByMonth($startDate, $endDate){
  62. $query= "
  63. SELECT COUNT(DISTINCT(hcp_pro_id)), DATE_TRUNC('month', created_at)
  64. FROM note
  65. WHERE (is_signed_by_hcp IS NOT FALSE AND is_bill_closed IS NOT FALSE AND is_claim_closed IS NOT FALSE AND is_cancelled IS NOT TRUE)
  66. AND client_id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY')
  67. GROUP BY 2
  68. ORDER BY 2 ASC;
  69. ";
  70. return DB::select( DB::raw($query), array($startDate,$endDate));
  71. }
  72. private function getCptCodesBilled($startDate, $endDate){
  73. $query= "
  74. SELECT COUNT(*), cpt
  75. FROM claim_line
  76. JOIN claim ON claim_line.claim_id = claim.id
  77. JOIN note ON claim.note_id = note.id
  78. JOIN client ON note.client_id = client.id
  79. WHERE client.id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY')
  80. GROUP BY cpt ORDER BY cpt ASC;
  81. ";
  82. return DB::select( DB::raw($query), array($startDate,$endDate));
  83. }
  84. private function getCptCodesBilledByMonth($startDate, $endDate){
  85. $query= "
  86. SELECT COUNT(*), cpt, DATE_TRUNC('month', note.effective_dateest)
  87. FROM claim_line
  88. JOIN claim ON claim_line.claim_id = claim.id
  89. JOIN note ON claim.note_id = note.id
  90. JOIN client ON note.client_id = client.id
  91. WHERE client.id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY')
  92. GROUP BY 3, 2;
  93. " ;
  94. return DB::select( DB::raw($query), array($startDate,$endDate));
  95. }
  96. private function getTotalBilledAmount($startDate, $endDate){
  97. $query= "
  98. SELECT SUM(bill.total_paid)
  99. FROM bill
  100. JOIN note ON bill.note_id = note.id
  101. JOIN client ON bill.client_id = client.id
  102. WHERE client.id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY');
  103. ";
  104. return DB::select( DB::raw($query), array($startDate,$endDate));
  105. }
  106. }