<?php
namespace App\Listeners;
use App\Events\OneToOneConnection;
use Modules\Chat\Entities\Group;
use Modules\Chat\Entities\GroupUser;
use Modules\Chat\Entities\Invitation;
class ListenOneToOneConnection
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param OneToOneConnection $event
* @return void
*/
public function handle(OneToOneConnection $event)
{
if ($event->course->type == 1){
$groupName = $this->groupName($event);
$group = Group::where('name', 'LIKE', '%'.$groupName.'%')->first();
if ($group){
if (!is_null($event->student)){
GroupUser::updateOrcreate(
[
'group_id' => $group->id,
'user_id' => $event->student->id,
],[
'group_id' => $group->id,
'user_id' => $event->student->id,
'added_by' => $event->instructor->id,
'role' => 3
]);
}
}else{
$group = Group::create([
'name' => $groupName,
'created_by' => $event->instructor->id,
]);
$this->groupUserCreate($group->id, $event->instructor->id, $event->instructor->id, 1);
if (!is_null($event->student)){
$this->groupUserCreate($group->id, $event->student->id, $event->instructor->id);
}
}
if (!is_null($event->student) && !$event->instructor->connectedWithLoggedInUser()){
Invitation::create([
'from' => $event->instructor->id,
'to' => $event->student->id,
'status' => 1,
]);
}
}
}
public function groupName(OneToOneConnection $event)
{
$event->course;
$code = $event->course->id.$event->instructor->id;
return $event->course->title. '-('.$code.')';
}
public function groupUserCreate($groupId, $userId, $addedById, $role =3)
{
GroupUser::create([
'group_id' => $groupId,
'user_id' => $userId,
'added_by' => $addedById,
'role' => $role
]);
}
}