feat(webstatement): tambah dukungan upload SFTP per cabang

Menambahkan parameter "branch" untuk mendukung upload file CSV ke direktori SFTP berdasarkan cabang. Perubahan ini mencakup:

- Memodifikasi fungsi `uploadToSftpKartu` agar menerima parameter cabang untuk menentukan direktori tujuan di SFTP.
- Membuat log upload yang lebih spesifik untuk setiap cabang berdasarkan parameter "branch".
- Memastikan direktori cabang pada SFTP dibuat jika belum ada.
- Menyesuaikan fungsi `updateSftpLogSuccess` untuk mencatat log keberhasilan berdasarkan cabang.
- Mengupdate log pembuatan dan upload CSV agar mencantumkan informasi cabang.
- Menyesuaikan format log `updateCsvLogSuccess` untuk menangani pembuatan file CSV untuk beberapa cabang.

Perubahan ini memastikan fleksibilitas dan akuntabilitas dalam mengelola file CSV biaya kartu per cabang.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
Daeng Deni Mardaeni
2025-05-17 16:48:57 +07:00
parent 795c90a229
commit 7bb320d718

View File

@@ -273,8 +273,7 @@
*
* @return bool True if upload successful, false otherwise
*/
private function uploadToSftpKartu(string $localFilePath)
: bool
private function uploadToSftpKartu(string $localFilePath, string $branch = ''): bool
{
try {
// Update status SFTP upload dimulai
@@ -294,26 +293,37 @@
$disk = Storage::disk('sftpKartu');
// Tentukan path tujuan di server SFTP
$remotePath = env('BIAYA_KARTU_REMOTE_PATH', '/');
$remotePath = env('BIAYA_KARTU_REMOTE_PATH', '/');
// Add branch directory if provided
if (!empty($branch)) {
$remotePath = rtrim($remotePath, '/') . '/' . $branch;
// Create branch directory if it doesn't exist
if (!$disk->exists($remotePath)) {
$disk->makeDirectory($remotePath);
}
}
$remoteFilePath = rtrim($remotePath, '/') . '/' . $filename;
// Upload file ke server SFTP
$result = $disk->put($remoteFilePath, $fileContent);
if ($result) {
$this->updateSftpLogSuccess();
Log::info("File CSV biaya kartu ATM berhasil diunggah ke SFTP: {$remoteFilePath}");
$this->updateSftpLogSuccess($branch);
Log::info("File CSV biaya kartu ATM untuk cabang {$branch} berhasil diunggah ke SFTP: {$remoteFilePath}");
return true;
} else {
$this->updateSftpLogFailed("Gagal mengunggah file CSV biaya kartu ATM ke SFTP: {$remoteFilePath}");
Log::error("Gagal mengunggah file CSV biaya kartu ATM ke SFTP: {$remoteFilePath}");
Log::error("Gagal mengunggah file CSV biaya kartu ATM untuk cabang {$branch} ke SFTP: {$remoteFilePath}");
return false;
}
} catch (Exception $e) {
$this->updateSftpLogFailed($e->getMessage());
Log::error("Error saat mengunggah file ke SFTP: " . $e->getMessage(), [
Log::error("Error saat mengunggah file ke SFTP untuk cabang {$branch}: " . $e->getMessage(), [
'file' => $e->getFile(),
'line' => $e->getLine(),
'periode' => $this->periode
@@ -322,6 +332,23 @@
}
}
private function updateSftpLogSuccess(string $branch = ''): void
{
$message = 'File berhasil diupload ke SFTP';
if (!empty($branch)) {
$message .= " untuk cabang {$branch}";
}
$this->syncLog->update([
'is_ftp' => true,
'ftp_at' => Carbon::now(),
'ftp_notes' => $message,
'ftp_destination' => env('SFTP_KARTU_HOST', '/'),
]);
Log::info($message . ' untuk periode ' . $this->periode);
}
/**
* Update log saat upload SFTP dimulai
*/
@@ -337,22 +364,6 @@
Log::info('Memulai upload ke SFTP untuk periode ' . $this->periode);
}
/**
* Update log saat upload SFTP berhasil
*/
private function updateSftpLogSuccess()
: void
{
$this->syncLog->update([
'is_ftp' => true,
'ftp_at' => Carbon::now(),
'ftp_notes' => 'File berhasil diupload ke SFTP',
'ftp_destination' => env('SFTP_KARTU_HOST', '/'),
]);
Log::info('File berhasil diupload ke SFTP untuk periode ' . $this->periode);
}
/**
* Update log saat upload SFTP gagal
*/
@@ -370,22 +381,23 @@
/**
* Update log saat pembuatan CSV berhasil
*/
private function updateCsvLogSuccess($result)
: void
private function updateCsvLogSuccess($results): void
{
// Get file info
$fileInfo = pathinfo($result['localFilePath']);
$fileName = $fileInfo['basename'];
foreach ($results as $result) {
// Get file info
$fileInfo = pathinfo($result['localFilePath']);
$fileName = $fileInfo['basename'];
$this->syncLog->update([
'is_csv' => true,
'csv_at' => Carbon::now(),
'csv_notes' => 'File CSV berhasil dibuat: ' . $fileName,
'file_path' => $result['localFilePath'],
'file_name' => $fileName,
]);
$this->syncLog->update([
'is_csv' => true,
'csv_at' => Carbon::now(),
'csv_notes' => 'File CSV untuk cabang ' . $result['branch'] . ' berhasil dibuat: ' . $fileName,
'file_path' => $result['localFilePath'],
'file_name' => $fileName,
]);
Log::info('File CSV berhasil dibuat: ' . $result['localFilePath']);
Log::info('File CSV untuk cabang ' . $result['branch'] . ' berhasil dibuat: ' . $result['localFilePath']);
}
}
/**