Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
CRAP | |
0.00% |
0 / 279 |
| TeamController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
9900 | |
0.00% |
0 / 279 |
| index | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| biometric | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 11 |
|||
| employeeId | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 11 |
|||
| store | |
0.00% |
0 / 1 |
4970 | |
0.00% |
0 / 210 |
|||
| 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 |
|||
| getTeams | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 15 |
|||
| getUsers | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 16 |
|||
| getPrimaryReportingManagers | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 11 |
|||
| <?php | |
| namespace App\Http\Controllers\Admin\UserDetails; | |
| use App\Http\Controllers\FirebaseController\FirebaseCloudMessaging; | |
| use Illuminate\Http\Request; | |
| use App\Http\Controllers\Controller; | |
| use App\Models\Admin\attendanceRequest; | |
| use App\Models\Auth\User; | |
| use App\Models\Admin\UserDetail; | |
| use App\Models\Admin\Department; | |
| use App\Models\Admin\Organisation; | |
| use App\Models\Admin\Team; | |
| use App\Models\Admin\Shift; | |
| use App\Models\Admin\UserAddress; | |
| use App\Models\Admin\UserBankDetail; | |
| use App\Models\Admin\UserDocumentDetail; | |
| use Spatie\Permission\Models\Role; | |
| use Illuminate\Support\Facades\Hash; | |
| use Illuminate\Support\Facades\Validator; | |
| use Illuminate\Support\Facades\Storage; | |
| use Intervention\Image\Facades\Image; | |
| use Session; | |
| use Illuminate\Support\Facades\Crypt; | |
| use App\Notifications\AppNotifications; | |
| use App\Models\Leave\LeaveEntitlement; | |
| use Carbon\Carbon; | |
| use App\Models\Admin\Leave; | |
| class TeamController extends Controller | |
| { | |
| /** | |
| * Display a listing of the resource. | |
| * | |
| * @return \Illuminate\Http\Response | |
| */ | |
| public function index() | |
| { | |
| } | |
| /** | |
| * Get the validation rules that apply to the request. | |
| * | |
| * @return array | |
| */ | |
| public function biometric(Request $request) | |
| { | |
| if ($request->user_id == '') { | |
| if (UserDetail::where('biometric_id', '=', $request->biometric_id)->exists()) { | |
| return response()->json([ | |
| 'valid' => false | |
| ]); | |
| } else { | |
| return response()->json([ | |
| 'valid' => true | |
| ]); | |
| } | |
| } else { | |
| if (UserDetail::where('biometric_id', '=', $request->biometric_id)->where('user_id', '!=', $request->user_id)->withTrashed()->exists()) { | |
| return response()->json([ | |
| 'valid' => false | |
| ]); | |
| } else { | |
| return response()->json([ | |
| 'valid' => true | |
| ]); | |
| } | |
| } | |
| } | |
| public function employeeId(Request $request) | |
| { | |
| if ($request->user_id == '') { | |
| if (UserDetail::where('employee_id', '=', $request->employee_id)->exists()) { | |
| return response()->json([ | |
| 'valid' => false | |
| ]); | |
| } else { | |
| return response()->json([ | |
| 'valid' => true | |
| ]); | |
| } | |
| } else { | |
| if (UserDetail::where('employee_id', '=', $request->employee_id)->where('user_id', '!=', $request->user_id)->withTrashed()->exists()) { | |
| return response()->json([ | |
| 'valid' => false | |
| ]); | |
| } else { | |
| return response()->json([ | |
| 'valid' => true | |
| ]); | |
| } | |
| } | |
| } | |
| /** | |
| * Store a newly created resource in storage. | |
| * | |
| * @param \Illuminate\Http\Request $request | |
| * @return \Illuminate\Http\Response | |
| */ | |
| public function store(Request $request) | |
| { | |
| //tab name | |
| $tab = 'team'; | |
| if ($request->editUserdetail == true) //Edit form 1 | |
| { | |
| $user_details_id = UserDetail::where('user_id', $request->user_id)->first(); | |
| // $biometric_validation = 'unique:user_details,biometric_id,NULL,id,user_id,' . $request->user_id; | |
| //$employee_validation = 'unique:user_details,employee_id,NULL,id,user_id,' . $request->user_id; | |
| $biometric_validation = 'unique:user_details,biometric_id,' . $user_details_id['id']; | |
| $employee_validation = 'unique:user_details,employee_id,' . $user_details_id['id']; | |
| } else { | |
| $biometric_validation = 'unique:user_details'; | |
| $employee_validation = 'unique:user_details'; | |
| } | |
| $validator = Validator::make($request->all(), [ | |
| 'organisationName' => 'required', | |
| 'department_id' => 'required', | |
| 'primary_team_id' => 'required', | |
| 'role_id' => 'required', | |
| 'shift_id' => 'required', | |
| 'attendance_request_id' => 'required', | |
| // 'primary_reporting_manager_id' => 'required', | |
| 'reporting_manager_id' => 'required', | |
| 'biometric_id' => 'required|' . $biometric_validation, | |
| 'employee_id' => 'required|' . $employee_validation | |
| ]); | |
| if ($validator->fails()) { | |
| return redirect()->back()->withErrors($validator)->with('tab', $tab); | |
| } | |
| if ($request->editUserdetail == true) //Edit form 2 | |
| { | |
| $user = User::find($request->user_id); | |
| $userdetail = $user->userdetail; | |
| $userPreviousTeams = $user->userdetail->teams; | |
| $previous_teams = []; | |
| foreach ($userPreviousTeams as $userPreviousTeam) { | |
| $previous_teams[] = $userPreviousTeam->id; | |
| } | |
| //prevoius primary team id | |
| $previous_primary_team = $userdetail->primary_team_id; | |
| $userdetail->organisation_id = $request->organisation_id; | |
| $userdetail->biometric_id = $request->biometric_id; | |
| $userdetail->employee_id = $request->employee_id; | |
| $userdetail->role_id = $request->role_id; | |
| $userdetail->primary_reporting_manager_id = $request->primary_reporting_manager_id == null ? 0 : $request->primary_reporting_manager_id; | |
| $userdetail->primary_team_id = $request->primary_team_id; | |
| $userdetail->save(); | |
| // var_dump($userdetail); | |
| $role = Role::find($request->role_id); | |
| $roleArr = collect([]); | |
| $roleArr->push($role); | |
| $user->syncRoles($roleArr); | |
| $userInfo = UserDetail::find($user->userdetail->id); | |
| $shiftArr = collect([]); | |
| foreach ($request->shift_id as $key => $shift_id) { | |
| $shiftArr->push($shift_id); | |
| } | |
| $userInfo->shifts()->sync($shiftArr); | |
| $departmentArr = collect([]); | |
| foreach ($request->department_id as $key => $department_id) { | |
| $departmentArr->push($department_id); | |
| } | |
| $userInfo->departments()->sync($departmentArr); | |
| $teamArr = collect([]); | |
| if (!empty($request->team_id)) { | |
| foreach ($request->team_id as $key => $team_id) { | |
| $teamArr->push($team_id); | |
| } | |
| } | |
| $userInfo->teams()->sync($teamArr); | |
| $attendanceUpdate = collect([]); | |
| foreach ($request->attendance_request_id as $key => $attendance_request_id) { | |
| $attendanceUpdate->push($attendance_request_id); | |
| } | |
| $userInfo->attendanceRequests()->sync($attendanceUpdate); | |
| $reportingManagerArr = collect([]); | |
| foreach ($request->reporting_manager_id as $key => $reporting_manager_id) { | |
| $reportingManagerArr->push($reporting_manager_id); | |
| } | |
| $userInfo->secondaryManager()->sync($reportingManagerArr); | |
| $userAttendanceTeam = $user->userdetail->teams; | |
| $teams = $request->team_id; | |
| $primary_team_id = $request->primary_team_id; | |
| //if primary team is added for firts time | |
| if ($previous_primary_team == 0) { | |
| //new team | |
| $team = Team::find($primary_team_id); | |
| //notification to team user | |
| $title = "Primary Team"; | |
| $message = "Your Primary Team is " . $team->team; | |
| $actionUrl = null; | |
| $arr = null; | |
| $arr = [$title, $message, $actionUrl]; | |
| $user->notify(new AppNotifications($arr)); | |
| $firebaseObject = new FirebaseCloudMessaging(); | |
| $firebaseObject->sendFirebaseNotification($title,$message,$request->user_id); | |
| } | |
| if ($primary_team_id != $previous_primary_team && $previous_primary_team != 0) { | |
| //new team | |
| $team = Team::find($primary_team_id); | |
| //notification to team user | |
| $title = "Primary Team"; | |
| $message = "Your Primary Team is changed to " . $team->team; | |
| $actionUrl = null; | |
| $arr = null; | |
| $arr = [$title, $message, $actionUrl]; | |
| $user->notify(new AppNotifications($arr)); | |
| $firebaseObject = new FirebaseCloudMessaging(); | |
| $firebaseObject->sendFirebaseNotification($title,$message,$request->user_id); | |
| } | |
| if ($primary_team_id != $previous_primary_team && $previous_primary_team != 0) { | |
| if ((!empty($previous_teams) && !in_array($primary_team_id, $previous_teams)) || | |
| (empty($teams) && !empty($previous_teams) && !in_array($primary_team_id, $previous_teams)) || | |
| empty($previous_teams) | |
| ) { | |
| //new team | |
| $team = Team::find($primary_team_id); | |
| //notification to team user | |
| $title = "New Employee to Team"; | |
| $message = $user->name . ' ' . $user->lastName . " is added to the " . $team->team . " team"; | |
| $actionUrl = null; | |
| $arr = null; | |
| $arr = [$title, $message, $actionUrl]; | |
| //get primary team users | |
| $primaryTeamUsers = UserDetail::where('primary_team_id', $primary_team_id)->get(); | |
| if (!empty($primaryTeamUsers)) { | |
| foreach ($primaryTeamUsers as $primaryTeamUser) { | |
| if ($user->id != $primaryTeamUser->user_id) { | |
| $teamUser = User::find($primaryTeamUser->user_id); | |
| if (!empty($teamUser)) { | |
| $teamUser->notify(new AppNotifications($arr)); | |
| $firebaseObject = new FirebaseCloudMessaging(); | |
| $firebaseObject->sendFirebaseNotification($title,$message,$primaryTeamUser->user_id); | |
| } | |
| } | |
| } | |
| } | |
| //other teams | |
| if (!empty($team->userTeams)) { | |
| foreach ($team->userTeams as $userTeam) { | |
| if ($user->id != $userTeam->user_id) { | |
| $teamUser = User::find($userTeam->user_id); | |
| if (!empty($teamUser)) { | |
| $teamUser->notify(new AppNotifications($arr)); | |
| $firebaseObject = new FirebaseCloudMessaging(); | |
| $firebaseObject->sendFirebaseNotification($title,$message,$userTeam->user_id); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| //notification for remove from old team | |
| //old team | |
| $oldTeam = Team::find($previous_primary_team); | |
| if (!empty($teams) ? !in_array($previous_primary_team, $teams) : empty($teams)) { | |
| //notification to team user | |
| $title = "Removed Employee from Team"; | |
| $message = $user->name . ' ' . $user->lastName . " is removed from the " . $oldTeam->team . " team"; | |
| $actionUrl = null; | |
| $arr = null; | |
| $arr = [$title, $message, $actionUrl]; | |
| //get previous primary team users | |
| $previousPrimaryTeamUsers = UserDetail::where('primary_team_id', $previous_primary_team)->get(); | |
| if (!empty($previousPrimaryTeamUsers)) { | |
| foreach ($previousPrimaryTeamUsers as $previousPrimaryTeamUser) { | |
| if ($user->id != $previousPrimaryTeamUser->user_id) { | |
| $teamUser = User::find($previousPrimaryTeamUser->user_id); | |
| if (!empty($teamUser)) { | |
| $teamUser->notify(new AppNotifications($arr)); | |
| $firebaseObject = new FirebaseCloudMessaging(); | |
| $firebaseObject->sendFirebaseNotification($title,$message,$previousPrimaryTeamUser->user_id); | |
| } | |
| } | |
| } | |
| } | |
| //other teams | |
| if (!empty($oldTeam->userTeams)) { | |
| foreach ($oldTeam->userTeams as $userTeam) { | |
| if ($user->id != $userTeam->user_id) { | |
| $teamUser = User::find($userTeam->user_id); | |
| if (!empty($teamUser)) { | |
| $teamUser->notify(new AppNotifications($arr)); | |
| $firebaseObject = new FirebaseCloudMessaging(); | |
| $firebaseObject->sendFirebaseNotification($title,$message,$userTeam->user_id); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if (!empty($teams)) { | |
| $get_new_team_diff = array_diff($teams, $previous_teams); | |
| if (!empty($get_new_team_diff)) { | |
| foreach ($get_new_team_diff as $team) { | |
| $team = Team::find($team); | |
| if (!empty($team)) { | |
| if ($team->id != $previous_primary_team) { | |
| //notification to team user | |
| $title = "New Employee to Team"; | |
| $message = $user->name . ' ' . $user->lastName . " is added to the " . $team->team . " team"; | |
| $actionUrl = null; | |
| $arr = null; | |
| $arr = [$title, $message, $actionUrl]; | |
| //get primary team users | |
| $primaryTeamUsers = UserDetail::where('primary_team_id', $team->id)->get(); | |
| if (!empty($primaryTeamUsers)) { | |
| foreach ($primaryTeamUsers as $primaryTeamUser) { | |
| if ($user->id != $primaryTeamUser->user_id) { | |
| $teamUser = User::find($primaryTeamUser->user_id); | |
| if (!empty($teamUser)) { | |
| $teamUser->notify(new AppNotifications($arr)); | |
| $firebaseObject = new FirebaseCloudMessaging(); | |
| $firebaseObject->sendFirebaseNotification($title,$message,$teamUser); | |
| } | |
| } | |
| } | |
| } | |
| if (!empty($team->userTeams)) { | |
| foreach ($team->userTeams as $userTeam) { | |
| if ($user->id != $userTeam->user_id) { | |
| $teamUser = User::find($userTeam->user_id); | |
| if (!empty($teamUser)) { | |
| $teamUser->notify(new AppNotifications($arr)); | |
| $firebaseObject = new FirebaseCloudMessaging(); | |
| $firebaseObject->sendFirebaseNotification($title,$message,$teamUser); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if (empty($teams)) { | |
| $teams = [0]; | |
| } | |
| $get_old_team_diff = array_diff($previous_teams, $teams); | |
| if (!empty($get_old_team_diff)) { | |
| foreach ($get_old_team_diff as $team) { | |
| $team = Team::find($team); | |
| if (!empty($team)) { | |
| if ($primary_team_id != $team->id) { | |
| //notification to team user | |
| $title = "Removed Employee from Team"; | |
| $message = $user->name . ' ' . $user->lastName . " is removed from the " . $team->team . " team"; | |
| $actionUrl = null; | |
| $arr = null; | |
| $arr = [$title, $message, $actionUrl]; | |
| //get previous primary team users | |
| $previousPrimaryTeamUsers = UserDetail::where('primary_team_id', $team->id)->get(); | |
| if (!empty($previousPrimaryTeamUsers)) { | |
| foreach ($previousPrimaryTeamUsers as $previousPrimaryTeamUser) { | |
| if ($user->id != $previousPrimaryTeamUser->user_id) { | |
| $teamUser = User::find($previousPrimaryTeamUser->user_id); | |
| if (!empty($teamUser)) { | |
| $teamUser->notify(new AppNotifications($arr)); | |
| $firebaseObject = new FirebaseCloudMessaging(); | |
| $firebaseObject->sendFirebaseNotification($title,$message,$teamUser); | |
| } | |
| } | |
| } | |
| } | |
| if (!empty($team->userTeams)) { | |
| foreach ($team->userTeams as $userTeam) { | |
| if ($user->id != $userTeam->user_id) { | |
| $teamUser = User::find($userTeam->user_id); | |
| if (!empty($teamUser)) { | |
| $teamUser->notify(new AppNotifications($arr)); | |
| $firebaseObject = new FirebaseCloudMessaging(); | |
| $firebaseObject->sendFirebaseNotification($title,$message,$teamUser); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| $leaves = Leave::all(); | |
| if(count($leaves) > 0){ | |
| foreach($leaves as $leave){ | |
| $leaveEntitlementFindQuery = array( | |
| 'user_id' => $request->user_id, | |
| 'leave_id' => $leave->id, | |
| 'year' => Carbon::now()->year | |
| ); | |
| $leaveEntitlement = LeaveEntitlement::where($leaveEntitlementFindQuery)->first(); | |
| if(empty($leaveEntitlement)) { | |
| $leaveEntitlementData = array( | |
| 'user_id' => $user->id, | |
| 'leave_id' => $leave->id, | |
| 'leave_balance' => 0, | |
| 'year' => Carbon::now()->year, | |
| 'entitled_leaves' => $leave->n_days | |
| ); | |
| LeaveEntitlement::create($leaveEntitlementData); | |
| } | |
| } | |
| } | |
| Session::flash('success', 'Team details Updated Successfully!'); | |
| return redirect()->route('user-tab.edit', $request->user_id)->with('tab', $tab); | |
| } | |
| } | |
| /** | |
| * 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) | |
| { | |
| } | |
| //get teams | |
| public function getTeams(Request $request) | |
| { | |
| $teams = Team::get(); | |
| //get primary id | |
| $primary_team_id = $request->primary_team_id; | |
| //get current user id | |
| $user_id = $request->user_id; | |
| //get team ids | |
| $team_ids = $request->team_id; | |
| $data = ''; | |
| foreach ($teams as $team) { | |
| if (!empty($primary_team_id) && $team->id != $primary_team_id) { | |
| $select = ''; | |
| if (!empty($team_ids) && in_array($team->id, $team_ids)) { | |
| $select = 'selected="selected"'; | |
| } | |
| $data .= '<option value="' . $team->id . '"' . $select . '>'; | |
| $data .= $team->team; | |
| $data .= '</option>'; | |
| } | |
| } | |
| $response = array( | |
| 'teams' => $data | |
| ); | |
| return response()->json($response); | |
| } | |
| //get users | |
| public function getUsers(Request $request) | |
| { | |
| $users = User::get(); | |
| //get primary reporting manager id | |
| $primary_reporting_manager_id = $request->primary_reporting_manager_id; | |
| //get current user id | |
| $user_id = $request->user_id; | |
| //get reporting manager ids | |
| $reporting_manager_ids = $request->reporting_manager_id; | |
| $data = ''; | |
| if (!empty($users)) { | |
| foreach ($users as $user) { | |
| if ($user->id != $primary_reporting_manager_id) { | |
| $select = ''; | |
| if (!empty($reporting_manager_ids) && in_array($user->id, $reporting_manager_ids)) { | |
| $select = 'selected="selected"'; | |
| } | |
| $data .= '<option value="' . $user->id . '"' . $select . '>'; | |
| $data .= $user->name . ' ' . $user->lastName; | |
| $data .= '</option>'; | |
| } | |
| } | |
| } | |
| $response = array( | |
| 'users' => $data | |
| ); | |
| return response()->json($response); | |
| } | |
| public function getPrimaryReportingManagers(Request $request) | |
| { | |
| //get reporting manager ids | |
| $reporting_manager_ids = $request->reporting_manager_id; | |
| $users = User::get(); | |
| $data = '<option></option>'; | |
| if (!empty($users)) { | |
| foreach ($users as $user) { | |
| if (in_array($user->id, $reporting_manager_ids)) { | |
| $data .= '<option value="' . $user->id . '">'; | |
| $data .= $user->name . ' ' . $user->lastName; | |
| $data .= '</option>'; | |
| } | |
| } | |
| } | |
| $response = array( | |
| 'users' => $data | |
| ); | |
| return response()->json($response); | |
| } | |
| } |