File: D:/HostingSpaces/SBogers10/hours.komma.pro/app/Komma/ExcelExports/ExcelController.php
<?php
namespace App\Komma\ExcelExports;
use App\Hours\ExcelExports\Types\ProjectExport;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel;
class ExcelController extends Controller
{
private $excelExportService;
private $excelExportRepository;
private $excelExportOptions;
public function __construct(ExcelExportService $excelExportService, ExcelExportRepository $excelExportRepository, ExcelExportOptions $excelExportOptions)
{
$this->middleware('auth');
$this->excelExportService = $excelExportService;
$this->excelExportRepository = $excelExportRepository;
$this->excelExportOptions = $excelExportOptions;
}
/**
* TODO: comments toevoegen
* @param Request $request
* @return mixed
*/
public function exportProject(Request $request)
{
$date = Carbon::now();
//get begin and end date
$begin = \Request::filled('begin') ? \Request::get('begin') : '';
$end = \Request::filled('end') ? \Request::get('end') : Carbon::today()->endOfDay()->toDateTimeString();
//single project or more projects
if (!empty($request->subproject)) {
//get data single subproject
$data = (object)$this->excelExportService->downloadExcelSubproject($request, $begin, $end);
} elseif (!empty($request->project)) {
//get data single project
$data = (object)$this->excelExportService->downloadExcelProject($request, $begin, $end);
} elseif (!empty($request->company)) {
//get data single company
$data = (object)$this->excelExportService->downloadExcelCompany($request, $begin, $end);
} else {
//get data more projects
$data = (object)$this->excelExportService->downloadExcelAllProjects($request, $begin, $end);
}
return Excel::download(new ProjectExport($data), $data->name . '_export-' . $date.'.xlsx');
}
/**
* @param Request $request
* @return mixed
*/
public function exportAbsence(Request $request)
{
$date = Carbon::now();
//get begin and end date
$begin = \Request::filled('begin') ? \Request::get('begin') : Carbon::today()->startOfYear()->toDateString();;
$end = \Request::filled('end') ? \Request::get('end') : Carbon::today()->endOfDay()->toDateTimeString();
$user = !empty($request->user) ? $request->user : Auth::user()->name;
//single absence type or more
if (!empty($request->absence)) {
//get data single absence type
$data = (object)$this->excelExportService->downloadExcelAbsence($request, $begin, $end, $user);
} else {
//get data all absence types
$data = (object)$this->excelExportService->downloadExcelAllAbsences($begin, $end, $user);
}
//create excel file
return Excel::create($data->name . '_export-' . $date, function ($excel) use ($data) {
//create tab 'Uren'
$excel->sheet('Uren', function ($sheet) use ($data) {
$sheet->setColumnFormat(array( 'J' => PHPExcel_Style_NumberFormat::FORMAT_DATE_DMYMINUS ));
//fill excel
$sheet->fromArray($data->hours);
if (!empty($data->specialRows)) {
//get subtotal rows
$this->excelExportOptions->subTotalRows($data, $sheet, "C", "B", "");
//get colored rows
$this->excelExportOptions->boldRows($data, $sheet);
//get total row
$sheet->rows(array(
array(''),
array('', 'Totaal', '=SUM(' . $data->specialRows->getAllSum . ')')
));
}
});
})->download('xlsx');
}
}