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:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user