first commit

This commit is contained in:
f4ilji
2024-09-19 16:06:49 +05:00
commit b686638a39
1664 changed files with 428174 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class AcademicJournal extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'main_info' => 'array',
'chief_editor' => 'array',
'editors' => 'array',
'for_authors' => 'array',
];
public function journals()
{
return $this->hasMany(JournalIssue::class);
}
}
+26
View File
@@ -0,0 +1,26 @@
<?php
namespace App\Models;
use App\Enums\FormEducation;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class AdditionalEducation extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'content' => 'array',
'form_education' => FormEducation::class,
];
public function category()
{
return $this->belongsTo(AdditionalEducationCategory::class, 'category_id', 'id');
}
}
@@ -0,0 +1,23 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class AdditionalEducationCategory extends Model
{
use HasFactory;
protected $guarded = false;
public function additionalEducations()
{
return $this->hasMany(AdditionalEducation::class, 'category_id', 'id');
}
public function direction()
{
return $this->belongsTo(DirectionAdditionalEducation::class, 'dir_addit_educat_id', 'id');
}
}
+38
View File
@@ -0,0 +1,38 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class AdmissionCampaign extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'info' => 'array'
];
public function degrees()
{
return $this->hasMany(CampaignDegree::class);
}
public function admission_plans()
{
return $this->hasMany(AdmissionPlan::class, 'admission_campaigns_id', 'id');
}
public function educationalPrograms()
{
return $this->hasManyThrough(
EducationalProgram::class,
AdmissionPlan::class,
'admission_campaigns_id', // внешний ключ в AdmissionPlan
'id', // внешний ключ в EducationalPrograms
'id', // локальный ключ в AdmissionCampaign
'educational_programs_id' // локальный ключ в AdmissionPlan
);
}
}
+28
View File
@@ -0,0 +1,28 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class AdmissionPlan extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'exams' => 'array',
'contests' => 'array'
];
public function educationalProgram()
{
return $this->belongsTo(EducationalProgram::class, 'educational_programs_id', 'id');
}
public function admissionCampaign()
{
return $this->belongsTo(AdmissionCampaign::class, 'admission_campaigns_id', 'id');
}
}
+13
View File
@@ -0,0 +1,13 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class ApplicantQuestion extends Model
{
use HasFactory;
protected $guarded = false;
}
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Author extends Model
{
use HasFactory;
}
+14
View File
@@ -0,0 +1,14 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class AuthorPost extends Model
{
use HasFactory;
protected $guarded = false;
protected $table = 'authors_posts';
}
+29
View File
@@ -0,0 +1,29 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class CampaignDegree extends Model
{
use HasFactory;
protected $guarded = false;
public function campaign()
{
return $this->belongsTo(AdmissionCampaign::class);
}
public function directionStudies()
{
return $this->hasMany(DirectionStudy::class);
}
public function directionStudiesHasPrograms()
{
return $this->hasMany(DirectionStudy::class)->has('programs');
}
}
+19
View File
@@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
class Category extends Model
{
use HasFactory;
protected $guarded = false;
public function posts() : HasMany
{
return $this->hasMany(Post::class);
}
}
+25
View File
@@ -0,0 +1,25 @@
<?php
namespace App\Models;
use App\Enums\CustomFormStatus;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class CustomForm extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'columns' => 'array',
'status' => CustomFormStatus::class,
'mail_settings' => 'array',
];
public function responses()
{
return $this->hasMany(CustomFormResponse::class, 'custom_form_id', 'id');
}
}
+22
View File
@@ -0,0 +1,22 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class CustomFormResponse extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'answers' => 'array'
];
public function form()
{
return $this->belongsTo(CustomForm::class, 'custom_form_id', 'id');
}
}
+37
View File
@@ -0,0 +1,37 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Department extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'content' => 'array',
];
public function faculty()
{
return $this->belongsTo(Faculty::class);
}
public function workers()
{
return $this->belongsToMany(User::class, 'workers_departments')->withPivot(['position']);
}
public function programs()
{
return $this->belongsToMany(EducationalProgram::class, 'program_department');
}
public function teachers()
{
return $this->belongsToMany(User::class, 'teachers_departments')->withPivot(['teaching_position']);
}
}
@@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class DirectionAdditionalEducation extends Model
{
use HasFactory;
protected $guarded = false;
public function additionalEducationCategories()
{
return $this->hasMany(AdditionalEducationCategory::class, 'dir_addit_educat_id', 'id');
}
}
+68
View File
@@ -0,0 +1,68 @@
<?php
namespace App\Models;
use App\Enums\LevelEducational;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
class DirectionStudy extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'lvl_edu' => LevelEducational::class,
];
public function degree()
{
return $this->belongsTo(CampaignDegree::class, 'campaign_degree_id', 'id');
}
public function programs()
{
return $this->hasMany(EducationalProgram::class);
}
public function scopeWithActivePrograms(Builder $query)
{
return $query->with(['programs' => function ($query) {
$query->whereHas('admission_plans.admissionCampaign', function ($q) {
$q->where('status', 1);
});
}]);
}
public function scopeWithActiveAdmissionCampaign(Builder $query)
{
return $query->whereHas('programs.admission_plans.admissionCampaign', function ($q) {
$q->where('status', 1);
});
}
public function scopeWithAdmissionCampaignByYear(Builder $query, string $year)
{
return $query->whereHas('programs.admission_plans.admissionCampaign', function ($q) use ($year) {
$q->where('status', 1)->where('academic_year', $year);
});
}
public function scopeForBachelorLevel(Builder $query)
{
return $query->where('lvl_edu', LevelEducational::BACHELOR);
}
public function scopeForMiddleLevel(Builder $query)
{
return $query->whereIn('lvl_edu', [LevelEducational::MIDDLE_LEVEL_SPECIALIST_TRAINING, LevelEducational::PREPARATION_OF_QUALIFIED_WORKERS]);
}
public function scopeForMasterLevel(Builder $query)
{
return $query->where('lvl_edu', LevelEducational::MASTER);
}
}
+22
View File
@@ -0,0 +1,22 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Division extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'description' => 'array',
];
public function workers()
{
return $this->belongsToMany(User::class, 'division_user')->withPivot(['administrativePosition', 'sort']);
}
}
+22
View File
@@ -0,0 +1,22 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class EducationalGroup extends Model
{
use HasFactory;
protected $guarded = false;
public function faculty()
{
return $this->belongsTo(Faculty::class);
}
public function schedules()
{
return $this->hasMany(Schedule::class);
}
}
+38
View File
@@ -0,0 +1,38 @@
<?php
namespace App\Models;
use App\Enums\LevelEducational;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class EducationalProgram extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'program_features' => 'array',
'about_program' => 'array',
'learning_forms' => 'array',
'lvl_edu' => LevelEducational::class,
];
public function directionStudy()
{
return $this->belongsTo(DirectionStudy::class);
}
public function departments()
{
return $this->belongsToMany(Department::class, 'program_department');
}
public function admission_plans()
{
return $this->hasMany(AdmissionPlan::class, 'educational_programs_id', 'id');
}
}
+24
View File
@@ -0,0 +1,24 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Spatie\Tags\HasTags;
class Event extends Model
{
use HasFactory, HasTags;
protected $guarded = false;
protected $casts = [
'content' => 'array',
];
public function category() : BelongsTo
{
return $this->belongsTo(EventCategory::class);
}
}
+19
View File
@@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
class EventCategory extends Model
{
use HasFactory;
protected $guarded = false;
public function events() : HasMany
{
return $this->hasMany(Event::class, 'category_id', 'id');
}
}
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class ExternalVacancy extends Model
{
use HasFactory;
}
+30
View File
@@ -0,0 +1,30 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Faculty extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'content' => 'array',
];
public function departments()
{
return $this->hasMany(Department::class);
}
public function workers()
{
return $this->belongsToMany(User::class, 'workers_faculties')->withPivot(['position'])->whereHas('userDetail');
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Gallery extends Model
{
use HasFactory;
protected $guarded = false;
public function post() {
return $this->belongsTo(Post::class);
}
public function images() {
return $this->hasMany(Image::class);
}
}
+18
View File
@@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Image extends Model
{
use HasFactory;
protected $guarded = false;
public function gallery() {
return $this->belongsTo(Gallery::class);
}
}
+13
View File
@@ -0,0 +1,13 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class JournalIssue extends Model
{
use HasFactory;
protected $guarded = false;
}
+17
View File
@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class LibraryNews extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'content' => 'array',
];
}
+18
View File
@@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class MainSection extends Model
{
use HasFactory;
protected $guarded = false;
public function subSections()
{
return $this->hasMany(SubSection::class);
}
}
+13
View File
@@ -0,0 +1,13 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class MainSlider extends Model
{
use HasFactory;
protected $guarded = false;
}
+25
View File
@@ -0,0 +1,25 @@
<?php
namespace App\Models;
use App\Enums\PostStatus;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Page extends Model
{
use HasFactory;
protected $guarded = false;
public function section() : BelongsTo
{
return $this->belongsTo(SubSection::class, 'sub_section_id');
}
protected $casts = [
'content' => 'array',
];
}
+12
View File
@@ -0,0 +1,12 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Spatie\Permission\Models\Permission as SpatiePermission;
class Permission extends SpatiePermission
{
use HasFactory;
}
+31
View File
@@ -0,0 +1,31 @@
<?php
namespace App\Models;
use App\Enums\PostStatus;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Spatie\Tags\HasTags;
class Post extends Model
{
use HasFactory, HasTags;
protected $guarded = false;
public function category() : BelongsTo
{
return $this->belongsTo(Category::class);
}
protected $casts = [
'content' => 'array',
'authors' => 'array',
'status' => PostStatus::class,
'images' => 'array'
];
}
+18
View File
@@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class ProgramContest extends Model
{
use HasFactory;
protected $guarded = false;
public function program()
{
return $this->belongsTo(EducationalProgram::class, 'educational_program_id');
}
}
+18
View File
@@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class ProgramExam extends Model
{
use HasFactory;
protected $guarded = false;
public function program()
{
return $this->belongsTo(EducationalProgram::class);
}
}
+12
View File
@@ -0,0 +1,12 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Spatie\Permission\Models\Role as SpatieRole;
class Role extends SpatieRole
{
use HasFactory;
}
+29
View File
@@ -0,0 +1,29 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Schedule extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'days' => 'array',
];
public function subSchedules()
{
return $this->hasMany(SubSchedule::class);
}
public function faculty()
{
return $this->belongsTo(Faculty::class);
}
}
+13
View File
@@ -0,0 +1,13 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Student extends Model
{
use HasFactory;
protected $guarded = false;
}
+15
View File
@@ -0,0 +1,15 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class SubSchedule extends Model
{
use HasFactory;
protected $guarded = false;
}
+25
View File
@@ -0,0 +1,25 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
class SubSection extends Model
{
use HasFactory;
protected $guarded = false;
public function mainSection() : BelongsTo
{
return $this->belongsTo(MainSection::class);
}
public function pages() : HasMany
{
return $this->hasMany(Page::class);
}
}
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Tag extends Model
{
use HasFactory;
}
+79
View File
@@ -0,0 +1,79 @@
<?php
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Filament\Models\Contracts\FilamentUser;
use Filament\Tables\Columns\Layout\Panel;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable implements FilamentUser
{
use HasApiTokens, HasFactory, Notifiable, HasRoles;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
public function userDetail()
{
return $this->hasOne(UserDetail::class, 'user_id');
}
public function departments_work()
{
return $this->belongsToMany(Department::class, 'workers_departments')->withPivot(['position']);
}
public function departments_teach()
{
return $this->belongsToMany(Department::class, 'teachers_departments')->withPivot(['teaching_position']);
}
public function divisions()
{
return $this->belongsToMany(Division::class, 'division_user')->withPivot(['administrativePosition']);
}
public function faculties()
{
return $this->belongsToMany(Faculty::class, 'workers_faculties')->withPivot(['position']);
}
public function canAccessPanel(Panel|\Filament\Panel $panel): bool
{
return true;
}
}
+33
View File
@@ -0,0 +1,33 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class UserDetail extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'is_only_worker' => 'boolean',
'awards' => 'array',
'professDisciplines' => 'array',
'professionalRetraining' => 'array',
'professionalDevelopment' => 'array',
'attendedConferences' => 'array',
'participationScienceProjects' => 'array',
'publications' => 'array',
'other' => 'array',
];
public function user()
{
return $this->belongsTo(User::class, 'id');
}
}
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class VacantPosition extends Model
{
use HasFactory;
}
+17
View File
@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class VirtualExhibition extends Model
{
use HasFactory;
protected $guarded = false;
protected $casts = [
'content' => 'array'
];
}