Include invalid plate numbers in warranty. Return a csv file with the invalid entries that cannot be inserted into the database. #258
This commit is contained in:
parent
33e0e6b41b
commit
dbee60bf46
1 changed files with 118 additions and 55 deletions
|
|
@ -15,6 +15,7 @@ use Doctrine\ORM\Query;
|
|||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\StreamedResponse;
|
||||
use Symfony\Component\HttpFoundation\File\UploadedFile;
|
||||
use Symfony\Component\Validator\Validator\ValidatorInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
|
|
@ -372,9 +373,47 @@ class WarrantyController extends Controller
|
|||
$file = $req->files->get('csv_file');
|
||||
|
||||
// process the csv file
|
||||
$this->processWarrantyFile($file, $em);
|
||||
$inv_entries = $this->processWarrantyFile($file, $em);
|
||||
|
||||
return $this->render('warranty/upload.form.html.twig');
|
||||
$resp = new StreamedResponse();
|
||||
$resp->setCallback(function() use($inv_entries) {
|
||||
// csv output
|
||||
$csv_handle = fopen('php://output', 'w+');
|
||||
fputcsv($csv_handle, [
|
||||
'Owner First Name',
|
||||
'Owner Last Name',
|
||||
'Owner Email',
|
||||
'Owner Address',
|
||||
'Owner Mobile',
|
||||
'Owner Telephone',
|
||||
'Vehicle Make',
|
||||
'Vehicle Model',
|
||||
'Vehicle Year',
|
||||
'Vehicle Plate Number',
|
||||
'Battery Serial Number',
|
||||
'Battery Sales Invoice',
|
||||
'Battery Date of Purchase',
|
||||
'Distributor Name',
|
||||
'Distributor Address',
|
||||
'Application Type ID',
|
||||
'Battery ID',
|
||||
'Ownership Type',
|
||||
]);
|
||||
foreach ($inv_entries as $row)
|
||||
{
|
||||
fputcsv($csv_handle, $row);
|
||||
}
|
||||
|
||||
fclose($csv_handle);
|
||||
});
|
||||
|
||||
$filename = 'invalid_warranties' . '.csv';
|
||||
|
||||
$resp->setStatusCode(200);
|
||||
$resp->headers->set('Content-Type', 'text/csv; charset=utf-8');
|
||||
$resp->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '"');
|
||||
|
||||
return $resp;
|
||||
}
|
||||
|
||||
protected function processWarrantyFile(UploadedFile $csv_file, EntityManagerInterface $em)
|
||||
|
|
@ -410,6 +449,7 @@ class WarrantyController extends Controller
|
|||
// 17 - Ownership Type
|
||||
|
||||
$row_num = 0;
|
||||
$invalid_entries = [];
|
||||
while (($fields = fgetcsv($fh)) !== false)
|
||||
{
|
||||
// start processing at row 1, not 0
|
||||
|
|
@ -428,69 +468,92 @@ class WarrantyController extends Controller
|
|||
$purchase_date = trim($fields[12]);
|
||||
$battery_id = trim($fields[16]);
|
||||
|
||||
// new warranty
|
||||
$warranty = new Warranty();
|
||||
// check if purchase_date or plate_number or serial is empty or if
|
||||
// purchase date is valid
|
||||
$date_purchase = DateTime::createFromFormat('d-M-y', $purchase_date);
|
||||
|
||||
// clean the plate number
|
||||
$cleaned_plate_number = Warranty::cleanPlateNumber($plate_number);
|
||||
if ($cleaned_plate_number)
|
||||
if (empty($purchase_date) ||
|
||||
empty($plate_number) ||
|
||||
empty($serial) ||
|
||||
($date_purchase == false))
|
||||
{
|
||||
error_log("mogol plate number " . $cleaned_plate_number);
|
||||
// continue processing
|
||||
// check if purchase_date is empty. If so, ignore entry
|
||||
$date_purchase = DateTime::createFromFormat('d-M-y', $purchase_date);
|
||||
if ($date_purchase != false)
|
||||
// add to invalid_entries
|
||||
$invalid_entries[] = [
|
||||
'owner_first_name' => $first_name,
|
||||
'owner_last_name' => $last_name,
|
||||
'owner_email' => trim($fields[2]),
|
||||
'owner_address' => trim($fields[3]),
|
||||
'owner_mobile' => $mobile_number,
|
||||
'owner_telephone' => trim($fields[5]),
|
||||
'vehicle_make' => trim($fields[6]),
|
||||
'vehicle_model' => trim($fields[7]),
|
||||
'vehicle_year' => trim($fields[8]),
|
||||
'vehicle_plate_number' => $plate_number,
|
||||
'battery_serial_number' => $serial,
|
||||
'battery_sales_invoice' => trim($fields[11]),
|
||||
'battery_date_purchase' => $purchase_date,
|
||||
'distributor_name' => trim($fields[13]),
|
||||
'distributor_address' => trim($fields[14]),
|
||||
'application_type_id' => trim($fields[15]),
|
||||
'battery_id' => $battery_id,
|
||||
'ownership_typ' => trim($fields[17]),
|
||||
];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
// new warranty
|
||||
$warranty = new Warranty();
|
||||
|
||||
// get the battery purchased
|
||||
// check battery first. If not found, check sap_battery
|
||||
$battery = $em->getRepository(Battery::class)->find($battery_id);
|
||||
if ($battery != null)
|
||||
{
|
||||
error_log ("mogol date purchase " . $purchase_date);
|
||||
// get the battery purchased
|
||||
// check battery first. If not found, check sap_battery
|
||||
$battery = $em->getRepository(Battery::class)->find($battery_id);
|
||||
// get the battery model and battery size
|
||||
$model_id = $battery->getModel()->getID();
|
||||
$size_id = $battery->getSize()->getID();
|
||||
|
||||
$bty_model = $em->getRepository(BatteryModel::class)->find($model_id);
|
||||
$bty_size = $em->getRepository(BatterySize::class)->find($size_id);
|
||||
|
||||
if ($bty_model != null)
|
||||
{
|
||||
$warranty->setBatteryModel($bty_model);
|
||||
}
|
||||
|
||||
if ($bty_size != null)
|
||||
{
|
||||
$warranty->setBatterySize($bty_size);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// find battery in sap_battery
|
||||
$battery = $em->getRepository(SAPBattery::class)->find($battery_id);
|
||||
if ($battery != null)
|
||||
{
|
||||
// get the battery model and battery size
|
||||
$model_id = $battery->getModel()->getID();
|
||||
$size_id = $battery->getSize()->getID();
|
||||
|
||||
$bty_model = $em->getRepository(BatteryModel::class)->find($model_id);
|
||||
$bty_size = $em->getRepository(BatterySize::class)->find($size_id);
|
||||
|
||||
if ($bty_model != null)
|
||||
{
|
||||
$warranty->setBatteryModel($bty_model);
|
||||
}
|
||||
|
||||
if ($bty_size != null)
|
||||
{
|
||||
$warranty->setBatterySize($bty_size);
|
||||
}
|
||||
// battery is SAPBattery
|
||||
$warranty->setSAPBattery($battery);
|
||||
}
|
||||
else
|
||||
{
|
||||
// find battery in sap_battery
|
||||
$battery = $em->getRepository(SAPBattery::class)->find($battery_id);
|
||||
if ($battery != null)
|
||||
{
|
||||
// battery is SAPBattery
|
||||
$warranty->setSAPBattery($battery);
|
||||
}
|
||||
}
|
||||
|
||||
// set and save values
|
||||
error_log("mogol serial " . $serial);
|
||||
$warranty->setSerial($serial)
|
||||
->setPlateNumber($cleaned_plate_number)
|
||||
->setFirstName($first_name)
|
||||
->setLastName($last_name)
|
||||
->setMobileNumber($mobile_number)
|
||||
->setDatePurchase($date_purchase);
|
||||
|
||||
$em->persist($warranty);
|
||||
$em->flush();
|
||||
}
|
||||
}
|
||||
|
||||
// set and save values
|
||||
$warranty->setSerial($serial)
|
||||
->setPlateNumber($plate_number)
|
||||
->setFirstName($first_name)
|
||||
->setLastName($last_name)
|
||||
->setMobileNumber($mobile_number)
|
||||
->setDatePurchase($date_purchase);
|
||||
|
||||
$em->persist($warranty);
|
||||
$em->flush();
|
||||
}
|
||||
|
||||
$row_num++;
|
||||
}
|
||||
|
||||
return $invalid_entries;
|
||||
}
|
||||
|
||||
protected function fillDropdownParameters(&$params)
|
||||
|
|
|
|||
Loading…
Reference in a new issue