feat(webstatement): tambahkan pengelolaan product_code pada ATM Card
- **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>
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Menjalankan migration untuk menambahkan field product_code pada tabel atmcards
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Log::info('Memulai migration: menambahkan field product_code ke tabel atmcards');
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
try {
|
||||
Schema::table('atmcards', function (Blueprint $table) {
|
||||
// Menambahkan field product_code setelah field ctdesc
|
||||
$table->string('product_code')->nullable()->after('ctdesc')->comment('Kode produk kartu ATM');
|
||||
});
|
||||
|
||||
DB::commit();
|
||||
Log::info('Migration berhasil: field product_code telah ditambahkan ke tabel atmcards');
|
||||
|
||||
} catch (Exception $e) {
|
||||
DB::rollback();
|
||||
Log::error('Migration gagal: ' . $e->getMessage());
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Membalikkan migration dengan menghapus field product_code dari tabel atmcards
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Log::info('Memulai rollback migration: menghapus field product_code dari tabel atmcards');
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
try {
|
||||
Schema::table('atmcards', function (Blueprint $table) {
|
||||
$table->dropColumn('product_code');
|
||||
});
|
||||
|
||||
DB::commit();
|
||||
Log::info('Rollback migration berhasil: field product_code telah dihapus dari tabel atmcards');
|
||||
|
||||
} catch (Exception $e) {
|
||||
DB::rollback();
|
||||
Log::error('Rollback migration gagal: ' . $e->getMessage());
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user