MessageController.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Support\Facades\Route;
  4. use App\Models\Client;
  5. use App\Models\Company;
  6. use App\Models\Pro;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\DB;
  9. use Illuminate\Support\Facades\File;
  10. use App\Models\InternalMessage;
  11. use OpenTok\MediaMode;
  12. use OpenTok\OpenTok;
  13. use Ramsey\Collection\CollectionInterface;
  14. class MessageController extends Controller
  15. {
  16. protected $opentok;
  17. protected $otSession;
  18. protected $otSessionId;
  19. protected $otToken;
  20. public function __construct(Request $request)
  21. {
  22. parent::__construct();
  23. $this->opentok = new OpenTok(config('app.opentokApiKey'),config('app.opentokApiSecret'));
  24. $this->otSession = $this->opentok->createSession(array('mediaMode' => MediaMode::ROUTED));
  25. $this->otSessionId = $this->otSession->getSessionId();
  26. $this->otToken = $this->opentok->generateToken($this->otSessionId);
  27. view()->share('opentok',$this->opentok);
  28. view()->share('otSession',$this->otSession);
  29. view()->share('otSessionId',$this->otSessionId);
  30. view()->share('otToken',$this->otToken);
  31. }
  32. public function messages(Request $request, Client $patient){
  33. $defaultCompanyUid = $request->get('orgUid');
  34. if(!$defaultCompanyUid){
  35. $defaultCompany = $patient->companyClients->first();
  36. $defaultCompanyUid = $defaultCompany->company->uid;
  37. $defaultCompanyID = $defaultCompany->company->id;
  38. }else{
  39. $defaultCompany = Company::where('uid', $defaultCompanyUid)->first();
  40. $defaultCompanyID = $defaultCompany->id;
  41. }
  42. if(!$defaultCompany) return view('app.patient.messages-no-company', compact('patient'));
  43. $regardingClient = $patient;
  44. $messages = InternalMessage::where('regarding_company_id', $defaultCompanyID)->where('regarding_client_id', $patient->id)->orderBy('created_at', 'ASC')->paginate(25);
  45. return view('app.patient.messages', compact('patient', 'regardingClient', 'messages', 'defaultCompany'));
  46. }
  47. public function clientMessagesAttachments(Request $request, Client $patient, InternalMessage $message)
  48. {
  49. if(!$message) return '';
  50. $output = [];
  51. foreach ($message->attachments as $attachment) {
  52. $output[] = '<a native target="_blank" ' .
  53. 'href="/api/internalMessageAttachment/download/' . $attachment->uid . '" ' .
  54. 'class="attachment text-sm my-1">' .
  55. '<i class="fa fa-paperclip"></i>&nbsp;' .
  56. $attachment->systemFile->file_name .
  57. '</a>';
  58. }
  59. return implode("", $output);
  60. }
  61. }