79 lines
1.9 KiB
PHP
79 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;
|
|
|
|
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)) {
|
|
\App\Models\Account::query()
|
|
->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);
|
|
}
|
|
}
|