devsofttech_hms_ci4/app/Database/Migrations/2026-02-18-000001_CreateMedicalBankTables.php

86 lines
3.0 KiB
PHP

<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class CreateMedicalBankTables extends Migration
{
public function up(): void
{
if (! $this->db->tableExists('medical_bank')) {
$this->forge->addField([
'id' => [
'type' => 'INT',
'constraint' => 11,
'unsigned' => true,
'auto_increment' => true,
],
'bank_name' => [
'type' => 'VARCHAR',
'constraint' => 150,
'null' => false,
],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('medical_bank', true);
}
if (! $this->db->tableExists('medical_bank_payment_source')) {
$this->forge->addField([
'id' => [
'type' => 'INT',
'constraint' => 11,
'unsigned' => true,
'auto_increment' => true,
],
'bank_id' => [
'type' => 'INT',
'constraint' => 11,
'unsigned' => true,
'null' => false,
],
'pay_type' => [
'type' => 'VARCHAR',
'constraint' => 150,
'null' => false,
],
]);
$this->forge->addKey('id', true);
$this->forge->addKey('bank_id');
$this->forge->createTable('medical_bank_payment_source', true);
}
if ($this->db->tableExists('hospital_bank') && $this->db->tableExists('medical_bank')) {
$countMedicalBank = (int) $this->db->table('medical_bank')->countAllResults();
if ($countMedicalBank === 0) {
$this->db->query('INSERT INTO medical_bank (bank_name) SELECT bank_name FROM hospital_bank');
}
}
if (
$this->db->tableExists('hospital_bank_payment_source')
&& $this->db->tableExists('hospital_bank')
&& $this->db->tableExists('medical_bank')
&& $this->db->tableExists('medical_bank_payment_source')
) {
$countMedicalSource = (int) $this->db->table('medical_bank_payment_source')->countAllResults();
if ($countMedicalSource === 0) {
$this->db->query(
'INSERT INTO medical_bank_payment_source (bank_id, pay_type)
SELECT mb.id, hps.pay_type
FROM hospital_bank_payment_source hps
INNER JOIN hospital_bank hb ON hb.id = hps.bank_id
INNER JOIN medical_bank mb ON mb.bank_name = hb.bank_name'
);
}
}
}
public function down(): void
{
$this->forge->dropTable('medical_bank_payment_source', true);
$this->forge->dropTable('medical_bank', true);
}
}