Skip to content

Package: webinar

Generated from api/packages/webinar

Source: api/packages/webinar · imported version 0.1.44. The sections after the README are extracted from the code on every docs build.

Package enabling live video stream

This package is used for creating Webinar for Ulams.

  • composer require ulams/webinar
  • php artisan migrate
  • php artisan db:seed --class="Ulams\Webinar\Database\Seeders\WebinarsPermissionSeeder"
  • Integration with Youtube
  • In App\Console\Kernel to method schedule add
    • $schedule->job(new ReminderAboutWebinarJob(WebinarTermReminderStatusEnum::REMINDED_HOUR_BEFORE))->everyFiveMinutes() - reminder about to webinar before one hour, executed every 5 minutes
    • $schedule->job(new ReminderAboutWebinarJob(WebinarTermReminderStatusEnum::REMINDED_DAY_BEFORE))->everySixHours(); - reminder about to webinar before one day, executed every 6 hours

All the endpoints are defined in swagger

Run ./vendor/bin/phpunit --filter=Webinar to run tests. See tests folder as it’s quite good staring point as documentation appendix.

Test details codecov phpunit

  • Ulams\Webinar\Events\ReminderAboutTerm => Event is dispatched after execute cron job Ulams\Webinar\Jobs\ReminderAboutWebinarJob, Event is dispatched when deadline for purchased webinars before 1 hours and 1 day
  • Ulams\Webinar\Events\WebinarTrainerAssigned => Event is dispatched after assigned trainer to webinar
  • Ulams\Webinar\Events\WebinarTrainerUnassigned => Event is dispatched after unassigned trainer from webinar
  • Ulams\Webinar\Listeners\ReminderAboutTermListener => Listener execute a method that singed the status in the webinar reminder
sequenceDiagram

    box Embeed in Web App     
    participant Jisti
    actor Tutor
    participant Youtube
    participant Web App
    actor Student
    end

    box Administration
    participant Admin Panel
    actor Admin
    end 

    Admin->>Admin Panel: Creates a webinar instance
    Student->>Web App: Get access to webinar (eg. buys)
    Tutor->>Web App: (on the day of the event) Broadcast 
    Web App->>Jisti: Broadcast with Jitsu GUI 
    Jisti->>Youtube: Broadcast to public 
    Youtube->>Web App: forward for public
    Student->>Web App: Watches webinar with YT GUI

Permissions are defined in seeder

  1. Trainers Webinar is related belongs to many with User
  2. Tags Webinar model morph many to model tags
  3. Users Webinar is related belongs to many with User which bought webinar
Webinar 1 -> n User
Webinar 1 -> n Tags
Webinar 1 -> n User
Method Path Auth Action
POST /api/admin/webinars/{id} yes WebinarController@update
GET /api/admin/webinars/{id}/users yes WebinarController@webinarUsers
GET /api/admin/webinars yes WebinarController@index
GET /api/admin/webinars/create yes WebinarController@create
POST /api/admin/webinars yes WebinarController@store
GET /api/admin/webinars/{id} yes WebinarController@show
GET /api/admin/webinars/{id}/edit yes WebinarController@edit
PUT|PATCH /api/admin/webinars/{id} yes WebinarController@update
DELETE /api/admin/webinars/{id} yes WebinarController@destroy
GET /api/admin/webinars/users/assignable yes WebinarController@assignableUsers
GET /api/webinars/me yes WebinarAPIController@forCurrentUser
GET /api/webinars/generate-jitsi/{id} yes WebinarAPIController@generateJitsi
GET /api/webinars/start-live-stream/{id} yes WebinarAPIController@startLiveStream
GET /api/webinars/stop-live-stream/{id} yes WebinarAPIController@stopLiveStream
GET /api/webinars WebinarAPIController@index
GET /api/webinars/{id} WebinarAPIController@show
Permission Seeded for roles Constant
webinar_list admin WebinarPermissionsEnum::WEBINAR_LIST
webinar_create admin, tutor WebinarPermissionsEnum::WEBINAR_CREATE
webinar_update admin WebinarPermissionsEnum::WEBINAR_UPDATE
webinar_delete admin WebinarPermissionsEnum::WEBINAR_DELETE
webinar_read admin WebinarPermissionsEnum::WEBINAR_READ
webinar_list-own tutor WebinarPermissionsEnum::WEBINAR_LIST_OWN
webinar_update-own tutor WebinarPermissionsEnum::WEBINAR_UPDATE_OWN
webinar_delete-own tutor WebinarPermissionsEnum::WEBINAR_DELETE_OWN
webinar_read-own tutor WebinarPermissionsEnum::WEBINAR_READ_OWN

Registered with AdministrableConfig::registerConfig (editable in the admin panel under Configuration → Settings).

None.

Event Description Notification templates
ReminderAboutTerm Email, Email, Sms
WebinarTrainerAssigned Email
WebinarTrainerUnassigned Email
WebinarUserAssigned
WebinarUserUnassigned

None.

None.

None.

AWS_ACCESS_KEY_ID