diff --git a/app/Models/Activity.php b/app/Models/Activity.php new file mode 100644 index 0000000..33c2785 --- /dev/null +++ b/app/Models/Activity.php @@ -0,0 +1,38 @@ + 'date', + 'end_date' => 'date', + 'approved_at' => 'datetime', + 'executed_at' => 'datetime', + ]; + + public function creator(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function approver(): BelongsTo + { + return $this->belongsTo(User::class, 'approved_by'); + } + + public function participants(): BelongsToMany + { + return $this->belongsToMany(User::class, 'activity_member'); + } +} diff --git a/app/Models/ActivityLog.php b/app/Models/ActivityLog.php new file mode 100644 index 0000000..0f8b5c4 --- /dev/null +++ b/app/Models/ActivityLog.php @@ -0,0 +1,16 @@ +belongsTo(User::class); + } +} diff --git a/app/Models/Approval.php b/app/Models/Approval.php new file mode 100644 index 0000000..c2fbdf7 --- /dev/null +++ b/app/Models/Approval.php @@ -0,0 +1,21 @@ +hasMany(ApprovalItem::class); + } + + public function approvable() + { + return $this->morphTo(__FUNCTION__, 'model_type', 'model_id'); + } +} diff --git a/app/Models/ApprovalItem.php b/app/Models/ApprovalItem.php new file mode 100644 index 0000000..42648c2 --- /dev/null +++ b/app/Models/ApprovalItem.php @@ -0,0 +1,21 @@ +belongsTo(Approval::class); + } + + public function user(): BelongsTo + { + return $this->belongsTo(User::class); + } +} diff --git a/app/Models/Audit.php b/app/Models/Audit.php new file mode 100644 index 0000000..c5d217e --- /dev/null +++ b/app/Models/Audit.php @@ -0,0 +1,27 @@ +belongsTo(User::class, 'auditor_id'); + } + + public function responses(): HasMany + { + return $this->hasMany(AuditResponse::class); + } + + public function auditable() + { + return $this->morphTo(__FUNCTION__, 'model_type', 'model_id'); + } +} diff --git a/app/Models/AuditResponse.php b/app/Models/AuditResponse.php new file mode 100644 index 0000000..23e787d --- /dev/null +++ b/app/Models/AuditResponse.php @@ -0,0 +1,21 @@ +belongsTo(Audit::class); + } + + public function responder(): BelongsTo + { + return $this->belongsTo(User::class, 'responded_by'); + } +} diff --git a/app/Models/CashCategory.php b/app/Models/CashCategory.php new file mode 100644 index 0000000..97d4276 --- /dev/null +++ b/app/Models/CashCategory.php @@ -0,0 +1,16 @@ +hasMany(CashRecord::class, 'category_id'); + } +} diff --git a/app/Models/CashRecord.php b/app/Models/CashRecord.php new file mode 100644 index 0000000..ea4c0a6 --- /dev/null +++ b/app/Models/CashRecord.php @@ -0,0 +1,34 @@ + 'date', + 'verified_at' => 'datetime', + ]; + + public function category(): BelongsTo + { + return $this->belongsTo(CashCategory::class, 'category_id'); + } + + public function creator(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function verifier(): BelongsTo + { + return $this->belongsTo(User::class, 'verified_by'); + } +} diff --git a/app/Models/Division.php b/app/Models/Division.php new file mode 100644 index 0000000..a35c6dc --- /dev/null +++ b/app/Models/Division.php @@ -0,0 +1,16 @@ +hasMany(User::class); + } +} diff --git a/app/Models/MemberStatusLog.php b/app/Models/MemberStatusLog.php new file mode 100644 index 0000000..07ea084 --- /dev/null +++ b/app/Models/MemberStatusLog.php @@ -0,0 +1,21 @@ +belongsTo(User::class, 'member_id'); + } + + public function changedBy(): BelongsTo + { + return $this->belongsTo(User::class, 'changed_by'); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 25ee3aa..09381ad 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -2,32 +2,52 @@ namespace App\Models; -// use Illuminate\Contracts\Auth\MustVerifyEmail; use Database\Factories\UserFactory; use Illuminate\Database\Eloquent\Attributes\Fillable; -use Illuminate\Database\Eloquent\Attributes\Hidden; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\BelongsToMany; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Spatie\Permission\Traits\HasRoles; -#[Fillable(['name', 'email', 'password'])] -#[Hidden(['password', 'remember_token'])] class User extends Authenticatable { /** @use HasFactory */ use HasFactory, Notifiable, HasRoles; - /** - * Get the attributes that should be cast. - * - * @return array - */ - protected function casts(): array + protected $fillable = [ + 'name', 'email', 'password', + 'phone', 'address', 'division_id', + 'status', 'inactive_reason', 'last_activity_date', + ]; + + protected $hidden = ['password', 'remember_token']; + + protected $casts = [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + 'last_activity_date' => 'date', + ]; + + public function division(): BelongsTo { - return [ - 'email_verified_at' => 'datetime', - 'password' => 'hashed', - ]; + return $this->belongsTo(Division::class); + } + + public function activities(): BelongsToMany + { + return $this->belongsToMany(Activity::class, 'activity_member'); + } + + public function statusLogs(): HasMany + { + return $this->hasMany(MemberStatusLog::class, 'member_id'); + } + + public function cashRecords(): HasMany + { + return $this->hasMany(CashRecord::class, 'created_by'); } } diff --git a/app/Models/Vote.php b/app/Models/Vote.php new file mode 100644 index 0000000..5fc6865 --- /dev/null +++ b/app/Models/Vote.php @@ -0,0 +1,29 @@ + 'datetime', + ]; + + public function creator(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function items(): HasMany + { + return $this->hasMany(VoteItem::class); + } +} diff --git a/app/Models/VoteItem.php b/app/Models/VoteItem.php new file mode 100644 index 0000000..db3f9a0 --- /dev/null +++ b/app/Models/VoteItem.php @@ -0,0 +1,21 @@ +belongsTo(Vote::class); + } + + public function user(): BelongsTo + { + return $this->belongsTo(User::class); + } +}