HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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');
    }

}