Add csv file for warranties that have no phone number. #274

This commit is contained in:
Korina Cordero 2019-11-20 06:40:37 +00:00
parent a8f069781d
commit 9b0bd63723

View file

@ -5,6 +5,7 @@ namespace App\Command;
use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Doctrine\Common\Persistence\ObjectManager; use Doctrine\Common\Persistence\ObjectManager;
@ -18,6 +19,8 @@ use App\Entity\Vehicle;
use App\Ramcar\FuelType; use App\Ramcar\FuelType;
use App\Ramcar\VehicleStatusCondition; use App\Ramcar\VehicleStatusCondition;
use DateTime;
class CreateCustomerFromWarrantyCommand extends Command class CreateCustomerFromWarrantyCommand extends Command
{ {
protected $em; protected $em;
@ -34,16 +37,30 @@ class CreateCustomerFromWarrantyCommand extends Command
{ {
$this->setName('customer:createfromwarranty') $this->setName('customer:createfromwarranty')
->setDescription('Create customers from existing warranties.') ->setDescription('Create customers from existing warranties.')
->setHelp('Creates customers from existing warranties.'); ->setHelp('Creates customers from existing warranties.')
->addArgument('file', InputArgument::REQUIRED, 'Path to the output CSV file with the warranties.');
} }
protected function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output)
{ {
$csv_file = $input->getArgument('file');
// attempt to open file
try
{
$fh = fopen($csv_file, "w");
}
catch (Exception $e)
{
throw new Exception('The file "' . $csv_file . '" could be opened.');
}
// load all customers // load all customers
$this->loadCustomers(); $this->loadCustomers();
// get all warranties // get all warranties
$warranties = $this->em->getRepository(Warranty::class)->findAll(); $warranties = $this->em->getRepository(Warranty::class)->findAll();
$invalid_warranties = [];
foreach($warranties as $warr) foreach($warranties as $warr)
{ {
$cust_found = false; $cust_found = false;
@ -51,8 +68,9 @@ class CreateCustomerFromWarrantyCommand extends Command
$w_mobile = $warr->getMobileNumber(); $w_mobile = $warr->getMobileNumber();
if (empty($w_mobile)) if (empty($w_mobile))
{ {
// TODO: for now, if warranty mobile number is empty, do nothing // TODO: for now, if warranty mobile number is empty, add to list of invalid entries
$output->writeln('Move to next warranty since mobile number is empty'); $invalid_warranties[] = $this->processInvalidEntries($warr);
continue; continue;
} }
@ -79,7 +97,6 @@ class CreateCustomerFromWarrantyCommand extends Command
// search cust_index for numbers in mobile_array // search cust_index for numbers in mobile_array
foreach ($w_mobile_array as $w_mobile_num) foreach ($w_mobile_array as $w_mobile_num)
{ {
// if present, check if customer vehicle plate number matches warranty plate number?
foreach ($this->cust_index as $key => $customer) foreach ($this->cust_index as $key => $customer)
{ {
$c_mobile = $customer->getPhoneMobile(); $c_mobile = $customer->getPhoneMobile();
@ -139,6 +156,37 @@ class CreateCustomerFromWarrantyCommand extends Command
} }
} }
} }
// process invalid warranties, if any
if (count($invalid_warranties) > 0)
{
fputcsv($fh, [
'ID',
'Serial',
'Warranty Class',
'Last Name',
'First Name',
'Mobile Number',
'Plate Number',
'Battery Model',
'Battery Size',
'SAP Battery',
'Status',
'Date Created',
'Date Purchased',
'Expiry Date',
'Date Claimed',
'Claimed From',
'Privacy Policy',
]);
foreach($invalid_warranties as $row)
{
fputcsv($fh, $row);
}
}
fclose($fh);
} }
protected function loadCustomers() protected function loadCustomers()
@ -170,4 +218,73 @@ class CreateCustomerFromWarrantyCommand extends Command
$this->em->persist($new_cv); $this->em->persist($new_cv);
$this->em->flush(); $this->em->flush();
} }
protected function processInvalidEntries($warr)
{
$batt_model = '';
$batt_size = '';
$sap_batt = '';
$policy = '';
$date_purchased = '';
$date_expire = '';
$date_claim = '';
$create_date = $warr->getDateCreate();
$date_create = $create_date->format('d/M/y');
if ($warr->getDatePurchase() != null)
{
$p_date = $warr->getDatePurchase();
$date_purchased = $p_date->format('d/M/y');
}
if ($warr->getDateClaim() != null)
{
$c_date = $warr->getDateClaim();
$date_claim = $c_date->format('d/M/y');
}
if ($warr->getDateExpire() != null)
{
$e_date = $warr->getDateExpire();
$date_expire = $e_date->format('d/M/y');
}
if ($warr->getBatteryModel() != null)
{
$batt_model = $warr->getBatteryModel()-getName();
}
if ($warr->getBatterySize() != null)
{
$batt_size = $warr->getBatterySize()->getName();
}
if ($warr->getSAPBattery() != null)
{
$sap_batt = $warr->getSAPBattery()->getBrand()->getName();
}
if ($warr->getPrivacyPolicy() != null)
{
$policy = $warr->getPrivacyPolicy()->getName();
}
$invalid_warranty = [
'id' => $warr->getID(),
'serial' => $warr->getSerial(),
'warranty_class' => $warr->getWarrantyClass(),
'last_name' => $warr->getLastName(),
'first_name' => $warr->getFirstName(),
'mobile_number' => $warr->getMobileNumber(),
'plate_number' => $warr->getPlateNumber(),
'battery_model' => $batt_model,
'battery_size' => $batt_size,
'sap_battery' => $sap_batt,
'status' => $warr->getStatus(),
'date_create' => $date_create,
'date_purchase' => $date_purchased,
'date_expire' => $date_expire,
'date_claim' => $date_claim,
'claimed_from' => $warr->getClaimedFrom(),
'privacy_policy' => $policy,
];
return $invalid_warranty;
}
} }