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/Absences/AbsencesController.php
<?php

namespace App\Komma\Absences;

use App\Http\Controllers\Controller;
use App\Komma\Users\User;
use Carbon\Carbon;
use App\Komma\Messages\MessageController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Session;

class AbsencesController extends Controller
{
    protected $messageController;
    protected $absenceService;
    protected $absenceRepository;

    public function __construct(MessageController $messageController, AbsencesService $absencesService, AbsencesRepository $absencesRepository)
    {
        $this->middleware('auth');
        $this->messageController = $messageController;
        $this->absencesService = $absencesService;
        $this->absencesRepository = $absencesRepository;
    }


    /**
     * @param Request $request
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function index(Request $request)
    {
        //create variable
        $begin = !empty($request->begin) ? $request->begin : Carbon::today()->startOfYear()->format('d-m-Y');
        $end = !empty($request->end) ? $request->end : Carbon::today()->endOfYear()->format('d-m-Y');
        $user = !empty($request->user) ? Auth::user()->can('filter_user_absence') ? $request->user : Auth::user()->name : Auth::user()->name;
        $userId = "";
        //create empty array
        $absenceTotals = [];

        //get all users
        $users = User::orderBy('name', 'asc')->get();

        //if single user
        if ($user != "all") $userId = $users->where('name', $user)->first()->id;
        
        //filter absences by variables and group by type
        $absenceTypes = $this->absencesService->filterAbsenceAndGroup($begin, $end, $user);
        //loop trough absence groups
        foreach ($absenceTypes as $index => $absenceType)
        {
            //create totals
            $absenceTotals += [$index => $this->absencesService->getAbsenceTotals($absenceType, $userId, $begin, $end)];
        }

        //return
        return view('Absences.index', compact('absenceTypes', 'absenceTotals', 'users', 'begin', 'end', 'user'));
    }

    
    /**
     * @param $TypeId
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function show(Request $request, $TypeId)
    {
        //create variable
        $begin = !empty($request->begin) ? $request->begin : Carbon::today()->startOfYear()->format('d-m-Y');
        $end = !empty($request->end) ? $request->end : Carbon::today()->endOfYear()->format('d-m-Y');
        $user = !empty($request->user) ? Auth::user()->can('filter_user_absence') ? $request->user : Auth::user()->name : Auth::user()->name;
        $userId = "";

        //get all users
        $users = User::orderBy('name', 'asc')->get();
        //if single user
        if ($user != "all") $userId = $users->where('name', $user)->first()->id;
        
        $getAbsenceType = $this->absencesRepository->getAbsenceType($TypeId);
        $absenceType = $this->absencesService->filterAbsence($getAbsenceType, $begin, $end, $user);
        $absenceTotal = $this->absencesService->getAbsenceTotals($absenceType, $userId, $begin, $end);
        
        return view('Absences.show', compact('absenceType', 'absenceTotal', 'users', 'begin', 'end', 'user'));
    }

    /**
     * @param $absenceType
     * @param $hour
     * @return \Illuminate\Http\RedirectResponse
     */
    public function lock($absenceType, $hour){
        //update hour
        $absence = Absence::find($hour);
        $absence->locked_at = Carbon::now();
        $absence->save();

        //create session
        Session::flash('message', 'Het uur is gelocked!');

        //return
        return back();
    }

    /**
     * @param $absenceType
     * @param $hour
     * @return \Illuminate\Http\RedirectResponse
     */
    public function unlock($absenceType, $hour){
        //update hour
        $absence = Absence::find($hour);
        $absence->locked_at = null;
        $absence->save();

        //create session
        Session::flash('message', 'Het uur is weer open!');

        //return
        return back();
    }
}