Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 10 |
CRAP | |
0.00% |
0 / 266 |
| AttendanceIndividualReportController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 10 |
5700 | |
0.00% |
0 / 266 |
| index | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 6 |
|||
| create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| store | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| show | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| edit | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| update | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| destroy | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| selectEmployeeReport | |
0.00% |
0 / 1 |
3906 | |
0.00% |
0 / 220 |
|||
| makeColumnHeaders | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 20 |
|||
| isLeave | |
0.00% |
0 / 1 |
20 | |
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; | |
| } | |
| } |