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();
}
}