429 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			429 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers\Agent\helpdesk;
 | |
| 
 | |
| // controllers
 | |
| use App\Http\Controllers\Controller;
 | |
| // requests
 | |
| /*  Include Sys_user Model  */
 | |
| use App\Http\Requests\helpdesk\ProfilePassword;
 | |
| /* For validation include Sys_userRequest in create  */
 | |
| use App\Http\Requests\helpdesk\ProfileRequest;
 | |
| /* For validation include Sys_userUpdate in update  */
 | |
| use App\Http\Requests\helpdesk\Sys_userRequest;
 | |
| /*  include guest_note model */
 | |
| use App\Http\Requests\helpdesk\Sys_userUpdate;
 | |
| // models
 | |
| use App\Model\helpdesk\Agent_panel\Organization;
 | |
| use App\Model\helpdesk\Agent_panel\User_org;
 | |
| use App\User;
 | |
| // classes
 | |
| use Auth;
 | |
| use Exception;
 | |
| use Hash;
 | |
| use Input;
 | |
| use Redirect;
 | |
| 
 | |
| /**
 | |
|  * UserController
 | |
|  * This controller is used to CRUD an User details, and proile management of an agent.
 | |
|  *
 | |
|  * @author      Ladybird <info@ladybirdweb.com>
 | |
|  */
 | |
| 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->errorInfo[2]);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 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 */
 | |
|                         ->searchColumns('user_name')
 | |
|                         /* order column username and email */
 | |
|                         ->orderColumns('user_name', 'email')
 | |
|                         /* column username */
 | |
|                         ->addColumn('user_name', function ($model) {
 | |
|                             if (strlen($model->user_name) > 20) {
 | |
|                                 $username = substr($model->user_name, 0, 30);
 | |
|                                 $username = substr($username, 0, strrpos($username, ' ')).' ...';
 | |
|                             } else {
 | |
|                                 $username = $model->user_name;
 | |
|                             }
 | |
| 
 | |
|                             return $username;
 | |
|                         })
 | |
|                         /* column email */
 | |
|                         ->addColumn('email', function ($model) {
 | |
|                             $email = $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 = '<button class="btn btn-success btn-xs">Active</button>';
 | |
|                             } else {
 | |
|                                 $stat = '<button class="btn btn-danger btn-xs">Inactive</button>';
 | |
|                             }
 | |
| 
 | |
|                             return $stat;
 | |
|                         })
 | |
|                         /* column ban status */
 | |
|                         ->addColumn('ban', function ($model) {
 | |
|                             $status = $model->ban;
 | |
|                             if ($status == 1) {
 | |
|                                 $stat = '<button class="btn btn-danger btn-xs">Banned</button>';
 | |
|                             } else {
 | |
|                                 $stat = '<button class="btn btn-success btn-xs">Active</button>';
 | |
|                             }
 | |
| 
 | |
|                             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 '<a href="'.route('user.edit', $model->id).'" class="btn btn-warning btn-xs">'.\Lang::get('lang.edit').'</a>  <a href="'.route('user.show', $model->id).'" class="btn btn-primary btn-xs">'.\Lang::get('lang.view').'</a>';
 | |
|                         })
 | |
|                         ->make();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Show the form for creating a new users.
 | |
|      *
 | |
|      * @return type view
 | |
|      */
 | |
|     public function create()
 | |
|     {
 | |
|         try {
 | |
|             return view('themes.default1.agent.helpdesk.user.create');
 | |
|         } 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->active = $request->input('active');
 | |
|         $user->internal_note = $request->input('internal_note');
 | |
|         $user->role = 'user';
 | |
|         try {
 | |
|             $user->save();
 | |
|             /* redirect to Index page with Success Message */
 | |
|             return redirect('user')->with('success', 'User  Created Successfully');
 | |
|         } catch (Exception $e) {
 | |
|             /* redirect to Index page with Fails Message */
 | |
|             return redirect('user')->with('fails', $e->errorInfo[2]);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Display the specified users.
 | |
|      *
 | |
|      * @param type int  $id
 | |
|      * @param type User $user
 | |
|      *
 | |
|      * @return type view
 | |
|      */
 | |
|     public function show($id, User $user)
 | |
|     {
 | |
|         try {
 | |
|             /* 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 view('404');
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Show the form for editing the specified resource.
 | |
|      *
 | |
|      * @param type int  $id
 | |
|      * @param type User $user
 | |
|      *
 | |
|      * @return type Response
 | |
|      */
 | |
|     public function edit($id, User $user)
 | |
|     {
 | |
|         try {
 | |
|             /* select the field where id = $id(request Id) */
 | |
|             $users = $user->whereId($id)->first();
 | |
| 
 | |
|             return view('themes.default1.agent.helpdesk.user.edit', compact('users'));
 | |
|         } catch (Exception $e) {
 | |
|             return redirect()->back()->with('fails', $e->errorInfo[2]);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 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, User $user, Sys_userUpdate $request)
 | |
|     {
 | |
| 
 | |
|         /* 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 {
 | |
|             $users->fill($request->input())->save();
 | |
|             /* redirect to Index page with Success Message */
 | |
|             return redirect('user')->with('success', 'User  Updated Successfully');
 | |
|         } catch (Exception $e) {
 | |
|             /* redirect to Index page with Fails Message */
 | |
|             return redirect()->back()->with('fails', $e->errorInfo[2]);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 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->errorInfo[2]);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * get profile edit page.
 | |
|      *
 | |
|      * @return type view
 | |
|      */
 | |
|     public function getProfileedit()
 | |
|     {
 | |
|         $user = Auth::user();
 | |
|         try {
 | |
|             return view('themes.default1.agent.helpdesk.user.profile-edit', compact('user'));
 | |
|         } catch (Exception $e) {
 | |
|             return redirect()->back()->with('fails', $e->errorInfo[2]);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 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 {
 | |
|                 $user->fill($request->except('profile_pic', 'gender'))->save();
 | |
| 
 | |
|                 return Redirect::route('profile')->with('success', 'Profile Updated sucessfully');
 | |
|             } catch (Exception $e) {
 | |
|                 return Redirect::route('profile')->with('success', $e->errorInfo[2]);
 | |
|             }
 | |
|         }
 | |
|         if ($user->fill($request->except('profile_pic'))->save()) {
 | |
|             return Redirect::route('profile')->with('success', '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', 'Password Updated sucessfully');
 | |
|             } catch (Exception $e) {
 | |
|                 return redirect('profile-edit')->with('fails', $e->errorInfo[2]);
 | |
|             }
 | |
|         } else {
 | |
|             return redirect('profile-edit')->with('fails1', '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;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 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;
 | |
|         }
 | |
|     }
 | |
| }
 | 
