public function upload(Request $request)
 {
     $file = "";
     $validator = Validator::make($request->all(), ['site' => 'required', 'filexlx' => 'required']);
     if ($validator->fails()) {
         return \Redirect::back()->withErrors($validator)->withInput();
     }
     $file = $request->file('filexlx');
     $fileName = $request->file('filexlx')->getClientOriginalName();
     $destinationPath = public_path() . "/documents/";
     $destinationPath = $destinationPath . $fileName;
     if (file_exists($destinationPath)) {
         unlink($destinationPath);
     }
     $request->file('filexlx')->move(public_path() . "/documents/", $fileName);
     try {
         $objPHPExcel = \PHPExcel_IOFactory::load($destinationPath);
         $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
         //$highestRow = $sheetData->getHighestRow(); // e.g. 10
         //$highestColumn = $sheetData->getHighestColumn(); // e.g 'F'
         $z = 1;
         $stack = new Invoicingstack();
         $stack->title = $request->input('site');
         $stack->company_id = $request->input('company_id');
         $stack->site_id = $request->input('site');
         $stack->description = $request->input('description');
         $stack->file_url = "/documents/" . $fileName;
         $stack->invoicing_date = $request->input('submit_date');
         $stack->created_at = date("Y-m-d H:i:s");
         $stack->updated_at = date("Y-m-d H:i:s");
         //$stack->row_count = $highestRow;
         $stack->save();
         /*$highestColumnIndex = \PHPExcel_Cell::columnIndexFromString($highestColumn); // e.g. 5
           for($row =1; $row<= $highestRow; $row++){
               for($col=0; $col <= $highestColumnIndex; $col++ ){
                   $sheetData->getCellByColumnAndRow($col, $row)->getValue();
               }
           }*/
         foreach ($sheetData as $data) {
             if ($z != 1) {
                 //Skips the sheet headings
                 if (!empty($data["G"])) {
                     $invoicing = new Invoicing();
                     $invoicing->stack_id = $stack->id;
                     $invoicing->site = $request->input('site');
                     $invoicing->user = $data["B"];
                     $invoicing->ip = $data["C"];
                     $invoicing->job_title = $data["D"];
                     $invoicing->submit_date = date_format(date_create($data["E"]), "Y-m-d H:i:s");
                     $invoicing->final_date = date_format(date_create($data["F"]), "Y-m-d H:i:s");
                     $invoicing->final_action = $data["G"];
                     $invoicing->final_site = $data["H"];
                     $invoicing->number_of_pages = $data["I"];
                     $invoicing->release_ip = $data["J"];
                     $invoicing->release_user = $data["K"];
                     $invoicing->release_method = $data["L"];
                     $invoicing->job_color = $data["M"];
                     $invoicing->print_job_duplex = $data["N"];
                     //$invoicing->job_paper_size = $data["N"];
                     if (strtolower($data["O"]) == "unknown" || empty($data["O"])) {
                         $invoicing->job_paper_size = "A4";
                     } else {
                         $invoicing->job_paper_size = $data["O"];
                     }
                     $invoicing->device_name = $data["P"];
                     $invoicing->device_type = $data["Q"];
                     $invoicing->device_host = $data["R"];
                     $invoicing->created_at = date("Y-m-d H:i:s");
                     $invoicing->save();
                 }
             }
             $z++;
         }
         $stack->row_count = $z;
         $stack->update();
         \Session::put("success_message", "File successfully processed");
         return \Redirect::back();
     } catch (Exception $ex) {
         echo $ex->getMessage();
     } catch (\Illuminate\Database\QueryException $e) {
         \Session::put("error_message", $e->getMessage());
         return \Redirect::back();
     } catch (\PDOException $e) {
         \Session::put("error_message", $e->getMessage());
         return \Redirect::back();
     } catch (\Exception $e) {
         \Session::put("error_message", $e->getMessage());
         return \Redirect::back();
     } catch (PHPExcel_Reader_Exception $e) {
         \Session::put("error_message", $e->getMessage());
         return \Redirect::back();
     }
     //}
 }