MessageController.php 2.5 KB

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