|
Server : Apache/2.4.41 (Ubuntu) System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64 User : www-data ( 33) PHP Version : 8.2.12 Disable Function : NONE Directory : /var/www/lecturebazaar.com/app/Models/Api/ |
Upload File : |
<?php
namespace App\Models\Api ;
use App\Models\Support as Model ;
class Support extends Model{
public function department()
{
return $this->belongsTo('App\Models\SupportDepartment', 'department_id', 'id');
}
public function user()
{
return $this->belongsTo('App\Models\Api\User', 'user_id', 'id');
}
public function webinar()
{
return $this->belongsTo('App\Models\Api\Webinar', 'webinar_id', 'id');
}
public function conversations()
{
return $this->hasMany('App\Models\Api\SupportConversation', 'support_id', 'id');
}
public function getDetailsAttribute(){
return [
'id'=>$this->id ,
'department'=>$this->department->title??null ,
'status'=>$this->status ,
'type' => ($this->webinar_id) ? 'course_support' : 'platform_support',
'title'=>$this->title ,
'webinar'=>$this->webinar->brief??null ,
'user'=>$this->user->brief ,
'conversations'=>$this->conversations->map(function($conversation){
return $conversation->brief ;
}) ,
'created_at'=>$this->created_at ,
'updated_at'=>$this->updated_at ,
] ;
}
public function scopeHandleFilters($query, $userWebinarsIds = [])
{
$request=request() ;
$from = $request->get('from');
$to = $request->get('to');
$role = $request->get('role');
$student_id = $request->get('student');
$teacher_id = $request->get('teacher');
$webinar_id = $request->get('webinar');
$department = $request->get('department');
$status = $request->get('status');
$query = fromAndToDateFilter($from, $to, $query, 'created_at');
if (!empty($role) and $role == 'student' and (empty($student_id) or $student_id == 'all')) {
$studentsIds = Sale::whereIn('webinar_id', $userWebinarsIds)
->whereNull('refund_at')
->pluck('buyer_id')
->toArray();
$query->whereIn('user_id', $studentsIds);
}
if (!empty($student_id) and $student_id != 'all') {
$query->where('user_id', $student_id);
}
if (!empty($teacher_id) and $teacher_id != 'all') {
$teacher = User::where('id', $teacher_id)
->where('status', 'active')
->first();
$teacherWebinarIds = $teacher->webinars->pluck('id')->toArray();
$query->whereIn('webinar_id', $teacherWebinarIds);
}
if (!empty($webinar_id) and $webinar_id != 'all') {
$query->where('webinar_id', $webinar_id);
}
if (!empty($status) and $status != 'all') {
$query->where('status', $status);
}
if (!empty($department) and $department != 'all') {
$query->where('department_id', $department);
}
return $query;
}
}