123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- <?php
- namespace App\Http\Controllers;
- use App\Models\AppSession;
- use App\Models\Bill;
- use App\Models\Client;
- use App\Models\Note;
- use App\Models\ProRate;
- use App\Models\ProTransaction;
- use Illuminate\Http\Request;
- class PracticeManagementController extends Controller
- {
- public function dashboard(Request $request)
- {
- return view('app.practice-management.dashboard');
- }
- public function rates(Request $request)
- {
- $proID = $this->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'));
- }
- // 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 : '']);
- }
- }
|