ProController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Appointment;
  4. use App\Models\ClientMemo;
  5. use App\Models\Meeting;
  6. use App\Models\MeetingParticipant;
  7. use Illuminate\Http\Request;
  8. use App\Models\Pro;
  9. use Illuminate\Support\Facades\DB;
  10. class ProController extends Controller
  11. {
  12. public function dashboard(Request $request){
  13. $memos = ClientMemo::where('is_cancelled', false)->orderBy('created_at', 'desc')->get();
  14. $appointments = Appointment::orderBy('created_at', 'desc')->get();
  15. return view('pro.dashboard', [
  16. 'sessionKey' => $request->cookie('sessionKey'),
  17. 'memos' => $memos,
  18. 'appointments' => $appointments,
  19. ]);
  20. }
  21. public function index(){
  22. $pros = Pro::all();
  23. return view('pro.index', compact('pros'));
  24. }
  25. public function create(){
  26. return view('pro.create');
  27. }
  28. public function show($uid, Request $request){
  29. $pro = Pro::where('uid', $uid)->first();
  30. return view('pro.show', compact('pro'));
  31. }
  32. public function meeting(Request $request, $meetingID) {
  33. $meeting = Meeting::where('uid', $meetingID)->first();
  34. if(!$meeting) {
  35. return abort(404, "Meeting no longer active");
  36. }
  37. $participants = MeetingParticipant::where('meeting_id', $meeting->id)->get();
  38. foreach ($participants as $participant) {
  39. $participant->proName = $participant->proName(); // eager-fill proName
  40. }
  41. return view('meeting', [
  42. 'meetingID' => $meetingID,
  43. 'participants' => $participants,
  44. 'guest' => false
  45. ]);
  46. }
  47. public function meet(Request $request, $uid = false) {
  48. $session = DB::table('app_session')->where('session_key', $request->cookie('sessionKey'))->first();
  49. $pro = false;
  50. if($session && $session->pro_id) {
  51. $pro = DB::table('pro')->where('id', $session->pro_id)->first();
  52. }
  53. $client = null;
  54. if(!empty($uid)) {
  55. $client = DB::table('client')->where('uid', $uid)->first();
  56. }
  57. else if($pro->in_meeting_with_client_id) {
  58. $client = DB::table('client')->where('id', $pro->in_meeting_with_client_id)->first();
  59. }
  60. return view('pro-call', [
  61. 'guest' => false,
  62. 'session' => $session,
  63. 'pro' => $pro,
  64. 'client' => $client
  65. ]);
  66. }
  67. public function getOpentokSessionKey(Request $request, $uid) {
  68. $client = DB::table('client')->where('uid', $uid)->first();
  69. return json_encode([
  70. "data" => $client->opentok_session_id
  71. ]);
  72. }
  73. }