performer()->pro->id; $rates = ProRate::where('pro_id', $proID)->where('is_active', true)->orderBy('created_at', 'desc')->get(); return view('app.practice-management.rates', compact('rates')); } public function previousBills(Request $request) { return view('app.practice-management.previous-bills'); } public function financialTransactions(Request $request) { $transactions = ProTransaction::where('pro_id', $this->performer()->pro->id)->orderBy('created_at', 'desc')->get(); return view('app.practice-management.financial-transactions', compact('transactions')); } public function pendingBillsToSign(Request $request) { return view('app.practice-management.pending-bills-to-sign'); } public function HR(Request $request) { return view('app.practice-management.hr'); } public function directDepositSettings(Request $request) { return view('app.practice-management.direct-deposit-settings'); } public function w9(Request $request) { return view('app.practice-management.w9'); } public function contract(Request $request) { return view('app.practice-management.contract'); } public function notes(Request $request, $filter = '') { $proID = $this->performer()->pro->id; $query = Note::where('hcp_pro_id', $proID); switch ($filter) { case 'not-yet-signed': $query = $query->where('is_signed_by_hcp', false); break; // more cases can be added as needed default: break; } $notes = $query->orderBy('created_at', 'desc')->get(); return view('app.practice-management.notes', compact('notes', 'filter')); } public function bills(Request $request, $filter = '') { $proID = $this->performer()->pro->id; $query = Bill::where('is_cancelled', false); switch ($filter) { case 'not-yet-signed': $query = $query ->where(function ($q) use($proID) { $q->where(function ($q2) use ($proID) { $q2->where('hcp_pro_id', $proID)->where('is_signed_by_hcp', false); }) ->orWhere(function ($q2) use ($proID) { $q2->where('cm_pro_id', $proID)->where('is_signed_by_cm', false); }) ->orWhere(function ($q2) use ($proID) { $q2->where('rme_pro_id', $proID)->where('is_signed_by_rme', false); }) ->orWhere(function ($q2) use ($proID) { $q2->where('rmm_pro_id', $proID)->where('is_signed_by_rmm', false); }); }); break; case 'previous': $query = $query ->where(function ($q) use($proID) { $q->where(function ($q2) use ($proID) { $q2->where('hcp_pro_id', $proID)->where('is_signed_by_hcp', true); }) ->orWhere(function ($q2) use ($proID) { $q2->where('cm_pro_id', $proID)->where('is_signed_by_cm', true); }) ->orWhere(function ($q2) use ($proID) { $q2->where('rme_pro_id', $proID)->where('is_signed_by_rme', true); }) ->orWhere(function ($q2) use ($proID) { $q2->where('rmm_pro_id', $proID)->where('is_signed_by_rmm', true); }); }); break; // more cases can be added as needed default: break; } $bills = $query->orderBy('created_at', 'desc')->get(); return view('app.practice-management.bills', compact('bills', 'filter')); } public function myTextShortcuts(Request $request) { $performer = $this->performer(); $myTextShortcuts = ProTextShortcut::where('pro_id', $performer->pro_id)->get(); return view('app.practice-management.my-text-shortcuts', compact('myTextShortcuts')); } // video call page (RHS) // generic call handle (no uid) // specific call handle (uid of client) public function meet(Request $request, $uid = false) { $session = AppSession::where('session_key', $request->cookie('sessionKey'))->first(); $client = !empty($uid) ? Client::where('uid', $uid)->first() : null; return view('app.video.call', compact('session', 'client')); } // ajax ep used by the video page // this is needed bcoz meet() is used not // just for the client passed to the view public function getOpentokSessionKey(Request $request, $uid) { $client = Client::where('uid', $uid)->first(); return json_encode(["data" => $client ? $client->opentok_session_id : '']); } }