From f40155e1f51c292482de40465585e02ea59aa6ac Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 20 Sep 2022 08:19:43 +0000 Subject: [PATCH] Change the logging of serial. #704 --- src/Command/LoadWarrantySerialCommand.php | 26 ++++++++++----- src/Controller/CAPI/TestController.php | 2 +- src/Service/WarrantySerialLoadLogger.php | 40 ++++++++++++++++------- 3 files changed, 46 insertions(+), 22 deletions(-) diff --git a/src/Command/LoadWarrantySerialCommand.php b/src/Command/LoadWarrantySerialCommand.php index e0da8b11..3ef4d849 100644 --- a/src/Command/LoadWarrantySerialCommand.php +++ b/src/Command/LoadWarrantySerialCommand.php @@ -28,6 +28,7 @@ class LoadWarrantySerialCommand extends Command protected $load_logger; protected $project_dir; protected $callback_url; + protected $log_data; public function __construct(EntityManagerInterface $em, WarrantySerialUploadLogger $upload_logger, WarrantySerialLoadLogger $load_logger, KernelInterface $kernel, $callback_url) @@ -51,6 +52,7 @@ class LoadWarrantySerialCommand extends Command protected function execute(InputInterface $input, OutputInterface $output) { $em = $this->em; + $this->log_data = []; $status = 'pending'; @@ -78,6 +80,10 @@ class LoadWarrantySerialCommand extends Command $this->updateWarrantySerialQueue($id); } + // error_log(print_r($this->log_data, true)); + // load log data into db + $this->load_logger->logWarrantySerialLoadInfo($this->log_data); + // send results back to third party $this->sendResults($output_info); @@ -337,14 +343,16 @@ class LoadWarrantySerialCommand extends Command protected function logLoadInfo($user_id, $is_loaded, $serial, $error) { - $log_data = [ - 'user_id' => $user_id, - 'is_loaded' => $is_loaded, - 'serial' => $serial, - 'error' => $error, - ]; + $date_create = new DateTime(); + $str_date_create = $date_create->format('Y-m-d H:i:s'); - $this->load_logger->logWarrantySerialLoadInfo($log_data); + $this->log_data[] = [ + $str_date_create, + $user_id, + $serial, + $is_loaded, + $error, + ]; } protected function updateWarrantySerialQueue($id) @@ -384,7 +392,7 @@ class LoadWarrantySerialCommand extends Command // error_log(print_r($body, true)); - error_log('Sending json output to ' . $this->callback_url); + // error_log('Sending json output to ' . $this->callback_url); $curl = curl_init(); @@ -404,7 +412,7 @@ class LoadWarrantySerialCommand extends Command curl_close($curl); // check result - error_log('Result ' . $res); + // error_log('Result ' . $res); } } diff --git a/src/Controller/CAPI/TestController.php b/src/Controller/CAPI/TestController.php index c7bdc404..9604c056 100644 --- a/src/Controller/CAPI/TestController.php +++ b/src/Controller/CAPI/TestController.php @@ -27,7 +27,7 @@ class TestController extends APIController // return $res; $data = [ - 'status' => 'Test successful.', + 'result' => $res, ]; return new APIResponse(true, 'Test successful.', $data); } diff --git a/src/Service/WarrantySerialLoadLogger.php b/src/Service/WarrantySerialLoadLogger.php index 336b1dcb..904a6535 100644 --- a/src/Service/WarrantySerialLoadLogger.php +++ b/src/Service/WarrantySerialLoadLogger.php @@ -4,7 +4,7 @@ namespace App\Service; use Doctrine\ORM\EntityManagerInterface; -use App\Entity\WarrantySerialLoadLog; +use DateTime; class WarrantySerialLoadLogger { @@ -17,21 +17,37 @@ class WarrantySerialLoadLogger public function logWarrantySerialLoadInfo($log_data) { - $log_entry = new WarrantySerialLoadLog(); + // cache directory + $cache_dir = __DIR__ . '/../../var/cache'; - $user_id = $log_data['user_id']; - $is_loaded = $log_data['is_loaded']; - $error = $log_data['error']; - $serial = $log_data['serial']; + $file = $cache_dir . '/warranty_serial_load_log.tab'; + error_log('opening file for warranty serial load log - ' . $file); - $log_entry->setApiUser($user_id) - ->setSerial($serial) - ->setLoaded($is_loaded) - ->setError($error); + $fp = fopen($file, 'w'); + if ($fp === false) + { + error_log('could not open file for load data infile - ' . $file); + } + else + { + foreach ($log_data as $key => $data) + { + $line = implode('|', $data) . "\r\n"; + fwrite($fp, $line); + } + } - $this->em->persist($log_entry); - $this->em->flush(); + fclose($fp); + // prepared statement + $db = $this->em->getConnection(); + $stmt = $db->prepare('LOAD DATA LOCAL INFILE \''. $file . '\' INTO TABLE warranty_serial_load_log FIELDS TERMINATED BY \'|\' LINES TERMINATED BY \'\\r\\n\' (date_create, api_user, serial, flag_loaded, error)'); + + $result = $stmt->execute(); + if (!$result) + error_log('Failed loading data.'); + + // TODO: delete file? } }