Exemple #1
0
 /**
  * Inserts New Report
  *
  * @return object
  */
 public static function addNewReport($fileData = array())
 {
     $report = new Reports();
     $report->incident_name = Input::get('incident_name');
     $report->incident_number = Input::get('incident_number');
     $report->report_date = Input::get('report_date');
     $report->config_id = Input::get('config_id');
     $report->status = Input::get('config_id') ? Input::get('config_id') : 'Active';
     $report->save();
     return $report;
 }
 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');
 }
 public function download($id = 0)
 {
     $currentReport = ConsolidatedReports::getById($id);
     $version = ConsolidatedReportsVersion::getById($id);
     # get table headers
     $originalReport = Reports::getReportById($currentReport->report_id);
     $reportFiles = ReportFile::getReportFilesById($originalReport->report_id);
     $reportColumns = array();
     if (isset($reportFiles[0])) {
         $currentOriginalFile = $reportFiles[0];
         $currentFileVersion = ReportFileVersion::getCurrentVersion($currentOriginalFile->file_id);
         // get sheets
         $reportColumns = ReportFileSheets::getFirstSheetByVersionId($currentFileVersion->version_id);
         $reportColumns = json_decode($reportColumns);
         $reportColumns = json_decode($reportColumns->data_table_columns);
     }
     # get table data
     $dataTable = json_decode($version->table_data);
     $report = ExcelExporter::formatFileArrays($dataTable);
     # combine headers and data
     $finalDataTable = array_merge($reportColumns, $report);
     # file name here
     $filename = "{$originalReport->incident_name} - Incident Number {$originalReport->incident_number}";
     ExcelExporter::exportFileTest($finalDataTable, $filename);
     //$reformattedReport =
 }
 /**
  * Uloads excel file then save data
  *
  * @return Response
  */
 public function upload()
 {
     $file = array('report' => Input::file('report'));
     $rules = array('report' => 'required');
     //mimes:jpeg,bmp,png and for max size max:10000
     $validator = Validator::make($file, $rules);
     if ($validator->fails()) {
         return Redirect::to('preparedness_response/new')->withInput()->withErrors($validator);
     } else {
         // checking file is valid.
         if (Input::file('report')->isValid()) {
             $destinationPath = 'uploads';
             // upload path
             $extension = Input::file('report')->getClientOriginalExtension();
             $fileName = "preparedness_response_" . rand(11111, 99999) . '_' . date('YmdHis') . '.' . $extension;
             $originalName = Input::file('report')->getClientOriginalName();
             Input::file('report')->move($destinationPath, $fileName);
             $reportData = array();
             $reportData['fileName'] = $fileName;
             $reportData['originalName'] = $originalName;
             // create new report
             $newReport = PreparednessResponse::addNewReport($reportData);
             // parse and save to db
             Reports::parsePreparednessResponse($destinationPath . '/' . $fileName, $newReport);
             Session::flash('success', 'Report successfully uploaded.');
             return Redirect::to('preparedness_response/list');
         } else {
             // sending back with error message.
             Session::flash('error', 'uploaded file is not valid');
             return Redirect::to('preparedness_response/new');
         }
     }
 }