Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fe4fc3097b |
-66
@@ -1,66 +0,0 @@
|
||||
APP_NAME=Lumen
|
||||
APP_ENV=local
|
||||
APP_KEY=WbPGkYNmXZ6ZQplGlvl0iZ7zyW1b09xa
|
||||
APP_DEBUG=true
|
||||
APP_URL=http://localhost
|
||||
APP_TIMEZONE=Asia/Kuala_Lumpur
|
||||
|
||||
LOG_CHANNEL=stack
|
||||
LOG_LEVEL=debug
|
||||
LOG_SLACK_WEBHOOK_URL=
|
||||
|
||||
DB_CONNECTION=mysql
|
||||
DB_HOST=mysql
|
||||
DB_PORT=3306
|
||||
DB_DATABASE=erahn_xtra
|
||||
DB_USERNAME=root
|
||||
DB_PASSWORD=root
|
||||
|
||||
DB_CONNECTION_7=mysql
|
||||
DB_HOST_7=mysql
|
||||
DB_PORT_7=3306
|
||||
DB_DATABASE_7=master_erahn
|
||||
DB_USERNAME_7=root
|
||||
DB_PASSWORD_7=root
|
||||
|
||||
# DB_CONNECTION_3=mysql
|
||||
# DB_HOST_3=127.0.0.1
|
||||
# DB_PORT_3=3306
|
||||
# DB_DATABASE_3=erahn_baling
|
||||
# DB_USERNAME_3=root
|
||||
# DB_PASSWORD_3=root
|
||||
|
||||
# DB_CONNECTION_4=mysql
|
||||
# DB_HOST_4=127.0.0.1
|
||||
# DB_PORT_4=3306
|
||||
# DB_DATABASE_4=arrahn_ld
|
||||
# DB_USERNAME_4=root
|
||||
# DB_PASSWORD_4=root
|
||||
|
||||
# DB_CONNECTION_5=mysql
|
||||
# DB_HOST_5=127.0.0.1
|
||||
# DB_PORT_5=3306
|
||||
# DB_DATABASE_5=erahn_segamat
|
||||
# DB_USERNAME_5=root
|
||||
# DB_PASSWORD_5=root
|
||||
|
||||
# DB_CONNECTION_6=mysql
|
||||
# DB_HOST_6=127.0.0.1
|
||||
# DB_PORT_6=3306
|
||||
# DB_DATABASE_6=arrahn_kb2
|
||||
# DB_USERNAME_6=spider
|
||||
# DB_PASSWORD_6=G0dz!ll42020
|
||||
|
||||
|
||||
# DB_CONNECTION_8=mysql
|
||||
# DB_HOST_8=127.0.0.1
|
||||
# DB_PORT_8=3306
|
||||
# DB_DATABASE_8=arrahn_klanas
|
||||
# DB_USERNAME_8=spider
|
||||
# DB_PASSWORD_8=G0dz!ll42020
|
||||
|
||||
TENNANT_MASTER_DB=master_erahn
|
||||
TENNANT_KAUNTER_DB=kaunter_erahn
|
||||
|
||||
CACHE_DRIVER=file
|
||||
QUEUE_CONNECTION=sync
|
||||
@@ -10,7 +10,7 @@ on:
|
||||
type: string
|
||||
|
||||
env:
|
||||
APP_IMAGE: git.koppkb.com/kopkb/api_arrahn
|
||||
APP_IMAGE: git.koppkb.com/KoPKB/api_arrahn
|
||||
DEPLOY_DIR: /home/arrahn/Project/api_arrahn
|
||||
|
||||
jobs:
|
||||
@@ -77,7 +77,7 @@ jobs:
|
||||
export IMAGE_TAG
|
||||
|
||||
docker compose --env-file .env.staging -f docker-compose.yml pull app
|
||||
docker compose --env-file .env.staging -f docker-compose.yml up -d --no-build --force-recreate --remove-orphans app web
|
||||
docker compose --env-file .env.staging -f docker-compose.yml up -d --no-build --remove-orphans
|
||||
|
||||
echo "✓ Deployed IMAGE_TAG=${IMAGE_TAG}"
|
||||
|
||||
|
||||
+1
-2
@@ -5,7 +5,6 @@ Homestead.yaml
|
||||
.env
|
||||
.phpunit.result.cache
|
||||
ray.php
|
||||
docker-compose.yml
|
||||
/docker_src
|
||||
/.vscode
|
||||
**/.DS_Store
|
||||
db-dump
|
||||
@@ -1,17 +1 @@
|
||||
You know what is this when you in this project
|
||||
|
||||
If you does't know what is this you probably in wrong project
|
||||
|
||||
```sql
|
||||
--- for all ip
|
||||
CREATE USER 'master_erahn'@'%' IDENTIFIED BY 'password';
|
||||
|
||||
--- for specific ip
|
||||
CREATE USER 'kaunter_erahn'@'localhost' IDENTIFIED BY 'password';
|
||||
|
||||
GRANT ALL PRIVILEGES ON kaunter_erahn.* TO 'kaunter_erahn'@'%';
|
||||
FLUSH PRIVILEGES;
|
||||
```
|
||||
|
||||
Gadai=Pembiayaan
|
||||
Tebus=penyelesaian penuh/ansuran
|
||||
@@ -1,22 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class BatchPembiayaanOnline extends Model
|
||||
{
|
||||
protected $table = 'batch_pembiayaan_online';
|
||||
|
||||
protected $fillable = [
|
||||
'batch_no',
|
||||
'kodcaw',
|
||||
'tarikh',
|
||||
'slot',
|
||||
'bilangan',
|
||||
'jumlah_keseluruhan',
|
||||
'status',
|
||||
'pc_submitted_by',
|
||||
'submitted_at',
|
||||
];
|
||||
}
|
||||
@@ -11,17 +11,6 @@ class Cawangan extends Model
|
||||
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* Display name from master table (`details_caw`).
|
||||
* Keep this as the single mapping so callers do not guess nama/namacaw.
|
||||
*/
|
||||
public function getNamaCawanganAttribute()
|
||||
{
|
||||
$nama = trim((string) ($this->attributes['details_caw'] ?? ''));
|
||||
|
||||
return $nama !== '' ? $nama : (string) ($this->attributes['kodcaw'] ?? '');
|
||||
}
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
|
||||
@@ -25,7 +25,6 @@ class Gadai extends Model
|
||||
'nilaimarhun',
|
||||
'berat',
|
||||
'pinjaman',
|
||||
'cara_terima',
|
||||
'telahbayar',
|
||||
'upahtelahbyr',
|
||||
'cajtelahbyr',
|
||||
|
||||
@@ -403,31 +403,58 @@ class CustomerController extends Controller
|
||||
}
|
||||
|
||||
public function assignAnggota($noic, Request $request)
|
||||
{
|
||||
// Semak sama ada pelanggan wujud
|
||||
$customer = Customer::on('mysql7')
|
||||
->where('kpbaru', $noic)
|
||||
->orWhere('kplama', $noic)
|
||||
->first();
|
||||
|
||||
if (!$customer) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Pelanggan tidak dijumpai.'
|
||||
], 404);
|
||||
}
|
||||
|
||||
// Kemaskini tag_anggota
|
||||
$customer->tag_anggota = 1;
|
||||
$customer->save();
|
||||
{
|
||||
// Semak sama ada pelanggan wujud
|
||||
$customer = Customer::on('mysql7')
|
||||
->where('kpbaru', $noic)
|
||||
->orWhere('kplama', $noic)
|
||||
->first();
|
||||
|
||||
if (!$customer) {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Tag anggota berjaya dikemaskini.',
|
||||
'data' => $customer
|
||||
], 200);
|
||||
'success' => false,
|
||||
'message' => 'Pelanggan tidak dijumpai.'
|
||||
], 404);
|
||||
}
|
||||
|
||||
// Kemaskini tag_anggota
|
||||
$customer->tag_anggota = 1;
|
||||
$customer->save();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Tag anggota berjaya dikemaskini.',
|
||||
'data' => $customer
|
||||
], 200);
|
||||
}
|
||||
}
|
||||
|
||||
public function assignAnggota($noic, Request $request)
|
||||
{
|
||||
// Semak sama ada pelanggan wujud
|
||||
$customer = Customer::on('mysql7')
|
||||
->where('kpbaru', $noic)
|
||||
->orWhere('kplama', $noic)
|
||||
->first();
|
||||
|
||||
if (!$customer) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Pelanggan tidak dijumpai.'
|
||||
], 404);
|
||||
}
|
||||
|
||||
// Kemaskini tag_anggota
|
||||
$customer->tag_anggota = 1;
|
||||
$customer->save();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Tag anggota berjaya dikemaskini.',
|
||||
'data' => $customer
|
||||
], 200);
|
||||
}
|
||||
|
||||
public function customerUpdateKaunter($nokp,$kodcaw, Request $request){
|
||||
$current = Carbon::now();
|
||||
|
||||
@@ -862,6 +889,14 @@ class CustomerController extends Controller
|
||||
}
|
||||
|
||||
|
||||
public function anggotaKoperasi(Request $request){
|
||||
|
||||
$anggota = Anggota::where('noic',$request->noic)->first();
|
||||
|
||||
return response()->json($anggota);
|
||||
}
|
||||
|
||||
|
||||
public function showCustomerByEachCawangan($ic)
|
||||
{
|
||||
$cawangan_all = Cawangan::on('mysql7')->get();
|
||||
|
||||
@@ -145,11 +145,8 @@ class KomuditiController extends Controller
|
||||
$komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first();
|
||||
|
||||
$unit_current = $komuditi_current['unit_komuditi'];
|
||||
$update_unit = $unit_current - $request->unit_komuditi;
|
||||
|
||||
// $unit_current = round((float) $komuditi_current['unit_komuditi'], 2);
|
||||
// $unit_komuditi = round((float) $request->unit_komuditi, 2);
|
||||
// $update_unit = round($unit_current - $unit_komuditi, 2);
|
||||
$update_unit = $unit_current - $request->unit_komuditi;
|
||||
|
||||
$update_komuditi = KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([
|
||||
'unit_komuditi' => $update_unit
|
||||
@@ -157,7 +154,6 @@ class KomuditiController extends Controller
|
||||
|
||||
$komuditi_transaksi = KomuditiTransaksi::on('mysql7')->create([
|
||||
'unit_komuditi' => $request->unit_komuditi,
|
||||
// 'unit_komuditi' => $unit_komuditi,
|
||||
'nosijil'=>$komuditi_current['no_sijil'],
|
||||
'norujukan' => $request->norujukan,
|
||||
'kodcaw' => $request->kodcaw ,
|
||||
|
||||
@@ -804,7 +804,8 @@ $date = new Carbon($request->tarikh);
|
||||
|
||||
$tebus = Tebus::on($cawangan['mysql'])
|
||||
->join('gadai as gad','gad.norujukan','=','tebus.norujukan')
|
||||
->where([['t_tebus','>=',$request->mula],['t_tebus','<=',$request->akhir],['tebus.jenistebus','=','T']]);
|
||||
->where([['t_tebus','>=',$request->mula],['t_tebus','<=',$request->akhir]]);
|
||||
->where([['t_tebus','>=',$request->mula],['t_tebus','<=',$request->akhir]]);
|
||||
|
||||
$ansuran = Transaction::on('mysql7')->whereDate('created_at','>=',$request->mula)->whereDate('created_at','<=',$request->akhir)->where([['trans_type','=','A'],['kodcaw','=',$request->kodcaw]]);
|
||||
$bayaranonlinequery = Transaction::on('mysql7')->whereDate('created_at','>=',$request->mula)->whereDate('created_at','<=',$request->akhir)->where('teller','=','Online')->where('kodcaw',$request->kodcaw);
|
||||
@@ -834,19 +835,27 @@ $date = new Carbon($request->tarikh);
|
||||
->whereDate('trans.created_at','<=',$request->akhir)
|
||||
->where('trans.trans_type','=','A')
|
||||
->where('trans.kodcaw','=',$request->kodcaw)
|
||||
// ->pluck('trans.norujukan');
|
||||
// ->pluck('trans.norujukan');
|
||||
// ->groupBy('trans.id')
|
||||
->sum('bayaran_keuntungan');
|
||||
|
||||
// dd($total_keuntunganansuran);
|
||||
// dd($total_keuntunganansuran);
|
||||
// $total_ansuran = number_format($total_ansuran,2);
|
||||
|
||||
$total_keuntungan = floatval($total_upah) + floatval($total_keuntunganansuran) + floatval($total_keuntungantebus);
|
||||
|
||||
|
||||
|
||||
|
||||
//b
|
||||
$bilangan_gadai = $gadai->count();
|
||||
$bilangan_tebus = $tebus->count();
|
||||
// $bilangan_ansuran = $ansuran->count();
|
||||
//$bilangan_customer_baru = Customer::on($cawangan['mysql'])->where([['tarikhdaftar','>=',$request->mula],['tarikhdaftar','<=',$request->akhir]])->count();
|
||||
//$bilangan_customer_baru = Customer::on('mysql7')->where([['tarikhdaftar','=',$request->tarikh],['kodcaw',$request->kodcaw]])->count()
|
||||
//$bilangan_customer_baru = Customer::on('mysql7')->where([['tarikhdaftar','>=',$request->mula],['tarikhdaftar','<=',$request->akhir]])->count();
|
||||
$bilangan_customer_baru = Customer::on('mysql7')->whereBetween('tarikhdaftar', [$request->mula, $request->akhir])->where('kodcaw', $request->kodcaw)->count();
|
||||
//$bilangan_customer_baru = Customer::on('mysql7')->where([['tarikhdaftar','=',$request->tarikh],['kodcaw',$request->kodcaw]])->count()
|
||||
//$bilangan_customer_baru = Customer::on('mysql7')->where([['tarikhdaftar','>=',$request->mula],['tarikhdaftar','<=',$request->akhir]])->count();
|
||||
$bilangan_customer_baru = Customer::on('mysql7')->whereBetween('tarikhdaftar', [$request->mula, $request->akhir])->where('kodcaw', $request->kodcaw)->count();
|
||||
|
||||
//f
|
||||
@@ -970,21 +979,36 @@ $date = new Carbon($request->tarikh);
|
||||
->whereDate('trans.created_at','<=',$request->akhir)
|
||||
->where('trans.teller','<>','Online')
|
||||
->where('trans.trans_type','=','A')
|
||||
->where('trans.kodcaw',$request->kodcaw)
|
||||
->pluck('transaksi_keuntungan.norujukan');
|
||||
->where('trans.kodcaw',$request->kodcaw);
|
||||
// ->pluck('transaksi_keuntungan.norujukan');
|
||||
|
||||
->where('trans.kodcaw',$request->kodcaw);
|
||||
// ->pluck('transaksi_keuntungan.norujukan');
|
||||
|
||||
|
||||
$gadaiDataKaunter = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$total_keuntunganansuran_data_kaunter)->whereNotNull('hargajualan')->pluck('norujukan');
|
||||
|
||||
$keuntunganansuran_kaunter_query = TransaksiKeuntungan::on('mysql7')
|
||||
->whereIn('norujukan',$gadaiDataKaunter)
|
||||
->whereDate('tarikh_bayaran','>=',$request->mula)
|
||||
->whereDate('tarikh_bayaran','<=',$request->akhir);
|
||||
// $gadaiDataKaunter = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$total_keuntunganansuran_data_kaunter)->whereNotNull('hargajualan')->pluck('norujukan');
|
||||
// $gadaiDataKaunter = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$total_keuntunganansuran_data_kaunter)->whereNotNull('hargajualan')->pluck('norujukan');
|
||||
|
||||
// $keuntunganansuran_kaunter_query = TransaksiKeuntungan::on('mysql7')
|
||||
// ->whereIn('norujukan',$gadaiDataKaunter)
|
||||
// ->where('kodcaw',$request->kodcaw)
|
||||
// ->whereDate('tarikh_bayaran','>=',$request->mula)
|
||||
// ->whereDate('tarikh_bayaran','<=',$request->akhir);
|
||||
//dd($keuntunganansuran_kaunter_query->get()->toArray());
|
||||
// $keuntunganansuran_kaunter_query = TransaksiKeuntungan::on('mysql7')
|
||||
// ->whereIn('norujukan',$gadaiDataKaunter)
|
||||
// ->where('kodcaw',$request->kodcaw)
|
||||
// ->whereDate('tarikh_bayaran','>=',$request->mula)
|
||||
// ->whereDate('tarikh_bayaran','<=',$request->akhir);
|
||||
//dd($keuntunganansuran_kaunter_query->get()->toArray());
|
||||
|
||||
|
||||
$total_keuntunganansuran_kaunter = $keuntunganansuran_kaunter_query->sum('bayaran_keuntungan');
|
||||
$bil_keuntunganansuran_kaunter = $keuntunganansuran_kaunter_query->count();
|
||||
|
||||
$total_keuntunganansuran_kaunter = $total_keuntunganansuran_data_kaunter->sum('bayaran_keuntungan');
|
||||
//dd($total_keuntunganansuran_kaunter);
|
||||
$bil_keuntunganansuran_kaunter = $total_keuntunganansuran_data_kaunter->count();
|
||||
$total_keuntunganansuran_kaunter = $total_keuntunganansuran_data_kaunter->sum('bayaran_keuntungan');
|
||||
//dd($total_keuntunganansuran_kaunter);
|
||||
$bil_keuntunganansuran_kaunter = $total_keuntunganansuran_data_kaunter->count();
|
||||
$total_keuntunganansuran_data_online = TransaksiKeuntungan::on('mysql7')
|
||||
->leftJoin('transaction as trans', function($join)
|
||||
{
|
||||
@@ -1245,7 +1269,8 @@ $date = new Carbon($request->tarikh);
|
||||
array_push($atarray,[
|
||||
'tarikh' => $tarikh,
|
||||
'masa' => $masa,
|
||||
'users' => $at['users'],
|
||||
'users' => isset($at['users']) && $at['users'] !== '' ? $at['users'] : '-',
|
||||
'users' => isset($at['users']) && $at['users'] !== '' ? $at['users'] : '-',
|
||||
'pelulus' => isset($atnewdata['namapelulus']) ? $atnewdata['namapelulus'] : '-',
|
||||
'actions' => $at['actions'],
|
||||
'norujukan' => $at['norujukan'],
|
||||
|
||||
@@ -1,160 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Services\PembiayaanOnline\ModalOnlineService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ModalOnlineController extends Controller
|
||||
{
|
||||
protected $service;
|
||||
|
||||
public function __construct(ModalOnlineService $service = null)
|
||||
{
|
||||
$this->service = $service ?: new ModalOnlineService();
|
||||
}
|
||||
|
||||
protected function respond(array $result)
|
||||
{
|
||||
return response()->json($result['payload'], $result['status']);
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/modal-online/{kodcaw}
|
||||
* Read-only: does not create today's row.
|
||||
*/
|
||||
public function get($kodcaw)
|
||||
{
|
||||
return $this->respond($this->service->get($kodcaw));
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Alias of get() — no longer auto-creates RM100k.
|
||||
*/
|
||||
public function getOrCreate($kodcaw)
|
||||
{
|
||||
return $this->get($kodcaw);
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/modal-online/{kodcaw}/reserve
|
||||
*/
|
||||
public function reserve($kodcaw, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->reserve($kodcaw, $request->input('amaun', 0)));
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/initiate/modal-online?zone=all|{zone}
|
||||
*/
|
||||
public function initiate(Request $request)
|
||||
{
|
||||
return $this->respond($this->service->initiate($request->input('zone', 'all')));
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/modal-online/{kodcaw}/topup/request
|
||||
* PC mohon had (hari pertama) atau tambah modal. Body: amaun, dimohon_oleh, nota?
|
||||
*/
|
||||
public function requestTopUp($kodcaw, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->requestTopUp(
|
||||
$kodcaw,
|
||||
$request->input('amaun', 0),
|
||||
$request->input('dimohon_oleh', ''),
|
||||
$request->input('nota')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/modal-online/{kodcaw}/topup/requests?status=&tarikh=
|
||||
*/
|
||||
public function listTopUpByCawangan($kodcaw, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->listTopUpRequests(
|
||||
$kodcaw,
|
||||
$request->input('status'),
|
||||
$request->input('tarikh')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/modal-online/operasi/topup/requests?status=PENDING&tarikh=
|
||||
*/
|
||||
public function listTopUpOperasi(Request $request)
|
||||
{
|
||||
$status = $request->input('status', 'PENDING');
|
||||
if ($status === 'all' || $status === '') {
|
||||
$status = null;
|
||||
}
|
||||
|
||||
return $this->respond($this->service->listTopUpRequests(
|
||||
null,
|
||||
$status,
|
||||
$request->input('tarikh')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/modal-online/operasi/topup/{id}/approve
|
||||
* Body: diluluskan_oleh, nota?, amaun? (optional override)
|
||||
*/
|
||||
public function approveTopUp($id, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->approveTopUp(
|
||||
$id,
|
||||
$request->input('diluluskan_oleh', ''),
|
||||
$request->input('nota'),
|
||||
null,
|
||||
$request->input('amaun')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/modal-online/operasi/topup/{id}/reject
|
||||
* Body: diluluskan_oleh, nota?
|
||||
*/
|
||||
public function rejectTopUp($id, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->rejectTopUp(
|
||||
$id,
|
||||
$request->input('diluluskan_oleh', ''),
|
||||
$request->input('nota')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/modal-online/{kodcaw}/close
|
||||
* Body: ditutup_oleh
|
||||
*/
|
||||
public function close($kodcaw, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->close(
|
||||
$kodcaw,
|
||||
$request->input('ditutup_oleh', '')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/modal-online/operasi/eod?zone=all&tarikh=
|
||||
*/
|
||||
public function listToday(Request $request)
|
||||
{
|
||||
return $this->respond($this->service->listToday(
|
||||
$request->input('zone', 'all'),
|
||||
$request->input('tarikh')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/modal-online/operasi/eod/close-all
|
||||
* Body: ditutup_oleh, zone?
|
||||
*/
|
||||
public function closeAll(Request $request)
|
||||
{
|
||||
return $this->respond($this->service->closeAll(
|
||||
$request->input('ditutup_oleh', ''),
|
||||
$request->input('zone', 'all')
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -1,204 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Services\PembiayaanOnline\PembiayaanOnlineService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class PembiayaanOnlineController extends Controller
|
||||
{
|
||||
protected $service;
|
||||
|
||||
public function __construct(PembiayaanOnlineService $service = null)
|
||||
{
|
||||
$this->service = $service ?: new PembiayaanOnlineService();
|
||||
}
|
||||
|
||||
protected function respond(array $result)
|
||||
{
|
||||
return response()->json($result['payload'], $result['status']);
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/pembiayaan-online/{kodcaw}
|
||||
*/
|
||||
public function store($kodcaw, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->store($kodcaw, $request->all()));
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/pembiayaan-online/{kodcaw}/by-norujukan/{norujukan}
|
||||
*/
|
||||
public function show($kodcaw, $norujukan)
|
||||
{
|
||||
return $this->respond($this->service->show($kodcaw, $norujukan));
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/pembiayaan-online/{kodcaw}/queue
|
||||
*/
|
||||
public function queue($kodcaw, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->queue($kodcaw, $request->input('status')));
|
||||
}
|
||||
|
||||
/**
|
||||
* PUT /api/pembiayaan-online/{kodcaw}/lines/{id}
|
||||
*/
|
||||
public function updateLine($kodcaw, $id, Request $request)
|
||||
{
|
||||
// Prefer only present keys so "has" semantics match previous controller.
|
||||
$input = [];
|
||||
foreach ([
|
||||
'kodbank', 'noakaun', 'nama_bank', 'nama_akaun', 'nota',
|
||||
'bukti_akaun_file_id', 'borang_file_id', 'update_customer_bank',
|
||||
] as $key) {
|
||||
if ($request->has($key)) {
|
||||
$input[$key] = $request->input($key);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->respond($this->service->updateLine($kodcaw, $id, $input));
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/pembiayaan-online/{kodcaw}/batches
|
||||
*/
|
||||
public function listBatches($kodcaw, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->listBatches(
|
||||
$kodcaw,
|
||||
$request->input('tarikh'),
|
||||
$request->input('status')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/pembiayaan-online/{kodcaw}/batches/{batchId}
|
||||
*/
|
||||
public function showBatch($kodcaw, $batchId)
|
||||
{
|
||||
return $this->respond($this->service->showBatch($kodcaw, $batchId));
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/pembiayaan-online/{kodcaw}/batches/submit
|
||||
*/
|
||||
public function submitBatch($kodcaw, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->submitBatch(
|
||||
$kodcaw,
|
||||
$request->input('ids', []),
|
||||
$request->input('pc_submitted_by', ''),
|
||||
$request->input('slot')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/pembiayaan-online/operasi/batches
|
||||
*/
|
||||
public function operasiListBatches(Request $request)
|
||||
{
|
||||
return $this->respond($this->service->operasiListBatches(
|
||||
$request->input('status', 'SUBMITTED'),
|
||||
$request->input('tarikh')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/pembiayaan-online/operasi/{kodcaw}/batches/{batchId}
|
||||
*/
|
||||
public function operasiShowBatch($kodcaw, $batchId)
|
||||
{
|
||||
return $this->showBatch($kodcaw, $batchId);
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/pembiayaan-online/operasi/{kodcaw}/lines/{id}/approve
|
||||
*/
|
||||
public function operasiApproveLine($kodcaw, $id, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->operasiApproveLine(
|
||||
$kodcaw,
|
||||
$id,
|
||||
$request->input('ops_by', '')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/pembiayaan-online/operasi/{kodcaw}/lines/{id}/reject
|
||||
*/
|
||||
public function operasiRejectLine($kodcaw, $id, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->operasiRejectLine(
|
||||
$kodcaw,
|
||||
$id,
|
||||
$request->input('ops_by', ''),
|
||||
$request->input('reject_reason', '')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/pembiayaan-online/operasi/{kodcaw}/batches/{batchId}/approve
|
||||
*/
|
||||
public function operasiApproveBatch($kodcaw, $batchId, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->operasiApproveBatch(
|
||||
$kodcaw,
|
||||
$batchId,
|
||||
$request->input('ops_by', '')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/pembiayaan-online/operasi/{kodcaw}/lines/{id}/paid
|
||||
* Body: ops_by, no_rujukan_bayaran, tarikh_bayaran?,
|
||||
* bukti_data + bukti_filename + bukti_type OR bukti_file_id
|
||||
*/
|
||||
public function operasiMarkPaid($kodcaw, $id, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->operasiMarkPaid($kodcaw, $id, $request->all()));
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/pembiayaan-online/operasi/{kodcaw}/batches/{batchId}/paid
|
||||
*/
|
||||
public function operasiMarkPaidBatch($kodcaw, $batchId, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->operasiMarkPaidBatch($kodcaw, $batchId, $request->all()));
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/pembiayaan-online/{kodcaw}/lines/{id}/bukti
|
||||
*/
|
||||
public function getBukti($kodcaw, $id)
|
||||
{
|
||||
return $this->respond($this->service->getBukti($kodcaw, $id));
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/pembiayaan-online/{kodcaw}/paid?blast_sent=0
|
||||
*/
|
||||
public function paidQueue($kodcaw, Request $request)
|
||||
{
|
||||
return $this->respond($this->service->paidQueue(
|
||||
$kodcaw,
|
||||
$request->input('blast_sent')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/pembiayaan-online/{kodcaw}/paid/blast
|
||||
* Body: ids[] (or ids), blast_by?
|
||||
*/
|
||||
public function markBlastSent($kodcaw, Request $request)
|
||||
{
|
||||
$ids = $request->input('ids', $request->input('id'));
|
||||
return $this->respond($this->service->markBlastSent(
|
||||
$kodcaw,
|
||||
$ids,
|
||||
$request->input('blast_by')
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -48,7 +48,7 @@ class GadaianController extends Controller
|
||||
$summary_gadaian_data = array_map(function ($db_connection) use ($request) {
|
||||
$query = Gadai::on($db_connection);
|
||||
|
||||
$query->select(DB::raw('count(norujukan) as total_gadaian, sum(berat) as sum_berat, sum(nilaimarhun) as sum_nilai_marhun, sum(pinjaman) as sum_pinjaman, sum(upah12) as sum_upah_12'));
|
||||
$query->select(DB::raw('count(norujukan) as total_gadaian, sum(berat) as sum_berat, sum(nilaimarhun) as sum_nilai_marhun, sum(pinjaman) as sum_pinjaman'));
|
||||
|
||||
$query->when($request->filled('startDate') and $request->filled('endDate'), function ($q) use ($request) {
|
||||
return $q->where('t_gadai', '>=', $request->startDate)
|
||||
|
||||
@@ -400,14 +400,12 @@ class VaultController extends Controller
|
||||
}
|
||||
|
||||
|
||||
$bakiakhirVault = $vault ? $vault['bakiakhir'] : 0;
|
||||
|
||||
if($total != 0)
|
||||
{
|
||||
$totalbakiakhirtunai = $bakiakhirVault + $total;
|
||||
$totalbakiakhirtunai = $vault['bakiakhir'] + $total;
|
||||
}else
|
||||
{
|
||||
$totalbakiakhirtunai = $bakiakhirVault;
|
||||
$totalbakiakhirtunai = $vault['bakiakhir'];
|
||||
}
|
||||
|
||||
return response()->json($totalbakiakhirtunai);
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class ModalOnline extends Model
|
||||
{
|
||||
protected $table = 'modal_online';
|
||||
|
||||
protected $fillable = [
|
||||
'tarikh',
|
||||
'kodcaw',
|
||||
'had',
|
||||
'digunakan',
|
||||
'baki',
|
||||
'tambah',
|
||||
'kurang',
|
||||
'ditutup',
|
||||
'ditutup_oleh',
|
||||
'ditutup_at',
|
||||
];
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class PembiayaanOnline extends Model
|
||||
{
|
||||
protected $table = 'pembiayaan_online';
|
||||
|
||||
protected $fillable = [
|
||||
'norujukan',
|
||||
'nokp',
|
||||
'nopelanggan',
|
||||
'nama_pelanggan',
|
||||
'kodcaw',
|
||||
'pinjaman',
|
||||
'kodbank',
|
||||
'nama_bank',
|
||||
'noakaun',
|
||||
'nama_akaun',
|
||||
'bukti_akaun_file_id',
|
||||
'borang_file_id',
|
||||
'status',
|
||||
'reject_reason',
|
||||
'rejected_by',
|
||||
'rejected_at',
|
||||
'batch_id',
|
||||
'bukti_file_id',
|
||||
'no_rujukan_bayaran',
|
||||
'tarikh_bayaran',
|
||||
'paid_at',
|
||||
'created_by',
|
||||
'pc_submitted_by',
|
||||
'ops_by',
|
||||
'nota',
|
||||
'blast_sent',
|
||||
];
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class RequestModalOnline extends Model
|
||||
{
|
||||
protected $table = 'request_modal_online';
|
||||
protected $connection = 'mysql7';
|
||||
|
||||
protected $fillable = [
|
||||
'kodcaw',
|
||||
'tarikh',
|
||||
'amaun',
|
||||
'dimohon_oleh',
|
||||
'status',
|
||||
'diluluskan_oleh',
|
||||
'nota',
|
||||
];
|
||||
}
|
||||
@@ -1,858 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\PembiayaanOnline;
|
||||
|
||||
use App\Cawangan;
|
||||
use App\ModalOnline;
|
||||
use App\RequestModalOnline;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class ModalOnlineService
|
||||
{
|
||||
/**
|
||||
* @return array{ok:bool,status:int,payload:mixed,mysql?:string}
|
||||
*/
|
||||
public function resolveMysql($kodcaw)
|
||||
{
|
||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $kodcaw)->first();
|
||||
|
||||
if (!$cawangan) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 404,
|
||||
'payload' => ['message' => 'Cawangan tidak dijumpai'],
|
||||
];
|
||||
}
|
||||
|
||||
return [
|
||||
'ok' => true,
|
||||
'status' => 200,
|
||||
'payload' => null,
|
||||
'mysql' => $cawangan['mysql'],
|
||||
];
|
||||
}
|
||||
|
||||
protected function todayDate()
|
||||
{
|
||||
return Carbon::now()->toDateString();
|
||||
}
|
||||
|
||||
protected function findPending($kodcaw)
|
||||
{
|
||||
return RequestModalOnline::on('mysql7')
|
||||
->where('kodcaw', $kodcaw)
|
||||
->where('status', 'PENDING')
|
||||
->first();
|
||||
}
|
||||
|
||||
protected function pendingPayload($pending)
|
||||
{
|
||||
return $pending ? $pending->toArray() : null;
|
||||
}
|
||||
|
||||
protected function missingSnapshot($kodcaw, $tarikh, $pending = null)
|
||||
{
|
||||
return [
|
||||
'tarikh' => $tarikh,
|
||||
'kodcaw' => $kodcaw,
|
||||
'had' => 0.00,
|
||||
'digunakan' => 0.00,
|
||||
'baki' => 0.00,
|
||||
'tambah' => 0.00,
|
||||
'kurang' => 0.00,
|
||||
'ditutup' => 0,
|
||||
'missing' => true,
|
||||
'pending_request' => $this->pendingPayload($pending),
|
||||
];
|
||||
}
|
||||
|
||||
protected function recalcBaki($modal)
|
||||
{
|
||||
$modal->baki = round(
|
||||
(float) $modal->had + (float) $modal->tambah - (float) $modal->kurang - (float) $modal->digunakan,
|
||||
2
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get today's modal_online row. Does not create — PC must request had from Operasi.
|
||||
*
|
||||
* @return array{ok:bool,status:int,payload:mixed}
|
||||
*/
|
||||
public function get($kodcaw)
|
||||
{
|
||||
$resolved = $this->resolveMysql($kodcaw);
|
||||
if (!$resolved['ok']) {
|
||||
return $resolved;
|
||||
}
|
||||
|
||||
$mysql = $resolved['mysql'];
|
||||
$tarikh = $this->todayDate();
|
||||
$pending = $this->findPending($kodcaw);
|
||||
|
||||
$modal = ModalOnline::on($mysql)
|
||||
->where('kodcaw', $kodcaw)
|
||||
->where('tarikh', $tarikh)
|
||||
->first();
|
||||
|
||||
if (!$modal) {
|
||||
return [
|
||||
'ok' => true,
|
||||
'status' => 200,
|
||||
'payload' => $this->missingSnapshot($kodcaw, $tarikh, $pending),
|
||||
];
|
||||
}
|
||||
|
||||
$payload = $modal->toArray();
|
||||
$payload['missing'] = false;
|
||||
$payload['pending_request'] = $this->pendingPayload($pending);
|
||||
|
||||
return [
|
||||
'ok' => true,
|
||||
'status' => 200,
|
||||
'payload' => $payload,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use get(). Kept so existing callers do not auto-seed RM100k.
|
||||
*/
|
||||
public function getOrCreate($kodcaw)
|
||||
{
|
||||
return $this->get($kodcaw);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reserve amount inside an existing branch DB connection (caller may wrap in transaction).
|
||||
*
|
||||
* @return array{ok:bool,status:int,payload:mixed}
|
||||
*/
|
||||
public function reserveAmountOnConnection($mysql, $kodcaw, $amaun, $tarikh = null)
|
||||
{
|
||||
$amaun = round((float) $amaun, 2);
|
||||
if ($amaun <= 0) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => ['message' => 'Amaun tidak sah'],
|
||||
];
|
||||
}
|
||||
|
||||
$tarikh = $tarikh ?: Carbon::now()->toDateString();
|
||||
|
||||
$modal = ModalOnline::on($mysql)
|
||||
->where('kodcaw', $kodcaw)
|
||||
->where('tarikh', $tarikh)
|
||||
->lockForUpdate()
|
||||
->first();
|
||||
|
||||
if (!$modal) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => [
|
||||
'message' => 'Modal online belum diwujudkan. Sila mohon had daripada Operasi terlebih dahulu.',
|
||||
'missing' => true,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
if ((int) ($modal->ditutup ?? 0) === 1) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => [
|
||||
'message' => 'Modal online hari ini sudah ditutup (EOD)',
|
||||
'modal_online' => $modal,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
if ((float) $modal->baki < $amaun) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => [
|
||||
'message' => 'Baki modal online tidak mencukupi',
|
||||
'baki' => (float) $modal->baki,
|
||||
'amaun' => $amaun,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
$modal->digunakan = round((float) $modal->digunakan + $amaun, 2);
|
||||
$modal->baki = round(
|
||||
(float) $modal->had + (float) $modal->tambah - (float) $modal->kurang - (float) $modal->digunakan,
|
||||
2
|
||||
);
|
||||
$modal->save();
|
||||
|
||||
return [
|
||||
'ok' => true,
|
||||
'status' => 200,
|
||||
'payload' => $modal,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Reserve amount from today's online float (transactional).
|
||||
*
|
||||
* @return array{ok:bool,status:int,payload:mixed}
|
||||
*/
|
||||
public function reserve($kodcaw, $amaun)
|
||||
{
|
||||
$resolved = $this->resolveMysql($kodcaw);
|
||||
if (!$resolved['ok']) {
|
||||
return $resolved;
|
||||
}
|
||||
|
||||
$mysql = $resolved['mysql'];
|
||||
$amaun = round((float) $amaun, 2);
|
||||
|
||||
if ($amaun <= 0) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => ['message' => 'Amaun tidak sah'],
|
||||
];
|
||||
}
|
||||
|
||||
try {
|
||||
return DB::connection($mysql)->transaction(function () use ($mysql, $kodcaw, $amaun) {
|
||||
return $this->reserveAmountOnConnection($mysql, $kodcaw, $amaun);
|
||||
});
|
||||
} catch (\Throwable $e) {
|
||||
Log::error('ModalOnline reserve failed: ' . $e->getMessage());
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 500,
|
||||
'payload' => ['message' => 'Gagal reserve modal online'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Had is no longer auto-seeded. Returns how many branches already have a row today.
|
||||
*
|
||||
* @return array{ok:bool,status:int,payload:mixed}
|
||||
*/
|
||||
public function initiate($zone = 'all')
|
||||
{
|
||||
$current = $this->todayDate();
|
||||
|
||||
if ($zone == 'all') {
|
||||
$cawanganAll = Cawangan::on('mysql7')->get();
|
||||
} else {
|
||||
$cawanganAll = Cawangan::on('mysql7')->where('zone', $zone)->get();
|
||||
}
|
||||
|
||||
$existing = 0;
|
||||
$missing = 0;
|
||||
|
||||
foreach ($cawanganAll as $cawangan) {
|
||||
try {
|
||||
$exists = ModalOnline::on($cawangan['mysql'])
|
||||
->where('kodcaw', $cawangan['kodcaw'])
|
||||
->where('tarikh', $current)
|
||||
->exists();
|
||||
|
||||
if ($exists) {
|
||||
$existing++;
|
||||
} else {
|
||||
$missing++;
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
Log::warning('initiate modal_online skip ' . $cawangan['kodcaw'] . ': ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'ok' => true,
|
||||
'status' => 200,
|
||||
'payload' => [
|
||||
'tarikh' => $current,
|
||||
'created' => 0,
|
||||
'existing' => $existing,
|
||||
'missing' => $missing,
|
||||
'message' => 'Modal online tidak di-initiate automatik. PC perlu mohon had daripada Operasi.',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* PC request opening had (or extra top-up) from Operasi.
|
||||
*
|
||||
* @return array{ok:bool,status:int,payload:mixed}
|
||||
*/
|
||||
public function requestTopUp($kodcaw, $amaun, $dimohonOleh, $nota = null)
|
||||
{
|
||||
$resolved = $this->resolveMysql($kodcaw);
|
||||
if (!$resolved['ok']) {
|
||||
return $resolved;
|
||||
}
|
||||
$mysql = $resolved['mysql'];
|
||||
|
||||
$amaun = round((float) $amaun, 2);
|
||||
$dimohonOleh = trim((string) $dimohonOleh);
|
||||
|
||||
if ($amaun <= 0) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => ['message' => 'Amaun tidak sah'],
|
||||
];
|
||||
}
|
||||
if ($dimohonOleh === '') {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => ['message' => 'dimohon_oleh diperlukan'],
|
||||
];
|
||||
}
|
||||
|
||||
$tarikh = $this->todayDate();
|
||||
$pending = $this->findPending($kodcaw);
|
||||
|
||||
if ($pending) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 409,
|
||||
'payload' => [
|
||||
'message' => 'Masih ada permohonan modal online PENDING untuk cawangan ini',
|
||||
'request' => $pending,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
$modal = ModalOnline::on($mysql)
|
||||
->where('kodcaw', $kodcaw)
|
||||
->where('tarikh', $tarikh)
|
||||
->first();
|
||||
|
||||
if ($modal && (int) ($modal->ditutup ?? 0) === 1) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => [
|
||||
'message' => 'Modal online hari ini sudah ditutup (EOD). Tidak boleh mohon.',
|
||||
'modal_online' => $modal,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
$jenis = $modal ? 'TOPUP' : 'HAD';
|
||||
|
||||
$request = RequestModalOnline::on('mysql7')->create([
|
||||
'kodcaw' => $kodcaw,
|
||||
'tarikh' => $tarikh,
|
||||
'amaun' => $amaun,
|
||||
'dimohon_oleh' => $dimohonOleh,
|
||||
'status' => 'PENDING',
|
||||
'nota' => $nota,
|
||||
]);
|
||||
|
||||
return [
|
||||
'ok' => true,
|
||||
'status' => 201,
|
||||
'payload' => [
|
||||
'request' => $request,
|
||||
'jenis' => $jenis,
|
||||
'modal_online' => $modal ?: $this->missingSnapshot($kodcaw, $tarikh, $request),
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* List top-up requests.
|
||||
* For PC: pass kodcaw. For Operasi: omit kodcaw (all branches).
|
||||
*
|
||||
* @return array{ok:bool,status:int,payload:mixed}
|
||||
*/
|
||||
public function listTopUpRequests($kodcaw = null, $status = null, $tarikh = null)
|
||||
{
|
||||
$query = RequestModalOnline::on('mysql7')->newQuery();
|
||||
|
||||
if ($kodcaw) {
|
||||
$query->where('kodcaw', $kodcaw);
|
||||
}
|
||||
if ($status) {
|
||||
$query->where('status', $status);
|
||||
}
|
||||
if ($tarikh) {
|
||||
$query->where('tarikh', $tarikh);
|
||||
}
|
||||
|
||||
$rows = $query->orderBy('id', 'desc')->get();
|
||||
|
||||
$cawMap = [];
|
||||
if (!$kodcaw) {
|
||||
foreach (Cawangan::on('mysql7')->get() as $caw) {
|
||||
$cawMap[$caw->kodcaw] = $caw->nama_cawangan;
|
||||
}
|
||||
}
|
||||
|
||||
$data = [];
|
||||
foreach ($rows as $row) {
|
||||
$item = $row->toArray();
|
||||
if (!$kodcaw) {
|
||||
$item['cawangan_nama'] = $cawMap[$row->kodcaw] ?? null;
|
||||
}
|
||||
$data[] = $item;
|
||||
}
|
||||
|
||||
return [
|
||||
'ok' => true,
|
||||
'status' => 200,
|
||||
'payload' => [
|
||||
'bilangan' => count($data),
|
||||
'data' => $data,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Operasi approve: first request of the day sets had; later requests add tambah.
|
||||
* Optional $amaunOverride lets operasi lulus a different amount than dimohon.
|
||||
*
|
||||
* @return array{ok:bool,status:int,payload:mixed}
|
||||
*/
|
||||
public function approveTopUp($requestId, $diluluskanOleh, $nota = null, $expectedKodcaw = null, $amaunOverride = null)
|
||||
{
|
||||
$diluluskanOleh = trim((string) $diluluskanOleh);
|
||||
if ($diluluskanOleh === '') {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => ['message' => 'diluluskan_oleh diperlukan'],
|
||||
];
|
||||
}
|
||||
|
||||
$req = RequestModalOnline::on('mysql7')->where('id', $requestId)->first();
|
||||
if (!$req) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 404,
|
||||
'payload' => ['message' => 'Permohonan tidak dijumpai'],
|
||||
];
|
||||
}
|
||||
|
||||
if ($expectedKodcaw && $req->kodcaw !== $expectedKodcaw) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 404,
|
||||
'payload' => ['message' => 'Permohonan tidak dijumpai'],
|
||||
];
|
||||
}
|
||||
|
||||
if ($req->status !== 'PENDING') {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => [
|
||||
'message' => 'Hanya permohonan PENDING boleh diluluskan',
|
||||
'status' => $req->status,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
$kodcaw = $req->kodcaw;
|
||||
$resolved = $this->resolveMysql($kodcaw);
|
||||
if (!$resolved['ok']) {
|
||||
return $resolved;
|
||||
}
|
||||
$mysql = $resolved['mysql'];
|
||||
$amaunDimohon = round((float) $req->amaun, 2);
|
||||
$amaun = $amaunDimohon;
|
||||
if ($amaunOverride !== null && $amaunOverride !== '') {
|
||||
$amaun = round((float) $amaunOverride, 2);
|
||||
if ($amaun <= 0) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => ['message' => 'Amaun diluluskan tidak sah'],
|
||||
];
|
||||
}
|
||||
}
|
||||
$tarikh = $this->todayDate();
|
||||
|
||||
try {
|
||||
$applied = DB::connection($mysql)->transaction(function () use ($mysql, $kodcaw, $tarikh, $amaun) {
|
||||
$modal = ModalOnline::on($mysql)
|
||||
->where('kodcaw', $kodcaw)
|
||||
->where('tarikh', $tarikh)
|
||||
->lockForUpdate()
|
||||
->first();
|
||||
|
||||
$jenis = 'TOPUP';
|
||||
|
||||
if (!$modal) {
|
||||
$modal = ModalOnline::on($mysql)->create([
|
||||
'tarikh' => $tarikh,
|
||||
'kodcaw' => $kodcaw,
|
||||
'had' => $amaun,
|
||||
'digunakan' => 0.00,
|
||||
'baki' => $amaun,
|
||||
'tambah' => 0.00,
|
||||
'kurang' => 0.00,
|
||||
'ditutup' => 0,
|
||||
]);
|
||||
$modal = ModalOnline::on($mysql)
|
||||
->where('id', $modal->id)
|
||||
->lockForUpdate()
|
||||
->first();
|
||||
$jenis = 'HAD';
|
||||
} else {
|
||||
if ((int) ($modal->ditutup ?? 0) === 1) {
|
||||
throw new \RuntimeException('MODAL_ONLINE_CLOSED');
|
||||
}
|
||||
|
||||
$modal->tambah = round((float) $modal->tambah + $amaun, 2);
|
||||
$this->recalcBaki($modal);
|
||||
$modal->save();
|
||||
}
|
||||
|
||||
return ['modal' => $modal, 'jenis' => $jenis];
|
||||
});
|
||||
|
||||
$modal = $applied['modal'];
|
||||
$jenis = $applied['jenis'];
|
||||
|
||||
$req->status = 'APPROVED';
|
||||
$req->diluluskan_oleh = $diluluskanOleh;
|
||||
$req->amaun = $amaun;
|
||||
|
||||
$notes = [];
|
||||
if (abs($amaun - $amaunDimohon) >= 0.01) {
|
||||
$notes[] = 'Amaun dimohon RM ' . number_format($amaunDimohon, 2)
|
||||
. ', diluluskan RM ' . number_format($amaun, 2);
|
||||
}
|
||||
if ($nota !== null && trim((string) $nota) !== '') {
|
||||
$notes[] = trim((string) $nota);
|
||||
}
|
||||
if ($notes) {
|
||||
$existing = trim((string) $req->nota);
|
||||
$req->nota = $existing === ''
|
||||
? implode(' | ', $notes)
|
||||
: $existing . ' | ' . implode(' | ', $notes);
|
||||
}
|
||||
$req->save();
|
||||
|
||||
return [
|
||||
'ok' => true,
|
||||
'status' => 200,
|
||||
'payload' => [
|
||||
'request' => $req->fresh(),
|
||||
'jenis' => $jenis,
|
||||
'modal_online' => $modal,
|
||||
],
|
||||
];
|
||||
} catch (\Throwable $e) {
|
||||
if ($e->getMessage() === 'MODAL_ONLINE_CLOSED') {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => ['message' => 'Modal online hari ini sudah ditutup (EOD). Tidak boleh lulus permohonan.'],
|
||||
];
|
||||
}
|
||||
Log::error('approveTopUp failed: ' . $e->getMessage());
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 500,
|
||||
'payload' => ['message' => 'Gagal lulus permohonan modal online'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Operasi reject top-up request.
|
||||
*
|
||||
* @return array{ok:bool,status:int,payload:mixed}
|
||||
*/
|
||||
public function rejectTopUp($requestId, $diluluskanOleh, $nota = null, $expectedKodcaw = null)
|
||||
{
|
||||
$diluluskanOleh = trim((string) $diluluskanOleh);
|
||||
if ($diluluskanOleh === '') {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => ['message' => 'diluluskan_oleh diperlukan'],
|
||||
];
|
||||
}
|
||||
|
||||
$req = RequestModalOnline::on('mysql7')->where('id', $requestId)->first();
|
||||
if (!$req) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 404,
|
||||
'payload' => ['message' => 'Permohonan tidak dijumpai'],
|
||||
];
|
||||
}
|
||||
|
||||
if ($expectedKodcaw && $req->kodcaw !== $expectedKodcaw) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 404,
|
||||
'payload' => ['message' => 'Permohonan tidak dijumpai'],
|
||||
];
|
||||
}
|
||||
|
||||
if ($req->status !== 'PENDING') {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => [
|
||||
'message' => 'Hanya permohonan PENDING boleh ditolak',
|
||||
'status' => $req->status,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
$req->status = 'REJECTED';
|
||||
$req->diluluskan_oleh = $diluluskanOleh;
|
||||
if ($nota !== null && trim((string) $nota) !== '') {
|
||||
$req->nota = trim(
|
||||
trim((string) $req->nota) === ''
|
||||
? (string) $nota
|
||||
: $req->nota . ' | ' . $nota
|
||||
);
|
||||
}
|
||||
$req->save();
|
||||
|
||||
return [
|
||||
'ok' => true,
|
||||
'status' => 200,
|
||||
'payload' => ['request' => $req],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* EOD close for one branch: return unused baki via kurang, mark ditutup.
|
||||
* Also auto-rejects PENDING top-up requests for the branch.
|
||||
*
|
||||
* @return array{ok:bool,status:int,payload:mixed}
|
||||
*/
|
||||
public function close($kodcaw, $ditutupOleh)
|
||||
{
|
||||
$resolved = $this->resolveMysql($kodcaw);
|
||||
if (!$resolved['ok']) {
|
||||
return $resolved;
|
||||
}
|
||||
$mysql = $resolved['mysql'];
|
||||
|
||||
$ditutupOleh = trim((string) $ditutupOleh);
|
||||
if ($ditutupOleh === '') {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => ['message' => 'ditutup_oleh diperlukan'],
|
||||
];
|
||||
}
|
||||
|
||||
$tarikh = Carbon::now()->toDateString();
|
||||
$now = Carbon::now();
|
||||
|
||||
try {
|
||||
$result = DB::connection($mysql)->transaction(function () use ($mysql, $kodcaw, $tarikh, $ditutupOleh, $now) {
|
||||
$modal = ModalOnline::on($mysql)
|
||||
->where('kodcaw', $kodcaw)
|
||||
->where('tarikh', $tarikh)
|
||||
->lockForUpdate()
|
||||
->first();
|
||||
|
||||
if (!$modal) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 404,
|
||||
'payload' => [
|
||||
'message' => 'Tiada modal online hari ini untuk ditutup. Teller belum mohon / PC belum lulus had.',
|
||||
'missing' => true,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
if ((int) ($modal->ditutup ?? 0) === 1) {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 409,
|
||||
'payload' => [
|
||||
'message' => 'Modal online sudah ditutup untuk hari ini',
|
||||
'modal_online' => $modal,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
$unused = round((float) $modal->baki, 2);
|
||||
$modal->kurang = round((float) $modal->kurang + $unused, 2);
|
||||
$modal->baki = round(
|
||||
(float) $modal->had + (float) $modal->tambah - (float) $modal->kurang - (float) $modal->digunakan,
|
||||
2
|
||||
);
|
||||
$modal->ditutup = 1;
|
||||
$modal->ditutup_oleh = $ditutupOleh;
|
||||
$modal->ditutup_at = $now;
|
||||
$modal->save();
|
||||
|
||||
return [
|
||||
'ok' => true,
|
||||
'status' => 200,
|
||||
'payload' => [
|
||||
'modal_online' => $modal,
|
||||
'dikembalikan' => $unused,
|
||||
],
|
||||
];
|
||||
});
|
||||
|
||||
if (!$result['ok']) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
$pendingRejected = RequestModalOnline::on('mysql7')
|
||||
->where('kodcaw', $kodcaw)
|
||||
->where('status', 'PENDING')
|
||||
->get();
|
||||
|
||||
foreach ($pendingRejected as $req) {
|
||||
$req->status = 'REJECTED';
|
||||
$req->diluluskan_oleh = $ditutupOleh;
|
||||
$tag = 'Auto reject: EOD close';
|
||||
$req->nota = trim((string) $req->nota) === ''
|
||||
? $tag
|
||||
: trim($req->nota) . ' | ' . $tag;
|
||||
$req->save();
|
||||
}
|
||||
|
||||
$result['payload']['pending_topup_ditolak'] = $pendingRejected->count();
|
||||
return $result;
|
||||
} catch (\Throwable $e) {
|
||||
Log::error('modal online close failed: ' . $e->getMessage());
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 500,
|
||||
'payload' => ['message' => 'Gagal tutup modal online'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Operasi: list today's modal_online across branches.
|
||||
*
|
||||
* @return array{ok:bool,status:int,payload:mixed}
|
||||
*/
|
||||
public function listToday($zone = 'all', $tarikh = null)
|
||||
{
|
||||
$tarikh = $tarikh ?: Carbon::now()->toDateString();
|
||||
|
||||
if ($zone == 'all') {
|
||||
$cawanganAll = Cawangan::on('mysql7')->get();
|
||||
} else {
|
||||
$cawanganAll = Cawangan::on('mysql7')->where('zone', $zone)->get();
|
||||
}
|
||||
|
||||
$rows = [];
|
||||
foreach ($cawanganAll as $cawangan) {
|
||||
try {
|
||||
$modal = ModalOnline::on($cawangan['mysql'])
|
||||
->where('kodcaw', $cawangan['kodcaw'])
|
||||
->where('tarikh', $tarikh)
|
||||
->first();
|
||||
|
||||
$row = $modal ? $modal->toArray() : [
|
||||
'tarikh' => $tarikh,
|
||||
'kodcaw' => $cawangan['kodcaw'],
|
||||
'had' => 0,
|
||||
'digunakan' => 0,
|
||||
'baki' => 0,
|
||||
'tambah' => 0,
|
||||
'kurang' => 0,
|
||||
'ditutup' => 0,
|
||||
'missing' => true,
|
||||
];
|
||||
$row['cawangan_nama'] = $cawangan->nama_cawangan;
|
||||
$row['missing'] = empty($modal);
|
||||
$rows[] = $row;
|
||||
} catch (\Throwable $e) {
|
||||
Log::warning('listToday modal_online skip ' . $cawangan['kodcaw'] . ': ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
usort($rows, function ($a, $b) {
|
||||
return strcmp((string) ($a['kodcaw'] ?? ''), (string) ($b['kodcaw'] ?? ''));
|
||||
});
|
||||
|
||||
$open = 0;
|
||||
$closed = 0;
|
||||
$missing = 0;
|
||||
foreach ($rows as $row) {
|
||||
if (!empty($row['missing'])) {
|
||||
$missing++;
|
||||
} elseif ((int) ($row['ditutup'] ?? 0) === 1) {
|
||||
$closed++;
|
||||
} else {
|
||||
$open++;
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'ok' => true,
|
||||
'status' => 200,
|
||||
'payload' => [
|
||||
'tarikh' => $tarikh,
|
||||
'bilangan' => count($rows),
|
||||
'open' => $open,
|
||||
'closed' => $closed,
|
||||
'missing' => $missing,
|
||||
'data' => $rows,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Operasi bulk EOD close for open branches today.
|
||||
*
|
||||
* @return array{ok:bool,status:int,payload:mixed}
|
||||
*/
|
||||
public function closeAll($ditutupOleh, $zone = 'all')
|
||||
{
|
||||
$ditutupOleh = trim((string) $ditutupOleh);
|
||||
if ($ditutupOleh === '') {
|
||||
return [
|
||||
'ok' => false,
|
||||
'status' => 422,
|
||||
'payload' => ['message' => 'ditutup_oleh diperlukan'],
|
||||
];
|
||||
}
|
||||
|
||||
$list = $this->listToday($zone);
|
||||
$closed = 0;
|
||||
$skipped = 0;
|
||||
$failed = [];
|
||||
|
||||
foreach ($list['payload']['data'] as $row) {
|
||||
if (!empty($row['missing']) || (int) ($row['ditutup'] ?? 0) === 1) {
|
||||
$skipped++;
|
||||
continue;
|
||||
}
|
||||
$res = $this->close($row['kodcaw'], $ditutupOleh);
|
||||
if ($res['ok']) {
|
||||
$closed++;
|
||||
} else {
|
||||
$failed[] = [
|
||||
'kodcaw' => $row['kodcaw'],
|
||||
'message' => $res['payload']['message'] ?? 'gagal',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'ok' => true,
|
||||
'status' => 200,
|
||||
'payload' => [
|
||||
'closed' => $closed,
|
||||
'skipped' => $skipped,
|
||||
'failed' => $failed,
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1 +0,0 @@
|
||||
/cache
|
||||
@@ -23,33 +23,6 @@ $app = new Laravel\Lumen\Application(
|
||||
dirname(__DIR__)
|
||||
);
|
||||
|
||||
/*
|
||||
| Laravel's storage_path() helper resolves app('path.storage'). Lumen does not
|
||||
| register that binding by default; config files that call storage_path() at
|
||||
| load time (e.g. config/logging.php) would fail without this.
|
||||
*/
|
||||
$app->instance('path.storage', $app->storagePath());
|
||||
|
||||
/*
|
||||
| Laravel's Foundation helpers are loaded before Lumen's and win for names like
|
||||
| response() and url(). Those helpers resolve Illuminate\Contracts\* from the
|
||||
| container; Lumen only registers the "url" service, not the contracts. Map the
|
||||
| contracts to Lumen's implementations so helpers work across the app.
|
||||
*/
|
||||
$app->singleton(
|
||||
\Illuminate\Contracts\Routing\ResponseFactory::class,
|
||||
function () {
|
||||
return new \Laravel\Lumen\Http\ResponseFactory();
|
||||
}
|
||||
);
|
||||
|
||||
$app->singleton(
|
||||
\Illuminate\Contracts\Routing\UrlGenerator::class,
|
||||
function ($app) {
|
||||
return $app->make('url');
|
||||
}
|
||||
);
|
||||
|
||||
$app->withFacades();
|
||||
|
||||
$app->withEloquent();
|
||||
@@ -87,7 +60,6 @@ $app->singleton(
|
||||
*/
|
||||
|
||||
$app->configure('app');
|
||||
$app->configure('logging');
|
||||
$app->configure('tinker');
|
||||
$app->configure('tennant_database');
|
||||
$app->configure('report');
|
||||
|
||||
+143
@@ -0,0 +1,143 @@
|
||||
<?php return array (
|
||||
'barryvdh/laravel-debugbar' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Barryvdh\\Debugbar\\ServiceProvider',
|
||||
),
|
||||
'aliases' =>
|
||||
array (
|
||||
'Debugbar' => 'Barryvdh\\Debugbar\\Facades\\Debugbar',
|
||||
),
|
||||
),
|
||||
'barryvdh/laravel-dompdf' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Barryvdh\\DomPDF\\ServiceProvider',
|
||||
),
|
||||
'aliases' =>
|
||||
array (
|
||||
'PDF' => 'Barryvdh\\DomPDF\\Facade',
|
||||
),
|
||||
),
|
||||
'facade/ignition' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Facade\\Ignition\\IgnitionServiceProvider',
|
||||
),
|
||||
'aliases' =>
|
||||
array (
|
||||
'Flare' => 'Facade\\Ignition\\Facades\\Flare',
|
||||
),
|
||||
),
|
||||
'fideloper/proxy' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider',
|
||||
),
|
||||
),
|
||||
'fruitcake/laravel-cors' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Fruitcake\\Cors\\CorsServiceProvider',
|
||||
),
|
||||
),
|
||||
'intervention/image' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Intervention\\Image\\ImageServiceProvider',
|
||||
),
|
||||
'aliases' =>
|
||||
array (
|
||||
'Image' => 'Intervention\\Image\\Facades\\Image',
|
||||
),
|
||||
),
|
||||
'jeroennoten/laravel-adminlte' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'JeroenNoten\\LaravelAdminLte\\AdminLteServiceProvider',
|
||||
),
|
||||
),
|
||||
'laravel/tinker' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Laravel\\Tinker\\TinkerServiceProvider',
|
||||
),
|
||||
),
|
||||
'laravel/ui' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Laravel\\Ui\\UiServiceProvider',
|
||||
),
|
||||
),
|
||||
'milon/barcode' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Milon\\Barcode\\BarcodeServiceProvider',
|
||||
),
|
||||
'aliases' =>
|
||||
array (
|
||||
'DNS1D' => 'Milon\\Barcode\\Facades\\DNS1DFacade',
|
||||
'DNS2D' => 'Milon\\Barcode\\Facades\\DNS2DFacade',
|
||||
),
|
||||
),
|
||||
'nesbot/carbon' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Carbon\\Laravel\\ServiceProvider',
|
||||
),
|
||||
),
|
||||
'nunomaduro/collision' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
|
||||
),
|
||||
),
|
||||
'rap2hpoutre/laravel-log-viewer' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Rap2hpoutre\\LaravelLogViewer\\LaravelLogViewerServiceProvider',
|
||||
),
|
||||
),
|
||||
'simplesoftwareio/simple-qrcode' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'SimpleSoftwareIO\\QrCode\\QrCodeServiceProvider',
|
||||
),
|
||||
'aliases' =>
|
||||
array (
|
||||
'QrCode' => 'SimpleSoftwareIO\\QrCode\\Facades\\QrCode',
|
||||
),
|
||||
),
|
||||
'spatie/laravel-medialibrary' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Spatie\\MediaLibrary\\MediaLibraryServiceProvider',
|
||||
),
|
||||
),
|
||||
'yajra/laravel-datatables-oracle' =>
|
||||
array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Yajra\\DataTables\\DataTablesServiceProvider',
|
||||
),
|
||||
'aliases' =>
|
||||
array (
|
||||
'DataTables' => 'Yajra\\DataTables\\Facades\\DataTables',
|
||||
),
|
||||
),
|
||||
);
|
||||
+238
@@ -0,0 +1,238 @@
|
||||
<?php return array (
|
||||
'providers' =>
|
||||
array (
|
||||
0 => 'Illuminate\\Auth\\AuthServiceProvider',
|
||||
1 => 'Illuminate\\Broadcasting\\BroadcastServiceProvider',
|
||||
2 => 'Illuminate\\Bus\\BusServiceProvider',
|
||||
3 => 'Illuminate\\Cache\\CacheServiceProvider',
|
||||
4 => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
5 => 'Illuminate\\Cookie\\CookieServiceProvider',
|
||||
6 => 'Illuminate\\Database\\DatabaseServiceProvider',
|
||||
7 => 'Illuminate\\Encryption\\EncryptionServiceProvider',
|
||||
8 => 'Illuminate\\Filesystem\\FilesystemServiceProvider',
|
||||
9 => 'Illuminate\\Foundation\\Providers\\FoundationServiceProvider',
|
||||
10 => 'Illuminate\\Hashing\\HashServiceProvider',
|
||||
11 => 'Illuminate\\Mail\\MailServiceProvider',
|
||||
12 => 'Illuminate\\Notifications\\NotificationServiceProvider',
|
||||
13 => 'Illuminate\\Pagination\\PaginationServiceProvider',
|
||||
14 => 'Illuminate\\Pipeline\\PipelineServiceProvider',
|
||||
15 => 'Illuminate\\Queue\\QueueServiceProvider',
|
||||
16 => 'Illuminate\\Redis\\RedisServiceProvider',
|
||||
17 => 'Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider',
|
||||
18 => 'Illuminate\\Session\\SessionServiceProvider',
|
||||
19 => 'Illuminate\\Translation\\TranslationServiceProvider',
|
||||
20 => 'Illuminate\\Validation\\ValidationServiceProvider',
|
||||
21 => 'Illuminate\\View\\ViewServiceProvider',
|
||||
22 => 'Barryvdh\\Debugbar\\ServiceProvider',
|
||||
23 => 'Barryvdh\\DomPDF\\ServiceProvider',
|
||||
24 => 'Facade\\Ignition\\IgnitionServiceProvider',
|
||||
25 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider',
|
||||
26 => 'Fruitcake\\Cors\\CorsServiceProvider',
|
||||
27 => 'Intervention\\Image\\ImageServiceProvider',
|
||||
28 => 'JeroenNoten\\LaravelAdminLte\\AdminLteServiceProvider',
|
||||
29 => 'Laravel\\Tinker\\TinkerServiceProvider',
|
||||
30 => 'Laravel\\Ui\\UiServiceProvider',
|
||||
31 => 'Milon\\Barcode\\BarcodeServiceProvider',
|
||||
32 => 'Carbon\\Laravel\\ServiceProvider',
|
||||
33 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
|
||||
34 => 'Rap2hpoutre\\LaravelLogViewer\\LaravelLogViewerServiceProvider',
|
||||
35 => 'SimpleSoftwareIO\\QrCode\\QrCodeServiceProvider',
|
||||
36 => 'Spatie\\MediaLibrary\\MediaLibraryServiceProvider',
|
||||
37 => 'Yajra\\DataTables\\DataTablesServiceProvider',
|
||||
38 => 'App\\Providers\\AppServiceProvider',
|
||||
39 => 'App\\Providers\\AuthServiceProvider',
|
||||
40 => 'App\\Providers\\EventServiceProvider',
|
||||
41 => 'App\\Providers\\RouteServiceProvider',
|
||||
42 => 'Yajra\\DataTables\\DataTablesServiceProvider',
|
||||
43 => 'Barryvdh\\DomPDF\\ServiceProvider',
|
||||
44 => 'Milon\\Barcode\\BarcodeServiceProvider',
|
||||
45 => 'Rap2hpoutre\\LaravelLogViewer\\LaravelLogViewerServiceProvider',
|
||||
),
|
||||
'eager' =>
|
||||
array (
|
||||
0 => 'Illuminate\\Auth\\AuthServiceProvider',
|
||||
1 => 'Illuminate\\Cookie\\CookieServiceProvider',
|
||||
2 => 'Illuminate\\Database\\DatabaseServiceProvider',
|
||||
3 => 'Illuminate\\Encryption\\EncryptionServiceProvider',
|
||||
4 => 'Illuminate\\Filesystem\\FilesystemServiceProvider',
|
||||
5 => 'Illuminate\\Foundation\\Providers\\FoundationServiceProvider',
|
||||
6 => 'Illuminate\\Notifications\\NotificationServiceProvider',
|
||||
7 => 'Illuminate\\Pagination\\PaginationServiceProvider',
|
||||
8 => 'Illuminate\\Session\\SessionServiceProvider',
|
||||
9 => 'Illuminate\\View\\ViewServiceProvider',
|
||||
10 => 'Barryvdh\\Debugbar\\ServiceProvider',
|
||||
11 => 'Barryvdh\\DomPDF\\ServiceProvider',
|
||||
12 => 'Facade\\Ignition\\IgnitionServiceProvider',
|
||||
13 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider',
|
||||
14 => 'Fruitcake\\Cors\\CorsServiceProvider',
|
||||
15 => 'Intervention\\Image\\ImageServiceProvider',
|
||||
16 => 'JeroenNoten\\LaravelAdminLte\\AdminLteServiceProvider',
|
||||
17 => 'Laravel\\Ui\\UiServiceProvider',
|
||||
18 => 'Milon\\Barcode\\BarcodeServiceProvider',
|
||||
19 => 'Carbon\\Laravel\\ServiceProvider',
|
||||
20 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
|
||||
21 => 'Rap2hpoutre\\LaravelLogViewer\\LaravelLogViewerServiceProvider',
|
||||
22 => 'SimpleSoftwareIO\\QrCode\\QrCodeServiceProvider',
|
||||
23 => 'Spatie\\MediaLibrary\\MediaLibraryServiceProvider',
|
||||
24 => 'Yajra\\DataTables\\DataTablesServiceProvider',
|
||||
25 => 'App\\Providers\\AppServiceProvider',
|
||||
26 => 'App\\Providers\\AuthServiceProvider',
|
||||
27 => 'App\\Providers\\EventServiceProvider',
|
||||
28 => 'App\\Providers\\RouteServiceProvider',
|
||||
29 => 'Yajra\\DataTables\\DataTablesServiceProvider',
|
||||
30 => 'Barryvdh\\DomPDF\\ServiceProvider',
|
||||
31 => 'Milon\\Barcode\\BarcodeServiceProvider',
|
||||
32 => 'Rap2hpoutre\\LaravelLogViewer\\LaravelLogViewerServiceProvider',
|
||||
),
|
||||
'deferred' =>
|
||||
array (
|
||||
'Illuminate\\Broadcasting\\BroadcastManager' => 'Illuminate\\Broadcasting\\BroadcastServiceProvider',
|
||||
'Illuminate\\Contracts\\Broadcasting\\Factory' => 'Illuminate\\Broadcasting\\BroadcastServiceProvider',
|
||||
'Illuminate\\Contracts\\Broadcasting\\Broadcaster' => 'Illuminate\\Broadcasting\\BroadcastServiceProvider',
|
||||
'Illuminate\\Bus\\Dispatcher' => 'Illuminate\\Bus\\BusServiceProvider',
|
||||
'Illuminate\\Contracts\\Bus\\Dispatcher' => 'Illuminate\\Bus\\BusServiceProvider',
|
||||
'Illuminate\\Contracts\\Bus\\QueueingDispatcher' => 'Illuminate\\Bus\\BusServiceProvider',
|
||||
'cache' => 'Illuminate\\Cache\\CacheServiceProvider',
|
||||
'cache.store' => 'Illuminate\\Cache\\CacheServiceProvider',
|
||||
'cache.psr6' => 'Illuminate\\Cache\\CacheServiceProvider',
|
||||
'memcached.connector' => 'Illuminate\\Cache\\CacheServiceProvider',
|
||||
'command.cache.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.cache.forget' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.clear-compiled' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.auth.resets.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.config.cache' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.config.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.db.wipe' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.down' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.environment' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.event.cache' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.event.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.event.list' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.key.generate' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.optimize' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.optimize.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.package.discover' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.queue.failed' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.queue.flush' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.queue.forget' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.queue.listen' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.queue.restart' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.queue.retry' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.queue.work' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.route.cache' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.route.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.route.list' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.seed' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'Illuminate\\Console\\Scheduling\\ScheduleFinishCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'Illuminate\\Console\\Scheduling\\ScheduleRunCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.storage.link' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.up' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.view.cache' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.view.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.cache.table' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.cast.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.channel.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.component.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.console.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.controller.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.event.generate' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.event.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.exception.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.factory.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.job.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.listener.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.mail.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.middleware.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.model.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.notification.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.notification.table' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.observer.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.policy.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.provider.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.queue.failed-table' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.queue.table' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.request.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.resource.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.rule.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.seeder.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.session.table' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.serve' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.stub.publish' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.test.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.vendor.publish' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'migrator' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'migration.repository' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'migration.creator' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.migrate' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.migrate.fresh' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.migrate.install' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.migrate.refresh' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.migrate.reset' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.migrate.rollback' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.migrate.status' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'command.migrate.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'composer' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
|
||||
'hash' => 'Illuminate\\Hashing\\HashServiceProvider',
|
||||
'hash.driver' => 'Illuminate\\Hashing\\HashServiceProvider',
|
||||
'mail.manager' => 'Illuminate\\Mail\\MailServiceProvider',
|
||||
'mailer' => 'Illuminate\\Mail\\MailServiceProvider',
|
||||
'Illuminate\\Mail\\Markdown' => 'Illuminate\\Mail\\MailServiceProvider',
|
||||
'Illuminate\\Contracts\\Pipeline\\Hub' => 'Illuminate\\Pipeline\\PipelineServiceProvider',
|
||||
'queue' => 'Illuminate\\Queue\\QueueServiceProvider',
|
||||
'queue.worker' => 'Illuminate\\Queue\\QueueServiceProvider',
|
||||
'queue.listener' => 'Illuminate\\Queue\\QueueServiceProvider',
|
||||
'queue.failer' => 'Illuminate\\Queue\\QueueServiceProvider',
|
||||
'queue.connection' => 'Illuminate\\Queue\\QueueServiceProvider',
|
||||
'redis' => 'Illuminate\\Redis\\RedisServiceProvider',
|
||||
'redis.connection' => 'Illuminate\\Redis\\RedisServiceProvider',
|
||||
'auth.password' => 'Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider',
|
||||
'auth.password.broker' => 'Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider',
|
||||
'translator' => 'Illuminate\\Translation\\TranslationServiceProvider',
|
||||
'translation.loader' => 'Illuminate\\Translation\\TranslationServiceProvider',
|
||||
'validator' => 'Illuminate\\Validation\\ValidationServiceProvider',
|
||||
'validation.presence' => 'Illuminate\\Validation\\ValidationServiceProvider',
|
||||
'command.tinker' => 'Laravel\\Tinker\\TinkerServiceProvider',
|
||||
),
|
||||
'when' =>
|
||||
array (
|
||||
'Illuminate\\Broadcasting\\BroadcastServiceProvider' =>
|
||||
array (
|
||||
),
|
||||
'Illuminate\\Bus\\BusServiceProvider' =>
|
||||
array (
|
||||
),
|
||||
'Illuminate\\Cache\\CacheServiceProvider' =>
|
||||
array (
|
||||
),
|
||||
'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider' =>
|
||||
array (
|
||||
),
|
||||
'Illuminate\\Hashing\\HashServiceProvider' =>
|
||||
array (
|
||||
),
|
||||
'Illuminate\\Mail\\MailServiceProvider' =>
|
||||
array (
|
||||
),
|
||||
'Illuminate\\Pipeline\\PipelineServiceProvider' =>
|
||||
array (
|
||||
),
|
||||
'Illuminate\\Queue\\QueueServiceProvider' =>
|
||||
array (
|
||||
),
|
||||
'Illuminate\\Redis\\RedisServiceProvider' =>
|
||||
array (
|
||||
),
|
||||
'Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider' =>
|
||||
array (
|
||||
),
|
||||
'Illuminate\\Translation\\TranslationServiceProvider' =>
|
||||
array (
|
||||
),
|
||||
'Illuminate\\Validation\\ValidationServiceProvider' =>
|
||||
array (
|
||||
),
|
||||
'Laravel\\Tinker\\TinkerServiceProvider' =>
|
||||
array (
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'url' => env('APP_URL', 'http://localhost'),
|
||||
'url' => env('APP_URL', url('/')),
|
||||
'api_arrahnbid' => env('API_ARRAHNBID', 'http://lelong.test/api/'),
|
||||
'api_v3' => env('API_V3', 'http://apiv3.localhost/api/')
|
||||
];
|
||||
|
||||
@@ -1,103 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Monolog\Handler\NullHandler;
|
||||
use Monolog\Handler\StreamHandler;
|
||||
use Monolog\Handler\SyslogUdpHandler;
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Default Log Channel
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option defines the default log channel that gets used when writing
|
||||
| messages to the logs. The name specified in this option should match
|
||||
| one of the channels defined in the "channels" configuration array.
|
||||
|
|
||||
*/
|
||||
|
||||
'default' => env('LOG_CHANNEL', 'stack'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Log Channels
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may configure the log channels for your application. Out of
|
||||
| the box, Laravel uses the Monolog PHP logging library. This gives
|
||||
| you a variety of powerful log handlers / formatters to utilize.
|
||||
|
|
||||
| Available Drivers: "single", "daily", "slack", "syslog",
|
||||
| "errorlog", "monolog", "custom", "stack"
|
||||
|
|
||||
*/
|
||||
|
||||
'channels' => [
|
||||
'stack' => [
|
||||
'driver' => 'stack',
|
||||
'channels' => ['single'],
|
||||
'ignore_exceptions' => false,
|
||||
],
|
||||
|
||||
'single' => [
|
||||
'driver' => 'single',
|
||||
'path' => storage_path('logs/laravel.log'),
|
||||
'level' => env('LOG_LEVEL', 'debug'),
|
||||
],
|
||||
|
||||
'daily' => [
|
||||
'driver' => 'daily',
|
||||
'path' => storage_path('logs/laravel.log'),
|
||||
'level' => env('LOG_LEVEL', 'debug'),
|
||||
'days' => 14,
|
||||
],
|
||||
|
||||
'slack' => [
|
||||
'driver' => 'slack',
|
||||
'url' => env('LOG_SLACK_WEBHOOK_URL'),
|
||||
'username' => 'Laravel Log',
|
||||
'emoji' => ':boom:',
|
||||
'level' => env('LOG_LEVEL', 'critical'),
|
||||
],
|
||||
|
||||
'papertrail' => [
|
||||
'driver' => 'monolog',
|
||||
'level' => env('LOG_LEVEL', 'debug'),
|
||||
'handler' => SyslogUdpHandler::class,
|
||||
'handler_with' => [
|
||||
'host' => env('PAPERTRAIL_URL'),
|
||||
'port' => env('PAPERTRAIL_PORT'),
|
||||
],
|
||||
],
|
||||
|
||||
'stderr' => [
|
||||
'driver' => 'monolog',
|
||||
'handler' => StreamHandler::class,
|
||||
'formatter' => env('LOG_STDERR_FORMATTER'),
|
||||
'with' => [
|
||||
'stream' => 'php://stderr',
|
||||
],
|
||||
],
|
||||
|
||||
'syslog' => [
|
||||
'driver' => 'syslog',
|
||||
'level' => env('LOG_LEVEL', 'debug'),
|
||||
],
|
||||
|
||||
'errorlog' => [
|
||||
'driver' => 'errorlog',
|
||||
'level' => env('LOG_LEVEL', 'debug'),
|
||||
],
|
||||
|
||||
'null' => [
|
||||
'driver' => 'monolog',
|
||||
'handler' => NullHandler::class,
|
||||
],
|
||||
|
||||
'emergency' => [
|
||||
'path' => storage_path('logs/laravel.log'),
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
@@ -1,53 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class CreateModalOnlineTable extends Migration
|
||||
{
|
||||
public function getActiveDB()
|
||||
{
|
||||
$config_db = array_keys(config('database.connections'));
|
||||
|
||||
return array_filter($config_db, function ($connection) {
|
||||
try {
|
||||
if ($connection === 'mysql7') {
|
||||
return false;
|
||||
}
|
||||
DB::connection($connection)->getPdo();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function up()
|
||||
{
|
||||
foreach ($this->getActiveDB() as $dbase) {
|
||||
if (!Schema::connection($dbase)->hasTable('modal_online')) {
|
||||
Schema::connection($dbase)->create('modal_online', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->date('tarikh');
|
||||
$table->string('kodcaw', 20);
|
||||
$table->decimal('had', 12, 2)->default(100000.00);
|
||||
$table->decimal('digunakan', 12, 2)->default(0.00);
|
||||
$table->decimal('baki', 12, 2)->default(100000.00);
|
||||
$table->decimal('tambah', 12, 2)->default(0.00);
|
||||
$table->decimal('kurang', 12, 2)->default(0.00);
|
||||
$table->timestamps();
|
||||
$table->unique(['tarikh', 'kodcaw']);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
foreach ($this->getActiveDB() as $dbase) {
|
||||
Schema::connection($dbase)->dropIfExists('modal_online');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class CreateBatchPembiayaanOnlineTable extends Migration
|
||||
{
|
||||
public function getActiveDB()
|
||||
{
|
||||
$config_db = array_keys(config('database.connections'));
|
||||
|
||||
return array_filter($config_db, function ($connection) {
|
||||
try {
|
||||
if ($connection === 'mysql7') {
|
||||
return false;
|
||||
}
|
||||
DB::connection($connection)->getPdo();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function up()
|
||||
{
|
||||
foreach ($this->getActiveDB() as $dbase) {
|
||||
if (!Schema::connection($dbase)->hasTable('batch_pembiayaan_online')) {
|
||||
Schema::connection($dbase)->create('batch_pembiayaan_online', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('batch_no', 50);
|
||||
$table->string('kodcaw', 20);
|
||||
$table->date('tarikh');
|
||||
$table->string('slot', 20)->nullable()->comment('BATCH1 / BATCH2');
|
||||
$table->integer('bilangan')->default(0);
|
||||
$table->decimal('jumlah_keseluruhan', 12, 2)->default(0.00);
|
||||
$table->string('status', 30)->default('DRAFT');
|
||||
$table->string('pc_submitted_by', 100)->nullable();
|
||||
$table->timestamp('submitted_at')->nullable();
|
||||
$table->timestamps();
|
||||
$table->index(['kodcaw', 'tarikh', 'status']);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
foreach ($this->getActiveDB() as $dbase) {
|
||||
Schema::connection($dbase)->dropIfExists('batch_pembiayaan_online');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class CreatePembiayaanOnlineTable extends Migration
|
||||
{
|
||||
public function getActiveDB()
|
||||
{
|
||||
$config_db = array_keys(config('database.connections'));
|
||||
|
||||
return array_filter($config_db, function ($connection) {
|
||||
try {
|
||||
if ($connection === 'mysql7') {
|
||||
return false;
|
||||
}
|
||||
DB::connection($connection)->getPdo();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function up()
|
||||
{
|
||||
foreach ($this->getActiveDB() as $dbase) {
|
||||
if (!Schema::connection($dbase)->hasTable('pembiayaan_online')) {
|
||||
Schema::connection($dbase)->create('pembiayaan_online', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('norujukan', 50);
|
||||
$table->string('nokp', 20);
|
||||
$table->string('nopelanggan', 50)->nullable();
|
||||
$table->string('nama_pelanggan', 150)->nullable();
|
||||
$table->string('kodcaw', 20);
|
||||
$table->decimal('pinjaman', 12, 2);
|
||||
$table->string('kodbank', 20)->nullable();
|
||||
$table->string('nama_bank', 100)->nullable();
|
||||
$table->string('noakaun', 50)->nullable();
|
||||
$table->string('nama_akaun', 150)->nullable();
|
||||
$table->unsignedBigInteger('bukti_akaun_file_id')->nullable();
|
||||
$table->unsignedBigInteger('borang_file_id')->nullable();
|
||||
$table->string('status', 30)->default('PENDING_PC');
|
||||
$table->text('reject_reason')->nullable();
|
||||
$table->string('rejected_by', 100)->nullable();
|
||||
$table->timestamp('rejected_at')->nullable();
|
||||
$table->unsignedBigInteger('batch_id')->nullable();
|
||||
$table->unsignedBigInteger('bukti_file_id')->nullable();
|
||||
$table->string('no_rujukan_bayaran', 100)->nullable();
|
||||
$table->date('tarikh_bayaran')->nullable();
|
||||
$table->timestamp('paid_at')->nullable();
|
||||
$table->string('created_by', 100)->nullable();
|
||||
$table->string('pc_submitted_by', 100)->nullable();
|
||||
$table->string('ops_by', 100)->nullable();
|
||||
$table->text('nota')->nullable();
|
||||
$table->tinyInteger('blast_sent')->default(0);
|
||||
$table->timestamps();
|
||||
$table->index(['kodcaw', 'status']);
|
||||
$table->index('norujukan');
|
||||
$table->index('batch_id');
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
foreach ($this->getActiveDB() as $dbase) {
|
||||
Schema::connection($dbase)->dropIfExists('pembiayaan_online');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class AddCaraTerimaToGadaiTable extends Migration
|
||||
{
|
||||
public function getActiveDB()
|
||||
{
|
||||
$config_db = array_keys(config('database.connections'));
|
||||
|
||||
return array_filter($config_db, function ($connection) {
|
||||
try {
|
||||
if ($connection === 'mysql7') {
|
||||
return false;
|
||||
}
|
||||
DB::connection($connection)->getPdo();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function up()
|
||||
{
|
||||
foreach ($this->getActiveDB() as $dbase) {
|
||||
if (
|
||||
Schema::connection($dbase)->hasTable('gadai')
|
||||
&& !Schema::connection($dbase)->hasColumn('gadai', 'cara_terima')
|
||||
) {
|
||||
Schema::connection($dbase)->table('gadai', function (Blueprint $table) {
|
||||
$table->string('cara_terima', 20)->nullable()->after('pinjaman');
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
foreach ($this->getActiveDB() as $dbase) {
|
||||
if (
|
||||
Schema::connection($dbase)->hasTable('gadai')
|
||||
&& Schema::connection($dbase)->hasColumn('gadai', 'cara_terima')
|
||||
) {
|
||||
Schema::connection($dbase)->table('gadai', function (Blueprint $table) {
|
||||
$table->dropColumn('cara_terima');
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateRequestModalOnlineTable extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
if (!Schema::connection('mysql7')->hasTable('request_modal_online')) {
|
||||
Schema::connection('mysql7')->create('request_modal_online', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('kodcaw', 20);
|
||||
$table->date('tarikh');
|
||||
$table->decimal('amaun', 12, 2);
|
||||
$table->string('dimohon_oleh', 100)->nullable();
|
||||
$table->string('status', 20)->default('PENDING');
|
||||
$table->string('diluluskan_oleh', 100)->nullable();
|
||||
$table->text('nota')->nullable();
|
||||
$table->timestamps();
|
||||
$table->index(['kodcaw', 'tarikh', 'status']);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
Schema::connection('mysql7')->dropIfExists('request_modal_online');
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateArrahnFilesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Master DB (mysql7) — shared file store for CIT / permohonan / bukti pembiayaan online.
|
||||
* Matches App\ARFiles usage: data (base64), filename, type, tarikhmasa; id used as file reference.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
if (!Schema::connection('mysql7')->hasTable('arrahn_files')) {
|
||||
Schema::connection('mysql7')->create('arrahn_files', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->unsignedBigInteger('files_id')->nullable()->index();
|
||||
$table->longText('data')->nullable();
|
||||
$table->string('filename', 255)->nullable();
|
||||
$table->string('type', 100)->nullable();
|
||||
$table->string('tarikhmasa', 50)->nullable();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::connection('mysql7')->dropIfExists('arrahn_files');
|
||||
}
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class AddEodCloseColumnsToModalOnlineTable extends Migration
|
||||
{
|
||||
public function getActiveDB()
|
||||
{
|
||||
return array_filter(
|
||||
array_keys(config('database.connections')),
|
||||
function ($connection) {
|
||||
try {
|
||||
if ($connection === 'mysql7') {
|
||||
return false;
|
||||
}
|
||||
|
||||
DB::connection($connection)->getPdo();
|
||||
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public function up()
|
||||
{
|
||||
foreach ($this->getActiveDB() as $dbase) {
|
||||
Schema::connection($dbase)->table('modal_online', function (Blueprint $table) {
|
||||
$table->tinyInteger('ditutup')
|
||||
->default(0)
|
||||
->after('kurang');
|
||||
|
||||
$table->string('ditutup_oleh', 100)
|
||||
->nullable()
|
||||
->after('ditutup');
|
||||
|
||||
$table->timestamp('ditutup_at')
|
||||
->nullable()
|
||||
->after('ditutup_oleh');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
foreach ($this->getActiveDB() as $dbase) {
|
||||
Schema::connection($dbase)->table('modal_online', function (Blueprint $table) {
|
||||
$table->dropColumn([
|
||||
'ditutup',
|
||||
'ditutup_oleh',
|
||||
'ditutup_at',
|
||||
]);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
# CI (image already in registry):
|
||||
# APP_IMAGE=git.koppkb.com/KoPKB/api_arrahn IMAGE_TAG=<sha> \
|
||||
# docker compose --env-file .env.staging -f docker-compose.staging.yml up -d --no-build --force-recreate app web
|
||||
# docker compose --env-file .env.staging -f docker-compose.staging.yml up -d --no-build
|
||||
#
|
||||
# Host nginx reverse-proxies the public domain to 127.0.0.1:${HTTP_PORT}.
|
||||
# See docker/nginx/host-proxy.example.conf
|
||||
|
||||
@@ -9,8 +9,7 @@ server {
|
||||
client_max_body_size 50M;
|
||||
|
||||
location / {
|
||||
rewrite ^/(.*)/$ /$1 last;
|
||||
try_files $uri @php;
|
||||
try_files $uri $uri/ @php;
|
||||
}
|
||||
|
||||
location @php {
|
||||
|
||||
+20
-20
@@ -4,22 +4,22 @@ WORKDIR /var/www/html
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
git \
|
||||
pkg-config \
|
||||
unzip \
|
||||
libonig-dev \
|
||||
libzip-dev \
|
||||
libpng-dev \
|
||||
libjpeg62-turbo-dev \
|
||||
libfreetype6-dev \
|
||||
git \
|
||||
pkg-config \
|
||||
unzip \
|
||||
libonig-dev \
|
||||
libzip-dev \
|
||||
libpng-dev \
|
||||
libjpeg62-turbo-dev \
|
||||
libfreetype6-dev \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j"$(nproc)" \
|
||||
pdo_mysql \
|
||||
mbstring \
|
||||
bcmath \
|
||||
zip \
|
||||
exif \
|
||||
gd \
|
||||
pdo_mysql \
|
||||
mbstring \
|
||||
bcmath \
|
||||
zip \
|
||||
exif \
|
||||
gd \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer
|
||||
@@ -40,12 +40,12 @@ COPY --chown=www-data:www-data . /var/www/html
|
||||
|
||||
RUN composer install --no-interaction --prefer-dist --no-dev --optimize-autoloader \
|
||||
&& mkdir -p \
|
||||
storage/logs \
|
||||
storage/framework/cache/data \
|
||||
storage/framework/views \
|
||||
storage/framework/sessions \
|
||||
storage/app/public \
|
||||
bootstrap/cache \
|
||||
storage/logs \
|
||||
storage/framework/cache/data \
|
||||
storage/framework/views \
|
||||
storage/framework/sessions \
|
||||
storage/app/public \
|
||||
bootstrap/cache \
|
||||
&& chown -R www-data:www-data storage bootstrap/cache vendor
|
||||
|
||||
FROM base AS development
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
memory_limit=512M
|
||||
upload_max_filesize=50M
|
||||
post_max_size=50M
|
||||
max_execution_time=120
|
||||
@@ -673,42 +673,6 @@ $router->group(['prefix'=>'api'], function () use ($router){
|
||||
|
||||
//initiateTunai
|
||||
$router->get('initiate/tunai',['uses'=>'TunaiController@initiateTunai']);
|
||||
|
||||
// Modal Online (pembiayaan atas talian float)
|
||||
// Operasi top-up routes before {kodcaw} catch-alls
|
||||
$router->get('modal-online/operasi/topup/requests', ['uses' => 'ModalOnlineController@listTopUpOperasi']);
|
||||
$router->post('modal-online/operasi/topup/{id}/approve', ['uses' => 'ModalOnlineController@approveTopUp']);
|
||||
$router->post('modal-online/operasi/topup/{id}/reject', ['uses' => 'ModalOnlineController@rejectTopUp']);
|
||||
$router->get('modal-online/operasi/eod', ['uses' => 'ModalOnlineController@listToday']);
|
||||
$router->post('modal-online/operasi/eod/close-all', ['uses' => 'ModalOnlineController@closeAll']);
|
||||
|
||||
$router->get('modal-online/{kodcaw}', ['uses' => 'ModalOnlineController@get']);
|
||||
$router->post('modal-online/{kodcaw}/reserve', ['uses' => 'ModalOnlineController@reserve']);
|
||||
$router->post('modal-online/{kodcaw}/topup/request', ['uses' => 'ModalOnlineController@requestTopUp']);
|
||||
$router->get('modal-online/{kodcaw}/topup/requests', ['uses' => 'ModalOnlineController@listTopUpByCawangan']);
|
||||
$router->post('modal-online/{kodcaw}/close', ['uses' => 'ModalOnlineController@close']);
|
||||
$router->get('initiate/modal-online', ['uses' => 'ModalOnlineController@initiate']);
|
||||
|
||||
// Operasi kelulusan pembiayaan online (must be before {kodcaw} routes)
|
||||
$router->get('pembiayaan-online/operasi/batches', ['uses' => 'PembiayaanOnlineController@operasiListBatches']);
|
||||
$router->get('pembiayaan-online/operasi/{kodcaw}/batches/{batchId}', ['uses' => 'PembiayaanOnlineController@operasiShowBatch']);
|
||||
$router->post('pembiayaan-online/operasi/{kodcaw}/lines/{id}/approve', ['uses' => 'PembiayaanOnlineController@operasiApproveLine']);
|
||||
$router->post('pembiayaan-online/operasi/{kodcaw}/lines/{id}/reject', ['uses' => 'PembiayaanOnlineController@operasiRejectLine']);
|
||||
$router->post('pembiayaan-online/operasi/{kodcaw}/lines/{id}/paid', ['uses' => 'PembiayaanOnlineController@operasiMarkPaid']);
|
||||
$router->post('pembiayaan-online/operasi/{kodcaw}/batches/{batchId}/approve', ['uses' => 'PembiayaanOnlineController@operasiApproveBatch']);
|
||||
$router->post('pembiayaan-online/operasi/{kodcaw}/batches/{batchId}/paid', ['uses' => 'PembiayaanOnlineController@operasiMarkPaidBatch']);
|
||||
|
||||
// Pembiayaan Online (payout line + PC queue / batch)
|
||||
$router->post('pembiayaan-online/{kodcaw}', ['uses' => 'PembiayaanOnlineController@store']);
|
||||
$router->get('pembiayaan-online/{kodcaw}/queue', ['uses' => 'PembiayaanOnlineController@queue']);
|
||||
$router->get('pembiayaan-online/{kodcaw}/paid', ['uses' => 'PembiayaanOnlineController@paidQueue']);
|
||||
$router->post('pembiayaan-online/{kodcaw}/paid/blast', ['uses' => 'PembiayaanOnlineController@markBlastSent']);
|
||||
$router->put('pembiayaan-online/{kodcaw}/lines/{id}', ['uses' => 'PembiayaanOnlineController@updateLine']);
|
||||
$router->get('pembiayaan-online/{kodcaw}/lines/{id}/bukti', ['uses' => 'PembiayaanOnlineController@getBukti']);
|
||||
$router->get('pembiayaan-online/{kodcaw}/batches', ['uses' => 'PembiayaanOnlineController@listBatches']);
|
||||
$router->get('pembiayaan-online/{kodcaw}/batches/{batchId}', ['uses' => 'PembiayaanOnlineController@showBatch']);
|
||||
$router->post('pembiayaan-online/{kodcaw}/batches/submit', ['uses' => 'PembiayaanOnlineController@submitBatch']);
|
||||
$router->get('pembiayaan-online/{kodcaw}/by-norujukan/{norujukan}', ['uses' => 'PembiayaanOnlineController@show']);
|
||||
//WTD
|
||||
$router->get('check/wtd',['uses'=>'WTDController@getDraftWTD']);
|
||||
$router->get('check/customer',['uses' => 'WTDController@getCustomerWTD']);
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
/debugbar
|
||||
/framework/sessions
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
a:3:{s:6:"_token";s:40:"pPCoNelToRSPVvcOpFJ9UPNL4OPbg1mOw5w7XFbk";s:9:"_previous";a:1:{s:3:"url";s:45:"http://host.docker.internal:8080/api/cawangan";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}
|
||||
@@ -0,0 +1 @@
|
||||
a:3:{s:6:"_token";s:40:"APKROssit2tVHiUufjaxls9uiE2T3ApfYTis9uCN";s:9:"_previous";a:1:{s:3:"url";s:51:"http://host.docker.internal:8080/api/cawangan/admin";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}
|
||||
@@ -0,0 +1 @@
|
||||
a:3:{s:6:"_token";s:40:"hSeaZ7y2zh6WA9ccSR7VnNQu5BkUJj0Cw7DlZwAK";s:9:"_previous";a:1:{s:3:"url";s:34:"http://localhost:8080/api/cawangan";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}
|
||||
@@ -0,0 +1 @@
|
||||
a:3:{s:6:"_token";s:40:"X9i69jljkVUOXP3PDfjYRIjn8fuNAPqY5n7Ac06R";s:9:"_previous";a:1:{s:3:"url";s:51:"http://host.docker.internal:8080/api/cawangan/admin";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}
|
||||
@@ -0,0 +1 @@
|
||||
a:3:{s:6:"_token";s:40:"E9RodkVq3TqEaBdhJ4x3VuQpCM8loXLJdsDpFWw2";s:9:"_previous";a:1:{s:3:"url";s:45:"http://host.docker.internal:8080/api/cawangan";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}
|
||||
@@ -0,0 +1 @@
|
||||
a:3:{s:6:"_token";s:40:"xJQ7j1HbsW9UweaiBBAhMPjXcIh4JyY5rkrjLMZY";s:9:"_previous";a:1:{s:3:"url";s:51:"http://host.docker.internal:8080/api/cawangan/admin";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}
|
||||
Reference in New Issue
Block a user