- **Penambahan Field Baru:**
- Menambahkan field baru `product_code` pada tabel `atmcards` melalui migrasi database.
- Field bersifat nullable dan memiliki komentar deskriptif untuk dokumentasi skema database.
- **Refaktor Logika pada UpdateAtmCardBranchCurrencyJob:**
- Menambahkan assignment data `product_code` untuk update kartu ATM berdasarkan informasi account.
- Mengoptimalkan proses query dengan memperbaiki penggunaan namespace model `Account`.
- **Peningkatan Model Atmcard:**
- Menambahkan relasi baru `biaya` untuk mendapatkan informasi terkait jenis kartu (`JenisKartu`).
- Menambah **scope** baru:
- `active` untuk memfilter kartu ATM yang aktif.
- `byProductCode` untuk memfilter berdasarkan kode produk (`product_code`).
- Memperkenalkan accessor dan mutator untuk memastikan format `product_code` konsisten (uppercase, trimmed).
- Menambahkan logging pada setiap akses relasi atau perubahan terkait field `product_code`.
- **Penyesuaian Logging:**
- Memperbanyak log untuk monitoring aktivitas, termasuk:
- Akses dan perubahan data `product_code`.
- Scope query pada model `Atmcard`.
- **Migrasi Database:**
- Menambahkan proses safe migration dengan transaksi pada operasi `up` dan `down`.
- Mencatat log saat migrasi berhasil atau rollback diperlukan jika terjadi kesalahan.
- **Optimisasi dan Perbaikan Format:**
- Mengorganisasi ulang import pada file `UpdateAtmCardBranchCurrencyJob` sesuai standar PSR-12.
- Membenahi key output response dari `openCategory` menjadi `acctType` untuk dukungan data baru `product_code`.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
80 lines
2.3 KiB
PHP
80 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace Modules\Webstatement\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Support\Facades\Log;
|
|
// use Modules\Webstatement\Database\Factories\AtmcardFactory;
|
|
|
|
class Atmcard extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
/**
|
|
* The attributes that are mass assignable.
|
|
*/
|
|
protected $guarded = ['id'];
|
|
|
|
/**
|
|
* Relasi ke tabel JenisKartu untuk mendapatkan informasi biaya kartu
|
|
*
|
|
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
*/
|
|
public function biaya(){
|
|
Log::info('Mengakses relasi biaya untuk ATM card', ['card_id' => $this->id]);
|
|
return $this->belongsTo(JenisKartu::class,'ctdesc','code');
|
|
}
|
|
|
|
/**
|
|
* Scope untuk mendapatkan kartu ATM yang aktif
|
|
*
|
|
* @param \Illuminate\Database\Eloquent\Builder $query
|
|
* @return \Illuminate\Database\Eloquent\Builder
|
|
*/
|
|
public function scopeActive($query)
|
|
{
|
|
Log::info('Menggunakan scope active untuk filter kartu ATM aktif');
|
|
return $query->where('crsts', 1);
|
|
}
|
|
|
|
/**
|
|
* Scope untuk mendapatkan kartu berdasarkan product_code
|
|
*
|
|
* @param \Illuminate\Database\Eloquent\Builder $query
|
|
* @param string $productCode
|
|
* @return \Illuminate\Database\Eloquent\Builder
|
|
*/
|
|
public function scopeByProductCode($query, $productCode)
|
|
{
|
|
Log::info('Menggunakan scope byProductCode', ['product_code' => $productCode]);
|
|
return $query->where('product_code', $productCode);
|
|
}
|
|
|
|
/**
|
|
* Accessor untuk mendapatkan product_code dengan format yang konsisten
|
|
*
|
|
* @param string $value
|
|
* @return string|null
|
|
*/
|
|
public function getProductCodeAttribute($value)
|
|
{
|
|
return $value ? strtoupper(trim($value)) : null;
|
|
}
|
|
|
|
/**
|
|
* Mutator untuk menyimpan product_code dengan format yang konsisten
|
|
*
|
|
* @param string $value
|
|
* @return void
|
|
*/
|
|
public function setProductCodeAttribute($value)
|
|
{
|
|
$this->attributes['product_code'] = $value ? strtoupper(trim($value)) : null;
|
|
Log::info('Product code diset untuk ATM card', [
|
|
'card_id' => $this->id ?? 'new',
|
|
'product_code' => $this->attributes['product_code']
|
|
]);
|
|
}
|
|
}
|