first change

This commit is contained in:
2025-07-27 17:40:56 +05:45
commit f8b9a6725b
3152 changed files with 229528 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
<?php
namespace Modules\CourseFinder\Models;
use App\Traits\CreatedUpdatedBy;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\CourseFinder\Database\Factories\CoopFactory;
class Coop extends Model
{
use HasFactory, CreatedUpdatedBy;
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'title',
'slug',
'description',
'link',
'status',
'order',
'createdby',
'updatedby',
];
}

View File

@@ -0,0 +1,86 @@
<?php
namespace Modules\CourseFinder\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Modules\CCMS\Models\Institution;
use Modules\CCMS\Models\Test;
class Program extends Model
{
use HasFactory;
use \Staudenmeir\EloquentJsonRelations\HasJsonRelationships;
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'title',
'slug',
'code',
'description',
'institution_id',
'programlevel_id',
'coop_id',
'year',
'psw',
'prospects',
'intakes',
'required_documents',
'application_open',
'application_deadline',
'fee',
'scholarship',
'level',
'program_url',
'status',
'remarks',
'createdby',
'updatedby',
];
public const INTAKE = [
1 => 'January',
2 => 'February',
3 => 'March',
4 => 'April',
5 => 'May',
6 => 'June',
7 => 'July',
8 => 'August',
9 => 'September',
10 => 'October',
11 => 'November',
12 => 'December',
];
protected $casts = [
'intakes' => 'array',
'required_documents' => 'json',
'prof_test_accepted' => 'object',
'level' => 'object',
];
public function institution()
{
return $this->belongsTo(Institution::class, 'institution_id');
}
public function programLevel()
{
return $this->belongsTo(ProgramLevel::class, 'programlevel_id');
}
public function tests(): BelongsToMany
{
return $this->belongsToMany(Test::class, 'programs_tests', 'program_id', 'test_id')->withPivot('id', 'min_score', 'band_score')->withTimestamps();
}
public function requiredDocuments()
{
return $this->belongsToJson(RequiredDocument::class, 'required_documents');
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace Modules\CourseFinder\Models;
use App\Traits\CreatedUpdatedBy;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\CourseFinder\Database\Factories\ProgramLevelFactory;
class ProgramLevel extends Model
{
use HasFactory, CreatedUpdatedBy;
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'title',
'slug',
'description',
'link',
'status',
'order',
'createdby',
'updatedby',
];
}

View File

@@ -0,0 +1,38 @@
<?php
namespace Modules\CourseFinder\Models;
use App\Traits\CreatedUpdatedBy;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
// use Modules\CourseFinder\Database\Factories\RequiredDocumentFactory;
class RequiredDocument extends Model
{
use HasFactory, CreatedUpdatedBy;
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'title',
'slug',
'link',
'image',
'status',
'order',
'createdby',
'updatedby',
];
protected function image(): Attribute
{
return Attribute::make(
get: fn($value) => asset($value),
);
}
}