Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
CRAP | |
0.00% |
0 / 275 |
| AdminLeaveReportController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
4692 | |
0.00% |
0 / 275 |
| index | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 24 |
|||
| 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 |
|||
| selectLeaveReport | |
0.00% |
0 / 1 |
756 | |
0.00% |
0 / 134 |
|||
| editapplyleave | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 9 |
|||
| updatemanageleave | |
0.00% |
0 / 1 |
462 | |
0.00% |
0 / 79 |
|||
| getUser | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 23 |
|||
| <?php | |
| namespace App\Http\Controllers\Leave; | |
| use Illuminate\Http\Request; | |
| use App\Http\Controllers\Controller; | |
| use App\Models\Admin\Team; | |
| use DB; | |
| use Carbon\CarbonPeriod; | |
| use Carbon\Carbon; | |
| use App\Models\Auth\User; | |
| use GetShiftDetailHelper; | |
| use App\Models\Admin\Leave; | |
| use App\Models\Leave\ApplyLeave; | |
| use App\Models\Leave\LeaveEntitlement; | |
| use App\Notifications\AppNotifications; | |
| use App\Models\Leave\RejectedLeave; | |
| use Session; | |
| use App\Models\Auth\userRequestCollaborator; | |
| use App\Models\Auth\UserRequestDiscuss; | |
| use App\Helpers\LeaveHelper; | |
| use Auth; | |
| use App\Helpers\AttendanceHelper; | |
| class AdminLeaveReportController extends Controller | |
| { | |
| /** | |
| * Display a listing of the resource. | |
| * | |
| * @return \Illuminate\Http\Response | |
| */ | |
| public function index(Request $request) | |
| { | |
| $title = '/Leave/Leave Report'; | |
| $teams = []; | |
| $users = []; | |
| if (auth()->user()->can('View All Leave Report')) { | |
| $teams = Team::all(); | |
| $users = User::all(); | |
| } else if ( | |
| auth()->user()->can('View Team Leave Report') || | |
| auth()->user()->can('View All leave requests of assigned employees') | |
| ) { | |
| $teams = GetShiftDetailHelper::getMyteams(); | |
| $teamId = array(); | |
| foreach ($teams as $value) { | |
| array_push($teamId, $value->id); | |
| } | |
| $teamId = implode(",", $teamId); | |
| $users = User::select('users.name', 'users.lastName', 'users.id') | |
| ->leftJoin('user_details', 'users.id', '=', 'user_details.user_id') | |
| ->whereIn('user_details.primary_team_id', [$teamId]) | |
| ->get(); | |
| } else { | |
| $teams = []; | |
| } | |
| // For Attendance Marking | |
| $val = AttendanceHelper::getAttendanceMarkValue(); | |
| $valTeam = AttendanceHelper::getAttendanceTeam($request); | |
| $valUser = AttendanceHelper::getAttendanceUser($request); | |
| return view( | |
| 'administrationForms.LeavePolicy.LeaveReport.adminLeaveReportForm', | |
| compact('teams', 'title', 'users', '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 selectLeaveReport(Request $request) | |
| { | |
| // if(!empty($request->month_year)){ | |
| // $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'); | |
| // } | |
| // else | |
| // { | |
| // $startDate = Carbon::parse( Carbon::createFromFormat( config('settings.php_date_format') , $request->fromDate ) )->format('Y-m-d'); | |
| // $endDate = Carbon::parse( Carbon::createFromFormat( config('settings.php_date_format') , $request->toDate ) )->format('Y-m-d'); | |
| // } | |
| $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; | |
| $columnHeaders = collect(['Profile Pic', 'Employee Name', 'Team Name', 'Leave Type', 'Half Day Leave Type', ' Reason ', 'Requested On', 'From Date', 'To Date', 'Leave Length', 'Status', 'Manager']); | |
| if ($teamId == 0 && isset($request->teamId) && (auth()->user()->can('View Team Leave Report') || auth()->user()->can('View All Leave Report'))) { | |
| if (auth()->user()->can('View Team Leave Report') && !auth()->user()->can('View All Leave Report')) { | |
| $getTeamIds = GetShiftDetailHelper::getMyteamIds(); | |
| $teamIds = implode(",", $getTeamIds); | |
| $teamQuery = 't.id in (' . $teamIds . ')'; | |
| // $leaveReport = DB::select(' select DISTINCT a.id, concat(us.name," ",us.lastName) as name, us.id,t.team,(select date(a.from_date)) as from_date, | |
| // (select date(a.to_date)) as to_date,a.leave_length, a.reason, a.leave_type, a.half_day_type, a.status | |
| // from apply_leaves a | |
| // join user_details u on a.user_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 | |
| // join users us on us.id = u.user_id | |
| // where '.$teamQuery.' and | |
| // ((a.from_date between :startDate1 and :endDate1) | |
| // or (a.to_date between :startDate2 and :endDate2)) order by us.id,a.id', | |
| // ['startDate1'=>$startDate,'endDate1'=>$endDate, | |
| // 'startDate2'=>$startDate,'endDate2'=>$endDate]); | |
| if ($request->userid != '0') { | |
| $userid = $request->userid; | |
| $leaveReport = DB::select(' select DISTINCT a.id, concat(us.name," ",us.lastName) as name, us.id,t.team,(select date(a.from_date)) as from_date, | |
| (select date(a.to_date)) as to_date,a.leave_length, a.reason, a.leave_type, a.half_day_type, a.status, a.updated_by_user, a.created_at, | |
| u.gender as gender | |
| from apply_leaves 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 | |
| where ' . $teamQuery . ' and | |
| ((a.from_date between :startDate1 and :endDate1) | |
| or (a.to_date between :startDate2 and :endDate2)) and us.id = (' . $userid . ') order by us.id,a.id', | |
| [ | |
| 'startDate1' => $startDate, | |
| 'endDate1' => $endDate, | |
| 'startDate2' => $startDate, | |
| 'endDate2' => $endDate | |
| ] | |
| ); | |
| } else { | |
| $leaveReport = DB::select(' select DISTINCT a.id, concat(us.name," ",us.lastName) as name, us.id,t.team,(select date(a.from_date)) as from_date, | |
| (select date(a.to_date)) as to_date,a.leave_length, a.reason, a.leave_type, a.half_day_type, a.status, a.updated_by_user, a.created_at, | |
| u.gender as gender | |
| from apply_leaves 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 | |
| where ' . $teamQuery . ' and | |
| ((a.from_date between :startDate1 and :endDate1) | |
| or (a.to_date between :startDate2 and :endDate2)) order by us.id,a.id', | |
| [ | |
| 'startDate1' => $startDate, | |
| 'endDate1' => $endDate, | |
| 'startDate2' => $startDate, | |
| 'endDate2' => $endDate | |
| ] | |
| ); | |
| } | |
| } else { | |
| // $leaveReport = DB::select('select concat(us.name," ",us.lastName) as name, us.id,t.team,(select date(a.from_date)) as from_date, | |
| // (select date(a.to_date)) as to_date, a.leave_length, a.reason, a.leave_type, a.half_day_type, a.status | |
| // from apply_leaves a | |
| // join user_details u on a.user_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 | |
| // join users us on us.id = u.user_id | |
| // where ((a.from_date between :startDate1 and :endDate1) | |
| // or (a.to_date between :startDate2 and :endDate2)) order by us.id,a.id', | |
| // ['startDate1'=>$startDate,'endDate1'=>$endDate, | |
| // 'startDate2'=>$startDate,'endDate2'=>$endDate]); | |
| if ($request->userid != '0') { | |
| $userid = $request->userid; | |
| $leaveReport = DB::select('select concat(us.name," ",us.lastName) as name, us.id,t.team,(select date(a.from_date)) as from_date, | |
| (select date(a.to_date)) as to_date, a.leave_length, a.reason, a.leave_type, a.half_day_type, a.status, a.updated_by_user, a.created_at, | |
| u.gender as gender | |
| from apply_leaves 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 | |
| where ((a.from_date between :startDate1 and :endDate1) | |
| or (a.to_date between :startDate2 and :endDate2)) and us.id = (' . $userid . ') order by us.id,a.id', | |
| [ | |
| 'startDate1' => $startDate, | |
| 'endDate1' => $endDate, | |
| 'startDate2' => $startDate, | |
| 'endDate2' => $endDate | |
| ] | |
| ); | |
| } else { | |
| $leaveReport = DB::select('select concat(us.name," ",us.lastName) as name, us.id,t.team,(select date(a.from_date)) as from_date, | |
| (select date(a.to_date)) as to_date, a.leave_length, a.reason, a.leave_type, a.half_day_type, a.status, a.updated_by_user, a.created_at, | |
| u.gender as gender | |
| from apply_leaves 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 | |
| where ((a.from_date between :startDate1 and :endDate1) | |
| or (a.to_date between :startDate2 and :endDate2)) order by us.id,a.id', | |
| [ | |
| 'startDate1' => $startDate, | |
| 'endDate1' => $endDate, | |
| 'startDate2' => $startDate, | |
| 'endDate2' => $endDate | |
| ] | |
| ); | |
| } | |
| } | |
| } elseif (isset($request->teamId) && (auth()->user()->can('View Team Leave Report') || auth()->user()->can('View All Leave Report'))) { | |
| // $leaveReport = DB::select(' select concat(us.name," ",us.lastName) as name, us.id,t.team,(select date(a.from_date)) as from_date, | |
| // (select date(a.to_date)) as to_date,a.leave_length, a.reason, a.leave_type, a.half_day_type, a.status | |
| // from apply_leaves a | |
| // join user_details u on a.user_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 | |
| // join users us on us.id = u.user_id | |
| // where t.id in (:teamId) and | |
| // ((a.from_date between :startDate1 and :endDate1) | |
| // or (a.to_date between :startDate2 and :endDate2)) order by us.id,a.id', | |
| // ['teamId' => $teamId,'startDate1'=>$startDate,'endDate1'=>$endDate, | |
| // 'startDate2'=>$startDate,'endDate2'=>$endDate]); | |
| if ($request->userid != '0') { | |
| $userid = $request->userid; | |
| $leaveReport = DB::select(' select concat(us.name," ",us.lastName) as name, us.id,t.team,(select date(a.from_date)) as from_date, | |
| (select date(a.to_date)) as to_date,a.leave_length, a.reason, a.leave_type, a.half_day_type, a.status, a.updated_by_user, a.created_at, | |
| u.gender as gender | |
| from apply_leaves 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 | |
| where t.id in (:teamId) and | |
| ((a.from_date between :startDate1 and :endDate1) | |
| or (a.to_date between :startDate2 and :endDate2)) | |
| and us.id = (' . $userid . ')order by us.id,a.id', | |
| [ | |
| 'teamId' => $teamId, | |
| 'startDate1' => $startDate, | |
| 'endDate1' => $endDate, | |
| 'startDate2' => $startDate, | |
| 'endDate2' => $endDate | |
| ] | |
| ); | |
| } else { | |
| $leaveReport = DB::select(' select concat(us.name," ",us.lastName) as name, us.id,t.team,(select date(a.from_date)) as from_date, | |
| (select date(a.to_date)) as to_date,a.leave_length, a.reason, a.leave_type, a.half_day_type, a.status, a.updated_by_user, a.created_at, | |
| u.gender as gender | |
| from apply_leaves 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 | |
| where t.id in (:teamId) and | |
| ((a.from_date between :startDate1 and :endDate1) | |
| or (a.to_date between :startDate2 and :endDate2)) order by us.id,a.id', | |
| [ | |
| 'teamId' => $teamId, | |
| 'startDate1' => $startDate, | |
| 'endDate1' => $endDate, | |
| 'startDate2' => $startDate, | |
| 'endDate2' => $endDate | |
| ] | |
| ); | |
| } | |
| } else { | |
| if (auth()->user()->can('View Self Leave Report')) { | |
| // $leaveReport = DB::select('select concat(us.name," ",us.lastName) as name, us.id,t.team,(select date(a.from_date)) as from_date, | |
| // (select date(a.to_date)) as to_date, a.leave_length, a.reason, a.leave_type, a.half_day_type, a.status | |
| // from apply_leaves a | |
| // join user_details u on a.user_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 | |
| // join users us on us.id = u.user_id | |
| // where ((a.from_date between :startDate1 and :endDate1) | |
| // or (a.to_date between :startDate2 and :endDate2)) and | |
| // us.id = ('.auth()->id().') order by us.id,a.id', | |
| // ['startDate1'=>$startDate,'endDate1'=>$endDate, | |
| // 'startDate2'=>$startDate,'endDate2'=>$endDate]); | |
| $leaveReport = DB::select('select concat(us.name," ",us.lastName) as name, us.id,t.team,(select date(a.from_date)) as from_date, | |
| (select date(a.to_date)) as to_date, a.leave_length, a.reason, a.leave_type, a.half_day_type, a.status, a.updated_by_user, a.created_at | |
| from apply_leaves 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 | |
| where ((a.from_date between :startDate1 and :endDate1) | |
| or (a.to_date between :startDate2 and :endDate2)) and | |
| us.id = (' . auth()->id() . ') order by us.id,a.id', | |
| [ | |
| 'startDate1' => $startDate, | |
| 'endDate1' => $endDate, | |
| 'startDate2' => $startDate, | |
| 'endDate2' => $endDate | |
| ] | |
| ); | |
| } | |
| } | |
| $leaveReportColl = collect($leaveReport); | |
| $leaves = Leave::all(); | |
| $leaveReportTempColl = collect([]); | |
| $toBeEncodedImages = collect([]); | |
| foreach ($leaveReportColl as $data) { | |
| $leave = collect([]); | |
| $leave->name = $data->name; | |
| $leave->team = $data->team; | |
| $leave->reason = $data->reason; | |
| $leave->from_date = $data->from_date; | |
| $leave->to_date = $data->to_date; | |
| $leave->leave_length = $data->leave_length; | |
| $leave->status = $data->status; | |
| $leave->gender = $data->gender; | |
| $leave->updated_by_user = $data->updated_by_user; | |
| $leave->created_at = $data->created_at; | |
| $leave->user_id = $data->id; | |
| if ($data->leave_type == 'full_day') { | |
| $leave->leave_type = $data->leave_type = "Full Day"; | |
| } else { | |
| $leave->leave_type = $data->leave_type = "Half Day"; | |
| } | |
| if ($data->half_day_type == 'second_half') { | |
| $leave->half_day_type = $data->half_day_type = "Second Half"; | |
| } else | |
| if ($data->half_day_type == 'first_half') { | |
| $leave->half_day_type = $data->half_day_type = "First Half"; | |
| } else { | |
| $leave->half_day_type = '---'; | |
| } | |
| // user_image encoded | |
| $user = User::where(['id' => $leave->user_id])->first(); | |
| if (!empty($user->profile_pic)) { | |
| $user_image = url('storage/' . $user->profile_pic); | |
| } else { | |
| if ($leave->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 = '<span style="width: 110px;"><div class="img-screen"><img src="' . $user_image . '" alt="No Image" style="width:50px;height:50px;overflow:hidden;border-radius: 50%;opacity: 0.8;filter: brightness(80%)"></div></span>'; | |
| $manager = User::where(['id' => $leave->updated_by_user])->first(); | |
| if (!empty($manager)) { | |
| if (!empty($manager->profile_pic)) { | |
| $manager_image = url('storage/' . $manager->profile_pic); | |
| } else { | |
| if (!empty($manager_data) && $manager_data->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 = '<img src="' . $manager_image . '" alt="No Image" style="width:50px;height:50px;overflow:hidden;border-radius: 50%;opacity: 0.8;filter: brightness(80%)">'; | |
| } else { | |
| $show_manager_image_container = ''; | |
| } | |
| $requested_on = Carbon::parse($leave->created_at); | |
| $requested_on->setTimezone(config('settings.time_zone')); | |
| $requested_on = $requested_on->format(config('settings.php_date_format')); | |
| if ($leave->status == 'Approve') { | |
| $status = 'Approved'; | |
| } else if ($leave->status == 'Reject') { | |
| $status = 'Rejected'; | |
| } else if ($leave->status == 'Cancel') { | |
| $status = 'Cancelled'; | |
| } else { | |
| $status = $leave->status; | |
| } | |
| $leaveArr = array( | |
| "profile_pic" => $show_image_container, | |
| "name" => $leave->name, | |
| "team" => $leave->team, | |
| "leave_type" => $leave->leave_type, | |
| "half_day_type" => $leave->half_day_type, | |
| "reason" => $leave->reason, | |
| "requested_on" => $requested_on, | |
| "from_date" => Carbon::parse($leave->from_date)->format(Config('settings.php_date_format')), | |
| "to_date" => Carbon::parse($leave->to_date)->format(Config('settings.php_date_format')), | |
| "leave_length" => $leave->leave_length, | |
| "status" => $status, | |
| "manager" => $show_manager_image_container . ' ' . User::where(['id' => $leave->updated_by_user])->pluck('name')->first() . ' ' . User::where(['id' => $leave->updated_by_user])->pluck('lastName')->first(), | |
| ); | |
| $leaveReportTempColl->push($leaveArr); | |
| $checkOutDate = null; | |
| $checkInDate = null; | |
| $toBeEncodedImages->push($user_image); | |
| } | |
| $leaveReportColl = collect([]); | |
| $leaveReportColl = $leaveReportTempColl; | |
| $teams = Team::all(); | |
| $startDate = Carbon::parse($startDate)->format(Config('settings.php_date_format')); | |
| $endDate = Carbon::parse($endDate)->format(Config('settings.php_date_format')); | |
| return view('administrationForms.LeavePolicy.LeaveReport.adminLeaveReportTable', compact('leaveReportColl', 'columnHeaders', 'startDate', 'endDate', 'leaves', 'toBeEncodedImages')); | |
| } | |
| public function editapplyleave(Request $request, $id) | |
| { | |
| $leaves = Leave::all(); | |
| $title = '/Manage/Manage Leave'; | |
| $applyleave = ApplyLeave::where('id', '=', $id)->first(); | |
| $user = User::where('id', '=', $applyleave->user_id)->first(); | |
| $name = $user->name . ' ' . $user->lastName; | |
| $val = AttendanceHelper::getAttendanceMarkValue(); | |
| $valTeam = AttendanceHelper::getAttendanceTeam($request); | |
| $valUser = AttendanceHelper::getAttendanceUser($request); | |
| return view('leave.editleaveform', compact('title', 'leaves', 'name', 'applyleave', 'val', 'valTeam', 'valUser')); | |
| } | |
| public function updatemanageleave(Request $request) | |
| { | |
| $leaveId = $request->leaveId; | |
| $leaveName = $request->leaveName; | |
| $status = $request->leavestatus; | |
| $leave = ApplyLeave::where('id', '=', $leaveId)->first(); | |
| $user_id = $leave->user_id; | |
| $user = User::where('id', '=', $user_id)->first(); | |
| $leaveBalance = LeaveHelper::getEntitlementLeave($user_id, $leaveName); | |
| if ($request->has('approver_comments')) { | |
| $approver_comments = $request->approver_comments; | |
| } else { | |
| $approver_comments = null; | |
| } | |
| if ($leaveBalance <= 0 && LeaveHelper::checkTotalLeaves($request->leaveName)) { | |
| return response()->json(['status' => 422, 'message' => 'Not sufficient balance', 'leaveBalance' => $leaveBalance]); | |
| } | |
| if ($leave->from_date == $leave->to_date) { | |
| $leave_days = Carbon::parse($leave->from_date)->format('jS M Y'); | |
| } else { | |
| $leave_days = Carbon::parse($leave->from_date)->format('jS M Y') . ' to ' . Carbon::parse($leave->to_date)->format('jS M Y'); | |
| } | |
| $title = "Leave request"; | |
| if ($status == '0') { | |
| LeaveHelper::updateLeaveBalanceOnCancelling($leave->leave_id, $leave->leave_length, $user_id); | |
| $status = 'Reject'; | |
| $rejected_leave = new RejectedLeave(); | |
| $rejected_leave->from_date = $leave->from_date; | |
| $rejected_leave->to_date = $leave->to_date; | |
| $rejected_leave->reason = $leave->reason; | |
| $rejected_leave->is_process = 'true'; | |
| $rejected_leave->user_id = $leave->user_id; | |
| $rejected_leave->leave_id = $leave->leave_id; | |
| $rejected_leave->leave_length = $leave->leave_length; | |
| $rejected_leave->leave_type = $leave->leave_type; | |
| $rejected_leave->half_day_type = $leave->half_day_type; | |
| $rejected_leave->approver_comments = $approver_comments; | |
| $rejected_leave->save(); | |
| $leave->delete(); | |
| $message = 'Your leave request for ' . $leave_days . ' has been rejected due to ' . $approver_comments; | |
| $collaboratorMessage = $user->name . ' ' . $user->lastName . "'s leave request for " . $leave_days . ' has been rejected due to ' . $approver_comments . ' by ' . auth()->user()->name . ' ' . auth()->user()->lastName; | |
| $msg = 'Leave rejected successfully'; | |
| Session::flash('warning', 'Leave rejected successfully!'); | |
| } else { | |
| $status = 'Approve'; | |
| if ($leave->leave_id != $leaveName) { | |
| LeaveHelper::updateLeaveBalanceOnAdminCancelling($user_id, $leave->leave_id, $leave->leave_length); | |
| LeaveHelper::updateUserLeaveBalance($user_id, $leaveName, $leave->leave_length); | |
| $leave->leave_id = $leaveName; | |
| } | |
| $leave->status = 'Approve'; | |
| $leave->is_process = 'true'; | |
| $leave->updated_by_user = Auth::user()->id; | |
| $leave->save(); | |
| $message = 'Your leave request for ' . $leave_days . ' has been approved'; | |
| $collaboratorMessage = $user->name . ' ' . $user->lastName . "'s leave request for " . $leave_days . ' has been approved by ' . auth()->user()->name . ' ' . auth()->user()->lastName; | |
| $msg = 'Leave approved successfully'; | |
| Session::flash('success', 'Leave approved successfully!'); | |
| } | |
| $actionUrl = 'apply-leave.index'; | |
| $arr = null; | |
| $arr = [$title, $message, $actionUrl]; | |
| $user->notify(new AppNotifications($arr)); | |
| //get collaborators | |
| $collaborators = userRequestCollaborator::where('module', 'leave') | |
| ->where('context_id', $leaveId) | |
| ->pluck('user_id')->toArray(); | |
| //primary reporting manager | |
| $primaryReportingManagerId = $user->userdetail->primary_reporting_manager_id; | |
| $collArr = [$title, $collaboratorMessage, null]; | |
| if (!empty($collaborators)) { | |
| if (in_array(auth()->user()->id, $collaborators)) { | |
| foreach ($collaborators as $collaborator) { | |
| $collaboratorUser = User::where('id', $collaborator)->first(); | |
| //send notification to all collaborators | |
| if (auth()->user()->id != $collaborator) { | |
| $collaboratorUser->notify(new AppNotifications($collArr)); | |
| } | |
| } | |
| } else { | |
| foreach ($collaborators as $collaborator) { | |
| $collaboratorUser = User::where('id', $collaborator)->first(); | |
| //send notification to all collaborators | |
| $collaboratorUser->notify(new AppNotifications($collArr)); | |
| } | |
| } | |
| } | |
| //check if user has primary reporting manager | |
| if ($primaryReportingManagerId != 0 || $primaryReportingManagerId != NULL) { | |
| $primary_manger = User::where('id', $primaryReportingManagerId)->first(); | |
| if ($primaryReportingManagerId != Auth::user()->id) { | |
| $primary_manger->notify(new AppNotifications($collArr)); | |
| } | |
| } | |
| //secondary reporting managers | |
| $secondaryManagers = $user->userdetail->secondaryManager; | |
| if (!empty($secondaryManagers)) { | |
| foreach ($secondaryManagers as $secondaryManager) { | |
| if ($primaryReportingManagerId != $secondaryManager->id && $secondaryManager->id != Auth::user()->id && !in_array($secondaryManager->id, $collaborators)) { | |
| $secondaryManager->notify(new AppNotifications($collArr)); | |
| } | |
| } | |
| } | |
| if ($status == 'Reject') { | |
| return redirect()->route('home'); | |
| } else { | |
| return response()->json(['status' => 422, 'message' => $msg, 'leaveBalance' => 1]); | |
| } | |
| } | |
| public function getUser(Request $request) | |
| { | |
| $team = $request->team; | |
| $data = '<option value="0" selected="">Select Employee</option>'; | |
| if ($team == 'Select Team' || $team == 'All') { | |
| if (auth()->user()->can('View All Leave Report')) { | |
| $users = User::all(); | |
| foreach ($users as $user) { | |
| $data .= '<option value="' . $user->id . '">' . $user->name . ' ' . $user->lastName . '</option>'; | |
| } | |
| } else { | |
| $teams = GetShiftDetailHelper::getMyteams(); | |
| foreach ($teams as $value) { | |
| $users = User::select('users.name', 'users.lastName', 'users.id') | |
| ->leftJoin('user_details', 'users.id', '=', 'user_details.user_id') | |
| ->where('user_details.primary_team_id', '=', $value->id) | |
| ->get(); | |
| foreach ($users as $user) { | |
| $data .= '<option value="' . $user->id . '">' . $user->name . ' ' . $user->lastName . '</option>'; | |
| } | |
| } | |
| } | |
| } else { | |
| $teams = Team::where('team', '=', $team)->first(); | |
| $users = User::select('users.name', 'users.lastName', 'users.id') | |
| ->leftJoin('user_details', 'users.id', '=', 'user_details.user_id') | |
| ->where('user_details.primary_team_id', '=', $teams->id) | |
| ->get(); | |
| foreach ($users as $user) { | |
| $data .= '<option value="' . $user->id . '">' . $user->name . ' ' . $user->lastName . '</option>'; | |
| } | |
| } | |
| return response()->json(['status' => 200, 'optionData' => $data]); | |
| } | |
| } |