/**
  * View report by id
  *
  * @return Response
  */
 public function view($id)
 {
     $data = array();
     // get config
     $config = Configuration::getById($id);
     $data['config'] = $config;
     // get config sheets
     $configSheets = ConfigurationSheet::getByConfigId($id);
     foreach ($configSheets as $currentConfigsheet) {
         $currentConfigsheet->decoded_config_string = json_decode($currentConfigsheet->configuration_string);
     }
     $data['configSheets'] = $configSheets;
     return view($this->viewPath . 'update', $data);
 }
 public function savereport()
 {
     Session::flush('reportSheetData');
     $allfiles = Input::get('allfiles');
     $allfiles = explode(',', $allfiles);
     // get config
     $config = Configuration::getById(Input::get('config_id'));
     // get config sheets
     $configSheets = ConfigurationSheet::getArrangedSheets($config->config_id);
     // create the report first
     $report = Reports::addNewReport();
     foreach ($allfiles as $currentFile) {
         if ($currentFile != '') {
             // save file
             $reporfileData = array();
             //$reporfileData['flag_current_version'] = 1;
             //$reporfileData['report_filename'] = $currentFile;
             $reporfileData['report_id'] = $report->report_id;
             $reportFile = ReportFile::addReportFile($reporfileData);
             // save file version
             $reportFileVersionData = array();
             $reportFileVersionData['file_id'] = $reportFile->file_id;
             $reportFileVersionData['flag_current_version'] = 1;
             $reportFileVersionData['report_filename'] = $currentFile;
             $reportVersion = ReportFileVersion::addReportFileVersion($reportFileVersionData);
             // save each sheet
             $file = "uploads/{$currentFile}";
             Excel::load($file, function ($reader) use($reportFile, $reportVersion, $config, $configSheets) {
                 foreach ($reader->getWorksheetIterator() as $worksheetNbr => $worksheet) {
                     //echo 'Worksheet number - ', $worksheetNbr, PHP_EOL;
                     $currentWorksheet = $worksheetNbr + 1;
                     if (isset($configSheets["sheet{$currentWorksheet}"])) {
                         $currentConfig = $configSheets["sheet{$currentWorksheet}"];
                         // data table columns
                         $data_table_columns = $worksheet->rangeToArray($currentConfig['data_table_columns']);
                         $data_table_columns = json_encode($data_table_columns);
                         // data table
                         //$data_table = $worksheet->rangeToArray($currentConfig['data_table']);
                         $data_table = $worksheet->rangeToArray($currentConfig['data_table'], false, true, true, true);
                         Reports::prepareFileSheetSession($data_table);
                         $data_table = json_encode($data_table);
                         // excel info
                         if ($currentConfig['configuration_string'] != '') {
                             $config_string = json_decode($currentConfig['configuration_string']);
                             $new_config_string = array();
                             for ($i = 0; $i < count($config_string); $i++) {
                                 $currentCell = $worksheet->getCell("{$config_string[$i]->column}{$config_string[$i]->row}")->getValue();
                                 $currentCellColor = $worksheet->getStyle("{$config_string[$i]->column}{$config_string[$i]->row}")->getFill()->getStartColor()->getARGB();
                                 $new_config_string[$i] = $config_string[$i];
                                 $new_config_string[$i]->cell_value = $currentCell;
                                 $new_config_string[$i]->cell_color = $currentCellColor;
                             }
                             $new_config_string = json_encode($new_config_string);
                         } else {
                             $new_config_string = '';
                         }
                         // insert sheet
                         $reportSheetData = array();
                         $reportSheetData['version_id'] = $reportVersion->version_id;
                         $reportSheetData['worksheet_number'] = $worksheetNbr;
                         $reportSheetData['data_table'] = $data_table;
                         $reportSheetData['data_table_columns'] = $data_table_columns;
                         $reportSheetData['excel_info'] = $new_config_string;
                         ReportFileSheets::addReportFileSheet($reportSheetData);
                     }
                 }
             });
         }
     }
     // get previous incident's data
     $previousIncidentData = Reports::getPreviousIncidentData();
     // get current incident's data
     $reportSheets = Reports::retrieveFileSheetSession();
     $newIncidenData = Reports::rearrangeSheetSession($reportSheets);
     $incidentComparison = Reports::compareIncidentData($previousIncidentData, $newIncidenData);
     if (count($incidentComparison) > 0) {
         Session::put('incidentReportErrors' . $report->report_id, $incidentComparison);
         /*$sessionErrors = Session::get('reportSheetData');
         		exit;*/
         Session::flash('incident_warning', 'There are errors in your report. Please see below.');
         return Redirect::to('reports/view1/' . $report->report_id);
     } else {
         Session::flash('success', 'Your report(s) has been successfully added.');
         return Redirect::to('reports/list');
     }
     exit;
     Session::flash('success', 'Your report(s) has been successfully added.');
     return Redirect::to('reports/list');
 }