File "LessonTopic.php"
Full Path: /home/trinadezambia/public_html/admin_panel/app/Models/LessonTopic.php
File size: 5.89 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use App\Traits\DateFormatTrait;
use App\Services\CachingService;
class LessonTopic extends Model
{
use HasFactory, DateFormatTrait;
protected $fillable = [
'name',
'description',
'lesson_id',
'school_id'
];
protected static function boot()
{
parent::boot();
static::deleting(static function ($topic) { // before delete() method call this
if ($topic->file) {
foreach ($topic->file as $file) {
if (Storage::disk('public')->exists($file->getRawOriginal('file_url'))) {
Storage::disk('public')->delete($file->getRawOriginal('file_url'));
}
if ($file->file_thumbnail && Storage::disk('public')->exists($file->getRawOriginal('file_thumbnail'))) {
Storage::disk('public')->delete($file->getRawOriginal('file_thumbnail'));
}
}
$topic->file()->delete();
}
});
}
public function scopeOwner($query)
{
if (Auth::user()) {
if (Auth::user()->hasRole('Super Admin')) {
return $query;
}
$sessionYearId = app(CachingService::class)->getSessionYear()->id;
if (Auth::user()->hasRole('School Admin')) {
return $query->where('school_id', Auth::user()->school_id)->whereHas('lesson.lesson_commons.syllabus.class_subject', function ($q) use ($sessionYearId) {
$q->where('session_year_id', $sessionYearId);
});
}
if (Auth::user()->hasRole('Teacher')) {
// $subject_teacher = SubjectTeacher::select(['class_section_id', 'class_subject_id'])->where(['teacher_id' => Auth::user()->id, 'school_id' => Auth::user()->school_id])->get();
// if ($subject_teacher) {
// $subject_teacher = $subject_teacher->toArray();
// $class_section_id = array_column($subject_teacher, 'class_section_id');
// $class_subject_id = array_column($subject_teacher, 'class_subject_id');
// $lesson_id = Lesson::select('id')->whereIn('class_section_id', $class_section_id)->whereIn('class_subject_id',$class_subject_id)->get()->pluck('id');
// return $query->whereIn('lesson_id', $lesson_id);
// }
$teacherId = Auth::user()->id;
return $query->whereHas('lesson.lesson_commons.syllabus.class_subject.subject_teacher', function ($query) use ($teacherId, $sessionYearId) {
$query->where(['teacher_id' => $teacherId, 'session_year_id' => $sessionYearId])
->whereColumn('class_section_id', 'class_section_id');
})->where('school_id', Auth::user()->school_id);
return $query->where('school_id', Auth::user()->school_id);
}
if (Auth::user()->hasRole('Student')) {
return $query->where('school_id', Auth::user()->school_id)->whereHas('lesson.lesson_commons.syllabus.class_subject', function ($q) use ($sessionYearId) {
$q->where('session_year_id', $sessionYearId);
});
}
}
return $query;
}
public function file()
{
return $this->morphMany(File::class, 'modal');
}
// public function topic_commons() {
// return $this->hasMany(TopicCommon::class, 'lesson_topics_id');
// }
public function lesson()
{
return $this->belongsTo(Lesson::class);
}
public function subject_teacher()
{
return $this->hasMany(SubjectTeacher::class, 'class_subject_id', 'class_subject_id');
}
public function lesson_topics()
{
return $this->hasMany(LessonTopic::class, 'lesson_id', 'lesson_id');
}
public function class_section()
{
return $this->belongsTo(ClassSection::class, 'class_section_id', 'id');
}
public function class_subject()
{
return $this->belongsTo(ClassSubject::class, 'class_subject_id', 'id');
}
// public function scopeLessonTopicTeachers($query)
// {
// $user = Auth::user();
// if ($user->hasRole('Teacher')) {
// // $teacher_id = $user->teacher()->select('id')->pluck('id')->first();
// // $subject_teacher = SubjectTeacher::select('class_section_id', 'subject_id')->where('teacher_id', $teacher_id)->get();
// $subject_teacher = SubjectTeacher::select('class_section_id', 'subject_id')->where('teacher_id', $user->id)->get();
// if ($subject_teacher) {
// $subject_teacher = $subject_teacher->toArray();
// $class_section_id = array_column($subject_teacher, 'class_section_id');
// $subject_id = array_column($subject_teacher, 'subject_id');
// $lesson_id = Lesson::select('id')->whereIn('class_section_id', $class_section_id)->whereIn('subject_id', $subject_id)->get()->pluck('id');
// return $query->whereIn('lesson_id', $lesson_id);
// }
// return $query;
// }
// return $query;
// }
public function getCreatedAtAttribute()
{
return $this->formatDateValue($this->getRawOriginal('created_at'));
}
public function getUpdatedAtAttribute()
{
return $this->formatDateValue($this->getRawOriginal('updated_at'));
}
/**
* Get all of the lesson_topic_class for the LessonTopic
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function lesson_topic_class()
{
return $this->hasMany(LessonTopicClass::class, 'lesson_topic_id', 'id');
}
}