File "ExamTimetable.php"
Full Path: /home/trinadezambia/public_html/admin_panel/app/Models/ExamTimetable.php
File size: 3.5 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Models;
use Awobaz\Compoships\Compoships;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
use App\Traits\DateFormatTrait;
class ExamTimetable extends Model
{
use HasFactory;
use Compoships;
use DateFormatTrait;
protected $fillable = [
'exam_id',
'class_id',
'class_subject_id',
'total_marks',
'passing_marks',
'start_time',
'end_time',
'date',
'session_year_id',
'school_id',
'created_at',
'updated_at',
];
protected $hidden = ['created_at', 'updated_at'];
protected $appends = ['subject_with_name'];
protected $timeOnly = ['start_time', 'end_time'];
protected $dateOnly = ['date'];
public function class_subject()
{
return $this->belongsTo(ClassSubject::class, 'class_subject_id');
}
public function exam()
{
return $this->belongsTo(Exam::class, 'exam_id')->withTrashed();
}
public function class()
{
return $this->belongsTo(ClassSchool::class, 'class_id')->withTrashed();
}
public function session_year()
{
return $this->belongsTo(SessionYear::class, 'session_year_id')->withTrashed();
}
public function exam_marks()
{
return $this->hasMany(ExamMarks::class, 'exam_timetable_id');
}
public function scopeOwner($query)
{
if (Auth::user()) {
if (Auth::user()->hasRole('Super Admin')) {
return $query;
}
if (Auth::user()->hasRole('School Admin') || Auth::user()->hasRole('Teacher')) {
return $query->where('school_id', Auth::user()->school_id);
}
if (Auth::user()->hasRole('Student')) {
$studentAuth = Auth::user()->student;
$studentAuth->selectedStudentSubjects();
$class_subject_ids = $studentAuth->selectedStudentSubjects()->pluck('class_subject_id');
return $query->whereIn('class_subject_id', $class_subject_ids)->where('school_id', Auth::user()->school_id);
}
if (Auth::user()->hasRole('Guardian')) {
$childId = request('child_id');
$studentAuth = Students::where('id', $childId)->first();
$class_subject_ids = $studentAuth->selectedStudentSubjects()->pluck('class_subject_id');
return $query->whereIn('class_subject_id', $class_subject_ids)->where('school_id', $studentAuth->school_id);
}
}
return $query;
}
public function getSubjectWithNameAttribute()
{
if ($this->relationLoaded('class_subject')) {
if ($this->class_subject) {
return $this->class_subject->subject->name . ' - ' . $this->class_subject->subject->type;
}
}
return null;
}
/**
* Get the subject_teacher that owns the ExamTimetable
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function subject_teacher()
{
return $this->belongsTo(SubjectTeacher::class, 'class_subject_id', 'class_subject_id');
}
public function getStartTimeAttribute($value)
{
return $this->formatTimeOnly($value);
}
public function getEndTimeAttribute($value)
{
return $this->formatTimeOnly($value);
}
public function getDateAttribute($value)
{
return $this->formatDateOnly($value);
}
}