Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 10
CRAP
0.00% covered (danger)
0.00%
0 / 266
AttendanceIndividualReportController
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 10
5700
0.00% covered (danger)
0.00%
0 / 266
 index
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 6
 create
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 store
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 show
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 edit
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 update
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 destroy
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 selectEmployeeReport
0.00% covered (danger)
0.00%
0 / 1
3906
0.00% covered (danger)
0.00%
0 / 220
 makeColumnHeaders
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 20
 isLeave
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 14
<?php
namespace App\Http\Controllers\Reports;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Admin\Team;
use DB;
use Carbon\CarbonPeriod;
use Carbon\Carbon;
use Auth;
use App\Models\Leave\ApplyLeave;
use App\Models\Auth\User;
use App\Models\Admin\Holiday;
use App\Models\Dashboard\AttendanceDetail;
use App\Models\Auth\UserWeeklyOff;
use App\Helpers\HolidayHelper;
use App\Helpers\AttendanceHelper;
class AttendanceIndividualReportController extends Controller
{
    //private $dataArr, $columnHeaders;
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $title = '/Reports/Employee Attendance Report';
        $teams = Team::all();
        // For returning attendance marking for home controller
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        return view('Reports.AttendanceIndividualReport', compact('teams', 'title','val','valTeam','valUser'));
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
    }
    public function selectEmployeeReport(Request $request,$type="web")   //Attendance report for the individual on a selected month
    {
        $startDate = Carbon::parse('01-' . $request->month_year, Config('app.timezone'));
        $startDate = $startDate->format('Y-m-d');
        $endDate =  Carbon::parse('01-' . $request->month_year, Config('app.timezone'))->endOfMonth()->format('Y-m-d');
        $endDateForQuery =  Carbon::parse('01-' . $request->month_year, Config('app.timezone'))->addMonth()->format('Y-m-d');
        $selectedDateWithTimezone = Carbon::parse($startDate . '000000', config('settings.time_zone'))->setTimezone(config('app.time_zone'));
        $selectedEndDateWithTimezone = Carbon::parse($endDateForQuery . '000000', config('settings.time_zone'))->setTimezone(config('app.time_zone'));
        $columnHeadersList = collect($this->makeColumnHeaders($startDate, $endDate));
        $columnHeaders = $columnHeadersList[0];
        $columnHeaderDisp = $columnHeadersList[1];
        $user = Auth::user();
        // For returning attendance marking for home controller
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        $attendanceValue = null;
            if ($valUser) {
                $attendanceValue = $valUser;
            } elseif ($valTeam) {
                $attendanceValue = $valTeam;
            } elseif ($val) {
                $attendanceValue = $val;
            } else {
                $attendanceValue = null;
            }
        // $attendanceReport =  DB::select('select us.id,us.name,us.lastName,t.team,a.check_in as check_in,
        //                                             a.check_out as check_out
        //                                             from users us
        //                                             join user_details u on us.id = u.user_id
        //                                             join team_user_detail tsd on  tsd.user_detail_id = u.id
        //                                             join teams t on t.id = tsd.team_id
        //                                             left join attendance_details a on a.user_id = u.user_id
        //                                             where ((a.check_in between :startDate1 and :endDate1)) and 
        //                                             us.id = ('.$user->id.') order by us.id,a.id',
        //                                             ['startDate1' => $selectedDateWithTimezone, 'endDate1' => $selectedEndDateWithTimezone]
        //                                             );
        // $attendanceReport =  DB::select(
        //     'select us.id,us.name,us.lastName,t.team,a.check_in as check_in,
        //                                             a.check_out as check_out,
        //                                             a.attendance_setting as attendance_setting
        //                                             from users us
        //                                             join user_details u on us.id = u.user_id
        //                                             join teams t on t.id = u.primary_team_id
        //                                             left join attendance_details a on a.user_id = u.user_id
        //                                             where ((a.check_in between :startDate1 and :endDate1)) and 
        //                                             us.id = (' . $user->id . ') order by us.id,a.id',
        //     ['startDate1' => $selectedDateWithTimezone, 'endDate1' => $selectedEndDateWithTimezone]
        // );
        $attendanceReport = DB::select('SELECT us.id, us.name, us.lastName, MAX(t.team) AS team, MAX(a.check_in) AS check_in, MAX(a.check_out) AS check_out,
                                MAX(a.attendance_setting) AS attendance_setting, MAX(a.created_at) AS created_at
                                FROM users us
                                JOIN user_details u ON us.id = u.user_id
                                JOIN teams t ON t.id = u.primary_team_id
                                LEFT JOIN attendance_details a ON a.user_id = u.user_id
                                WHERE (
                                    (a.created_at BETWEEN ? AND ? OR a.check_in BETWEEN ? AND ?)
                                    AND us.id = ?
                                )
                                GROUP BY us.id, a.check_in
                                ORDER BY us.id, MAX(a.id) DESC
                            ', [
                                $selectedDateWithTimezone, $selectedEndDateWithTimezone,
                                $selectedDateWithTimezone, $selectedEndDateWithTimezone,
                                $user->id
                            ]);
        
        $dataArr = collect([]);
        $count = 0;
        $attendanceReportColl = collect($attendanceReport);
        $attendanceReportCollOfColl = collect([]);
        $attendanceUserColl = collect([]);
        foreach ($attendanceReportColl as $attendance) {
            if ($count == 0) {
                $currenUserId = $attendance->id;
                $count = $count + 1;
            }
            if ($currenUserId ==  $attendance->id) {
                $attendanceUserColl->push($attendance);
            } else {
                $attendanceReportCollOfColl->push($attendanceUserColl);
                $attendanceUserColl = collect([]);
                $attendanceUserColl->push($attendance);
                $count = 0;
            }
        }
        if ($attendanceUserColl->count() != 0) {
            $attendanceReportCollOfColl->push($attendanceUserColl);
            $attendanceUserColl = collect([]);
        }
        $count = 0;
        $present = 0;
        $leave = 0;
        $absent = 0;
        $weekend = 0;
        $total = 0;
        $holidayCount = 0;
        foreach ($attendanceReportCollOfColl as $attendanceUserColl) {
            //user on weekend
            $user = User::find($attendanceUserColl->pluck('id')->first());
            if (!empty(User::find($attendanceUserColl->pluck('id')->first())->userdetail)) {
                $currentDate = Carbon::now(config('settings.time_zone'))->toDateString();
                foreach ($columnHeaders as $date) {
                    if ($count == 0) {
                        $empAttendanceArr = collect([]);
                        $fullEmpName = $attendanceUserColl->pluck('name')->first() . ' ' . $attendanceUserColl->pluck('lastName')->first();
                        $empAttendanceArr->push($fullEmpName);
                        $count = $count + 1;
                        continue;
                    }
                    $total = $total + 1;
                    $startDateForWeeklyOff = Carbon::parse($date . '00:00:00', config('settings.time_zone'))->setTimezone(config('app.time_zone'));
                    $endDateForWeeklyOff = Carbon::parse(Carbon::parse($date)->addDay()->toDateString() . '00:00:00', config('settings.time_zone'))->setTimezone(config('app.time_zone'));
                    $userid = Auth::user()->id;
                    $holidayIds = HolidayHelper::getholidayList($userid);
                    $holiday = Holiday::where('date', $date)->whereIn('id', $holidayIds)->first();
                    $userWeeklyOff = UserWeeklyOff::where('user_id', $user->id)
                        ->whereBetween('created_at', [$startDateForWeeklyOff, $endDateForWeeklyOff])
                        ->where('weekly_off', 1)->first();
                    foreach ($attendanceUserColl as $value) {
                        if (isset($value->check_in)) {
                            $value->check_in = Carbon::parse($value->check_in)->setTimezone(config('settings.time_zone'))->toDateString();
                        }
                        if (isset($value->check_out)) {
                            $value->check_out = Carbon::parse($value->check_out)->setTimezone(config('settings.time_zone'))->toDateString();
                        }
                    }
                    // For Generating attendance Reports of individual
                    // For no checkin and no checkout required conditions
                    // if($attendanceValue == '1'){
                        if (($attendanceUserColl->where('attendance_setting', '=', null)->where('check_in', $date)->isNotEmpty()) && ($attendanceUserColl->contains('check_in', $date))) {
                            $plucked = $attendanceUserColl->where('check_in', '=', $date);
                            $isLeave = $this->isLeave($plucked->pluck('id'), $date);
                            if (($plucked->pluck('check_out')->first() != '')) {
                                if (!empty($isLeave)) {
                                    if ($isLeave['leave_type'] == 'L') {
                                        $leave = $leave + 1;
                                    } else {
                                        $leave = $leave + 0.5;
                                        $present = $present + 0.5;
                                    }
                                    $empAttendanceArr->push($isLeave['leave_type']);
                                } else {
                                    $empAttendanceArr->push('P');
                                    $present = $present + 1;
                                } 
                            } else {
                                if ($currentDate > $date) {
                                    if (empty($userWeeklyOff) && empty($holiday)) {
                                        if (!empty($isLeave)) {
                                            if ($isLeave['leave_type'] == 'L') {
                                                $leave = $leave + 1;
                                            } else {
                                                $leave = $leave + 0.5;
                                                $present = $present + 0.5;
                                            }
                                            $empAttendanceArr->push($isLeave['leave_type']);
                                        } else {
                                            $empAttendanceArr->push('A');
                                            $absent = $absent + 1;
                                        }
                                    } else {
                                        if (!empty($holiday)) {
                                            $empAttendanceArr->push('H');
                                            $holidayCount = $holidayCount + 1;
                                        } else {
                                            $empAttendanceArr->push('W');
                                            $weekend = $weekend + 1;
                                        }
                                    }
                                } else {
                                    $empAttendanceArr->push(' ');
                                }
                            }
                    }
                    elseif (($attendanceUserColl->where('attendance_setting', '=', 3)->where('check_in', $date)->isNotEmpty()) && ($attendanceUserColl->contains('check_in', $date))) {
                        $plucked = $attendanceUserColl->where('check_in', '=', $date);
                        $isLeave = $this->isLeave($plucked->pluck('id'), $date);
                        if (($plucked->pluck('check_out')->first() != '')) {
                            if (!empty($isLeave)) {
                                if ($isLeave['leave_type'] == 'L') {
                                    $leave = $leave + 1;
                                } else {
                                    $leave = $leave + 0.5;
                                    $present = $present + 0.5;
                                }
                                $empAttendanceArr->push($isLeave['leave_type']);
                            } else {
                                $empAttendanceArr->push('P');
                                $present = $present + 1;
                            } 
                        } else {
                            if ($currentDate > $date) {
                                if (empty($userWeeklyOff) && empty($holiday)) {
                                    if (!empty($isLeave)) {
                                        if ($isLeave['leave_type'] == 'L') {
                                            $leave = $leave + 1;
                                        } else {
                                            $leave = $leave + 0.5;
                                            $present = $present + 0.5;
                                        }
                                        $empAttendanceArr->push($isLeave['leave_type']);
                                    } else {
                                        $empAttendanceArr->push('A');
                                        $absent = $absent + 1;
                                    }
                                } else {
                                    if (!empty($holiday)) {
                                        $empAttendanceArr->push('H');
                                        $holidayCount = $holidayCount + 1;
                                    } else {
                                        $empAttendanceArr->push('W');
                                        $weekend = $weekend + 1;
                                    }
                                }
                            } else {
                                $empAttendanceArr->push(' ');
                            }
                        }
                    } 
                    elseif (($attendanceUserColl->where('attendance_setting', '=', 2)->where('check_in', $date)->isNotEmpty()) && ($attendanceUserColl->contains('check_in', $date))) {
                            $plucked = $attendanceUserColl->where('check_in', '=', $date);
                            $isLeave = $this->isLeave($plucked->pluck('id'), $date);
                        if (($plucked->pluck('check_in')->first() != '') && ($plucked->pluck('check_out')->first() == '')) {
                                    if (!empty($isLeave)) {
                                        if ($isLeave['leave_type'] == 'L') {
                                            $leave = $leave + 1;
                                        } else {
                                            $leave = $leave + 0.5;
                                            $present = $present + 0.5;
                                        }
                                        $empAttendanceArr->push($isLeave['leave_type']);
                                    } else {
                                        $empAttendanceArr->push('P');
                                        $present = $present + 1;
                                    }
                            } else {
                                if ($currentDate > $date) {
                                    if (empty($userWeeklyOff) && empty($holiday)) {
                                        if (!empty($isLeave)) {
                                            if ($isLeave['leave_type'] == 'L') {
                                                $leave = $leave + 1;
                                            } else {
                                                $leave = $leave + 0.5;
                                                $present = $present + 0.5;
                                            }
                                            $empAttendanceArr->push($isLeave['leave_type']);
                                        } else {
                                            $empAttendanceArr->push('A');
                                            $absent = $absent + 1;
                                        }
                                    } else {
                                        if (!empty($holiday)) {
                                            $empAttendanceArr->push('H');
                                            $holidayCount = $holidayCount + 1;
                                        } else {
                                            $empAttendanceArr->push('W');
                                            $weekend = $weekend + 1;
                                        }
                                    }
                                } else {
                                    $empAttendanceArr->push(' ');
                                }
                            }
                          }  
                          elseif ($attendanceUserColl->where('attendance_setting', 1)->filter(function ($item) use ($date) {
                            return Carbon::parse($item->created_at)->format('Y-m-d') === date('Y-m-d', strtotime($date));
                        })->isNotEmpty()) {
                            if (!empty($holiday)) {
                                $empAttendanceArr->push('H');
                                $holidayCount = $holidayCount + 1;
                            } 
                            else if (!empty($userWeeklyOff)) {
                                    $empAttendanceArr->push('W');
                                    $weekend = $weekend + 1;
                                }
                            else if (!empty($isLeave)) {
                                if ($isLeave['leave_type'] == 'L') {
                                    $leave = $leave + 1;
                                } else {
                                    $leave = $leave + 0.5;
                                    $present = $present + 0.5;
                                }
                                    $empAttendanceArr->push($isLeave['leave_type']);
                                } 
                            else {
                                $empAttendanceArr->push('P');
                                $present = $present + 1;
                            }
                          }  
                    else {
                        if ($currentDate > $date) {
                            $isLeave = $this->isLeave($attendanceUserColl->pluck('id')->first(), $date);
                            if (empty($userWeeklyOff) && empty($holiday)) {
                                if (!empty($isLeave)) {
                                    if ($isLeave['leave_type'] == 'L') {
                                        $leave = $leave + 1;
                                    } else {
                                        $leave = $leave + 0.5;
                                        $present = $present + 0.5;
                                    }
                                    $empAttendanceArr->push($isLeave['leave_type']);
                                } else {
                                    $empAttendanceArr->push('A');
                                    $absent = $absent + 1;
                                }
                            } else {
                                if (!empty($holiday)) {
                                    $empAttendanceArr->push('H');
                                    $holidayCount = $holidayCount + 1;
                                } else {
                                    $empAttendanceArr->push('W');
                                    $weekend = $weekend + 1;
                                }
                            }
                        } else {
                            $empAttendanceArr->push(' ');
                        }
                    }
                //     }
                    
                //     // For checkin required but no checkout required conditions
                //         else if($attendanceValue == '2'){
                //             if (($attendanceUserColl->where('attendance_setting', '=', null)->where('check_in', $date)->isNotEmpty()) && ($attendanceUserColl->contains('check_in', $date))) {
                //                 $plucked = $attendanceUserColl->where('check_in', '=', $date);
                //                 $isLeave = $this->isLeave($plucked->pluck('id'), $date);
                //                 if (($plucked->pluck('check_out')->first() != '')) {
                //                     if (!empty($isLeave)) {
                //                         if ($isLeave['leave_type'] == 'L') {
                //                             $leave = $leave + 1;
                //                         } else {
                //                             $leave = $leave + 0.5;
                //                             $present = $present + 0.5;
                //                         }
                //                         $empAttendanceArr->push($isLeave['leave_type']);
                //                     } else {
                //                         $empAttendanceArr->push('P');
                //                         $present = $present + 1;
                //                     } 
    
                //                 } else {
                //                     if ($currentDate > $date) {
                //                         if (empty($userWeeklyOff) && empty($holiday)) {
                //                             if (!empty($isLeave)) {
                //                                 if ($isLeave['leave_type'] == 'L') {
                //                                     $leave = $leave + 1;
                //                                 } else {
                //                                     $leave = $leave + 0.5;
                //                                     $present = $present + 0.5;
                //                                 }
                //                                 $empAttendanceArr->push($isLeave['leave_type']);
                //                             } else {
                //                                 $empAttendanceArr->push('A');
                //                                 $absent = $absent + 1;
                //                             }
                //                         } else {
                //                             if (!empty($holiday)) {
                //                                 $empAttendanceArr->push('H');
                //                                 $holidayCount = $holidayCount + 1;
                //                             } else {
                //                                 $empAttendanceArr->push('W');
                //                                 $weekend = $weekend + 1;
                //                             }
                //                         }
                //                     } else {
                //                         $empAttendanceArr->push(' ');
                //                     }
                //                 }
                //         }
                //         elseif (($attendanceUserColl->where('attendance_setting', '=', 3)->where('check_in', $date)->isNotEmpty()) && ($attendanceUserColl->contains('check_in', $date))) {
                //             $plucked = $attendanceUserColl->where('check_in', '=', $date);
                //             $isLeave = $this->isLeave($plucked->pluck('id'), $date);
                //             if (($plucked->pluck('check_out')->first() != '')) {
                //                 if (!empty($isLeave)) {
                //                     if ($isLeave['leave_type'] == 'L') {
                //                         $leave = $leave + 1;
                //                     } else {
                //                         $leave = $leave + 0.5;
                //                         $present = $present + 0.5;
                //                     }
                //                     $empAttendanceArr->push($isLeave['leave_type']);
                //                 } else {
                //                     $empAttendanceArr->push('P');
                //                     $present = $present + 1;
                //                 } 
    
                //             } else {
                //                 if ($currentDate > $date) {
                //                     if (empty($userWeeklyOff) && empty($holiday)) {
                //                         if (!empty($isLeave)) {
                //                             if ($isLeave['leave_type'] == 'L') {
                //                                 $leave = $leave + 1;
                //                             } else {
                //                                 $leave = $leave + 0.5;
                //                                 $present = $present + 0.5;
                //                             }
                //                             $empAttendanceArr->push($isLeave['leave_type']);
                //                         } else {
                //                             $empAttendanceArr->push('A');
                //                             $absent = $absent + 1;
                //                         }
                //                     } else {
                //                         if (!empty($holiday)) {
                //                             $empAttendanceArr->push('H');
                //                             $holidayCount = $holidayCount + 1;
                //                         } else {
                //                             $empAttendanceArr->push('W');
                //                             $weekend = $weekend + 1;
                //                         }
                //                     }
                //                 } else {
                //                     $empAttendanceArr->push(' ');
                //                 }
                //             }
                //         } 
                //         elseif (($attendanceUserColl->where('attendance_setting', '=', 2)->where('check_in', $date)->isNotEmpty()) && ($attendanceUserColl->contains('check_in', $date))) {
                //                 $plucked = $attendanceUserColl->where('check_in', '=', $date);
                //                 $isLeave = $this->isLeave($plucked->pluck('id'), $date);
                //             if (($plucked->pluck('check_in')->first() != '') && ($plucked->pluck('check_out')->first() == '')) {
                //                         if (!empty($isLeave)) {
                //                             if ($isLeave['leave_type'] == 'L') {
                //                                 $leave = $leave + 1;
                //                             } else {
                //                                 $leave = $leave + 0.5;
                //                                 $present = $present + 0.5;
                //                             }
                //                             $empAttendanceArr->push($isLeave['leave_type']);
                //                         } else {
                //                             $empAttendanceArr->push('P');
                //                             $present = $present + 1;
                //                         }
                //                 } else {
                //                     if ($currentDate > $date) {
                //                         if (empty($userWeeklyOff) && empty($holiday)) {
                //                             if (!empty($isLeave)) {
                //                                 if ($isLeave['leave_type'] == 'L') {
                //                                     $leave = $leave + 1;
                //                                 } else {
                //                                     $leave = $leave + 0.5;
                //                                     $present = $present + 0.5;
                //                                 }
                //                                 $empAttendanceArr->push($isLeave['leave_type']);
                //                             } else {
                //                                 $empAttendanceArr->push('A');
                //                                 $absent = $absent + 1;
                //                             }
                //                         } else {
                //                             if (!empty($holiday)) {
                //                                 $empAttendanceArr->push('H');
                //                                 $holidayCount = $holidayCount + 1;
                //                             } else {
                //                                 $empAttendanceArr->push('W');
                //                                 $weekend = $weekend + 1;
                //                             }
                //                         }
                //                     } else {
                //                         $empAttendanceArr->push(' ');
                //                     }
                //                 }
                //               }  
                //               elseif ($attendanceUserColl->where('attendance_setting', 1)->filter(function ($item) use ($date) {
                //                 return Carbon::parse($item->created_at)->format('Y-m-d') === date('Y-m-d', strtotime($date));
                //             })->isNotEmpty()) {
                //                 if (!empty($holiday)) {
                //                     $empAttendanceArr->push('H');
                //                     $holidayCount = $holidayCount + 1;
                //                 } 
                //                 else if (!empty($userWeeklyOff)) {
                //                         $empAttendanceArr->push('W');
                //                         $weekend = $weekend + 1;
                //                     }
                //                 else if (!empty($isLeave)) {
                //                     if ($isLeave['leave_type'] == 'L') {
                //                         $leave = $leave + 1;
                //                     } else {
                //                         $leave = $leave + 0.5;
                //                         $present = $present + 0.5;
                //                     }
                //                         $empAttendanceArr->push($isLeave['leave_type']);
                //                     } 
                //                 else {
                //                     $empAttendanceArr->push('P');
                //                     $present = $present + 1;
                //                 }
                //               }  
                //         else {
                //             if ($currentDate > $date) {
                //                 $isLeave = $this->isLeave($attendanceUserColl->pluck('id')->first(), $date);
    
                //                 if (empty($userWeeklyOff) && empty($holiday)) {
    
                //                     if (!empty($isLeave)) {
                //                         if ($isLeave['leave_type'] == 'L') {
                //                             $leave = $leave + 1;
                //                         } else {
                //                             $leave = $leave + 0.5;
                //                             $present = $present + 0.5;
                //                         }
                //                         $empAttendanceArr->push($isLeave['leave_type']);
                //                     } else {
                //                         $empAttendanceArr->push('A');
                //                         $absent = $absent + 1;
                //                     }
                //                 } else {
                //                     if (!empty($holiday)) {
                //                         $empAttendanceArr->push('H');
                //                         $holidayCount = $holidayCount + 1;
                //                     } else {
                //                         $empAttendanceArr->push('W');
                //                         $weekend = $weekend + 1;
                //                     }
                //                 }
                //             } else {
                //                 $empAttendanceArr->push(' ');
                //             }
                //         }
                //         }
                //     // For both checkin and checkout required conditions
                //     else{
                //         if (($attendanceUserColl->where('attendance_setting', '=', null)->where('check_in', $date)->isNotEmpty()) && ($attendanceUserColl->contains('check_in', $date))) {
                //             $plucked = $attendanceUserColl->where('check_in', '=', $date);
                //             $isLeave = $this->isLeave($plucked->pluck('id'), $date);
                //             if (($plucked->pluck('check_out')->first() != '')) {
                //                 if (!empty($isLeave)) {
                //                     if ($isLeave['leave_type'] == 'L') {
                //                         $leave = $leave + 1;
                //                     } else {
                //                         $leave = $leave + 0.5;
                //                         $present = $present + 0.5;
                //                     }
                //                     $empAttendanceArr->push($isLeave['leave_type']);
                //                 } else {
                //                     $empAttendanceArr->push('P');
                //                     $present = $present + 1;
                //                 } 
                //             } else {
                //                 if ($currentDate > $date) {
                //                     if (empty($userWeeklyOff) && empty($holiday)) {
                //                         if (!empty($isLeave)) {
                //                             if ($isLeave['leave_type'] == 'L') {
                //                                 $leave = $leave + 1;
                //                             } else {
                //                                 $leave = $leave + 0.5;
                //                                 $present = $present + 0.5;
                //                             }
                //                             $empAttendanceArr->push($isLeave['leave_type']);
                //                         } else {
                //                             $empAttendanceArr->push('A');
                //                             $absent = $absent + 1;
                //                         }
                //                     } else {
                //                         if (!empty($holiday)) {
                //                             $empAttendanceArr->push('H');
                //                             $holidayCount = $holidayCount + 1;
                //                         } else {
                //                             $empAttendanceArr->push('W');
                //                             $weekend = $weekend + 1;
                //                         }
                //                     }
                //                 } else {
                //                     $empAttendanceArr->push(' ');
                //                 }
                //             }
                //     }
                //     elseif (($attendanceUserColl->where('attendance_setting', '=', 3)->where('check_in', $date)->isNotEmpty()) && ($attendanceUserColl->contains('check_in', $date))) {
                //         $plucked = $attendanceUserColl->where('check_in', '=', $date);
                //         $isLeave = $this->isLeave($plucked->pluck('id'), $date);
                //         if (($plucked->pluck('check_out')->first() != '')) {
                //             if (!empty($isLeave)) {
                //                 if ($isLeave['leave_type'] == 'L') {
                //                     $leave = $leave + 1;
                //                 } else {
                //                     $leave = $leave + 0.5;
                //                     $present = $present + 0.5;
                //                 }
                //                 $empAttendanceArr->push($isLeave['leave_type']);
                //             } else {
                //                 $empAttendanceArr->push('P');
                //                 $present = $present + 1;
                //             } 
                //         } else {
                //             if ($currentDate > $date) {
                //                 if (empty($userWeeklyOff) && empty($holiday)) {
                //                     if (!empty($isLeave)) {
                //                         if ($isLeave['leave_type'] == 'L') {
                //                             $leave = $leave + 1;
                //                         } else {
                //                             $leave = $leave + 0.5;
                //                             $present = $present + 0.5;
                //                         }
                //                         $empAttendanceArr->push($isLeave['leave_type']);
                //                     } else {
                //                         $empAttendanceArr->push('A');
                //                         $absent = $absent + 1;
                //                     }
                //                 } else {
                //                     if (!empty($holiday)) {
                //                         $empAttendanceArr->push('H');
                //                         $holidayCount = $holidayCount + 1;
                //                     } else {
                //                         $empAttendanceArr->push('W');
                //                         $weekend = $weekend + 1;
                //                     }
                //                 }
                //             } else {
                //                 $empAttendanceArr->push(' ');
                //             }
                //         }
                //     } 
                //     elseif (($attendanceUserColl->where('attendance_setting', '=', 2)->where('check_in', $date)->isNotEmpty()) && ($attendanceUserColl->contains('check_in', $date))) {
                //             $plucked = $attendanceUserColl->where('check_in', '=', $date);
                //             $isLeave = $this->isLeave($plucked->pluck('id'), $date);
                //         if (($plucked->pluck('check_in')->first() != '') && ($plucked->pluck('check_out')->first() == '')) {
                //                     if (!empty($isLeave)) {
                //                         if ($isLeave['leave_type'] == 'L') {
                //                             $leave = $leave + 1;
                //                         } else {
                //                             $leave = $leave + 0.5;
                //                             $present = $present + 0.5;
                //                         }
                //                         $empAttendanceArr->push($isLeave['leave_type']);
                //                     } else {
                //                         $empAttendanceArr->push('P');
                //                         $present = $present + 1;
                //                     }
                //             } else {
                //                 if ($currentDate > $date) {
                //                     if (empty($userWeeklyOff) && empty($holiday)) {
                //                         if (!empty($isLeave)) {
                //                             if ($isLeave['leave_type'] == 'L') {
                //                                 $leave = $leave + 1;
                //                             } else {
                //                                 $leave = $leave + 0.5;
                //                                 $present = $present + 0.5;
                //                             }
                //                             $empAttendanceArr->push($isLeave['leave_type']);
                //                         } else {
                //                             $empAttendanceArr->push('A');
                //                             $absent = $absent + 1;
                //                         }
                //                     } else {
                //                         if (!empty($holiday)) {
                //                             $empAttendanceArr->push('H');
                //                             $holidayCount = $holidayCount + 1;
                //                         } else {
                //                             $empAttendanceArr->push('W');
                //                             $weekend = $weekend + 1;
                //                         }
                //                     }
                //                 } else {
                //                     $empAttendanceArr->push(' ');
                //                 }
                //             }
                //           }  
                //           elseif ($attendanceUserColl->where('attendance_setting', 1)->filter(function ($item) use ($date) {
                //             return Carbon::parse($item->created_at)->format('Y-m-d') === date('Y-m-d', strtotime($date));
                //         })->isNotEmpty()) {
                //             if (!empty($holiday)) {
                //                 $empAttendanceArr->push('H');
                //                 $holidayCount = $holidayCount + 1;
                //             } 
                //             else if (!empty($userWeeklyOff)) {
                //                     $empAttendanceArr->push('W');
                //                     $weekend = $weekend + 1;
                //                 }
                //             else if (!empty($isLeave)) {
                //                 if ($isLeave['leave_type'] == 'L') {
                //                     $leave = $leave + 1;
                //                 } else {
                //                     $leave = $leave + 0.5;
                //                     $present = $present + 0.5;
                //                 }
                //                     $empAttendanceArr->push($isLeave['leave_type']);
                //                 } 
                //             else {
                //                 $empAttendanceArr->push('P');
                //                 $present = $present + 1;
                //             }
                //           }  
                //     else {
                //         if ($currentDate > $date) {
                //             $isLeave = $this->isLeave($attendanceUserColl->pluck('id')->first(), $date);
                //             if (empty($userWeeklyOff) && empty($holiday)) {
                //                 if (!empty($isLeave)) {
                //                     if ($isLeave['leave_type'] == 'L') {
                //                         $leave = $leave + 1;
                //                     } else {
                //                         $leave = $leave + 0.5;
                //                         $present = $present + 0.5;
                //                     }
                //                     $empAttendanceArr->push($isLeave['leave_type']);
                //                 } else {
                //                     $empAttendanceArr->push('A');
                //                     $absent = $absent + 1;
                //                 }
                //             } else {
                //                 if (!empty($holiday)) {
                //                     $empAttendanceArr->push('H');
                //                     $holidayCount = $holidayCount + 1;
                //                 } else {
                //                     $empAttendanceArr->push('W');
                //                     $weekend = $weekend + 1;
                //                 }
                //             }
                //         } else {
                //             $empAttendanceArr->push(' ');
                //         }
                //     }
                //  }
                }
                $empAttendanceArr->push($present);
                $empAttendanceArr->push($absent); //Absent
                $empAttendanceArr->push($leave); //Leave
                $empAttendanceArr->push($weekend); //Weekend
                $empAttendanceArr->push($holidayCount); //Holiday
                $empAttendanceArr->push($total); //total
                $empAttendanceArr->push(''); //Signature
                $dataArr->push($empAttendanceArr);
                $count = 0;
                $present = 0;
                $leave = 0;
                $absent = 0;
                $weekend = 0;
                $total = 0;
                $holidayCount = 0;
                $empAttendanceArr = collect([]);
            }
        }
        $teams = Team::all();
        $columnHeaders = $columnHeaderDisp;
        $startDate = Carbon::parse($startDate)->format(Config('settings.php_date_format'));
        $endDate = Carbon::parse($endDate)->format(Config('settings.php_date_format'));
        if($type=="web") {
            return view('Reports.ReportTable', compact('columnHeaders', 'dataArr', 'teams', 'startDate', 'endDate'));
        }elseif ($type=="api"){
            $tobesent =[];
            $tobesent["shortcodes"] = $dataArr[0];
            $tobesent["dates"] = $columnHeaders;
            return $tobesent;
        }
    }
    public function makeColumnHeaders($startDate, $endDate)
    {
        $period = CarbonPeriod::create($startDate, $endDate);
        $columnHeaderArr = collect([]);
        $columnHeaderArr->push('Emp Name');
        $columnHeaderArrDisp = collect([]);
        $columnHeaderArrDisp->push('Emp Name');
        //Iterate over the period
        foreach ($period as $date) {
            $date = Carbon::parse($date);
            $columnHeaderArr->push($date->format('Y-m-d'));
            $columnHeaderArrDisp->push($date->format('d D'));
        }
        $columnHeaderArrDisp->push('P');
        $columnHeaderArrDisp->push('A');
        $columnHeaderArrDisp->push('L');
        $columnHeaderArrDisp->push('W');
        $columnHeaderArrDisp->push('H');
        $columnHeaderArrDisp->push('T');
        $columnHeaderArrDisp->push('Signature');
        $columnList = collect([]);
        $columnList->push($columnHeaderArr);
        $columnList->push($columnHeaderArrDisp);
        return $columnList;
    }
    public function isLeave($user_id, $date)
    {
        $userOnLeave = ApplyLeave::where('from_date', '<=', $date)
            ->where('to_date', '>=', $date)
            ->where('status', '=','Approve')
            ->where('user_id', (string)$user_id)
            ->latest()->first();
        $leave_details = [];
        if (!empty($userOnLeave)) {
            if ($userOnLeave->leave_type == 'full_day') {
                $type = 'L';
            } else {
                if ($userOnLeave->half_day_type == 'first_half') {
                    $type = 'L-FN';
                } else {
                    $type = 'L-AN';
                }
            }
            $leave_details['leave_type'] = $type;
        }
        return $leave_details;
    }
}