private function csvReport($input, $generator)
{
$module = Module::find($generator->module_name);
$output = '';
$output = fopen('php://output', 'w');
fputcsv($output, array(get_setting('company_name')));
fputcsv($output, array($generator->name));
$date_info = '';
if ($input['start_date'] != '') {
$input['start_date'] = preg_replace('/ \\d+:.*$/', '', $input['start_date']);
$date_info .= "From: {$input['start_date']}";
}
if ($input['end_date'] != '') {
$input['end_date'] = preg_replace('/ \\d+:.*$/', '', $input['end_date']);
$date_info .= " To: {$input['end_date']}";
}
fputcsv($output, array($date_info));
$modules = $this->getModules($generator->modules, $input);
foreach ($modules as $i => $module) {
// Put the name of the fields in CSV
fputcsv($output, $module['required_fields']);
foreach ($module['entries'] as $entry) {
$fields = array();
foreach ($module['required_fields'] as $field => $name) {
$fields[] = $entry->{$field};
}
fputcsv($output, $fields);
}
}
$footer = 'Printed by: ' . current_user()->username . ' on ' . date('Y-m-d h:m:i');
fputcsv($output, array($footer));
fclose($output);
$csv = ob_get_clean();
$filename = $generator->name != '' ? Str::slug($generator->name, '_') : Str::slug($module->name, '_');
$headers = array('Content-Type' => 'text/csv', 'Content-Disposition' => 'attachment; filename="' . $filename . '.csv"');
return Response::make(rtrim($csv, "\n"), 200, $headers);
}