feat: Auditable 트레이트 구현 및 97개 모델 적용

- Auditable 트레이트 신규 생성 (bootAuditable 패턴)
  - creating: created_by/updated_by 자동 채우기
  - updating: updated_by 자동 채우기
  - deleting: deleted_by 채우기 + saveQuietly()
  - created/updated/deleted: audit_logs 자동 기록
- 기존 AuditLogger 패턴과 동일한 try/catch 조용한 실패
- 변경된 필드만 before/after 기록 (updated 이벤트)
- auditExclude 프로퍼티로 모델별 제외 필드 설정 가능
- 제외 대상: Attendance, StockTransaction, TodayIssue 등 고빈도/시스템 모델

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-29 15:33:54 +09:00
parent 00a1257c63
commit 189b38c936
97 changed files with 317 additions and 96 deletions

View File

@@ -4,6 +4,7 @@
use App\Models\Members\User; use App\Models\Members\User;
use App\Models\Orders\Client; use App\Models\Orders\Client;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -12,7 +13,7 @@
class BadDebt extends Model class BadDebt extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -5,6 +5,7 @@
use App\Models\Members\User; use App\Models\Members\User;
use App\Models\Orders\Client; use App\Models\Orders\Client;
use App\Models\Quote\Quote; use App\Models\Quote\Quote;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -13,7 +14,7 @@
class Bidding extends Model class Bidding extends Model
{ {
use BelongsToTenant, HasFactory, SoftDeletes; use Auditable, BelongsToTenant, HasFactory, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -3,6 +3,7 @@
namespace App\Models; namespace App\Models;
use App\Models\Tenants\Tenant; use App\Models\Tenants\Tenant;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -15,7 +16,7 @@
*/ */
class CategoryGroup extends Model class CategoryGroup extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
protected $table = 'category_groups'; protected $table = 'category_groups';

View File

@@ -2,6 +2,7 @@
namespace App\Models\Commons; namespace App\Models\Commons;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -9,7 +10,7 @@
class Category extends Model class Category extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'parent_id', 'code_group', 'code', 'name', 'tenant_id', 'parent_id', 'code_group', 'code', 'name',

View File

@@ -2,6 +2,7 @@
namespace App\Models\Commons; namespace App\Models\Commons;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -9,7 +10,7 @@
class CategoryField extends Model class CategoryField extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'category_fields'; protected $table = 'category_fields';

View File

@@ -2,13 +2,14 @@
namespace App\Models\Commons; namespace App\Models\Commons;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
class CategoryLog extends Model class CategoryLog extends Model
{ {
use BelongsToTenant, ModelTrait; use Auditable, BelongsToTenant, ModelTrait;
protected $table = 'category_logs'; protected $table = 'category_logs';

View File

@@ -2,13 +2,14 @@
namespace App\Models\Commons; namespace App\Models\Commons;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
class CategoryTemplate extends Model class CategoryTemplate extends Model
{ {
use BelongsToTenant, ModelTrait; use Auditable, BelongsToTenant, ModelTrait;
protected $table = 'category_templates'; protected $table = 'category_templates';

View File

@@ -2,6 +2,7 @@
namespace App\Models\Commons; namespace App\Models\Commons;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -9,7 +10,7 @@
class Classification extends Model class Classification extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -3,6 +3,7 @@
namespace App\Models\Commons; namespace App\Models\Commons;
use App\Models\Scopes\TenantScope; use App\Models\Scopes\TenantScope;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -15,7 +16,7 @@
*/ */
class Menu extends Model class Menu extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'parent_id', 'global_menu_id', 'name', 'url', 'is_active', 'sort_order', 'tenant_id', 'parent_id', 'global_menu_id', 'name', 'url', 'is_active', 'sort_order',

View File

@@ -3,6 +3,7 @@
namespace App\Models\Construction; namespace App\Models\Construction;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -42,7 +43,7 @@
*/ */
class Contract extends Model class Contract extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'contracts'; protected $table = 'contracts';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Construction; namespace App\Models\Construction;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -49,7 +50,7 @@
*/ */
class HandoverReport extends Model class HandoverReport extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'handover_reports'; protected $table = 'handover_reports';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Construction; namespace App\Models\Construction;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -25,7 +26,7 @@
*/ */
class HandoverReportItem extends Model class HandoverReportItem extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
protected $table = 'handover_report_items'; protected $table = 'handover_report_items';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Construction; namespace App\Models\Construction;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -24,7 +25,7 @@
*/ */
class HandoverReportManager extends Model class HandoverReportManager extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
protected $table = 'handover_report_managers'; protected $table = 'handover_report_managers';

View File

@@ -4,6 +4,7 @@
use App\Models\Members\User; use App\Models\Members\User;
use App\Models\Site; use App\Models\Site;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -38,7 +39,7 @@
*/ */
class StructureReview extends Model class StructureReview extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'structure_reviews'; protected $table = 'structure_reviews';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Documents; namespace App\Models\Documents;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -32,7 +33,7 @@
*/ */
class Document extends Model class Document extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $table = 'documents'; protected $table = 'documents';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Estimate; namespace App\Models\Estimate;
use App\Models\Commons\Category; use App\Models\Commons\Category;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -12,7 +13,7 @@
class Estimate extends Model class Estimate extends Model
{ {
use BelongsToTenant, HasFactory, SoftDeletes; use Auditable, BelongsToTenant, HasFactory, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\Estimate; namespace App\Models\Estimate;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -10,7 +11,7 @@
class EstimateItem extends Model class EstimateItem extends Model
{ {
use BelongsToTenant, HasFactory, SoftDeletes; use Auditable, BelongsToTenant, HasFactory, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\ItemMaster; namespace App\Models\ItemMaster;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -9,7 +10,7 @@
class CustomTab extends Model class CustomTab extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\ItemMaster; namespace App\Models\ItemMaster;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -17,7 +18,7 @@
*/ */
class EntityRelationship extends Model class EntityRelationship extends Model
{ {
use BelongsToTenant, ModelTrait; use Auditable, BelongsToTenant, ModelTrait;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\ItemMaster; namespace App\Models\ItemMaster;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -9,7 +10,7 @@
class ItemBomItem extends Model class ItemBomItem extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\ItemMaster; namespace App\Models\ItemMaster;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -9,7 +10,7 @@
class ItemField extends Model class ItemField extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\ItemMaster; namespace App\Models\ItemMaster;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -9,7 +10,7 @@
class ItemPage extends Model class ItemPage extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\ItemMaster; namespace App\Models\ItemMaster;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -9,7 +10,7 @@
class ItemSection extends Model class ItemSection extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,13 +2,14 @@
namespace App\Models\ItemMaster; namespace App\Models\ItemMaster;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
class TabColumn extends Model class TabColumn extends Model
{ {
use BelongsToTenant, ModelTrait; use Auditable, BelongsToTenant, ModelTrait;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\ItemMaster; namespace App\Models\ItemMaster;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -9,7 +10,7 @@
class UnitOption extends Model class UnitOption extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -5,6 +5,7 @@
use App\Models\Commons\Category; use App\Models\Commons\Category;
use App\Models\Commons\File; use App\Models\Commons\File;
use App\Models\Commons\Tag; use App\Models\Commons\Tag;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -18,7 +19,7 @@
*/ */
class Item extends Model class Item extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -3,6 +3,7 @@
namespace App\Models\Items; namespace App\Models\Items;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
@@ -30,7 +31,7 @@
*/ */
class ItemReceipt extends Model class ItemReceipt extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $table = 'item_receipts'; protected $table = 'item_receipts';

View File

@@ -2,6 +2,7 @@
namespace App\Models; namespace App\Models;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -9,7 +10,7 @@
class Labor extends Model class Labor extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'labors'; protected $table = 'labors';

View File

@@ -6,6 +6,7 @@
use App\Models\Commons\File; use App\Models\Commons\File;
use App\Models\Commons\Tag; use App\Models\Commons\Tag;
use App\Models\Qualitys\Lot; use App\Models\Qualitys\Lot;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -16,7 +17,7 @@
*/ */
class Material extends Model class Material extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -4,6 +4,7 @@
use App\Models\Permissions\Role; use App\Models\Permissions\Role;
use App\Models\Tenants\Tenant; use App\Models\Tenants\Tenant;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
@@ -13,7 +14,7 @@
*/ */
class UserRole extends Model class UserRole extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'user_id', 'tenant_id', 'role_id', 'assigned_at', 'user_id', 'tenant_id', 'role_id', 'assigned_at',

View File

@@ -3,6 +3,7 @@
namespace App\Models\Members; namespace App\Models\Members;
use App\Models\Tenants\Tenant; use App\Models\Tenants\Tenant;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -13,7 +14,7 @@
*/ */
class UserTenant extends Model class UserTenant extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'user_id', 'tenant_id', 'is_active', 'is_default', 'joined_at', 'left_at', 'user_id', 'tenant_id', 'is_active', 'is_default', 'joined_at', 'left_at',

View File

@@ -2,13 +2,14 @@
namespace App\Models; namespace App\Models;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
class NotificationSetting extends Model class NotificationSetting extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models; namespace App\Models;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -9,7 +10,7 @@
class NotificationSettingGroup extends Model class NotificationSettingGroup extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,13 +2,14 @@
namespace App\Models; namespace App\Models;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
class NotificationSettingGroupState extends Model class NotificationSettingGroupState extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -3,6 +3,7 @@
namespace App\Models\Orders; namespace App\Models\Orders;
use App\Models\BadDebts\BadDebt; use App\Models\BadDebts\BadDebt;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -10,7 +11,7 @@
class Client extends Model class Client extends Model
{ {
use BelongsToTenant, ModelTrait; use Auditable, BelongsToTenant, ModelTrait;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\Orders; namespace App\Models\Orders;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -9,7 +10,7 @@
class ClientGroup extends Model class ClientGroup extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -8,6 +8,7 @@
use App\Models\Quote\Quote; use App\Models\Quote\Quote;
use App\Models\Tenants\Sale; use App\Models\Tenants\Sale;
use App\Models\Tenants\Shipment; use App\Models\Tenants\Shipment;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -21,7 +22,7 @@
*/ */
class Order extends Model class Order extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
// 상태 코드 // 상태 코드
public const STATUS_DRAFT = 'DRAFT'; public const STATUS_DRAFT = 'DRAFT';

View File

@@ -5,6 +5,7 @@
use App\Models\Items\Item; use App\Models\Items\Item;
use App\Models\Quote\Quote; use App\Models\Quote\Quote;
use App\Models\Quote\QuoteItem; use App\Models\Quote\QuoteItem;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -18,7 +19,7 @@
*/ */
class OrderItem extends Model class OrderItem extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $table = 'order_items'; protected $table = 'order_items';

View File

@@ -6,6 +6,7 @@
use App\Models\Members\User; use App\Models\Members\User;
use App\Models\Members\UserRole; use App\Models\Members\UserRole;
use App\Models\Tenants\Tenant; use App\Models\Tenants\Tenant;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
@@ -15,7 +16,7 @@
*/ */
class Role extends Model class Role extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -4,6 +4,7 @@
use App\Models\Members\User; use App\Models\Members\User;
use App\Models\Tenants\Department; use App\Models\Tenants\Department;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -12,7 +13,7 @@
class Popup extends Model class Popup extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models; namespace App\Models;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -12,7 +13,7 @@
class Process extends Model class Process extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
use HasFactory; use HasFactory;
use ModelTrait; use ModelTrait;
use SoftDeletes; use SoftDeletes;

View File

@@ -7,6 +7,7 @@
use App\Models\Process; use App\Models\Process;
use App\Models\Tenants\Department; use App\Models\Tenants\Department;
use App\Models\Tenants\Shipment; use App\Models\Tenants\Shipment;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -22,7 +23,7 @@
*/ */
class WorkOrder extends Model class WorkOrder extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'work_orders'; protected $table = 'work_orders';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Production; namespace App\Models\Production;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -15,7 +16,7 @@
*/ */
class WorkOrderAssignee extends Model class WorkOrderAssignee extends Model
{ {
use BelongsToTenant, ModelTrait; use Auditable, BelongsToTenant, ModelTrait;
protected $table = 'work_order_assignees'; protected $table = 'work_order_assignees';

View File

@@ -2,6 +2,7 @@
namespace App\Models\Production; namespace App\Models\Production;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -13,7 +14,7 @@
*/ */
class WorkOrderBendingDetail extends Model class WorkOrderBendingDetail extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
protected $table = 'work_order_bending_details'; protected $table = 'work_order_bending_details';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Production; namespace App\Models\Production;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -14,7 +15,7 @@
*/ */
class WorkOrderIssue extends Model class WorkOrderIssue extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
protected $table = 'work_order_issues'; protected $table = 'work_order_issues';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Production; namespace App\Models\Production;
use App\Models\Items\Item; use App\Models\Items\Item;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -12,7 +13,7 @@
*/ */
class WorkOrderItem extends Model class WorkOrderItem extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
protected $table = 'work_order_items'; protected $table = 'work_order_items';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Production; namespace App\Models\Production;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -16,7 +17,7 @@
*/ */
class WorkResult extends Model class WorkResult extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'work_results'; protected $table = 'work_results';

View File

@@ -2,6 +2,7 @@
namespace App\Models\Products; namespace App\Models\Products;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -12,7 +13,7 @@
*/ */
class CommonCode extends Model class CommonCode extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'common_codes'; protected $table = 'common_codes';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Products; namespace App\Models\Products;
use App\Models\Orders\ClientGroup; use App\Models\Orders\ClientGroup;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -12,7 +13,7 @@
class Price extends Model class Price extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'prices'; protected $table = 'prices';

View File

@@ -3,13 +3,14 @@
namespace App\Models\Products; namespace App\Models\Products;
use App\Models\User; use App\Models\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
class PriceRevision extends Model class PriceRevision extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
protected $table = 'price_revisions'; protected $table = 'price_revisions';

View File

@@ -5,6 +5,7 @@
use App\Models\Commons\Category; use App\Models\Commons\Category;
use App\Models\Commons\File; use App\Models\Commons\File;
use App\Models\Commons\Tag; use App\Models\Commons\Tag;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -12,7 +13,7 @@
class Product extends Model class Product extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'code', 'name', 'unit', 'category_id', 'tenant_id', 'code', 'name', 'unit', 'category_id',

View File

@@ -3,6 +3,7 @@
namespace App\Models\Products; namespace App\Models\Products;
use App\Models\Materials\Material; use App\Models\Materials\Material;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -10,7 +11,7 @@
class ProductComponent extends Model class ProductComponent extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'product_components'; protected $table = 'product_components';

View File

@@ -2,6 +2,7 @@
namespace App\Models; namespace App\Models;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -9,7 +10,7 @@
class PushDeviceToken extends Model class PushDeviceToken extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
use SoftDeletes; use SoftDeletes;
protected $fillable = [ protected $fillable = [

View File

@@ -2,13 +2,14 @@
namespace App\Models; namespace App\Models;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
class PushNotificationSetting extends Model class PushNotificationSetting extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -4,6 +4,7 @@
use App\Models\Items\Item; use App\Models\Items\Item;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -32,7 +33,7 @@
*/ */
class Inspection extends Model class Inspection extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $table = 'inspections'; protected $table = 'inspections';

View File

@@ -7,6 +7,7 @@
use App\Models\Orders\Client; use App\Models\Orders\Client;
use App\Models\Orders\Order; use App\Models\Orders\Order;
use App\Models\Tenants\SiteBriefing; use App\Models\Tenants\SiteBriefing;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -16,7 +17,7 @@
class Quote extends Model class Quote extends Model
{ {
use BelongsToTenant, HasFactory, SoftDeletes; use Auditable, BelongsToTenant, HasFactory, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -3,6 +3,7 @@
namespace App\Models\Quote; namespace App\Models\Quote;
use App\Models\User; use App\Models\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
@@ -29,7 +30,7 @@
*/ */
class QuoteFormula extends Model class QuoteFormula extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'quote_formulas'; protected $table = 'quote_formulas';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Quote; namespace App\Models\Quote;
use App\Models\User; use App\Models\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
@@ -26,7 +27,7 @@
*/ */
class QuoteFormulaCategory extends Model class QuoteFormulaCategory extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'quote_formula_categories'; protected $table = 'quote_formula_categories';

View File

@@ -2,6 +2,7 @@
namespace App\Models\Quote; namespace App\Models\Quote;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -9,7 +10,7 @@
class QuoteItem extends Model class QuoteItem extends Model
{ {
use BelongsToTenant, HasFactory; use Auditable, BelongsToTenant, HasFactory;
protected $fillable = [ protected $fillable = [
'quote_id', 'quote_id',

View File

@@ -3,6 +3,7 @@
namespace App\Models\Quote; namespace App\Models\Quote;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -10,7 +11,7 @@
class QuoteRevision extends Model class QuoteRevision extends Model
{ {
use BelongsToTenant, HasFactory; use Auditable, BelongsToTenant, HasFactory;
const UPDATED_AT = null; const UPDATED_AT = null;

View File

@@ -3,6 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -30,7 +31,7 @@
*/ */
class Approval extends Model class Approval extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $table = 'approvals'; protected $table = 'approvals';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -25,7 +26,7 @@
*/ */
class ApprovalForm extends Model class ApprovalForm extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $table = 'approval_forms'; protected $table = 'approval_forms';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -22,7 +23,7 @@
*/ */
class ApprovalLine extends Model class ApprovalLine extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $table = 'approval_lines'; protected $table = 'approval_lines';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -28,7 +29,7 @@
*/ */
class BankAccount extends Model class BankAccount extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'bank_accounts'; protected $table = 'bank_accounts';

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -10,7 +11,7 @@
class Bill extends Model class Bill extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,11 +2,14 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
class BillInstallment extends Model class BillInstallment extends Model
{ {
use Auditable;
protected $fillable = [ protected $fillable = [
'bill_id', 'bill_id',
'installment_date', 'installment_date',

View File

@@ -3,6 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -29,7 +30,7 @@
*/ */
class Card extends Model class Card extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'cards'; protected $table = 'cards';

View File

@@ -5,6 +5,7 @@
use App\Models\Members\User; use App\Models\Members\User;
use App\Models\Permissions\PermissionOverride; use App\Models\Permissions\PermissionOverride;
use App\Models\Tenants\Pivots\DepartmentUser; use App\Models\Tenants\Pivots\DepartmentUser;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -16,7 +17,7 @@
class Department extends Model class Department extends Model
{ {
use BelongsToTenant, HasRoles, ModelTrait, SoftDeletes; // 부서도 권한/역할을 가짐 use Auditable, BelongsToTenant, HasRoles, ModelTrait, SoftDeletes; // 부서도 권한/역할을 가짐
protected $table = 'departments'; protected $table = 'departments';

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -9,7 +10,7 @@
class Deposit extends Model class Deposit extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -11,7 +12,7 @@
class ExpectedExpense extends Model class ExpectedExpense extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -3,6 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Orders\Client; use App\Models\Orders\Client;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -17,7 +18,7 @@
*/ */
class ExpenseAccount extends Model class ExpenseAccount extends Model
{ {
use BelongsToTenant, HasFactory, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, HasFactory, ModelTrait, SoftDeletes;
protected $table = 'expense_accounts'; protected $table = 'expense_accounts';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -30,7 +31,7 @@
*/ */
class Leave extends Model class Leave extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $table = 'leaves'; protected $table = 'leaves';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -20,7 +21,7 @@
*/ */
class LeaveBalance extends Model class LeaveBalance extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
protected $table = 'leave_balances'; protected $table = 'leave_balances';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -24,7 +25,7 @@
*/ */
class LeaveGrant extends Model class LeaveGrant extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $table = 'leave_grants'; protected $table = 'leave_grants';

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -25,7 +26,7 @@
*/ */
class LeavePolicy extends Model class LeavePolicy extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
protected $table = 'leave_policies'; protected $table = 'leave_policies';

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -11,7 +12,7 @@
class Loan extends Model class Loan extends Model
{ {
use BelongsToTenant, HasFactory, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, HasFactory, ModelTrait, SoftDeletes;
// ========================================================================= // =========================================================================
// 상수 정의 // 상수 정의

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -24,7 +25,7 @@
*/ */
class Payment extends Model class Payment extends Model
{ {
use SoftDeletes; use Auditable, SoftDeletes;
// ========================================================================= // =========================================================================
// 상수 정의 // 상수 정의

View File

@@ -3,6 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -41,7 +42,7 @@
*/ */
class Payroll extends Model class Payroll extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $table = 'payrolls'; protected $table = 'payrolls';

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
@@ -23,7 +24,7 @@
*/ */
class Plan extends Model class Plan extends Model
{ {
use SoftDeletes; use Auditable, SoftDeletes;
// ========================================================================= // =========================================================================
// 상수 정의 // 상수 정의

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -20,7 +21,7 @@
*/ */
class Position extends Model class Position extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'positions'; protected $table = 'positions';

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -9,7 +10,7 @@
class Purchase extends Model class Purchase extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -9,7 +10,7 @@
class Receiving extends Model class Receiving extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -3,6 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Members\User; use App\Models\Members\User;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -34,7 +35,7 @@
*/ */
class Salary extends Model class Salary extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'salaries'; protected $table = 'salaries';

View File

@@ -3,6 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Orders\Order; use App\Models\Orders\Order;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -10,7 +11,7 @@
class Sale extends Model class Sale extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
/** /**
* 매출 생성 시점 상수 * 매출 생성 시점 상수

View File

@@ -3,7 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Members\User; use App\Models\Members\User;
use Illuminate\Database\Eloquent\Builder; use App\Traits\Auditable;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
@@ -16,7 +16,7 @@
*/ */
class Schedule extends Model class Schedule extends Model
{ {
use SoftDeletes; use Auditable, SoftDeletes;
protected $table = 'schedules'; protected $table = 'schedules';

View File

@@ -5,6 +5,7 @@
use App\Models\Orders\Order; use App\Models\Orders\Order;
use App\Models\Production\WorkOrder; use App\Models\Production\WorkOrder;
use App\Models\Products\CommonCode; use App\Models\Products\CommonCode;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -13,7 +14,7 @@
class Shipment extends Model class Shipment extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -9,7 +10,7 @@
class ShipmentItem extends Model class ShipmentItem extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -4,6 +4,7 @@
use App\Models\Members\User; use App\Models\Members\User;
use App\Models\Orders\Client; use App\Models\Orders\Client;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -30,7 +31,7 @@
*/ */
class Site extends Model class Site extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'sites'; protected $table = 'sites';

View File

@@ -5,6 +5,7 @@
use App\Models\Members\User; use App\Models\Members\User;
use App\Models\Orders\Client; use App\Models\Orders\Client;
use App\Models\Quote\Quote; use App\Models\Quote\Quote;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait; use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -45,7 +46,7 @@
*/ */
class SiteBriefing extends Model class SiteBriefing extends Model
{ {
use BelongsToTenant, ModelTrait, SoftDeletes; use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;
protected $table = 'site_briefings'; protected $table = 'site_briefings';

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -10,7 +11,7 @@
class Stock extends Model class Stock extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -9,7 +10,7 @@
class StockLot extends Model class StockLot extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -25,7 +26,7 @@
*/ */
class Subscription extends Model class Subscription extends Model
{ {
use SoftDeletes; use Auditable, SoftDeletes;
// ========================================================================= // =========================================================================
// 상수 정의 // 상수 정의

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -10,7 +11,7 @@
class TaxInvoice extends Model class TaxInvoice extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
// ========================================================================= // =========================================================================
// 상수 정의 // 상수 정의

View File

@@ -3,7 +3,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Models\Members\User; use App\Models\Members\User;
use Illuminate\Database\Eloquent\Model; use App\Traits\Auditable;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
/** /**
@@ -20,6 +20,7 @@
*/ */
class TenantUserProfile extends Model class TenantUserProfile extends Model
{ {
use Auditable;
protected $casts = [ protected $casts = [
'json_extra' => 'array', 'json_extra' => 'array',
]; ];

View File

@@ -2,6 +2,7 @@
namespace App\Models\Tenants; namespace App\Models\Tenants;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -9,7 +10,7 @@
class Withdrawal extends Model class Withdrawal extends Model
{ {
use BelongsToTenant, SoftDeletes; use Auditable, BelongsToTenant, SoftDeletes;
protected $fillable = [ protected $fillable = [
'tenant_id', 'tenant_id',

View File

@@ -5,6 +5,7 @@
use App\Models\Members\User; use App\Models\Members\User;
use App\Models\Permissions\Role; use App\Models\Permissions\Role;
use App\Models\Tenants\Tenant; use App\Models\Tenants\Tenant;
use App\Traits\Auditable;
use App\Traits\BelongsToTenant; use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -12,7 +13,7 @@
class UserInvitation extends Model class UserInvitation extends Model
{ {
use BelongsToTenant; use Auditable, BelongsToTenant;
// 상태 상수 // 상태 상수
public const STATUS_PENDING = 'pending'; public const STATUS_PENDING = 'pending';

124
app/Traits/Auditable.php Normal file
View File

@@ -0,0 +1,124 @@
<?php
namespace App\Traits;
use App\Models\Audit\AuditLog;
use Illuminate\Support\Str;
trait Auditable
{
protected static function bootAuditable(): void
{
static::creating(function ($model) {
$actorId = static::resolveActorId();
if ($actorId) {
if ($model->isFillable('created_by') && ! $model->created_by) {
$model->created_by = $actorId;
}
if ($model->isFillable('updated_by') && ! $model->updated_by) {
$model->updated_by = $actorId;
}
}
});
static::updating(function ($model) {
$actorId = static::resolveActorId();
if ($actorId && $model->isFillable('updated_by')) {
$model->updated_by = $actorId;
}
});
static::deleting(function ($model) {
$actorId = static::resolveActorId();
if ($actorId && $model->isFillable('deleted_by')) {
$model->deleted_by = $actorId;
$model->saveQuietly();
}
});
static::created(function ($model) {
$model->logAuditEvent('created', null, $model->toAuditSnapshot());
});
static::updated(function ($model) {
$dirty = $model->getChanges();
$excluded = $model->getAuditExcludedFields();
$changed = array_diff_key($dirty, array_flip($excluded));
if (empty($changed)) {
return;
}
$before = [];
$after = [];
foreach ($changed as $key => $value) {
$before[$key] = $model->getOriginal($key);
$after[$key] = $value;
}
$model->logAuditEvent('updated', $before, $after);
});
static::deleted(function ($model) {
$model->logAuditEvent('deleted', $model->toAuditSnapshot(), null);
});
}
public function getAuditExcludedFields(): array
{
$defaults = [
'created_at', 'updated_at', 'deleted_at',
'created_by', 'updated_by', 'deleted_by',
];
$custom = property_exists($this, 'auditExclude') ? $this->auditExclude : [];
return array_merge($defaults, $custom);
}
public function getAuditTargetType(): string
{
$className = class_basename(static::class);
return Str::snake($className);
}
protected function toAuditSnapshot(): array
{
$excluded = $this->getAuditExcludedFields();
return array_diff_key($this->attributesToArray(), array_flip($excluded));
}
protected function logAuditEvent(string $action, ?array $before, ?array $after): void
{
try {
$tenantId = $this->tenant_id ?? null;
if (! $tenantId) {
return;
}
$request = request();
AuditLog::create([
'tenant_id' => $tenantId,
'target_type' => $this->getAuditTargetType(),
'target_id' => $this->getKey(),
'action' => $action,
'before' => $before,
'after' => $after,
'actor_id' => static::resolveActorId(),
'ip' => $request?->ip(),
'ua' => $request?->userAgent(),
'created_at' => now(),
]);
} catch (\Throwable $e) {
// 감사 로그 실패는 업무 흐름을 방해하지 않음
}
}
protected static function resolveActorId(): ?int
{
return auth()->id();
}
}