feat(webstatement): perbarui proses pembuatan dan pengunggahan file CSV per cabang
- Menambahkan logika untuk membagi kartu ATM berdasarkan cabang menggunakan `groupBy`. - Memperbarui pembuatan nama file CSV agar mencakup informasi cabang dan timestamp. - Menyesuaikan proses pembuatan dan penulisan file CSV agar mendukung pemrosesan kartu per cabang. - Menambahkan validasi untuk memastikan file CSV dapat dibuat sebelum proses penulisan. - Memisahkan dan membersihkan file CSV untuk setiap cabang setelah selesai diproses. - Memodifikasi proses pengunggahan file ke SFTP dengan parameter cabang. - Mengganti struktur output fungsi `generateAtmCardCsv` menjadi array dengan rincian: - Nama cabang (`branch`). - Lokasi file CSV yang dihasilkan (`localFilePath`). - Jumlah kartu yang diproses per cabang (`recordCount`). - Status pengunggahan ke SFTP (`uploadToSftp`). - Tanggal dan waktu proses (`timestamp`). Perubahan ini bertujuan meningkatkan fleksibilitas dan efisiensi dalam pengelolaan file CSV berdasarkan cabang, serta memudahkan pelacakan hasil proses per cabang. Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
@@ -110,46 +110,51 @@
|
|||||||
*
|
*
|
||||||
* @return array Information about the generated file and upload status
|
* @return array Information about the generated file and upload status
|
||||||
*/
|
*/
|
||||||
private function generateAtmCardCsv()
|
private function generateAtmCardCsv(): array
|
||||||
: array
|
|
||||||
{
|
{
|
||||||
$cards = $this->getEligibleAtmCards();
|
$cards = $this->getEligibleAtmCards();
|
||||||
//$filename = storage_path('app/' . $this->csvFilename);
|
$cardsByBranch = $cards->groupBy('branch');
|
||||||
|
$results = [];
|
||||||
|
|
||||||
// Add date-time to filename
|
foreach ($cardsByBranch as $branch => $branchCards) {
|
||||||
$dateTime = now()->format('Ymd_Hi');
|
$dateTime = now()->format('Ymd_Hi');
|
||||||
$filenameWithDate = pathinfo($this->csvFilename, PATHINFO_FILENAME) .
|
$branchFilename = pathinfo($this->csvFilename, PATHINFO_FILENAME)
|
||||||
'_' . $dateTime . '.' .
|
. '_' . $branch
|
||||||
pathinfo($this->csvFilename, PATHINFO_EXTENSION);
|
. '_' . $dateTime . '.'
|
||||||
|
. pathinfo($this->csvFilename, PATHINFO_EXTENSION);
|
||||||
|
|
||||||
$filename = storage_path('app/' . $filenameWithDate);
|
$filename = storage_path('app/' . $branchFilename);
|
||||||
|
|
||||||
$handle = fopen($filename, 'w+');
|
$handle = fopen($filename, 'w+');
|
||||||
if (!$handle) {
|
if (!$handle) {
|
||||||
throw new RuntimeException("Tidak dapat membuat file CSV: $filename");
|
throw new RuntimeException("Tidak dapat membuat file CSV: $filename");
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
foreach ($cards as $card) {
|
|
||||||
$fee = $this->determineCardFee($card);
|
|
||||||
$csvRow = $this->createCsvRow($card, $fee);
|
|
||||||
fputcsv($handle, $csvRow, '|');
|
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
fclose($handle);
|
try {
|
||||||
|
foreach ($branchCards as $card) {
|
||||||
|
$fee = $this->determineCardFee($card);
|
||||||
|
$csvRow = $this->createCsvRow($card, $fee);
|
||||||
|
fputcsv($handle, $csvRow, '|');
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
fclose($handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->cleanupCsvFile($filename);
|
||||||
|
|
||||||
|
// Upload file ke SFTP
|
||||||
|
$uploadSuccess = $this->uploadToSftpKartu($filename, $card->branch);
|
||||||
|
|
||||||
|
$results[] = [
|
||||||
|
'branch' => $branch,
|
||||||
|
'localFilePath' => $filename,
|
||||||
|
'recordCount' => count($branchCards),
|
||||||
|
'uploadToSftp' => $uploadSuccess,
|
||||||
|
'timestamp' => now()->format('Y-m-d H:i:s')
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->cleanupCsvFile($filename);
|
return $results;
|
||||||
|
|
||||||
// Upload file ke SFTP
|
|
||||||
$uploadSuccess = $this->uploadToSftpKartu($filename);
|
|
||||||
|
|
||||||
return [
|
|
||||||
'localFilePath' => $filename,
|
|
||||||
'recordCount' => count($cards),
|
|
||||||
'uploadToSftp' => $uploadSuccess,
|
|
||||||
'timestamp' => now()->format('Y-m-d H:i:s')
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user