%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/camillo/camillo-api-master/app/Observers/
Upload File :
Create Path :
Current File : /var/www/html/camillo/camillo-api-master/app/Observers/ClassroomObserver.php

<?php

namespace App\Observers;

use App\Models\Classroom;
use Chatkit\Chatkit;

class ClassroomObserver
{
    /**
     * Handle the user "created" event.
     *
     * @param \App\Models\Classroom $classroom
     *
     * @return void
     * @throws \Chatkit\Exceptions\MissingArgumentException
     * @throws \Chatkit\Exceptions\TypeMismatchException
     */
    public function created(Classroom $classroom)
    {
        $chatkit = new Chatkit([
            'instance_locator' => env('PUSHER_APP_KEY'),
            'key'              => env('PUSHER_APP_SECRET'),
        ]);

        $current_user = auth()->user()
            ? auth()->user()
            : auth('api')->user();

        $chatkitUsers = $chatkit->getUsersByID([
            'user_ids' => [$current_user->email]
        ]);
        if (count($chatkitUsers['body']) === 0) {
            $chatkitUser = $chatkit->createUser([
                'id'   => $current_user->email,
                'name' => $current_user->individual->name . ' ' . $current_user->individual->surname
            ]);
            $current_user->update([
                'pusher_id' => $chatkitUser['body']['id']
            ]);
        }

        $room = $chatkit->createRoom([
            'creator_id' => $current_user->email,
            'name' => $classroom->class_name . '-' . $classroom->schoolyear->description,
            'user_ids' => [],
            'private' => true,
            'custom_data' => [
                'start_date' => $classroom->schoolyear->start_date,
                'end_date'   => $classroom->schoolyear->end_date
            ],
        ]);
        $classroom->update([
           'pusher_id' => $room['body']['id']
        ]);
    }

    /**
     * @param \App\Models\Classroom $classroom
     *
     * @throws \Chatkit\Exceptions\MissingArgumentException
     */
    public function deleted(Classroom $classroom) {
        if ($classroom->pusher_id) {
            $chatkit = new Chatkit([
                'instance_locator' => env('PUSHER_APP_KEY'),
                'key'              => env('PUSHER_APP_SECRET'),
            ]);
            try {
                $chatkit->deleteRoom(['id' => $classroom->pusher_id]);
            }
            catch (\Exception $exception) {}
        }
    }
}

Zerion Mini Shell 1.0