public function cancel(User $user, EmployeeSpecialLeave $leave)
 {
     if ($user->id == $leave->employee->user->id) {
         if ($leave->isStatus('filed') or $leave->isStatus('accepted') or $leave->isStatus('pending')) {
             return true;
         }
     }
     return false;
 }
 /**
  * Bind data to the view.
  *
  * @param  View  $view
  * @return void
  */
 public function compose(View $view)
 {
     $user = $this->user;
     $travelOrderCount = 0;
     $regularLeaveCount = 0;
     $specialLeaveCount = 0;
     if ($user->employee && $user->employee->canApproveRegularLeave()) {
         $regularLeaveCount = $user->employee->regular_leave_recommending_approvals->merge($user->employee->regular_leave_approved_by)->count();
     }
     if ($user->employee && $user->employee->canApproveSpecialLeave()) {
         $specialLeaveCount = $user->employee->special_leave_recommending_approvals->merge($user->employee->special_leave_approved_by)->count();
     }
     if ($user->isAdmin()) {
         $regularLeaveCount = EmployeeLeave::approved()->count();
         $specialLeaveCount = EmployeeSpecialLeave::approved()->count();
     }
     if ($user->employee && $user->employee->canApproveTravelOrder()) {
         if ($user->isFinanceDirector()) {
             $travelOrderCount = TravelOrder::recommended()->count();
         } else {
             $travelOrderCount = $user->employee->travel_order_recommending_approvals->merge($user->employee->travel_order_approved_by)->count();
         }
     }
     $view->with(compact('user', 'regularLeaveCount', 'specialLeaveCount', 'travelOrderCount'));
 }
 /**
  * Display a listing of the resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function index()
 {
     if ($this->user->isAdmin()) {
         $regular_leaves = EmployeeLeave::certified()->orderBy('updated_at', 'desc')->get();
         $special_leaves = EmployeeSpecialLeave::certified()->orderBy('updated_at', 'desc')->get();
         return view('leaves.approved_leaves')->with(compact('regular_leaves', 'special_leaves'));
     }
     flash()->error('You are not allowed to view this.');
     return redirect()->back();
 }
 public function downloadSummary()
 {
     $file = storage_path('app/templates/SpecialLeaveSummary.xlsx');
     $leaves = EmployeeSpecialLeave::certified()->get();
     if ($leaves->isEmpty()) {
         flash()->warning('Special leave empty.');
         return redirect()->back();
     }
     write_form(new \DNSCHumanResource\FormWriters\WriteSpecialLeaveSummary($leaves));
 }