Add special cases to import customer command #73

This commit is contained in:
Kendrick Chan 2018-04-06 03:40:52 +08:00
parent 36ac62a2ad
commit f076827879
2 changed files with 32967 additions and 9 deletions

File diff suppressed because it is too large Load diff

View file

@ -73,7 +73,23 @@ class ImportCustomerCommand extends Command
$this->mfg_index = []; $this->mfg_index = [];
foreach ($mfgs as $mfg) foreach ($mfgs as $mfg)
{ {
$this->mfg_index[$mfg->getName()] = $mfg; $name = $mfg->getName();
$this->mfg_index[$name] = $mfg;
// exceptions and special cases
switch ($name)
{
case 'PROTON':
$this->mfg_index['PROTON WIRA'] = $mfg;
break;
case 'OWNER TYPE JEEP':
$this->mfg_index['UNKNOWN'] = $mfg;
break;
case 'GOLF CART':
$this->mfg_index['YAMAHA'] = $mfg;
break;
}
} }
} }
@ -84,7 +100,153 @@ class ImportCustomerCommand extends Command
$this->vehicle_index = []; $this->vehicle_index = [];
foreach ($vs as $v) foreach ($vs as $v)
{ {
$this->vehicle_index[strtoupper($v->getMake())][$v->getModelYearFormatted()] = $v; $make = strtoupper($v->getMake());
$mfg_id = $v->getManufacturer()->getID();
$model = $v->getModelYearFormatted();
$this->vehicle_index[$mfg_id][$make][$model] = $v;
// exceptions and special cases for makes
switch ($make)
{
case 'ALMERA':
$this->vehicle_index[$mfg_id]['ALMIRA'][$model] = $v;
break;
case 'TRAILBLAZER':
$this->vehicle_index[$mfg_id]['TRAILBLAZER 2013 LOW'][$model] = $v;
$this->vehicle_index[$mfg_id]['TRAILBLAZER 2014'][$model] = $v;
break;
case 'INNOVA (E-TYPE)':
$this->vehicle_index[$mfg_id]['INNOVA GAS E'][$model] = $v;
break;
case 'INNOVA (G-TYPE)':
$this->vehicle_index[$mfg_id]['INNOVA GAS G'][$model] = $v;
break;
case 'INNOVA (V-TYPE)':
$this->vehicle_index[$mfg_id]['INNOVA GAS V'][$model] = $v;
break;
case 'INNOVA (J-TYPE)':
$this->vehicle_index[$mfg_id]['INNOVA GAS J'][$model] = $v;
break;
case 'RAV 4':
$this->vehicle_index[$mfg_id]['RAV-4'][$model] = $v;
break;
case 'GOLFCART':
$this->vehicle_index[$mfg_id]['GOLF CART'][$model] = $v;
break;
case 'FORESTER 2.5':
$this->vehicle_index[$mfg_id]['FORESTER 2.0 AND 2.5'][$model] = $v;
break;
case 'MU-X 2.5LI 4X2/3.0LI 4X4':
$this->vehicle_index[$mfg_id]['MUX'][$model] = $v;
break;
case 'ADVENTURE GLX':
$this->vehicle_index[$mfg_id]['ADVENTURE GAS'][$model] = $v;
break;
case 'CIVIC 1.8':
$this->vehicle_index[$mfg_id]['NEW CIVIC 1.8 V AT'][$model] = $v;
$this->vehicle_index[$mfg_id]['NEW CIVIC 1.8 V MT'][$model] = $v;
break;
case 'LAND CRUISER / PRADO (GASOLINE)':
$this->vehicle_index[$mfg_id]['PRADO'][$model] = $v;
break;
case 'MAZDA 3 / 2 / 6 ISTOP':
$this->vehicle_index[$mfg_id]['MAZADA 3 / 2 / 6 ISTOP'][$model] = $v;
break;
case 'SORENTO':
$this->vehicle_index[$mfg_id]['SORENTO 7-SEATER AT'][$model] = $v;
break;
case 'CX5':
$this->vehicle_index[$mfg_id]['CX-5'][$model] = $v;
break;
case 'ACCORD 3.5 S - V AT V6':
$this->vehicle_index[$mfg_id]['ACCORD 3.5 S - V AT V6 (BRILLIANT WHITE PEARL)'][$model] = $v;
break;
case 'POLO NOTCH 1.6 MPI AT (GAS)':
$this->vehicle_index[$mfg_id]['POLO HATCH 1.6 MPI AT (GAS)'][$model] = $v;
break;
case 'BB':
$this->vehicle_index[$mfg_id]['TOYOTA BB'][$model] = $v;
break;
case 'BRIO AMAZE':
$this->vehicle_index[$mfg_id]['BRIO-AMAZE'][$model] = $v;
break;
case 'CRV':
$this->vehicle_index[$mfg_id]['CR-V 1.5 I-DTEC'][$model] = $v;
break;
}
// special cases for models
switch ($make)
{
case 'CIVIC':
if ($model == '1991 - 2000')
$this->vehicle_index[$mfg_id][$make]['2000 - down'] = $v;
if ($model == '2001 - 2005')
$this->vehicle_index[$mfg_id][$make]['2002 - 2006'] = $v;
if ($model == '2006 - 2018')
$this->vehicle_index[$mfg_id][$make]['2006*'] = $v;
break;
case 'MONTERO SPORTS':
if ($model == '-')
$this->vehicle_index[$mfg_id][$make]['2010 AND 2014'] = $v;
break;
case 'FOCUS':
if ($model == '2005 - 2013')
$this->vehicle_index[$mfg_id][$make]['2013 - down'] = $v;
if ($model == '2014 - 2018')
$this->vehicle_index[$mfg_id][$make]['2005 - 2018'] = $v;
break;
case 'RANGER':
if ($model == '1999 - 2014')
$this->vehicle_index[$mfg_id][$make]['1999 - 2018'] = $v;
break;
case 'LANCER MX*':
if ($model == '2000 - 2018')
$this->vehicle_index[$mfg_id][$make]['2010'] = $v;
break;
case 'VIOS':
if ($model == '2006')
$this->vehicle_index[$mfg_id][$make]['2006 - down'] = $v;
break;
case 'RAV 4':
if ($model == '2007 - 2018')
$this->vehicle_index[$mfg_id]['RAV-4']['2007'] = $v;
if ($model == '1996 - 2018')
$this->vehicle_index[$mfg_id]['RAV-4']['2002 - 2006'] = $v;
$this->vehicle_index[$mfg_id]['RAV-4']['2001 - down'] = $v;
break;
case 'ACCENT GL 1.5 CRDI MT':
if ($model == '2004 - 2013')
$this->vehicle_index[$mfg_id][$make]['2004 - 2018'] = $v;
if ($model == '2014 - 2018')
$this->vehicle_index[$mfg_id][$make]['2013 to Present'] = $v;
break;
case 'TUCSON CRDI DSL 4X2 AT':
if ($model == '2004 - 2011')
$this->vehicle_index[$mfg_id][$make]['2004 - 2018'] = $v;
break;
case 'FORTUNER (DIESEL)':
if ($model == '2005 - 2016')
$this->vehicle_index[$mfg_id][$make]['2005 - 2018'] = $v;
if ($model == '2016 - 2018')
$this->vehicle_index[$mfg_id][$make]['2016'] = $v;
break;
case 'CAMRY':
if ($model == '2007 - 2018')
$this->vehicle_index[$mfg_id][$make]['2007 - 0n'] = $v;
break;
case 'GRAND VITARA':
if ($model == '2007 - 2018')
$this->vehicle_index[$mfg_id][$make]['2007 - 0n'] = $v;
break;
}
// exceptions and special cases for model
} }
} }
@ -101,10 +263,23 @@ class ImportCustomerCommand extends Command
return null; return null;
} }
$mfg = $this->mfg_index[$mfg_name]; $mfg = $this->mfg_index[$mfg_name];
$mfg_id = $mfg->getID();
// check if empty make // check if empty make
if (empty($make)) if (empty($make))
{
// check if the manufacturer has only one make anyway
if (count($this->vehicle_index[$mfg_id]) == 1)
{
// get first make
$first_make = reset($this->vehicle_index[$mfg_id]);
$first_model = reset($first_make);
return $first_model;
}
$output->writeln('no make specified: ' . $mfg_name);
return null; return null;
}
// get year from and to from model // get year from and to from model
if (empty($model)) if (empty($model))
@ -136,17 +311,26 @@ class ImportCustomerCommand extends Command
} }
// search for make and model from index // search for make and model from index
if (!isset($this->vehicle_index[$make][$model_index])) if (!isset($this->vehicle_index[$mfg_id][$make][$model_index]))
{ {
// check if we match make but not model // check if we match make but not model
if (isset($this->vehicle_index[$make])) if (isset($this->vehicle_index[$mfg_id][$make]))
{ {
// is there only one entry in the index? that's the one! // is there only one entry in the index? that's the one!
if (count($this->vehicle_index[$make]) == 1) if (count($this->vehicle_index[$mfg_id][$make]) == 1)
{ {
$vehicle = reset($this->vehicle_index[$make]); $vehicle = reset($this->vehicle_index[$mfg_id][$make]);
return $vehicle; return $vehicle;
} }
// handle blank model year
if ($model_index == '-')
{
$vehicle = reset($this->vehicle_index[$mfg_id][$make]);
return $vehicle;
}
// special cases
} }
$output->writeln("vehicle make and model not found: $mfg_name - $make ($model_index)"); $output->writeln("vehicle make and model not found: $mfg_name - $make ($model_index)");