From b794b2e62287b166bba5f1e740428c62c3e2f11a Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Mon, 5 Aug 2019 04:14:35 +0000 Subject: [PATCH] Remove the Assert\NotBlank from branch in Location. Add command to import partners given a csv file. #242 --- src/Command/ImportPartnersCommand.php | 168 ++++++++++++++++++++++++++ src/Ramcar/Location.php | 1 - 2 files changed, 168 insertions(+), 1 deletion(-) create mode 100644 src/Command/ImportPartnersCommand.php diff --git a/src/Command/ImportPartnersCommand.php b/src/Command/ImportPartnersCommand.php new file mode 100644 index 00000000..526fb282 --- /dev/null +++ b/src/Command/ImportPartnersCommand.php @@ -0,0 +1,168 @@ +em = $om; + + parent::__construct(); + } + + protected function configure() + { + $this->setName('partner:import') + ->setDescription('Import a CSV file with partners.') + ->setHelp('Creates partners based on imported CSV.') + ->addArgument('file', InputArgument::REQUIRED, 'Path to the CSV file.'); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $csv_file = $input->getArgument('file'); + + // attempt to open file + try + { + $fh = fopen($csv_file, "r"); + } + catch (Exception $e) + { + throw new Exception('The file "' . $csv_file . '" could be read.'); + } + + // get entity manager + $em = $this->em; + + // loop through the rows + $row_num = 0; + while (($fields = fgetcsv($fh)) !== false) + { + if ($row_num < 2) + { + $row_num++; + continue; + } + + $output->writeln("Parsing row " . $row_num . "..."); + + // parse + $name = trim($fields[self::F_DEALER]); + $office_num = trim($fields[self::F_OFFICE_NUM]); + $address = trim($fields[self::F_ADDRESS]); + $monday = trim($fields[self::F_MONDAY]); + $contact_num = trim($fields[self::F_CONTACT_NUM]); + $lat = trim($fields[self::F_LAT]); + $long = trim($fields[self::F_LONG]); + + // parse time + if (!empty($monday)) + { + $format = 'g:i A'; + $times = explode("-", $monday); + $time_open = DateTime::createFromFormat($format, $times[0]); + $time_close = DateTime::createFromFormat($format, $times[1]); + } + + // coordinates + if ((!empty($lat))&&(!empty($long))) + { + $point = new Point($long, $lat); + } + + // consolidate contact numbers + $phone_numbers = ""; + if ((!empty($contact_num))&&(!empty($office_num))) + { + $phone_numbers = $office_num . ' / ' . $contact_num; + } + else { + if (!empty($office_num)) + { + $phone_numbers = $office_num; + } + if (!empty($contact_num)) + { + $phone_numbers = $contact_num; + } + } + + // create partner + $partner = new Partner(); + + $partner->setName($name) + ->setAddress($address) + ->setCoordinates($point) + ->setContactNumbers($phone_numbers) + ->setTimeOpen($time_open) + ->setTimeClose($time_close) + ->setBranch(""); + + // process the services + if ($fields[self::F_TIRE] == 'YES') + { + $service = $em->getRepository(Service::class)->find('1'); + $partner->addService($service); + } + if ($fields[self::F_AIRCON] == 'YES') + { + $service = $em->getRepository(Service::class)->find('2'); + $partner->addService($service); + } + if ($fields[self::F_REPAIR] == 'YES') + { + $service = $em->getRepository(Service::class)->find('3'); + $partner->addService($service); + } + if ($fields[self::F_BODY] == 'YES') + { + $service = $em->getRepository(Service::class)->find('4'); + $partner->addService($service); + } + if ($fields[self::F_PARTS] == 'YES') + { + $service = $em->getRepository(Service::class)->find('5'); + $partner->addService($service); + } + + $em->persist($partner); + $em->flush(); + + $row_num++; + } + + } + +} diff --git a/src/Ramcar/Location.php b/src/Ramcar/Location.php index b83eeb56..601eaaa0 100644 --- a/src/Ramcar/Location.php +++ b/src/Ramcar/Location.php @@ -28,7 +28,6 @@ trait Location // branch name /** * @ORM\Column(type="string", length=80) - * @Assert\NotBlank() */ protected $branch;