diff --git a/app/Models/Log.php b/app/Models/Log.php
index e0bfb0c..f359360 100644
--- a/app/Models/Log.php
+++ b/app/Models/Log.php
@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* @mixin IdeHelperLog
@@ -15,4 +16,19 @@ class Log extends Model
'requested_quote_id',
'content',
];
+
+ public function user(): BelongsTo
+ {
+ return $this->belongsTo(User::class);
+ }
+
+ public function quote(): BelongsTo
+ {
+ return $this->belongsTo(Quote::class);
+ }
+
+ public function requestedQuote(): BelongsTo
+ {
+ return $this->belongsTo(RequestedQuote::class);
+ }
}
diff --git a/app/Models/Quote.php b/app/Models/Quote.php
index 51d041e..57649fb 100644
--- a/app/Models/Quote.php
+++ b/app/Models/Quote.php
@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
@@ -20,13 +21,19 @@ class Quote extends Model
Log::create([
'user_id' => auth()?->user()?->id,
'quote_id' => $this->id,
- 'content' => 'Quote requested.'
+ 'content' => 'Quote requested.',
]);
}
+
protected $fillable = [
'quote',
];
+ public function logs(): hasMany
+ {
+ return $this->hasMany(Log::class);
+ }
+
public static function boot(): void
{
parent::boot();
@@ -35,7 +42,7 @@ class Quote extends Model
Log::create([
'user_id' => auth()?->user()?->id,
'quote_id' => $model->id,
- 'content' => 'Quote created.'
+ 'content' => 'Quote created.',
]);
});
@@ -43,7 +50,7 @@ class Quote extends Model
Log::create([
'user_id' => auth()?->user()?->id,
'quote_id' => $model->id,
- 'content' => 'Quote deleted.'
+ 'content' => 'Quote deleted.',
]);
});
}
diff --git a/app/Models/RequestedQuote.php b/app/Models/RequestedQuote.php
index 9b758c0..8ab0190 100644
--- a/app/Models/RequestedQuote.php
+++ b/app/Models/RequestedQuote.php
@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
@@ -17,12 +18,17 @@ class RequestedQuote extends Model
'user_id',
];
+ public function logs(): hasMany
+ {
+ return $this->hasMany(Log::class);
+ }
+
public function approve(): void
{
Log::create([
'user_id' => auth()?->user()?->id,
'requested_quote_id' => $this->id,
- 'content' => 'Quote approved.'
+ 'content' => 'Quote approved.',
]);
Quote::create([
@@ -37,7 +43,7 @@ class RequestedQuote extends Model
Log::create([
'user_id' => auth()?->user()?->id,
'requested_quote_id' => $this->id,
- 'content' => 'Quote rejected.'
+ 'content' => 'Quote rejected.',
]);
$this->delete();
diff --git a/app/Models/User.php b/app/Models/User.php
index 7af6c1e..7d2f868 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
@@ -61,6 +62,16 @@ class User extends Authenticatable
'password' => 'hashed',
];
+ public function logs(): hasMany
+ {
+ return $this->hasMany(Log::class);
+ }
+
+ public function fullName(): string
+ {
+ return "{$this->firstname} {$this->lastname}";
+ }
+
public static function boot(): void
{
parent::boot();
@@ -71,7 +82,7 @@ class User extends Authenticatable
self::created(function ($model) {
Log::create([
'user_id' => $model->id,
- 'content' => 'User created.'
+ 'content' => 'User created.',
]);
});
}
diff --git a/resources/views/admin/logs.blade.php b/resources/views/admin/logs.blade.php
new file mode 100644
index 0000000..181274e
--- /dev/null
+++ b/resources/views/admin/logs.blade.php
@@ -0,0 +1,9 @@
+
| + User + | ++ Logs + | ++ Type + | +
|---|---|---|
| + {{ $log?->user->fullName() ?? 'N/A' }} + | ++ {{ $log->content }} + | ++ @if (!empty($log->quote_id)) + Quote - {{ $log->quote_id }} + @elseif (!empty($log->requested_quote_id)) + Requsted Quote - ID: {{ $log->requested_quote_id }} + @else + N/A + @endif + | +