Files
GSB-Construction/Modules/BiddingManagement/app/Models/BidInvitation.php

65 lines
1.5 KiB
PHP

<?php
namespace Modules\BiddingManagement\Models;
use App\Traits\HasPublicIdentifier;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Modules\ContractorManagement\Models\Contractor;
class BidInvitation extends Model
{
use HasPublicIdentifier;
protected $fillable = [
'bid_package_id', 'contractor_id', 'status',
'invited_at', 'responded_at', 'decline_reason',
];
protected function casts(): array
{
return [
'invited_at' => 'datetime',
'responded_at' => 'datetime',
];
}
public function package(): BelongsTo
{
return $this->belongsTo(BidPackage::class, 'bid_package_id');
}
public function contractor(): BelongsTo
{
return $this->belongsTo(Contractor::class);
}
public function submission(): HasOne
{
return $this->hasOne(BidSubmission::class);
}
public function accept(): void
{
$this->update([
'status' => 'accepted',
'responded_at' => now(),
]);
}
public function decline(string $reason = null): void
{
$this->update([
'status' => 'declined',
'responded_at' => now(),
'decline_reason' => $reason,
]);
}
public function getHasSubmittedAttribute(): bool
{
return $this->submission()->exists();
}
}