Example #1
0
 public function postDesdeArchivo()
 {
     $articulosSinRegistrar = [];
     try {
         $extensiones = array('xls', 'xlsx');
         $file = Input::file("articulos");
         $extension = strtolower($file->getClientOriginalExtension());
         $size = Input::file('articulos')->getClientOriginalExtension();
         if (!in_array($extension, $extensiones)) {
             return Redirect::to('/')->with('message', 'Tipo de archivo inválido.');
         }
         $dataUpload = array("articulos" => $file);
         $objPHPExcel = PHPExcel_IOFactory::load($file);
         for ($i = 2; $i < 200; $i++) {
             $codigoBarras = $objPHPExcel->getActiveSheet()->getCell('A' . $i)->getValue();
             $cantidad = $objPHPExcel->getActiveSheet()->getCell('B' . $i)->getValue();
             // Si la celda está vacía ignora la fila y continúa.
             if ($codigoBarras == '') {
                 continue;
             }
             // Se buscan los artículos que coincidan con el código de barras.
             $articulos = Article::whereRaw("comments LIKE '%" . $codigoBarras . "%'")->get();
             $cantidad = $cantidad;
             // Si el artículo no existe en el sistema.
             if (empty($articulos->first()->name)) {
                 // Se agrega el código de barras al final del arreglo $articulosSinRegistrar.
                 array_push($articulosSinRegistrar, $codigoBarras);
             } else {
                 foreach ($articulos as $articulo) {
                     // Se agrega el artículo al carrito.
                     self::addToCart($articulo, $cantidad);
                 }
             }
         }
         // For
         if (!empty($articulosSinRegistrar)) {
             $mensaje = "No se encontraron artículos relacionados para los siguientes valores: <ul>";
             foreach ($articulosSinRegistrar as $articulo) {
                 $mensaje .= "<li>" . $articulo . "</li>";
             }
             $mensaje .= "</ul>";
             return Redirect::to('cart')->with('message', $mensaje);
         }
         return Redirect::to('cart')->with('messageOk', 'Artículos agregados al carrito satisfactoriamente.');
     } catch (Exception $e) {
         return Redirect::to('/')->with('message', 'Ocurrió un error en el postDesdeArchivo.');
     }
 }
 public function getSearch()
 {
     $title = "Artículos";
     $input = Input::all();
     $articles = null;
     $filtro = '';
     if ($input['filterBy'] == 'id') {
         $filtro = 'Artículo con código <strong>' . $input['search'] . '</strong>.';
         $articles = Article::whereRaw("id = '" . $input['search'] . "'")->paginate(6);
     } else {
         if ($input['filterBy'] == 'comments') {
             $palabras = explode(' ', $input['search']);
             $articles = Article::where('comments', 'LIKE', '%%');
             foreach ($palabras as $palabra) {
                 $articles->where('comments', 'LIKE', '%' . $palabra . '%');
             }
             $articles = $articles->orderBy('comments', 'ASC')->paginate(6);
             $filtro = 'Artículos que contienen en datos adicionales <strong>' . $input['search'] . '</strong>.';
             //$articles = Article::whereRaw("comments like '%". $input['search'] ."%'")->orderBy('name', 'asc')->paginate(6);
         } else {
             // Se asume que el filtro es por nombre.
             $palabras = explode(' ', $input['search']);
             $articles = Article::where('name', 'LIKE', '%%');
             foreach ($palabras as $palabra) {
                 $articles->where('name', 'LIKE', '%' . $palabra . '%');
             }
             $articles = $articles->orderBy('name', 'ASC')->paginate(6);
             $filtro = 'Artículos que contienen en el nombre <strong>' . $input['search'] . '</strong>.';
             //$articles = Article::whereRaw("name like '%". $input['search'] ."%'")->orderBy('name', 'asc')->paginate(6);
         }
     }
     $branches = Branche::orderBy('name', 'asc')->get();
     return View::make('articles.index')->with(compact('articles', 'title', 'branches', 'filtro', 'input'));
 }