Teren-app/app/Models/Activity.php
2025-09-28 22:36:47 +02:00

78 lines
1.9 KiB
PHP

<?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\SoftDeletes;
use Illuminate\Support\Facades\DB;
class Activity extends Model
{
/** @use HasFactory<\Database\Factories\ActivityFactory> */
use HasFactory;
use SoftDeletes;
protected $fillable = [
'due_date',
'amount',
'note',
'action_id',
'user_id',
'decision_id',
'contract_id',
'client_case_id',
];
protected $hidden = [
'action_id',
'decision_id',
'client_case_id',
'user_id',
'contract_id',
];
protected static function booted()
{
static::creating(function (Activity $activity) {
if (! isset($activity->user_id)) {
$activity->user_id = auth()->id();
}
// If an activity with a due date is added for a contract, update the related account's promise_date
if (! empty($activity->contract_id) && ! empty($activity->due_date)) {
DB::table('accounts')
->where('contract_id', $activity->contract_id)
->update(['promise_date' => $activity->due_date, 'updated_at' => now()]);
}
});
}
public function action(): BelongsTo
{
return $this->belongsTo(\App\Models\Action::class);
}
public function decision(): BelongsTo
{
return $this->belongsTo(\App\Models\Decision::class);
}
public function clientCase(): BelongsTo
{
return $this->belongsTo(\App\Models\ClientCase::class);
}
public function contract(): ?BelongsTo
{
return $this->belongsTo(\App\Models\Contract::class);
}
public function user(): BelongsTo
{
return $this->belongsTo(\App\Models\User::class);
}
}