feat(webstatement): tambahkan konfigurasi sumber file r23 dan optimalkan log combine PDF

- Memperbarui fungsi `combinePdfs` di `CombinePdfController`:
  - Menambahkan konfigurasi sumber file `r23` dengan opsi `local` atau `sftp`.
  - Memindahkan logika pencarian file `r23` ke dalam pengaturan berbasis konfigurasi:
    - Jika menggunakan `local`, sistem mencari file `r23` dalam penyimpanan lokal.
    - Jika menggunakan `sftp`, sistem mengunduh file `r23` dari SFTP dan menyimpannya ke direktori sementara.
  - Menambahkan log informasi untuk menentukan sumber file `r23` yang digunakan (`local` atau `sftp`).
  - Merubah pencatatan log yang sebelumnya statis menjadi dinamis berdasarkan konfigurasi.

- Menyesuaikan pengelolaan jalur file `r23`:
  - Menambahkan jalur sementara untuk penyimpanan file hasil unduhan SFTP.
  - Memisahkan logika jalur file lokal dan file unduhan berdasarkan konfigurasi.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
Daeng Deni Mardaeni
2025-06-05 11:31:31 +07:00
parent df5d0c420b
commit db99465690

View File

@@ -29,6 +29,9 @@ class CombinePdfController extends Controller
*/ */
public function combinePdfs($period) public function combinePdfs($period)
{ {
// Configuration: Set r23 file source - 'local' or 'sftp'
$file_r23 = 'local'; // Change this to 'sftp' to use SFTP for r23 files
// Get period from request or use current period // Get period from request or use current period
$period = $period ?? date('Ym'); $period = $period ?? date('Ym');
@@ -42,16 +45,19 @@ class CombinePdfController extends Controller
$branchCode = $account->branch_code; $branchCode = $account->branch_code;
$accountNumber = $account->account_number; $accountNumber = $account->account_number;
// Define file paths - r14 from local, r23 from SFTP // Define file paths
$r14Path = storage_path("app/r14/{$accountNumber}_{$period}.pdf"); $r14Path = storage_path("app/r14/{$accountNumber}_{$period}.pdf");
// Define r23 paths based on configuration
$r23LocalPath = storage_path("app/r23/{$accountNumber}.1.pdf");
$r23SftpPath = "r23/{$accountNumber}.1.pdf"; $r23SftpPath = "r23/{$accountNumber}.1.pdf";
// Define local temporary path for r23 file downloaded from SFTP // Define temporary path for r23 file downloaded from SFTP
$tempDir = storage_path("app/temp/{$period}"); $tempDir = storage_path("app/temp/{$period}");
if (!File::exists($tempDir)) { if (!File::exists($tempDir)) {
File::makeDirectory($tempDir, 0755, true); File::makeDirectory($tempDir, 0755, true);
} }
$r23LocalPath = "{$tempDir}/{$accountNumber}_r23.pdf"; $r23TempPath = "{$tempDir}/{$accountNumber}_r23.pdf";
$outputDir = storage_path("app/combine/{$period}/{$branchCode}"); $outputDir = storage_path("app/combine/{$period}/{$branchCode}");
$outputFilename = "{$accountNumber}_{$period}.pdf"; $outputFilename = "{$accountNumber}_{$period}.pdf";
@@ -59,17 +65,30 @@ class CombinePdfController extends Controller
// Check if r14 file exists locally // Check if r14 file exists locally
$r14Exists = File::exists($r14Path); $r14Exists = File::exists($r14Path);
// Check if r23 file exists on SFTP and download it // Check for r23 file based on configuration
$r23Exists = false; $r23Exists = false;
try { $r23FinalPath = null;
if (Storage::disk('sftpStatement')->exists($r23SftpPath)) {
$r23Content = Storage::disk('sftpStatement')->get($r23SftpPath); if ($file_r23 === 'local') {
File::put($r23LocalPath, $r23Content); // Use local r23 files
if (File::exists($r23LocalPath)) {
$r23Exists = true; $r23Exists = true;
Log::info("Downloaded r23 file for account {$accountNumber} from SFTP"); $r23FinalPath = $r23LocalPath;
Log::info("Found r23 file locally for account {$accountNumber}");
}
} elseif ($file_r23 === 'sftp') {
// Use SFTP r23 files
try {
if (Storage::disk('sftpStatement')->exists($r23SftpPath)) {
$r23Content = Storage::disk('sftpStatement')->get($r23SftpPath);
File::put($r23TempPath, $r23Content);
$r23Exists = true;
$r23FinalPath = $r23TempPath;
Log::info("Downloaded r23 file for account {$accountNumber} from SFTP");
}
} catch (\Exception $e) {
Log::error("Error downloading r23 file from SFTP for account {$accountNumber}: {$e->getMessage()}");
} }
} catch (\Exception $e) {
Log::error("Error downloading r23 file from SFTP for account {$accountNumber}: {$e->getMessage()}");
} }
// Skip if neither file exists // Skip if neither file exists
@@ -85,7 +104,7 @@ class CombinePdfController extends Controller
$pdfFiles[] = $r14Path; $pdfFiles[] = $r14Path;
} }
if ($r23Exists) { if ($r23Exists) {
$pdfFiles[] = $r23LocalPath; $pdfFiles[] = $r23FinalPath;
} }
try { try {
@@ -96,7 +115,7 @@ class CombinePdfController extends Controller
CombinePdfJob::dispatch($pdfFiles, $outputDir, $outputFilename, $password); CombinePdfJob::dispatch($pdfFiles, $outputDir, $outputFilename, $password);
$processedCount++; $processedCount++;
Log::info("Queued PDF processing for account {$accountNumber} - r14: local, r23: SFTP, password: {$password}"); Log::info("Queued PDF processing for account {$accountNumber} - r14: local, r23: {$file_r23}, password: {$password}");
} catch (\Exception $e) { } catch (\Exception $e) {
Log::error("Error processing PDF for account {$accountNumber}: {$e->getMessage()}"); Log::error("Error processing PDF for account {$accountNumber}: {$e->getMessage()}");
$errorCount++; $errorCount++;
@@ -104,7 +123,7 @@ class CombinePdfController extends Controller
} }
return response()->json([ return response()->json([
'message' => 'PDF combination process has been queued (r14: local, r23: SFTP)', 'message' => "PDF combination process has been queued (r14: local, r23: {$file_r23})",
'processed' => $processedCount, 'processed' => $processedCount,
'skipped' => $skippedCount, 'skipped' => $skippedCount,
'errors' => $errorCount, 'errors' => $errorCount,