Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 113 |
| ReportsApi | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
240 | |
0.00% |
0 / 113 |
| getReports | |
0.00% |
0 / 1 |
240 | |
0.00% |
0 / 113 |
|||
| <?php | |
| namespace App\Http\Controllers\Api; | |
| use App\Helpers\HolidayHelper; | |
| use App\Http\Controllers\Reports\AttendanceIndividualReportController; | |
| use App\Models\Admin\Holiday; | |
| use App\Models\Admin\Leave; | |
| use App\Models\Admin\Team; | |
| use App\Models\AttendanceRequests\UserAttendanceRequests; | |
| use App\Models\Auth\User; | |
| use App\Models\Leave\ApplyLeave; | |
| use Carbon\Carbon; | |
| use Illuminate\Http\Request; | |
| use Illuminate\Support\Facades\DB; | |
| class ReportsApi | |
| { | |
| public function getReports(Request $request){ | |
| $userid = $request->user()->id; | |
| $startDate = Carbon::parse( $request->fromDate)->format('Y-m-d'); | |
| $endDate = Carbon::parse( $request->toDate )->format('Y-m-d'); | |
| $endDateForQuery = Carbon::parse($request->toDate )->addDay()->format('Y-m-d'); | |
| //$dateDayAdded = $date->addDay()->toDateString(); | |
| $teamId = $request->teamId; | |
| $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')); | |
| $columnHeaders = collect(['Profile Pic','Name','Team','Requested On','Requested For','Type','Request Date','Request Time','Reason','Status','Manager']); | |
| $userIds = ''; | |
| $userIdsQuery = ''; | |
| if ( | |
| auth()->user()->can('View Reporting Employees Report') && | |
| !auth()->user()->can('View Team Attendance Report') && | |
| !auth()->user()->can('View All Attendance Report') | |
| ) { | |
| $getuserIds = GetShiftDetailHelper::getMyReportingEmployeesIds(); | |
| $userIdsQuery = ' and us.id in (' . implode(',', $getuserIds) . ')'; | |
| } | |
| if($userid != '0'){ | |
| $userIdsQuery = ' and us.id = '.$userid; | |
| } | |
| if ($teamId == 0) { | |
| $teamQuery = ''; | |
| if ((auth()->user()->can('View Reporting Employees Report') || | |
| auth()->user()->can('View Team Attendance Report')) && | |
| !auth()->user()->can('View All Attendance Report') | |
| ) { | |
| $getTeamIds = GetShiftDetailHelper::getMyteamIds(); | |
| $teamQuery = 'and t.id in (' . implode(',', $getTeamIds) . ')'; | |
| } | |
| $attendanceReport = DB::select( | |
| 'select us.id,concat(us.name," ",us.lastName) as name,t.team,a.check_in as check_in, | |
| a.check_out as check_out,a.comments as comments,a.status, a.updated_by_user,a.requested_for, a.created_at | |
| from user_attendance_requests a | |
| join user_details u on a.user_id = u.user_id | |
| join teams t on t.id = u.primary_team_id | |
| join users us on us.id = u.user_id | |
| AND ((a.check_in between :startDate1 and :endDate1)) | |
| where us.deleted_at IS NULL ' . $teamQuery . $userIdsQuery . ' | |
| order by us.id,a.id', | |
| ['startDate1' => $selectedDateWithTimezone, 'endDate1' => $selectedEndDateWithTimezone] | |
| ); | |
| } else { | |
| $attendanceReport = DB::select( | |
| 'select us.id,concat(us.name," ",us.lastName) as name,t.team,a.check_in as check_in, | |
| a.check_out as check_out,a.comments as comments, | |
| a.status, a.updated_by_user,a.requested_for, a.created_at | |
| from user_attendance_requests a | |
| join user_details u on a.user_id = u.user_id | |
| join teams t on t.id = u.primary_team_id | |
| join users us on us.id = u.user_id AND ((a.check_in between :startDate1 and :endDate1)) | |
| where us.deleted_at IS NULL and u.primary_team_id in (' . $teamId . ') ' . $userIdsQuery . 'order by us.id,a.id', | |
| ['startDate1' => $selectedDateWithTimezone, 'endDate1' => $selectedEndDateWithTimezone] | |
| ); | |
| } | |
| $attendanceReportColl = collect($attendanceReport); | |
| $userAttendanceRequests = UserAttendanceRequests::all(); | |
| $attendanceReportTempColl = collect([]); | |
| foreach($attendanceReportColl as $data) | |
| { | |
| $userAttendanceRequest = collect([]); | |
| $userAttendanceRequest->name = $data->name; | |
| $userAttendanceRequest->team = $data->team; | |
| $userAttendanceRequest->comments = $data->comments; | |
| $userAttendanceRequest->check_in = $data->check_in; | |
| $userAttendanceRequest->check_out = $data->check_out; | |
| $userAttendanceRequest->status = $data->status; | |
| $userAttendanceRequest->updated_by_user = $data->updated_by_user; | |
| $userAttendanceRequest->requested_for = $data->requested_for; | |
| $userAttendanceRequest->created_at = $data->created_at; | |
| $userAttendanceRequest->user_id = $data->id; | |
| $user = User::where(['id' => $userAttendanceRequest->user_id])->first(); | |
| if(!empty($user->profile_pic)){ | |
| $user_image = url('storage/'.$user->profile_pic); | |
| }else{ | |
| if($user->gender == 'Male') { | |
| $user_image = url("global_assets/images/favicon_io/default-avatar-boy.png"); | |
| } else { | |
| $user_image = url("global_assets/images/favicon_io/default-avatar-girl.jpg"); | |
| } | |
| } | |
| $show_image_container = $user_image; | |
| $manager = User::where(['id' => $userAttendanceRequest->updated_by_user])->first(); | |
| if(!empty($manager)){ | |
| if(!empty($manager->profile_pic)){ | |
| $manager_image = url('storage/'.$manager->profile_pic); | |
| }else{ | |
| if($manager->gender == 'Male') { | |
| $manager_image = url("global_assets/images/favicon_io/default-avatar-boy.png"); | |
| } else { | |
| $manager_image = url("global_assets/images/favicon_io/default-avatar-girl.jpg"); | |
| } | |
| } | |
| $show_manager_image_container = $manager_image; | |
| }else{ | |
| $show_manager_image_container = ''; | |
| } | |
| $requested_on = Carbon::parse($userAttendanceRequest->created_at); | |
| $requested_on->setTimezone(config('settings.time_zone')); | |
| $requested_on = $requested_on->format(config('settings.php_date_format')); | |
| $checkin_date = Carbon::parse($userAttendanceRequest->check_in); | |
| $checkin_date->setTimezone(config('settings.time_zone')); | |
| $checkin_date = $checkin_date->format(config('settings.php_date_format')); | |
| $checkin_time = Carbon::parse($userAttendanceRequest->check_in); | |
| $checkin_time->setTimezone(config('settings.time_zone')); | |
| $checkin_time = $checkin_time->format(Config('settings.time_format')); | |
| $checkout_date = Carbon::parse($userAttendanceRequest->check_out); | |
| $checkout_date->setTimezone(config('settings.time_zone')); | |
| $checkout_date = $checkout_date->format(config('settings.php_date_format')); | |
| $checkout_time = Carbon::parse($userAttendanceRequest->check_out); | |
| $checkout_time->setTimezone(config('settings.time_zone')); | |
| $checkout_time = $checkout_time->format(Config('settings.time_format')); | |
| $leaveArr = array( | |
| "profile_pic" => $show_image_container, | |
| "name" => $userAttendanceRequest->name, | |
| "team" => $userAttendanceRequest->team, | |
| "requested_on" => $requested_on, | |
| "requested_for" => $userAttendanceRequest->requested_for, | |
| "type" => "Checkin", | |
| "requested_date" => $checkin_date, | |
| "requested_time" => $checkin_time, | |
| "reason" => $userAttendanceRequest->comments, | |
| "status" => ucfirst($userAttendanceRequest->status), | |
| "manager" => $show_manager_image_container.' '.User::where(['id' => $userAttendanceRequest->updated_by_user])->pluck('name')->first().' '.User::where(['id' => $userAttendanceRequest->updated_by_user])->pluck('lastName')->first(), | |
| ); | |
| $leaveArr1 = array( | |
| "profile_pic" => '', | |
| "name" => '', | |
| "team" => '', | |
| "requested_on" => '', | |
| "requested_for" => '', | |
| "type" => "Checkout", | |
| "requested_date" => $checkout_date, | |
| "requested_time" => $checkout_time, | |
| "reason" => '', | |
| "status" => '', | |
| "manager" => '', | |
| ); | |
| $attendanceReportTempColl->push($leaveArr,$leaveArr1); | |
| $checkOutDate = null; | |
| $checkInDate = null; | |
| } | |
| $attendanceReportColl = collect([]); | |
| $attendanceReportColl = $attendanceReportTempColl; | |
| $teams =Team::all(); | |
| $startDate = Carbon::parse($startDate)->format(Config('settings.php_date_format')); | |
| $endDate = Carbon::parse($endDate)->format(Config('settings.php_date_format')); | |
| $leave = ApplyLeave::leftJoin('leaves','apply_leaves.leave_id','=','leaves.id') | |
| ->where([['apply_leaves.user_id','=',$userid]]) | |
| ->orderBy('apply_leaves.created_at','DESC')->get(); | |
| return response()->json([ | |
| "status" => "200", | |
| "leave_requests" => $leave, | |
| "attendances_requests" => $attendanceReportColl | |
| ]); | |
| } | |
| } |