ldc-crm/app/Models/Claim.php
2025-07-28 09:07:54 +02:00

106 lines
3.3 KiB
PHP

<?php
namespace App\Models;
use App\Enums\Claims\ClaimStatus;
use App\Enums\Claims\ClaimType;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
/**
* @property integer $id Claim id.
* @property string $reference Claim reference.
* @property string $first_name Claimant\'s first name.
* @property string $last_name Claimant\'s last name.
* @property string $email Claimant\'s email.
* @property string|null $address Claimant\'s address.
* @property string|null $city Claimant\'s city.
* @property string|null $postcode Claimant\'s postcode.
* @property string|null $file Claimant\'s file.
* @property string $message Claimant\'s message.
* @property \App\Enums\Claims\ClaimType $type Claim type (ClaimType enum).
* @property \App\Enums\Claims\ClaimStatus $status Claim status (ClaimStatus enum).
* @property \App\Models\Brand $brand_id Claim associated Brand.
* @property \App\Models\ClaimSubject $subject_id Claim associated Subject.
* @property \App\Models\Customer|null $customer_id Claim associated Customer.
* @property-read \Illuminate\Support\Carbon $created_at Claim created date.
* @property-read \Illuminate\Support\Carbon $updated_at Claim updated date.
*/
class Claim extends Model
{
use HasFactory;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'reference',
'first_name',
'last_name',
'email',
'address',
'city',
'postcode',
'file',
'message',
'type',
'status',
'brand_id',
'subject_id',
'customer_id',
];
/**
* The attributes that should be cast.
*
* @var array<string, mixed>
*/
protected $casts = [
'type' => ClaimType::class,
'status' => ClaimStatus::class,
];
// * RELATIONS
/**
* Brand belongs to relation.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function brand(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(Brand::class);
}
/**
* ClaimSubject subject belongs to relation.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function claimSubject(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(ClaimSubject::class);
}
/**
* Customer subject belongs to relation.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function customer(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(Customer::class);
}
/**
* ClaimMessage has many relation.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function claimMessages(): \Illuminate\Database\Eloquent\Relations\HasMany
{
return $this->hasMany(ClaimMessage::class);
}
}