<?php namespace Wc\Lms\Entities; use Illuminate\Database\Eloquent\Model; use Pta\Formbuilder\Traits\ModelSchemaBuilderTrait; use Pta\Formbuilder\Lib\Fields\SelectField; use Wc\Lms\Src\Entities\Department; class Course extends Model { use ModelSchemaBuilderTrait; protected $table = 'courses'; protected $guarded = [ 'id', ]; protected $skipFields = [ 'start_date', 'end_date', 'created_at', 'deleted_at', 'new', 'active', 'updated_at', 'rolling_enrollment', 'enrollment_type' ]; /** * Create Relationship with CreditTypes * @return CreditType many-to-many relationship */ public function credits() { return $this->belongsToMany('Modules\Lms\Entities\CreditType', 'course_credit_type')->withPivot('key', 'value', 'course_code', 'course_price', 'transfer', 'transfer_level', 'proctored', 'prerequisite', 'active', 'deleted_at')->orderBy('weight', 'asc'); } /** * Links Relationship * @return link Many-to-Many relationship */ public function links() { return $this->belongsToMany('Modules\Lms\Src\Entities\Link')->orderBy('weight', 'asc'); } /** * Syllabus Relationship * @return Syllabus one-to-one relationship */ public function syllabus() { return $this->hasOne('Modules\Lms\Src\Entities\Syllabus'); } /** * CourseMenu Relationship * @return CourseMenu one-to-one relationship */ public function menu() { return $this->hasOne('Modules\Lms\Src\Entities\CourseMenu'); } /** * @return Department Relationship */ public function department() { return $this->belongsTo('Modules\Lms\Src\Entities\Department'); } /** * @return School Relationship */ public function schools() { return $this->belongsToMany('Modules\Lms\Src\Entities\School', 'school_course_credit_type')->withPivot('credit_type_id'); } /** * @return Section Relationship */ public function courseSections() { return $this->hasMany('Modules\Lms\Src\Entities\Section'); } public function department_id() { $department = new Department; return new SelectField($department, 'name', function() use ($department) { if(is_subclass_of($department, 'Illuminate\Database\Eloquent\Model')){ return $department->where('active',1)->get(array('id','name')); } return false; }); } }