diff --git a/app/Console/Commands/CloneDatabase.php b/app/Console/Commands/CloneDatabase.php new file mode 100644 index 0000000..bbff6a2 --- /dev/null +++ b/app/Console/Commands/CloneDatabase.php @@ -0,0 +1,82 @@ +select("SHOW TABLES"); + + $namedatabase = DB::connection('mysql7')->getDatabaseName(); + + if (empty($tables)) { + $this->error("No tables found in database"); + return; + } + + $boolreject = false; + $list_of_rejected = ($boolreject) ? $this->rejected_table() : []; + // Get table names + $tableNames = array_map(fn($table) => is_array($table) ? array_values($table) : $table, $tables); + $tableString = collect($tables)->pluck('Tables_in_' .$namedatabase)->reject(fn($table) => in_array($table, $list_of_rejected))->implode(','); + // Run migration generator + Artisan::call("migrate:generate --path=database/migrations --tables=" .$tableString); + // Artisan::call("migrate:status"); + + $this->info("Migrations generated successfully for database"); + } + + protected function rejected_table() : Array{ + return [ + 'alert','auditbarcode','auditdaftar', + 'auditrekodsemakan','audtrail','bakipelanggan', + 'bandar','batchlel_xtra','bayaranpenebusan','belian', + 'brand','checker','configkaunter','gadaisimulasi','gadaitemp', + 'gadaixtra','hapusgadaionline','hargaemasbeli', + 'hargaemasjual','imbangan','inoutmarxtra', + 'jemas00', 'jemasbeli','jemasxtra', + 'jenisakaun','jualan','jualemas','jumlahtebus', + 'karat','karatbeli','karatjual','karatxtra', + 'ku_nm', 'ku_nmbaru', 'ku_nmxtra', 'kumpulan', + 'kurangxtra', 'lapringkasan', 'laptebus', 'lapterkumpul', + 'lapterkumpulharian','lelkarat','lelmarhun_xtra', 'marhunbeli', + 'marhunjual', 'marhunsimulasi', 'marhunxtra', 'model', + 'outmarhun', 'outmarhunxtra', 'palsu', 'pemeriksaan', + 'pengesahangadai', ' peratusan', 'percentonline', + 'polisxtra','product','ramalan', 'rekodtangguh', 'sahabat', + 'simpanan', 'simulasi_batchlel', 'simulasi_batchlelxtra', + 'simulasi_lelmarhun', 'simulasi_lelong', 'simulasi_lelongxtra', + 'tagpelanggan', 'tangguhlelong', 'taraf', + 'tebus_xtra', 'tebuslelong', 'temp_ic', 'tempimbang', + 'tempnosiri', 'tempnosirixtra', 'temppwd', 'temptarikhaging', + 'tunaigadteb', 'tuntutbakixtra', 'ubs_code', 'ugama', + 'updateserver', 'zparameter', 'zparameterxtra','ZPARAMETER1']; + } +} diff --git a/app/Http/Controllers/VaultController.php b/app/Http/Controllers/VaultController.php index cd33229..98aaae3 100644 --- a/app/Http/Controllers/VaultController.php +++ b/app/Http/Controllers/VaultController.php @@ -719,6 +719,25 @@ class VaultController extends Controller return response()->json($vault); } + public function createAutoSerahan($kodcaw,Request $request){ + $current = Carbon::now(); + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + + ApprovalWithdrawal::on('mysql7')->create([ + 'kodcaw' => $request->kodcaw, + 'pc_name' => $request->teller, + 'operasi_name' => null, + 'amount' => $request->amaun, + 'approval_status' => 'PENDING', + 'approval_timestamp' => null, + 'gldetail_id' => 0, + 'updated_serahan_v2' => 0, + 'updated_pendahuluan_v3' => 0, + 'created_at' => $current, + 'updated_at' => $current, + ]); + } + public function autoSerahan($kodcaw,Request $request){ $current = Carbon::now(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); @@ -755,9 +774,14 @@ class VaultController extends Controller 'ktacct' => $request->ktacct, 'descpt' => $request->keterangan, 'pendahuluan' => $request->amaun, - 'teller' => $request->teller . ' (AUTO V3)' + 'teller' => $request->teller . ' (AUTO V3)', + 'date_created' => $current ]); + ApprovalWithdrawal::on('mysql7')->update(array( + 'updated_pendahuluan_v3' => 1, + )); + }else if($request->jenispendahuluanserahan == 'serahan'){ $totalserahan = $request->amaun + $serahan; @@ -770,14 +794,15 @@ class VaultController extends Controller 'bakieod' => $bakiakhir )); - GlDetail::on($cawangan['mysql'])->create([ + $gldetail = GlDetail::on($cawangan['mysql'])->create([ 'kodcaw' => $request->kodcaw, 'tarikh' => $current->toDateString(), 'dtacct' => $request->dtacct, 'ktacct' => $request->ktacct, 'descpt' => $request->keterangan, 'serahan' => $request->amaun, - 'teller' => $request->teller . ' (AUTO V3)' + 'teller' => $request->teller . ' (AUTO V3)', + 'date_created' => $current ]); DenoPendSer::on('mysql7')->create([ @@ -807,14 +832,13 @@ class VaultController extends Controller 'jenis' =>$request->jenis, 'recno' =>$request->recno, 'update' => '0' - ]); - - ApprovalWithdrawal::on('mysql7')->create([ - 'kodcaw' => $request->kodcaw, - 'amaun' => $request->amaun, - 'status' => '1', - 'teller' => $request->teller . ' (AUTO V3)' ]); + + ApprovalWithdrawal::on('mysql7')->update(array( + 'updated_serahan_v2' => 1, + 'gldetail_id' => $gldetail->id + )); + } // Commit transactions @@ -828,6 +852,24 @@ class VaultController extends Controller } } + public function autoSerahanApproval($kodcaw,Request $request){ + $current = Carbon::now(); + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + $vault = Vault::on($cawangan['mysql'])->where('kodcaw','=',$kodcaw)->where('tarikh','=',$current->toDateString())->orderby('tarikh','desc')->first(); + + DB::connection($cawangan['mysql'])->beginTransaction(); + DB::connection('mysql7')->beginTransaction(); + + try{ + DB::connection('mysql7')->commit(); + DB::connection($cawangan['mysql'])->commit(); + }catch(\Exception $e){ + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); + return response()->json($e->getMessage()); + } + } + } diff --git a/database/migrations/2025_02_25_103124_add_timestamp_to_gldetail_table.php b/database/migrations/2025_02_25_103124_add_timestamp_to_gldetail_table.php new file mode 100644 index 0000000..af62292 --- /dev/null +++ b/database/migrations/2025_02_25_103124_add_timestamp_to_gldetail_table.php @@ -0,0 +1,48 @@ +getPdo(); + return true; + } catch(\Exception $e){ + return false; + } + }); + return $db_connection; + } + + public function up() + { + $db_connection = $this->getActiveDB(); + + foreach($db_connection as $dbase){ + Schema::connection($dbase)->table('gldetail', function (Blueprint $table) use($dbase) { + + $dateCreated = Schema::connection($dbase)->hasColumn('gldetail', 'date_created'); + + + if (!$dateCreated) { + $table->timestamp('date_created'); + } + }); + } + } +} diff --git a/routes/web.php b/routes/web.php index 1162cb1..dda5f28 100644 --- a/routes/web.php +++ b/routes/web.php @@ -680,6 +680,7 @@ $router->group(['prefix'=>'api'], function () use ($router){ /* Endpoint for Auto Serahan */ $router->get('auto/serahan/{kodcaw}',['uses'=>'VaultController@autoSerahan']); + $router->put('auto/approve/serahan/{kodcaw}',['uses'=>'VaultController@autoSerahanApproval']); });