*/ class UserController extends Controller { /** * Create a new controller instance. * constructor to check * 1. authentication * 2. user roles * 3. roles must be agent. * * @return void */ public function __construct() { // checking authentication $this->middleware('auth'); // checking if role is agent $this->middleware('role.agent'); } /** * Display all list of the users. * * @param type User $user * * @return type view */ public function index() { try { /* get all values in Sys_user */ return view('themes.default1.agent.helpdesk.user.index'); } catch (Exception $e) { return redirect()->back()->with('fails', $e->getMessage()); } } /** * This function is used to display the list of users using chumper datatables. * * @return datatable */ public function user_list() { // displaying list of users with chumper datatables return \Datatable::collection(User::where('role', '!=', 'admin')->where('role', '!=', 'agent')->get()) /* searchable column username and email */ ->searchColumns('user_name', 'email', 'phone') /* order column username and email */ ->orderColumns('user_name', 'email') /* column username */ ->addColumn('user_name', function ($model) { $string = strip_tags($model->user_name); if (strlen($string) > 10) { // truncate string $stringCut = substr($string, 0, 10); } else { $stringCut = $model->user_name; } return $stringCut; }) /* column email */ ->addColumn('email', function ($model) { $email = "id)."'>".$model->email.''; return $email; }) /* column phone */ ->addColumn('phone', function ($model) { $phone = ''; if ($model->phone_number) { $phone = $model->ext.' '.$model->phone_number; } $mobile = ''; if ($model->mobile) { $mobile = $model->mobile; } $phone = $phone.'   '.$mobile; return $phone; }) /* column account status */ ->addColumn('status', function ($model) { $status = $model->active; if ($status == 1) { $stat = ''; } else { $stat = ''; } return $stat; }) /* column ban status */ ->addColumn('ban', function ($model) { $status = $model->ban; if ($status == 1) { $stat = ''; } else { $stat = ''; } return $stat; }) /* column last login date */ ->addColumn('lastlogin', function ($model) { $t = $model->updated_at; return TicketController::usertimezone($t); }) /* column actions */ ->addColumn('Actions', function ($model) { return ''.\Lang::get('lang.edit').'  '.\Lang::get('lang.view').''; }) ->make(); } /** * Show the form for creating a new users. * * @return type view */ public function create(CountryCode $code) { try { $location = GeoIP::getLocation(''); $phonecode = $code->where('iso', '=', $location['isoCode'])->first(); return view('themes.default1.agent.helpdesk.user.create')->with('phonecode', $phonecode->phonecode); } catch (Exception $e) { return redirect()->back()->with('fails', $e->errorInfo[2]); } } /** * Store a newly created users in storage. * * @param type User $user * @param type Sys_userRequest $request * * @return type redirect */ public function store(User $user, Sys_userRequest $request) { /* insert the input request to sys_user table */ /* Check whether function success or not */ $user->email = $request->input('email'); $user->user_name = $request->input('full_name'); $user->mobile = $request->input('mobile'); $user->ext = $request->input('ext'); $user->phone_number = $request->input('phone_number'); $user->country_code = $request->input('country_code'); $user->active = $request->input('active'); $user->internal_note = $request->input('internal_note'); $user->role = 'user'; try { if ($request->get('country_code') == '' && ($request->get('phone_number') != '' || $request->get('mobile') != '')) { return redirect()->back()->with(['fails' => Lang::get('lang.country-code-required-error'), 'country_code_error' => 1])->withInput(); } else { $code = CountryCode::select('phonecode')->where('phonecode', '=', $request->get('country_code'))->get(); if (!count($code)) { return redirect()->back()->with(['fails' => Lang::get('lang.incorrect-country-code-error'), 'country_code_error' => 1])->withInput(); } } $user->save(); /* redirect to Index page with Success Message */ return redirect('user')->with('success', Lang::get('lang.User-Created-Successfully')); } catch (Exception $e) { /* redirect to Index page with Fails Message */ return redirect('user')->with('fails', $e->getMessage()); } } /** * Display the specified users. * * @param type int $id * @param type User $user * * @return type view */ public function show($id) { try { $user = new User(); /* select the field where id = $id(request Id) */ $users = $user->whereId($id)->first(); return view('themes.default1.agent.helpdesk.user.show', compact('users')); } catch (Exception $e) { return redirect()->back()->with('fails', $e->getMessage()); } } /** * Show the form for editing the specified resource. * * @param type int $id * @param type User $user * * @return type Response */ public function edit($id, CountryCode $code) { try { $user = new User(); /* select the field where id = $id(request Id) */ $users = $user->whereId($id)->first(); $location = GeoIP::getLocation(''); $phonecode = $code->where('iso', '=', $location['isoCode'])->first(); return view('themes.default1.agent.helpdesk.user.edit', compact('users'))->with('phonecode', $phonecode->phonecode); } catch (Exception $e) { return redirect()->back()->with('fails', $e->getMessage()); } } /** * Update the specified user in storage. * * @param type int $id * @param type User $user * @param type Sys_userUpdate $request * * @return type Response */ public function update($id, Sys_userUpdate $request) { $user = new User(); /* select the field where id = $id(request Id) */ $users = $user->whereId($id)->first(); /* Update the value by selected field */ /* Check whether function success or not */ try { if ($request->get('country_code') == '' && ($request->get('phone_number') != '' || $request->get('mobile') != '')) { return redirect()->back()->with(['fails' => Lang::get('lang.country-code-required-error'), 'country_code_error' => 1])->withInput(); } else { $code = CountryCode::select('phonecode')->where('phonecode', '=', $request->get('country_code'))->get(); if (!count($code)) { return redirect()->back()->with(['fails' => Lang::get('lang.incorrect-country-code-error'), 'country_code_error' => 1])->withInput(); } else { $users->country_code = $request->country_code; } } // dd($request->input()); $users->fill($request->input())->save(); /* redirect to Index page with Success Message */ return redirect('user')->with('success', Lang::get('lang.User-profile-Updated-Successfully')); } catch (Exception $e) { /* redirect to Index page with Fails Message */ return redirect()->back()->with('fails', $e->getMessage()); } } /** * get agent profile page. * * @return type view */ public function getProfile() { $user = Auth::user(); try { return view('themes.default1.agent.helpdesk.user.profile', compact('user')); } catch (Exception $e) { return redirect()->back()->with('fails', $e->getMessage()); } } /** * get profile edit page. * * @return type view */ public function getProfileedit(CountryCode $code) { $user = Auth::user(); $location = GeoIP::getLocation(''); $phonecode = $code->where('iso', '=', $location['isoCode'])->first(); try { return view('themes.default1.agent.helpdesk.user.profile-edit', compact('user'))->with('phonecode', $phonecode->phonecode); } catch (Exception $e) { return redirect()->back()->with('fails', $e->getMessage()); } } /** * post profile edit. * * @param type int $id * @param type ProfileRequest $request * * @return type Redirect */ public function postProfileedit(ProfileRequest $request) { // geet authenticated user details $user = Auth::user(); $user->gender = $request->input('gender'); $user->save(); // checking availability of agent profile ppicture if ($user->profile_pic == 'avatar5.png' || $user->profile_pic == 'avatar2.png') { if ($request->input('gender') == 1) { $name = 'avatar5.png'; $destinationPath = 'lb-faveo/media/profilepic'; $user->profile_pic = $name; } elseif ($request->input('gender') == 0) { $name = 'avatar2.png'; $destinationPath = 'lb-faveo/media/profilepic'; $user->profile_pic = $name; } } // checking if the post system includes agent profile picture upload if (Input::file('profile_pic')) { // fetching picture name $name = Input::file('profile_pic')->getClientOriginalName(); // fetching upload destination path $destinationPath = 'lb-faveo/media/profilepic'; // adding a random value to profile picture filename $fileName = rand(0000, 9999).'.'.$name; // moving the picture to a destination folder Input::file('profile_pic')->move($destinationPath, $fileName); // saving filename to database $user->profile_pic = $fileName; } else { try { if ($request->get('country_code') == '' && ($request->get('phone_number') != '' || $request->get('mobile') != '')) { return redirect()->back()->with(['fails' => Lang::get('lang.country-code-required-error'), 'country_code_error' => 1])->withInput(); } else { $code = CountryCode::select('phonecode')->where('phonecode', '=', $request->get('country_code'))->get(); if (!count($code)) { return redirect()->back()->with(['fails' => Lang::get('lang.incorrect-country-code-error'), 'country_code_error' => 1])->withInput(); } $user->country_code = $request->country_code; } $user->fill($request->except('profile_pic', 'gender'))->save(); return Redirect::route('profile')->with('success', Lang::get('lang.Profile-Updated-sucessfully')); } catch (Exception $e) { return Redirect::route('profile')->with('success', $e->getMessage()); } } if ($user->fill($request->except('profile_pic'))->save()) { return Redirect::route('profile')->with('success', Lang::get('lang.Profile-Updated-sucessfully')); } } /** * Post profile password. * * @param type int $id * @param type ProfilePassword $request * * @return type Redirect */ public function postProfilePassword($id, ProfilePassword $request) { // get authenticated user $user = Auth::user(); // checking if the old password matches the new password if (Hash::check($request->input('old_password'), $user->getAuthPassword())) { $user->password = Hash::make($request->input('new_password')); try { $user->save(); return redirect('profile-edit')->with('success1', Lang::get('lang.password_updated_sucessfully')); } catch (Exception $e) { return redirect('profile-edit')->with('fails', $e->getMessage()); } } else { return redirect('profile-edit')->with('fails1', Lang::get('lang.password_was_not_updated_incorrect_old_password')); } } /** * Assigning an user to an organization. * * @param type $id * * @return type boolean */ public function UserAssignOrg($id) { $org = Input::get('org'); $user_org = new User_org(); $user_org->org_id = $org; $user_org->user_id = $id; $user_org->save(); return 1; } public function orgAssignUser($id) { $org = Input::get('org'); $user_org = new User_org(); $user_org->org_id = $id; $user_org->user_id = $org; $user_org->save(); return 1; } public function removeUserOrg($id) { $user_org = User_org::where('org_id', '=', $id)->first(); $user_org->delete(); return redirect()->back()->with('success1', Lang::get('lang.the_user_has_been_removed_from_this_organization')); } /** * creating an organization in user profile page via modal popup. * * @param type $id * * @return type */ public function User_Create_Org($id) { // checking if the entered value for website is available in database if (Input::get('website') != null) { // checking website $check = Organization::where('website', '=', Input::get('website'))->first(); } else { $check = null; } // checking if the name is unique $check2 = Organization::where('name', '=', Input::get('name'))->first(); // if any of the fields is not available then return false if (\Input::get('name') == null) { return 'Name is required'; } elseif ($check2 != null) { return 'Name should be Unique'; } elseif ($check != null) { return 'Website should be Unique'; } else { // storing organization details and assigning the current user to that organization $org = new Organization(); $org->name = Input::get('name'); $org->phone = Input::get('phone'); $org->website = Input::get('website'); $org->address = Input::get('address'); $org->internal_notes = Input::get('internal'); $org->save(); $user_org = new User_org(); $user_org->org_id = $org->id; $user_org->user_id = $id; $user_org->save(); // for success return 0 return 0; } } }