json(['message' => 'Data Transaction processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function processStmtNarrParamData($period) { try { ProcessStmtNarrParamDataJob::dispatch($period); return response()->json(['message' => 'Data TempStmtNarrParam processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function processStmtNarrFormatData($period) { try { ProcessStmtNarrFormatDataJob::dispatch($period); return response()->json(['message' => 'Data TempStmtNarrFormat processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function ProcessFtTxnTypeConditioData($period) { try { ProcessFtTxnTypeConditionJob::dispatch($period); return response()->json(['message' => 'FtTxnTypeCondition processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function index_manual() { //$disk = Storage::disk('sftpStatement'); // Get all directories (periods) in the SFTP disk //$allDirectories = $disk->directories(); //$this->processTransactionData('_parameter'); //$this->processStmtNarrParamData('_parameter'); //$this->processStmtNarrFormatData('_parameter'); //$this->ProcessFtTxnTypeConditioData('_parameter'); // Filter out the _parameter folder /*$periods = array_filter($allDirectories, function($dir) { return $dir !== '_parameter'; });*/ $periods = [ /*'20250510', '20250512', '20250513', '20250514', '20250515', '20250516', '20250517', '20250518', '20250519',*/ '20250520', '20250521', '20250522' ]; // Sort periods by date (descending) usort($periods, function ($a, $b) { return strcmp($b, $a); // Reverse comparison for descending order }); if (empty($periods)) { return response()->json(['message' => 'No valid period folders found in SFTP storage'], 404); } foreach ($periods as $period) { $this->ProcessCategoryData($period); $this->ProcessCompanyData($period); $this->processCustomerData($period); $this->processAccountData($period); $this->processStmtEntryData($period); $this->ProcessDataCaptureData($period); $this->processFundsTransferData($period); $this->ProcessTellerData($period); $this->ProcessAtmTransaction($period); $this->processArrangementData($period); $this->processBillDetailData($period); } return response()->json(['message' => 'Data processing job has been successfully']); } public function ProcessCategoryData($period) { try { ProcessCategoryDataJob::dispatch($period); return response()->json(['message' => 'Category processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function ProcessCompanyData($period) { try { ProcessCompanyDataJob::dispatch($period); return response()->json(['message' => 'Company processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function processCustomerData($period) { try { // Pass the period to the job for processing ProcessCustomerDataJob::dispatch($period); return response()->json([ 'message' => 'Data Customer processing job has been successfully queued', 'period' => $period ]); } catch (Exception $e) { Log::error('Error in processCustomerData: ' . $e->getMessage()); return response()->json(['error' => $e->getMessage()], 500); } } public function processAccountData($period) { try { ProcessAccountDataJob::dispatch($period); return response()->json(['message' => 'Data Account processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function processStmtEntryData($period) { try { ProcessStmtEntryDataJob::dispatch($period); return response()->json(['message' => 'Stmt Entry processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function ProcessDataCaptureData($period) { try { ProcessDataCaptureDataJob::dispatch($period); return response()->json(['message' => 'Data Capture processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function processFundsTransferData($period) { try { ProcessFundsTransferDataJob::dispatch($period); return response()->json(['message' => 'Data Funds Transfer processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function ProcessTellerData($period) { try { ProcessTellerDataJob::dispatch($period); return response()->json(['message' => 'Teller processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function ProcessAtmTransaction($period) { try { ProcessAtmTransactionJob::dispatch($period); return response()->json(['message' => 'AtmTransaction processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function processArrangementData($period) { try { ProcessArrangementDataJob::dispatch($period); return response()->json(['message' => 'Data Arrangement processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function processBillDetailData($period) { try { ProcessBillDetailDataJob::dispatch($period); return response()->json(['message' => 'Data Bill Details processing job has been successfully']); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } /** * Process data migration for the previous day's period. * * This method automatically determines the period based on yesterday's date, * checks if the corresponding folder exists in SFTP storage, and then * processes all required data types in the correct sequence. * * @return \Illuminate\Http\JsonResponse A JSON response indicating success or failure * @throws \Exception If the period folder doesn't exist or if any processing job fails */ public function index() { $disk = Storage::disk('sftpStatement'); $period = date('Ymd', strtotime('-1 day')); if (!$disk->exists($period)) { return response()->json(["message" => "Period {$period} folder not found in SFTP storage"], 404); } $this->ProcessCategoryData($period); $this->ProcessCompanyData($period); $this->processCustomerData($period); $this->processAccountData($period); $this->processStmtEntryData($period); $this->ProcessDataCaptureData($period); $this->processFundsTransferData($period); $this->ProcessTellerData($period); $this->ProcessAtmTransaction($period); $this->processArrangementData($period); $this->processBillDetailData($period); return response()->json(['message' => "Data processing {$period} job has been successfully"]); } }