299 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			299 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers\Agent\kb;
 | |
| 
 | |
| // Controllersuse App\Http\Controllers\Agent\helpdesk\TicketController;
 | |
| use App\Http\Controllers\Controller;
 | |
| // Request
 | |
| use App\Http\Requests\kb\ProfilePassword;
 | |
| use App\Http\Requests\kb\ProfileRequest;
 | |
| use App\Http\Requests\kb\SettingsRequests;
 | |
| use App\Model\helpdesk\Utility\Date_format;
 | |
| // Model
 | |
| use App\Model\helpdesk\Utility\Timezones;
 | |
| use App\Model\kb\Comment;
 | |
| use App\Model\kb\Settings;
 | |
| use Auth;
 | |
| // Classes
 | |
| use Config;
 | |
| use Exception;
 | |
| use Hash;
 | |
| use Illuminate\Http\Request;
 | |
| use Image;
 | |
| use Input;
 | |
| 
 | |
| /**
 | |
|  * SettingsController
 | |
|  * This controller is used to perform settings in the setting page of knowledgebase.
 | |
|  *
 | |
|  * @author     	Ladybird <info@ladybirdweb.com>
 | |
|  */
 | |
| class SettingsController 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 roles
 | |
|         $this->middleware('roles');
 | |
|         $this->language();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * to get the settings page.
 | |
|      *
 | |
|      * @return response
 | |
|      */
 | |
|     public function settings(Settings $settings, Timezones $time, Date_format $date)
 | |
|     {
 | |
|         /* get the setting where the id == 1 */
 | |
|         $settings = $settings->whereId('1')->first();
 | |
|         $time = $time->get();
 | |
|         //$date = $date->get();
 | |
|         return view('themes.default1.agent.kb.settings.settings', compact('date', 'settings', 'time'));
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Update the specified resource in storage.
 | |
|      *
 | |
|      * @param int $id
 | |
|      *
 | |
|      * @return Response
 | |
|      */
 | |
|     public function postSettings($id, Settings $settings, SettingsRequests $request)
 | |
|     {
 | |
|         try {
 | |
|             /* fetch the values of company request  */
 | |
|             $settings = $settings->whereId('1')->first();
 | |
|             if (Input::file('logo')) {
 | |
|                 $name = Input::file('logo')->getClientOriginalName();
 | |
|                 $destinationPath = 'lb-faveo/dist/image';
 | |
|                 $fileName = rand(0000, 9999).'.'.$name;
 | |
|                 //echo $fileName;
 | |
|                 Input::file('logo')->move($destinationPath, $fileName);
 | |
|                 $settings->logo = $fileName;
 | |
|                 //$thDestinationPath = 'dist/th';
 | |
|                 Image::make($destinationPath.'/'.$fileName, [
 | |
|                     'width'     => 300,
 | |
|                     'height'    => 300,
 | |
|                     'grayscale' => false,
 | |
|                 ])->save('lb-faveo/dist/image/'.$fileName);
 | |
|             }
 | |
|             if (Input::file('background')) {
 | |
|                 $name = Input::file('background')->getClientOriginalName();
 | |
|                 $destinationPath = 'lb-faveo/dist/image';
 | |
|                 $fileName = rand(0000, 9999).'.'.$name;
 | |
|                 echo $fileName;
 | |
|                 Input::file('background')->move($destinationPath, $fileName);
 | |
|                 $settings->background = $fileName;
 | |
|                 //$thDestinationPath = 'dist/th';
 | |
|                 Image::make($destinationPath.'/'.$fileName, [
 | |
|                     'width'     => 300,
 | |
|                     'height'    => 300,
 | |
|                     'grayscale' => false,
 | |
|                 ])->save('lb-faveo/dist/image/'.$fileName);
 | |
|             }
 | |
|             /* Check whether function success or not */
 | |
|             if ($settings->fill($request->except('logo', 'background'))->save() == true) {
 | |
|                 /* redirect to Index page with Success Message */
 | |
|                 return redirect('settings')->with('success', 'Settings Updated Successfully');
 | |
|             } else {
 | |
|                 /* redirect to Index page with Fails Message */
 | |
|                 return redirect('settings')->with('fails', 'Settings can not Updated');
 | |
|             }
 | |
|         } catch (Exception $e) {
 | |
|             /* redirect to Index page with Fails Message */
 | |
|             return redirect('settings')->with('fails', 'Settings can not Updated');
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * To Moderate the commenting.
 | |
|      *
 | |
|      * @param type Comment $comment
 | |
|      *
 | |
|      * @return Response
 | |
|      */
 | |
|     public function comment(Comment $comment)
 | |
|     {
 | |
|         return view('themes.default1.agent.kb.settings.comment');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * getdata.
 | |
|      *
 | |
|      * @return type
 | |
|      */
 | |
|     public function getData()
 | |
|     {
 | |
|         return \Datatable::collection(Comment::All())
 | |
|                         ->searchColumns('name', 'email', 'comment', 'created')
 | |
|                         ->orderColumns('name')
 | |
|                         ->addColumn('name', function ($model) {
 | |
|                             return $model->name;
 | |
|                         })
 | |
|                         ->addColumn('email', function ($model) {
 | |
|                             return $model->email;
 | |
|                         })
 | |
|                         ->addColumn('website', function ($model) {
 | |
|                             return $model->website;
 | |
|                         })
 | |
|                         ->addColumn('comment', function ($model) {
 | |
|                             return $model->comment;
 | |
|                         })
 | |
|                         ->addColumn('status', function ($model) {
 | |
|                             $status = $model->status;
 | |
|                             if ($status == 1) {
 | |
|                                 return '<p style="color:blue"">'.\Lang::get('lang.published');
 | |
|                             } else {
 | |
|                                 return '<p style="color:red"">'.\Lang::get('lang.not_published');
 | |
|                             }
 | |
|                         })
 | |
|                         ->addColumn('Created', function ($model) {
 | |
|                             return TicketController::usertimezone(date($model->created_at));
 | |
|                         })
 | |
|                         ->addColumn('Actions', function ($model) {
 | |
|                             return '<a href=comment/delete/'.$model->id.' class="btn btn-danger btn-xs">'.\Lang::get('lang.delete').'</a> <a href=published/'.$model->id.' class="btn btn-warning btn-xs">'.\Lang::get('lang.publish').'</a>';
 | |
|                         })
 | |
|                         ->make();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Admin can publish the comment.
 | |
|      *
 | |
|      * @param type         $id
 | |
|      * @param type Comment $comment
 | |
|      *
 | |
|      * @return bool
 | |
|      */
 | |
|     public function publish($id, Comment $comment)
 | |
|     {
 | |
|         $comment = $comment->whereId($id)->first();
 | |
|         $comment->status = 1;
 | |
|         if ($comment->save()) {
 | |
|             return redirect('comment')->with('success', $comment->name.'-'.'Comment Published');
 | |
|         } else {
 | |
|             return redirect('comment')->with('fails', 'Can not Process');
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * delete the comment.
 | |
|      *
 | |
|      * @param type         $id
 | |
|      * @param type Comment $comment
 | |
|      *
 | |
|      * @return type
 | |
|      */
 | |
|     public function delete($id, Comment $comment)
 | |
|     {
 | |
|         $comment = $comment->whereId($id)->first();
 | |
|         if ($comment->delete()) {
 | |
|             return redirect('comment')->with('success', $comment->name."'s!".'Comment Deleted');
 | |
|         } else {
 | |
|             return redirect('comment')->with('fails', 'Can not Process');
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * get profile page.
 | |
|      *
 | |
|      * @return type view
 | |
|      */
 | |
|     public function getProfile()
 | |
|     {
 | |
|         $time = Timezone::all();
 | |
|         $user = Auth::user();
 | |
| 
 | |
|         return view('themes.default1.agent.kb.settings.profile', compact('user', 'time'));
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Post profile page.
 | |
|      *
 | |
|      * @param type ProfileRequest $request
 | |
|      *
 | |
|      * @return type redirect
 | |
|      */
 | |
|     public function postProfile(ProfileRequest $request)
 | |
|     {
 | |
|         $user = Auth::user();
 | |
|         $user->gender = $request->input('gender');
 | |
|         $user->save();
 | |
|         if (is_null($user->profile_pic)) {
 | |
|             if ($request->input('gender') == 1) {
 | |
|                 $name = 'avatar5.png';
 | |
|                 $destinationPath = 'lb-faveo/dist/img';
 | |
|                 $user->profile_pic = $name;
 | |
|             } elseif ($request->input('gender') == 0) {
 | |
|                 $name = 'avatar2.png';
 | |
|                 $destinationPath = 'lb-faveo/dist/img';
 | |
|                 $user->profile_pic = $name;
 | |
|             }
 | |
|         }
 | |
|         if (Input::file('profile_pic')) {
 | |
|             //$extension = Input::file('profile_pic')->getClientOriginalExtension();
 | |
|             $name = Input::file('profile_pic')->getClientOriginalName();
 | |
|             $destinationPath = 'lb-faveo/dist/img';
 | |
|             $fileName = rand(0000, 9999).'.'.$name;
 | |
|             //echo $fileName;
 | |
|             Input::file('profile_pic')->move($destinationPath, $fileName);
 | |
|             $user->profile_pic = $fileName;
 | |
|         } else {
 | |
|             $user->fill($request->except('profile_pic', 'gender'))->save();
 | |
| 
 | |
|             return redirect()->back()->with('success1', 'Profile Updated sucessfully');
 | |
|         }
 | |
|         if ($user->fill($request->except('profile_pic'))->save()) {
 | |
|             return redirect('profile')->with('success1', 'Profile Updated sucessfully');
 | |
|         } else {
 | |
|             return redirect('profile')->with('fails1', 'Profile Not Updated sucessfully');
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * post profile password.
 | |
|      *
 | |
|      * @param type                 $id
 | |
|      * @param type ProfilePassword $request
 | |
|      *
 | |
|      * @return type redirect
 | |
|      */
 | |
|     public function postProfilePassword($id, ProfilePassword $request)
 | |
|     {
 | |
|         $user = Auth::user();
 | |
|         //echo $user->password;
 | |
| 
 | |
|         if (Hash::check($request->input('old_password'), $user->getAuthPassword())) {
 | |
|             $user->password = Hash::make($request->input('new_password'));
 | |
|             $user->save();
 | |
| 
 | |
|             return redirect('profile')->with('success2', 'Password Updated sucessfully');
 | |
|         } else {
 | |
|             return redirect('profile')->with('fails2', 'Old password Wrong');
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * het locale for language.
 | |
|      *
 | |
|      * @return type config set
 | |
|      */
 | |
|     public static function language()
 | |
|     {
 | |
|         // $set = Settings::whereId(1)->first();
 | |
|         // $lang = $set->language;
 | |
|         Config::set('app.locale', 'en');
 | |
|         Config::get('app');
 | |
|     }
 | |
| }
 | 
