%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/App/v1/
Upload File :
Create Path :
Current File : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/App/v1/ChatController.php

<?php

namespace App\Http\Controllers\Api\App\v1;

use App\Http\Controllers\Api\ApiController;
use App\Http\Requests\Api\App\v1\Twilio\GenerateAccessTokenRequest;
use App\Models\ChatRoom;
use App\Models\Patient;
use App\Models\User;
use App\Services\KlinisolChat;
use Carbon\Carbon;
use Illuminate\Http\Request;

class ChatController extends ApiController
{
    public function generateAccessToken(GenerateAccessTokenRequest $request)
    {
        /** @var Patient $patient */
        $patient = auth()
            ->guard('patient')
            ->user();
        $room = KlinisolChat::generatePatientToken($request, $patient, $request->get('protocol'), $request->get('has_video'));
        /** @var ChatRoom $res */
        $res = ChatRoom::query()
                       ->where('patient_id', $patient->id)
                       ->where('protocol_id', $request->get('protocol'))
                       ->where('has_video', $request->get('has_video'))
                       ->where('status', '=', ChatRoom::STARTED)
                       ->first();
        if ($res) {
            $res->created_at = Carbon::now();
            $res->name = $room['room_name'];
            $res->sid = $room['room_sid'];
            $res->save();
        } else {
            ChatRoom::query()
                    ->create([
                        'patient_id'  => $patient->id,
                        'protocol_id' => $request->get('protocol'),
                        'has_video'   => $request->get('has_video'),
                        'name'        => $room['room_name'],
                        'sid'         => $room['room_sid'],
                        'status'      => ChatRoom::STARTED,
                    ]);
        }

        return response()->json($room, 200);
    }
}

Zerion Mini Shell 1.0