Add command to update dealer information for warranties. #631
This commit is contained in:
parent
94f2cc75a7
commit
46ea41f034
1 changed files with 184 additions and 0 deletions
184
src/Command/UpdateWarrantyDealerInfoCommand.php
Normal file
184
src/Command/UpdateWarrantyDealerInfoCommand.php
Normal file
|
|
@ -0,0 +1,184 @@
|
|||
<?php
|
||||
|
||||
namespace App\Command;
|
||||
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
|
||||
use App\Entity\Warranty;
|
||||
|
||||
class UpdateWarrantyDealerInfoCommand extends Command
|
||||
{
|
||||
// field index in csv file
|
||||
const F_ID = 0;
|
||||
const F_BTY_MODEL_ID = 1;
|
||||
const F_BTY_SIZE_ID = 2;
|
||||
const F_SERIAL = 3;
|
||||
const F_WARRANTY_CLASS = 4;
|
||||
const F_PLATE_NUMBER = 5;
|
||||
const F_STATUS = 6;
|
||||
const F_DATE_CREATED = 7;
|
||||
const F_DATE_PURCHASE = 8;
|
||||
const F_DATE_EXPIRE = 9;
|
||||
const F_DATE_CLAIM = 10;
|
||||
const F_SAP_BTY_ID = 11;
|
||||
const F_CLAIM_ID = 12;
|
||||
const F_FIRST_NAME = 13;
|
||||
const F_LAST_NAME = 14;
|
||||
const F_MOBILE_NUMBER = 15;
|
||||
const F_ACTIVATED = 16;
|
||||
const F_WARR_PRIV_POLICY = 17;
|
||||
const F_EMAIL = 18;
|
||||
const F_VEHICLE_ID = 19;
|
||||
const F_CUSTOMER_ID = 20;
|
||||
const F_FILE_INVOICE = 21;
|
||||
const F_FILE_WARR_CARD = 22;
|
||||
const F_V_MODEL_YEAR = 23;
|
||||
const F_ODOMETER = 24;
|
||||
const F_DEALER_NAME = 25;
|
||||
const F_DEALER_ADDRESS = 26;
|
||||
const F_CONTACT_NUM = 27;
|
||||
const F_CUST_ADDRESS = 28;
|
||||
const F_DATE_PURCHASE_CUST = 29;
|
||||
const F_VALIDATED = 30;
|
||||
const F_PROVINCE_ID = 31;
|
||||
const F_MUNICIPALITY_ID = 32;
|
||||
const F_CREATE_SOURCE = 33;
|
||||
const F_DEALER_BRANCH_CODE = 34;
|
||||
|
||||
|
||||
protected $em;
|
||||
|
||||
public function __construct(EntityManagerInterface $em)
|
||||
{
|
||||
$this->em = $em;
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
protected function configure()
|
||||
{
|
||||
$this->setName('warranty:updatedealerinfo')
|
||||
->setDescription('Update warranty dealer information.')
|
||||
->setHelp('Update warranty dealer information.')
|
||||
->addArgument('input_file', InputArgument::REQUIRED, 'Path to the CSV file with the warranty info.')
|
||||
->addArgument('output_file', InputArgument::REQUIRED, 'Output filename');
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output)
|
||||
{
|
||||
// for now, hardcode new dealer info (G-SIX SUMULONG)
|
||||
$new_dealer = [
|
||||
'name' => 'G-SIX SUMULONG',
|
||||
'address' => '175 SUMULONG HIGHWAY MAYAMOT RIZAL_X000D_',
|
||||
'branch_code' => 'ZN03587644',
|
||||
];
|
||||
|
||||
$csv_file = $input->getArgument('input_file');
|
||||
$output_file = $input->getArgument('output_file');
|
||||
|
||||
// attempt to open file
|
||||
try
|
||||
{
|
||||
$fh = fopen($csv_file, "r");
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
throw new Exception('The file "' . $csv_file . '" could be opened.');
|
||||
}
|
||||
|
||||
// start at 1 since 0 has the headers
|
||||
$row_num = 1;
|
||||
$output_info = [];
|
||||
while (($fields = fgetcsv($fh)) !== false)
|
||||
{
|
||||
// ignore first row
|
||||
if ($row_num == 1)
|
||||
{
|
||||
$row_num++;
|
||||
continue;
|
||||
}
|
||||
|
||||
// process row
|
||||
$output_info[] = $this->processRow($fields, $new_dealer);
|
||||
|
||||
$row_num++;
|
||||
}
|
||||
|
||||
// write to output file
|
||||
$this->outputWarrantyInfo($output_file, $output_info);
|
||||
|
||||
fclose($fh);
|
||||
return 0;
|
||||
}
|
||||
|
||||
protected function processRow($fields, $new_dealer)
|
||||
{
|
||||
// get the warranty id
|
||||
$warranty_id = trim($fields[SELF::F_ID]);
|
||||
|
||||
// find the warranty
|
||||
$warranty = $this->em->getRepository(Warranty::class)->find($warranty_id);
|
||||
|
||||
if ($warranty == null)
|
||||
{
|
||||
// log warranty not found
|
||||
return $this->setOutputInfo($fields, 'NOT UPDATED', 'Warranty not found');
|
||||
}
|
||||
|
||||
// update warranty dealer information
|
||||
$dealer_name = $new_dealer['name'];
|
||||
$dealer_address = $new_dealer['address'];
|
||||
$dealer_branch_code = $new_dealer['branch_code'];
|
||||
|
||||
$warranty->setDealerName($dealer_name)
|
||||
->setDealerAddress($dealer_address)
|
||||
->setDealerBranchCode($dealer_branch_code);
|
||||
|
||||
$this->em->flush();
|
||||
|
||||
// log successful update
|
||||
return $this->setOutputInfo($fields, 'UPDATED', '');
|
||||
}
|
||||
|
||||
protected function setOutputInfo($fields, $status, $reason)
|
||||
{
|
||||
$warranty_id = trim($fields[SELF::F_ID]);
|
||||
|
||||
return [
|
||||
$warranty_id,
|
||||
$status,
|
||||
$reason,
|
||||
];
|
||||
}
|
||||
|
||||
protected function outputWarrantyInfo($output_file, $entries)
|
||||
{
|
||||
try
|
||||
{
|
||||
$fh = fopen($output_file, "w");
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
throw new Exception('The file "' . $report_file . '" could be opened.');
|
||||
}
|
||||
|
||||
// write the headers
|
||||
fputcsv($fh, [
|
||||
'Warranty ID',
|
||||
'Status',
|
||||
'Reason',
|
||||
]);
|
||||
|
||||
foreach ($entries as $row)
|
||||
{
|
||||
fputcsv($fh, $row);
|
||||
}
|
||||
|
||||
fclose($fh);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue