protected function execute(InputInterface $input, OutputInterface $output) { $csvsPath = APP_CWD . '/../csv'; $csvsDatesRegexp = 'd-m-Y'; $menusDatesAlreadyLoaded = array_map(function ($date) use($csvsDatesRegexp) { return Carbon::parse($date['start_date'])->format($csvsDatesRegexp); }, Menu::all()->toArray()); $finder = new \Symfony\Component\Finder\Finder(); $finder = $finder->files()->name('*.csv'); foreach ($menusDatesAlreadyLoaded as $date) { $finder->notPath($date); } $files = $finder->in($csvsPath); foreach ($files as $file) { list($d, $m, $Y) = explode('-', explode('_', $file->getFilename())[0]); $menuDate = Carbon::parse("{$Y}-{$m}-{$d}"); $reader = \League\Csv\Reader::createFromPath($file->getPathname()); $results = $reader->setDelimiter(';')->fetchAssoc(); //creazione Menu ed aggiunta del prodotto $menu = Menu::write($menuDate, $menuDate->copy()->addHours(14)); foreach ($results as $row) { if (empty($row['Prezzo'])) { continue; } $price = floatval(ltrim(str_replace([','], '.', $row['Prezzo']), '€')); $category = Product::findCategory($row['Categoria'], false); //creazione Prodotto $product = Product::firstOrCreate(['code' => $row['Codice'], 'description' => $row['Descrizione'], 'category' => $category]); $product->price = $price; $product->update(); $menu->addProduct($product); } } }