/home2/mshostin/crm.ms-hostingladz.com/app/Traits/Loggable.php
<?php
namespace App\Traits;
use App\Models\Logs;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
trait Loggable
{
/**
* Log an action
*
* @param string $action
* @param int|null $actionId
* @param string|null $actionDetail
* @return void
*/
public static function logAction($action, $actionId = null, $actionDetail = null)
{
try {
Logs::create([
'user_id' => Auth::id(),
'action' => $action,
'action_id' => $actionId,
'action_detail' => $actionDetail,
]);
} catch (\Exception $e) {
// Log error but don't break the application
Log::error('Failed to log action: ' . $e->getMessage());
}
}
/**
* Log a complaint action
*
* @param int $complaintId
* @param string $action
* @param string|null $detail
* @return void
*/
public static function logComplaintAction($complaintId, $action, $detail = null)
{
self::logAction('Complaint', $complaintId, $detail ?: "Complaint {$action}");
}
/**
* Log a user action
*
* @param int $userId
* @param string $action
* @param string|null $detail
* @return void
*/
public static function logUserAction($userId, $action, $detail = null)
{
self::logAction('User', $userId, $detail ?: "User {$action}");
}
/**
* Log a system action
*
* @param string $action
* @param string|null $detail
* @return void
*/
public static function logSystemAction($action, $detail = null)
{
self::logAction('System', null, $detail ?: "System {$action}");
}
/**
* Log login action
*
* @param string|null $detail
* @return void
*/
public static function logLogin($detail = null)
{
self::logAction('Login', Auth::id(), $detail ?: 'User logged in');
}
/**
* Log logout action
*
* @param string|null $detail
* @return void
*/
public static function logLogout($detail = null)
{
self::logAction('Logout', Auth::id(), $detail ?: 'User logged out');
}
}