getClientOriginalName(); $data->move(resource_path($path), $nombre); self::log($path . $nombre, self::ARCHIVO_SUBIDO); return $nombre; } public static function cargarCanasta($archivo) { self::limpiarTablas(); $registros = CsvHelper::getRecords($archivo); $toInsert = []; $categoria = ''; foreach($registros as $i => $registro) { // saltear bono de transporte y filas que no tienen tipo if (self::noTieneTipo($registro) || $registro[self::TIPO] == "T") continue; // obtener categoria si no hay producto if ($registro[self::PRODUCTO] == '') { // no es la pregunta de la copa? if (!Str::contains($registro[self::TIPO],"¿")) $categoria = $registro[self::TIPO]; continue; // saltear si es la pregunta de la copa } // completar producto $toInsert[] = [ 'fila' => $i, 'categoria' => $categoria, 'nombre' => trim(str_replace('*', '',$registro[self::PRODUCTO])), 'precio' => $registro[self::PRECIO], 'es_solidario' => Str::contains($registro[self::PRODUCTO],"*"), 'bono' => preg_match(self::REGEX_BONO, $registro[self::TIPO]), 'requiere_notas'=> $registro[self::TIPO] == self::PRODUCTO_TALLE_COLOR, ]; } foreach (array_chunk($toInsert,DatabaseSeeder::CHUNK_SIZE) as $chunk) Producto::insert($chunk); self::agregarBonoBarrial(); self::log($archivo, self::CANASTA_CARGADA); } /** * @param $path * @param $descripcion * @return void */ private static function log($path, $descripcion): void { $log = new CanastaLog([ 'path' => $path, 'descripcion' => $descripcion, ]); $log->save(); } private static function limpiarTablas() { DB::delete('delete from producto_subpedido'); DB::delete('delete from productos'); DB::delete('delete from subpedidos'); } private static function agregarBonoBarrial() { $categoria = Producto::all() ->pluck('categoria') ->unique() ->flatten() ->first(function ($c) { return Str::contains($c, 'BONO'); }); Producto::create([ 'fila' => 420, 'nombre' => "Bono barrial", 'precio' => 20, 'categoria' => $categoria, 'bono' => 1, 'es_solidario' => 0, 'requiere_notas'=> false, ]); } /** * @param $registro * @return bool */ public static function noTieneTipo($registro): bool { return !Arr::has($registro, self::TIPO) || trim($registro[self::TIPO]) == ''; } }