Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 14 |
CRAP | |
4.25% |
11 / 259 |
| UserTabController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 14 |
2244.80 | |
4.25% |
11 / 259 |
| index | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| create | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 38 |
|||
| mobileNumber | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 11 |
|||
| |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 11 |
||||
| store | |
0.00% |
0 / 1 |
182 | |
0.00% |
0 / 76 |
|||
| show | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| edit | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 64 |
|||
| storeAttendanceUser | |
0.00% |
0 / 1 |
2.00 | |
91.67% |
11 / 12 |
|||
| getAttendanceUser | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
|||
| update | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| storeEngagementType | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 6 |
|||
| getEngagementType | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 6 |
|||
| getStartDateEndDate | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
| saveLocationsUser | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 19 |
|||
| <?php | |
| namespace App\Http\Controllers\Admin\UserDetails; | |
| 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 App\Models\Leave\LeaveEntitlement; | |
| 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 App\Models\Admin\HolidayList; | |
| use Session; | |
| use Illuminate\Support\Facades\Crypt; | |
| use Illuminate\Validation\Rule; | |
| use App\Notifications\AppNotifications; | |
| use Illuminate\Support\Facades\Auth; | |
| use Illuminate\Support\Facades\DB; | |
| use Carbon\Carbon; | |
| use App\Helpers\AttendanceHelper; | |
| use App\Models\Admin\Setting; | |
| use App\Models\Admin\userSetting; | |
| use App\Helpers\GeoFenceHelper; | |
| use App\Helpers\PlatformHelper; | |
| class UserTabController extends Controller | |
| { | |
| /** | |
| * Display a listing of the resource. | |
| * | |
| * @return \Illuminate\Http\Response | |
| */ | |
| public function index() | |
| { | |
| } | |
| /** | |
| * Show the form for creating a new resource. | |
| * | |
| * @return \Illuminate\Http\Response | |
| */ | |
| public function create(Request $request) | |
| { | |
| //tab name | |
| $tab = 'user'; | |
| $title = '/Setup/Create Users'; | |
| $organisations = Organisation::all(); | |
| $departments = Department::all(); | |
| $holidaylist = HolidayList::all(); | |
| $teams =Team::all(); | |
| $roles = Role::all(); | |
| $shifts =Shift::all(); | |
| $attendances =attendanceRequest::all(); | |
| $editUserdetail = false; | |
| $users = User::all(); | |
| $employee_id = ''; | |
| $empType = null; | |
| $leaves = DB::table('leaves')->get(); | |
| $leaveBalances = []; | |
| foreach ($leaves as $leave) { | |
| $leaveBalance=0; | |
| $leaveBalances[] = array( | |
| 'id' => $leave->id, | |
| 'name' => $leave->name, | |
| 'abbr' => $leave->abbr, | |
| 'leave_balance' => $leaveBalance | |
| ); | |
| } | |
| if(config('settings.default_employee_id') == 'automatic') | |
| { | |
| $startId = config('settings.id_starts_from'); | |
| $prefix = config('settings.default_id'); | |
| for ($i=$startId; $employee_id == '' ; $i++) { | |
| if (UserDetail::where('employee_id', '=', $prefix.$i)->exists()) | |
| { | |
| } | |
| else | |
| { | |
| $employee_id = $prefix.$i; | |
| break; | |
| } | |
| } | |
| } | |
| $val = AttendanceHelper::getAttendanceMarkValue(); | |
| $valTeam = AttendanceHelper::getAttendanceTeam($request); | |
| $valUser = AttendanceHelper::getAttendanceUser($request); | |
| $geoFenceUserLevel = GeoFenceHelper::getUserGeofencedlocation($request); | |
| // dd($geoFenceUserLevel); | |
| return view('administrationForms.UserDetail.User.UserTab', | |
| compact('title','departments','teams','roles','shifts','organisations', | |
| 'editUserdetail','attendances','tab','users','employee_id','leaveBalances','holidaylist', | |
| 'val','valUser','valTeam','empType','geoFenceUserLevel')); | |
| } | |
| /** | |
| * Get the validation rules that apply to the request. | |
| * | |
| * @return array | |
| */ | |
| public function mobileNumber(Request $request) | |
| { | |
| if($request->user_id == ''){ | |
| if (UserDetail::where('mobile_number', '=', $request->mobile_number)->exists()) | |
| { | |
| return response()->json([ | |
| 'valid' => false | |
| ]); | |
| } | |
| else | |
| { | |
| return response()->json([ | |
| 'valid' => true | |
| ]); | |
| } | |
| }else{ | |
| if (UserDetail::where('mobile_number', '=', $request->mobile_number)->where('user_id','!=',$request->user_id)->exists()) | |
| { | |
| return response()->json([ | |
| 'valid' => false | |
| ]); | |
| } | |
| else | |
| { | |
| return response()->json([ | |
| 'valid' => true | |
| ]); | |
| } | |
| } | |
| } | |
| public function email(Request $request) | |
| { | |
| if($request->user_id == ''){ | |
| if (User::where('email', '=', $request->email)->exists()) | |
| { | |
| return response()->json([ | |
| 'valid' => false | |
| ]); | |
| } | |
| else | |
| { | |
| return response()->json([ | |
| 'valid' => true | |
| ]); | |
| } | |
| }else{ | |
| if (User::where('email', '=', $request->email)->where('id','!=',$request->user_id)->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 = 'user'; | |
| if($request->editUserdetail == true) //Edit form 1 | |
| { | |
| $user_details_id = UserDetail::where('user_id',$request->user_id)->first(); | |
| $email_validation = 'unique:users,email,' . $request->user_id; | |
| //$mobile_validation = 'unique:user_details,mobile_number,NULL,id,user_id,' . $request->user_id; | |
| $mobile_validation = 'unique:user_details,mobile_number,' . $user_details_id['id']; | |
| }else{ | |
| $email_validation = 'unique:users'; | |
| $mobile_validation = 'unique:user_details'; | |
| } | |
| if($request->new_password == NULL){ | |
| $new_password = ''; | |
| $confirm_password = ''; | |
| }else{ | |
| $new_password = 'required|min:8'; | |
| $confirm_password = 'required_with:new_password|same:new_password|min:8'; | |
| } | |
| $validator = Validator::make($request->all(), [ | |
| 'name' => 'required', | |
| 'lastName' => 'required', | |
| 'email' => 'required|'.$email_validation, | |
| 'personal_email' => 'required', | |
| 'gender' => 'required', | |
| 'dob' => 'required', | |
| 'new_password' => $new_password, | |
| 'confirm_password' => $confirm_password, | |
| 'mobile_number' => 'required|digits:10|'.$mobile_validation | |
| ]); | |
| if ($validator->fails()) | |
| { | |
| return redirect()->back()->withErrors($validator)->with('tab',$tab); | |
| } | |
| $dob = Carbon::parse( Carbon::createFromFormat( config('settings.php_date_format') , $request->dob ) )->format('Y-m-d'); | |
| if($request->editUserdetail == true) //Edit form 1 | |
| { | |
| $user = User::find($request->user_id); | |
| $user->name = $request->name; | |
| $user->lastName = $request->lastName; | |
| $user->email = $request->email; | |
| if($request->new_password != NULL){ | |
| if (Hash::needsRehash($request->new_password)) | |
| { | |
| $user->password = Hash::make($request->new_password); | |
| } | |
| } | |
| $user->save(); | |
| $user->userDetail->update([ | |
| 'personal_email' => $request->personal_email, | |
| 'gender' => $request->gender, | |
| 'dob'=> $dob, | |
| 'mobile_number'=> $request->mobile_number | |
| ]); | |
| if($request->new_password != null){ | |
| //notification to admin | |
| $title = "Password changed"; | |
| $message = $user->name . ' ' . $user->lastName."'s account password changed by ".Auth::user()->name . ' ' . Auth::user()->lastName; | |
| $actionUrl = null; | |
| $arr = null; | |
| $arr = [$title, $message, $actionUrl]; | |
| $users = User::all(); | |
| foreach ($users as $user) { | |
| if($user->can('Administration Module')){ | |
| $user->notify(new AppNotifications($arr)); | |
| } | |
| } | |
| } | |
| Session::flash('success', 'User details Updated Successfully!'); | |
| return redirect()->route('user-tab.edit',$request->user_id)->with('tab',$tab); | |
| } | |
| else | |
| { | |
| $user = new User(); | |
| $user->name = $request->name; | |
| $user->lastName = $request->lastName; | |
| $user->email = $request->email; | |
| $user->password = Hash::make($request->new_password); | |
| $user->save(); | |
| $userdetail = new UserDetail(); | |
| $userdetail->personal_email =$request->personal_email; | |
| $userdetail->gender = $request->gender; | |
| $userdetail->dob = $dob; | |
| $userdetail->mobile_number = $request->mobile_number; | |
| $userdetail->user_id = $user->id; | |
| $userdetail->save(); | |
| //notification to all | |
| $title = "New Employee"; | |
| $message = $user->name . ' ' . $user->lastName." has joined today"; | |
| $actionUrl = null; | |
| $arr = null; | |
| $arr = [$title, $message, $actionUrl]; | |
| $all_users = User::all(); | |
| if(!empty($all_users)){ | |
| foreach($all_users as $all_user){ | |
| if($all_user->id != $user->id){ | |
| $all_user->notify(new AppNotifications($arr)); | |
| } | |
| } | |
| } | |
| Session::flash('success', 'User details created Successfully!'); | |
| return redirect()->route('user-tab.edit',$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(Request $request,$id) | |
| { | |
| //tab name | |
| $tab = 'user'; | |
| $title = '/Setup/Edit Users'; | |
| $user = User::find($id); | |
| $userPassword = $user->password; | |
| $userdetail = $user->userdetail; | |
| $user_addresses = $userdetail->userAddress; | |
| $user_bank_details = $userdetail->userBankdetail; | |
| $user_document_details = $userdetail->userDocumentdetail; | |
| $departments = Department::all(); | |
| $departmentArr = $userdetail->departments; | |
| $teams = Team::all(); | |
| $holidaylist = HolidayList::all(); | |
| $teamArr =$userdetail->teams; | |
| $roles = Role::all(); | |
| $roleArr = $userdetail; | |
| $shifts= Shift::all(); | |
| $selectShift = $userdetail->shifts; | |
| $attendances = attendanceRequest::all(); | |
| $attendanceArr = $userdetail->attendanceRequests; | |
| $organisations = Organisation::all(); | |
| $editUserdetail = true; | |
| $users = User::all(); | |
| $secondaryManagerArr = $userdetail->secondaryManager; | |
| // $employeeTeam = $user->userdetailWithTeam()->first() != null ? (count($user->userdetailWithTeam()->first()->teams) > 0 ? $user->userdetailWithTeam()->first()->teams[0]['team'] : ''): '-' ; | |
| $employeeTeam = !empty($user->userdetail->primaryTeamName->team) ? $user->userdetail->primaryTeamName->team : '-'; | |
| $leaves = DB::table('leaves')->whereNull('deleted_at')->get(); | |
| $leaveBalances = []; | |
| foreach ($leaves as $leave) { | |
| $leaveEntitlementQuery = array( | |
| 'user_id' => $user->id, | |
| 'year' => Carbon::now()->year, | |
| 'leave_id' => $leave->id | |
| ); | |
| $leaveEntitlementArr = LeaveEntitlement::where($leaveEntitlementQuery)->get(); | |
| $leaveBalance = null; | |
| foreach ($leaveEntitlementArr as $leaveEntitlement) { | |
| $leaveBalance = $leaveEntitlement->leave_balance; | |
| } | |
| if ($leaveBalance == null) { | |
| $leaveBalance = 0; | |
| } | |
| $leaveBalances[] = array( | |
| 'id' => $leave->id, | |
| 'name' => $leave->name, | |
| 'abbr' => $leave->abbr, | |
| 'leave_balance' => $leaveBalance | |
| ); | |
| // $leaveBalances[$leave->id] = $leaveBalance; | |
| } | |
| $employee_id = ''; | |
| if(config('settings.default_employee_id') == 'automatic') | |
| { | |
| $startId = config('settings.id_starts_from'); | |
| $prefix = config('settings.default_id'); | |
| for ($i=$startId; $employee_id == '' ; $i++) { | |
| if (UserDetail::where('employee_id', '=', $prefix.$i)->exists()) | |
| { | |
| } | |
| else | |
| { | |
| $employee_id = $prefix.$i; | |
| break; | |
| } | |
| } | |
| } | |
| $val = AttendanceHelper::getAttendanceMarkValue(); | |
| $valUser = $this->getAttendanceUser($id); | |
| $valTeam = AttendanceHelper::getAttendanceTeam($request); | |
| $platformUser = PlatformHelper::getPlatformUser($id); | |
| $empType = $this->getEngagementType($id); | |
| $startDateEndDate = $this->getStartDateEndDate($id); | |
| $geoFenceUserLevel = GeoFenceHelper::getUserGeofencedlocation($id); | |
| // dd($geoFenceUserLevel); | |
| // return $leaveBalances; | |
| Session::flash('warning', 'Edit User!'); | |
| return view('administrationForms.UserDetail.User.UserTab', | |
| compact('user','userdetail','user_addresses','user_bank_details','departments', | |
| 'teams','roles','shifts','organisations','editUserdetail','selectShift','teamArr', | |
| 'departmentArr','roleArr','attendances','attendanceArr','user_document_details', | |
| 'title','tab','users','secondaryManagerArr','leaveBalances','employee_id','employeeTeam', | |
| 'holidaylist','val','valUser','id','valTeam','empType','startDateEndDate','geoFenceUserLevel','platformUser')); | |
| } | |
| // Store attendance marking for user | |
| public function storeAttendanceUser(Request $request) | |
| { | |
| // if(auth()->user()->can('Edit Settings module')){ | |
| $platform_value = array_values(array_filter($request->only(['check1', 'check2', 'check3','check4']))); | |
| $Platform_check = json_encode($platform_value); | |
| $value = $request->input('check'); | |
| $user_id = $request->input('user_id'); | |
| $platform_check = $request->item_type; | |
| $platforms = explode(',', $platform_check); | |
| $valueToStore = json_encode($platforms); | |
| $keyexist=userSetting::where('name','attendance')->where('category','User')->where('user_id', $user_id)->exists(); | |
| if($keyexist){ | |
| userSetting::where('name','=','attendance')->where('category','=','User')->where('user_id', $user_id)->update(['value'=>$value,'Platform_check'=>$Platform_check]); | |
| // dd($id); | |
| } | |
| else{ | |
| userSetting::create(['name'=>"attendance", 'value'=> $value, 'category'=> 'User','user_id'=>$user_id,'Platform_check'=>$Platform_check]); | |
| // dd($value); | |
| } | |
| return redirect()->back()->with('success', "Attendance Setting Saved Successfully!"); | |
| // }else{ | |
| // return redirect()->back()->with('warning', "You don't have permission for edit it!"); | |
| // } | |
| } | |
| // Get attendance marking for User | |
| public function getAttendanceUser($id){ | |
| $valUser = userSetting::where('name','attendance') | |
| ->where('category','User') | |
| ->where('user_id',$id) | |
| ->first(); | |
| if ($valUser) { | |
| $valUser = $valUser->value; | |
| } else { | |
| $valUser = ''; | |
| } | |
| return $valUser; | |
| } | |
| /** | |
| * Update the specified resource in storage. | |
| * | |
| * @param \Illuminate\Http\Request $request | |
| * @param int $id | |
| * @return \Illuminate\Http\Response | |
| */ | |
| public function update(Request $request, $id) | |
| { | |
| } | |
| // Store Engagement type for user | |
| public function storeEngagementType(Request $request) | |
| { | |
| $user_id = $request->user_id; | |
| if(auth()->user()->can('Edit Settings module')){ | |
| $value = $request->input('emp_type'); | |
| UserDetail::where('user_id',$user_id)->update(['Engagement_Type'=>$value]); | |
| return redirect()->back()->with('success', "Engagement type Upadated Successfully!"); | |
| }else{ | |
| return redirect()->back()->with('warning', "You don't have permission for edit it!"); | |
| } | |
| } | |
| // Get Engagement type for User | |
| public function getEngagementType($id){ | |
| $empType = UserDetail::where('user_id',$id) | |
| ->first(); | |
| if ($empType) { | |
| $empType = $empType->Engagement_type; | |
| } else { | |
| $empType = ''; | |
| } | |
| return $empType; | |
| } | |
| public function getStartDateEndDate($id){ | |
| $startDate = User::where('id', $id) | |
| ->value('DOJ'); | |
| $endDate = User::where('id', $id) | |
| ->value('DOE'); | |
| // dd($startDate, $endDate); | |
| return [$startDate, $endDate]; | |
| } | |
| public function saveLocationsUser(Request $request) | |
| { | |
| $geofenceData = $request->input('geofence_data'); | |
| // $id=$geofenceData['userId']['user_id']; | |
| // $this->storeAttendanceUser($request,$id); | |
| if (auth()->user()->can('Edit Settings module')) { | |
| // dd($geofenceData['userId']['user_id']); | |
| $dataExist=userSetting::where('name','attendance')->where('category','User')->where('user_id', $geofenceData['userId']['user_id'])->exists(); | |
| if($dataExist){ | |
| userSetting::where('name','=','attendance')->where('category','=','User')->where('user_id', $geofenceData['userId']['user_id']) | |
| ->update(['check_in_lat'=>$geofenceData['checkin']['lat'], 'check_in_long'=>$geofenceData['checkin']['lng'], | |
| 'check_in_radius'=>$geofenceData['checkin']['radius'], 'check_in_address'=>$geofenceData['checkin']['location'], | |
| 'check_out_lat'=>$geofenceData['checkout']['lat'], 'check_out_long'=>$geofenceData['checkout']['lng'], | |
| 'check_out_radius'=>$geofenceData['checkout']['radius'], 'check_out_address'=>$geofenceData['checkout']['location']]); | |
| } | |
| else{ | |
| if (isset($geofenceData['userId']['attendance_value'])) { | |
| $value = $geofenceData['userId']['attendance_value']; | |
| }else{ | |
| $value = null; | |
| } | |
| userSetting::create(['name'=>"attendance", 'value'=> $value, 'category'=> 'User','user_id'=>$geofenceData['userId']['user_id'], | |
| 'check_in_lat'=>$geofenceData['checkin']['lat'], 'check_in_long'=>$geofenceData['checkin']['lng'], | |
| 'check_in_radius'=>$geofenceData['checkin']['radius'], 'check_in_address'=>$geofenceData['checkin']['location'], | |
| 'check_out_lat'=>$geofenceData['checkout']['lat'], 'check_out_long'=>$geofenceData['checkout']['lng'], | |
| 'check_out_radius'=>$geofenceData['checkout']['radius'], 'check_out_address'=>$geofenceData['checkout']['location']]); | |
| } | |
| return response()->json(['success' => true]); | |
| } else { | |
| return response()->json(['success' => false, 'error' => 'You do not have permission to edit settings.']); | |
| } | |
| } | |
| } |