From dc1b0327ce65367d7a35c5ccba0d5c24b06ca06a Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Fri, 16 Dec 2022 13:37:18 +0800 Subject: [PATCH] log transactional data --- app/Classes/General/Traits/LogData.php | 36 ++++++++++++++++++++++++++ app/Models/Booking.php | 2 ++ app/Models/Group.php | 2 ++ app/Models/Transaction.php | 2 ++ app/Models/Wallet.php | 2 ++ 5 files changed, 44 insertions(+) create mode 100644 app/Classes/General/Traits/LogData.php diff --git a/app/Classes/General/Traits/LogData.php b/app/Classes/General/Traits/LogData.php new file mode 100644 index 00000000..efee3915 --- /dev/null +++ b/app/Classes/General/Traits/LogData.php @@ -0,0 +1,36 @@ +table).'_logs'; + $relationshipColumn = Str::singular($model->table).'_id'; + + $originalData = $model->getRawOriginal(); + $originalData[$relationshipColumn] = $originalData['id']; + unset($originalData['id']); + + if (!Schema::hasTable($tableName)) { + DB::statement('CREATE TABLE '.$tableName.' LIKE '.$model->table); + DB::statement('ALTER TABLE '.$tableName.' ADD COLUMN `'.$relationshipColumn.'` BIGINT NOT NULL AFTER `id`'); + } + + DB::table($tableName)->insert($originalData); + + }); + } +} diff --git a/app/Models/Booking.php b/app/Models/Booking.php index 2dfd945a..ca80d0c3 100644 --- a/app/Models/Booking.php +++ b/app/Models/Booking.php @@ -4,6 +4,7 @@ namespace App\Models; use App\Classes\General\Interfaces\Documentable; use App\Classes\General\Interfaces\Transactionable; +use App\Classes\General\Traits\LogData; use App\Classes\ValueObjects\Constants\RoleTypes; use App\Scopes\CustomerBookingsScope; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -28,6 +29,7 @@ class Booking extends AbstractModel implements Documentable, Transactionable { use HasRelationships; use SoftDeletes; + use LogData; protected $table = 'bookings'; diff --git a/app/Models/Group.php b/app/Models/Group.php index 1fc6ca48..00a7247b 100644 --- a/app/Models/Group.php +++ b/app/Models/Group.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Classes\General\Traits\LogData; use Illuminate\Database\Eloquent\Model; use App\Classes\General\Interfaces\Documentable; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -13,6 +14,7 @@ class Group extends Model implements Documentable { use HasRelationships; use \Staudenmeir\EloquentHasManyDeep\HasTableAlias; + use LogData; public function transactions() { diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php index 429449a6..a1fb0849 100644 --- a/app/Models/Transaction.php +++ b/app/Models/Transaction.php @@ -4,6 +4,7 @@ namespace App\Models; use App\Classes\General\Interfaces\Documentable; use App\Classes\General\Interfaces\Transactionable; +use App\Classes\General\Traits\LogData; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\TransactionType; use Carbon\Carbon; @@ -22,6 +23,7 @@ class Transaction extends AbstractModel implements Documentable, Transactionable { use HasTableAlias; use SoftDeletes; + use LogData; protected $table = 'transactions'; diff --git a/app/Models/Wallet.php b/app/Models/Wallet.php index 8c3114fd..00677513 100644 --- a/app/Models/Wallet.php +++ b/app/Models/Wallet.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Classes\General\Interfaces\Transactionable; +use App\Classes\General\Traits\LogData; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\SoftDeletes; @@ -12,6 +13,7 @@ use Illuminate\Database\Eloquent\Relations\MorphMany; class Wallet extends AbstractModel implements Transactionable { use SoftDeletes; + use LogData; protected $table = 'wallets'; /**