devsofttech_hms_ci4/app/Database/Migrations/2026-04-04-000038_SyncOpdDoseWhenMaster.php

151 lines
5.0 KiB
PHP

<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class SyncOpdDoseWhenMaster extends Migration
{
public function up()
{
if (! $this->tableExists('opd_dose_when')) {
return;
}
$this->db->table('opd_dose_when')->truncate();
$rows = [
[
'dose_when_id' => 1,
'dose_sign' => 'BF',
'dose_sign_desc' => 'Before Food',
'dose_sign_hindi' => 'भोजन से पहले',
],
[
'dose_when_id' => 2,
'dose_sign' => 'AF',
'dose_sign_desc' => 'After Food',
'dose_sign_hindi' => 'भोजन के बाद',
],
[
'dose_when_id' => 3,
'dose_sign' => 'BB',
'dose_sign_desc' => 'Before Breakfast',
'dose_sign_hindi' => 'नाश्ते से पहले',
],
[
'dose_when_id' => 4,
'dose_sign' => 'AB',
'dose_sign_desc' => 'After Breakfast',
'dose_sign_hindi' => 'नाश्ते के बाद',
],
[
'dose_when_id' => 5,
'dose_sign' => 'BL',
'dose_sign_desc' => 'Before Lunch',
'dose_sign_hindi' => 'दोपहर के भोजन से पहले',
],
[
'dose_when_id' => 6,
'dose_sign' => 'AL',
'dose_sign_desc' => 'After Lunch',
'dose_sign_hindi' => 'दोपहर के भोजन के बाद',
],
[
'dose_when_id' => 7,
'dose_sign' => 'BD',
'dose_sign_desc' => 'Before Dinner',
'dose_sign_hindi' => 'रात के खाने से पहले',
],
[
'dose_when_id' => 8,
'dose_sign' => 'AD',
'dose_sign_desc' => 'After Dinner',
'dose_sign_hindi' => 'रात के खाने के बाद',
],
[
'dose_when_id' => 9,
'dose_sign' => 'WF',
'dose_sign_desc' => 'With Food',
'dose_sign_hindi' => 'खाने के साथ',
],
[
'dose_when_id' => 10,
'dose_sign' => 'WT',
'dose_sign_desc' => 'With Tea',
'dose_sign_hindi' => 'चाय के साथ',
],
[
'dose_when_id' => 11,
'dose_sign' => 'ES',
'dose_sign_desc' => 'Empty Stomach',
'dose_sign_hindi' => 'खाली पेट',
],
[
'dose_when_id' => 12,
'dose_sign' => 'BT',
'dose_sign_desc' => 'Bed Time',
'dose_sign_hindi' => 'सोने का समय',
],
[
'dose_when_id' => 13,
'dose_sign' => 'BBATH',
'dose_sign_desc' => 'Before Bath',
'dose_sign_hindi' => 'स्नान से पहले',
],
[
'dose_when_id' => 14,
'dose_sign' => 'ABATH',
'dose_sign_desc' => 'After Bath',
'dose_sign_hindi' => 'नहाने के बाद',
],
[
'dose_when_id' => 15,
'dose_sign' => 'BS',
'dose_sign_desc' => 'Before Sun',
'dose_sign_hindi' => 'सूर्य से पहले',
],
[
'dose_when_id' => 16,
'dose_sign' => 'AS',
'dose_sign_desc' => 'After Sun',
'dose_sign_hindi' => 'दोपहर के बाद',
],
[
'dose_when_id' => 17,
'dose_sign' => 'SoS',
'dose_sign_desc' => 'SoS',
'dose_sign_hindi' => 'आपात स्थिति में',
],
];
$this->db->table('opd_dose_when')->insertBatch($rows);
$this->resetAutoIncrement('opd_dose_when', 18);
}
public function down()
{
// No-op: prior dose_when master rows vary by installation.
}
private function tableExists(string $table): bool
{
if (! preg_match('/^[a-zA-Z0-9_]+$/', $table)) {
return false;
}
$row = $this->db->query("SHOW TABLES LIKE '" . $table . "'")->getRowArray();
return ! empty($row);
}
private function resetAutoIncrement(string $table, int $nextId): void
{
if (! preg_match('/^[a-zA-Z0-9_]+$/', $table)) {
return;
}
$nextId = max(1, $nextId);
$this->db->query('ALTER TABLE `' . $table . '` AUTO_INCREMENT = ' . $nextId);
}
}