%PDF- %PDF-
Direktori : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/v1/ |
Current File : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/v1/ChatController.php |
<?php namespace App\Http\Controllers\Api\v1; use App\Http\Controllers\Api\ApiController; use App\Http\Requests\Api\v1\Twilio\GenerateAccessTokenRequest; use App\Models\ChatRoom; use App\Models\User; use App\Services\KlinisolChat; use App\Transformers\App\ChatRoomTransformer; use Carbon\Carbon; use Illuminate\Http\Request; class ChatController extends ApiController { public function index(Request $request) { $chatRooms = ChatRoom::query() ->where('status', ChatRoom::STARTED) ->paginate($request->get('perPage')); return $this->withPaginated($chatRooms, new ChatRoomTransformer()); } public function generateAccessToken(GenerateAccessTokenRequest $request) { $room = $request->get('room'); /** @var User $user */ $user = auth() ->guard('api') ->user(); $res = KlinisolChat::generateToken($user, $room); /** @var ChatRoom $chat */ $chat = ChatRoom::query() ->where('name', $room) ->where('status', '=', ChatRoom::STARTED) ->firstOrFail(); $chat->user_id = $user->id; $chat->status = ChatRoom::IN_PROGRESS; $chat->save(); return response()->json([ 'identity' => $res['identity'], 'token' => $res['token'], 'has_video' => $chat->has_video, ], 200); } public function videoWebhook(Request $request) { $roomStatus = $request->get("RoomStatus"); if ($roomStatus === "completed") { $roomSid = $request->get("RoomSid"); $chat = ChatRoom::query() ->where('sid', $roomSid) ->firstOrFail(); $chat->finished_at = Carbon::now(); $chat->status = ChatRoom::FINISHED; $chat->save(); } return response()->json([], 200); } }