HEX
Server: Apache/2.4.41 (Amazon) OpenSSL/1.0.2k-fips PHP/5.6.40
System: Linux ip-172-31-40-18 4.14.146-93.123.amzn1.x86_64 #1 SMP Tue Sep 24 00:45:23 UTC 2019 x86_64
User: apache (48)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: //var/www/html/punjabcabs/app/Http/Controllers/Resource/UserResource.php
<?php

namespace App\Http\Controllers\Resource;

use App\User;
use App\Provider;
use App\UserRequests;
use Illuminate\Http\Request;
use App\Helpers\Helper;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use App\Http\Controllers\Controller;
use Exception;
use Setting;

class UserResource extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $users = User::orderBy('created_at' , 'desc')->get();
        return view('admin.users.index', compact('users'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $providers = Provider::select('id','first_name','last_name','mobile')->get();
        return view('admin.users.create', compact('providers'));
    }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function user_row(Request $request){

        $columns = array( 
                            0 =>'id', 
                            1 =>'first_name',
                            2=> 'last_name',
                            3=> 'email',
                            4=> 'mobile',
                            5=> 'rating',
                            6=> 'wallet_balance',
                            7=> 'points',
                            8=> 'action',
                        );
       
        $totalData = User::count();
        $totalFiltered = $totalData; 

        $limit = $request->input('length');
        $start = $request->input('start');
        $order = $columns[$request->input('order.0.column')];
        $dir = $request->input('order.0.dir');

        if(empty($request->input('search.value')))
        {            
            $users = User::offset($start)
                     ->limit($limit)
                     ->orderBy('id','desc')
                     ->get();
        }
        else {
            $search = $request->input('search.value'); 

            $users =  User::where('first_name','LIKE',"%{$search}%")
                            ->orWhere('last_name', 'LIKE',"%{$search}%")
                            ->orWhere('email', 'LIKE',"%{$search}%")
                            ->orWhere('mobile', 'LIKE',"%{$search}%")
                            ->offset($start)
                            ->limit($limit)
                            ->orderBy('id','desc')
                            ->get();

            $totalFiltered = User::where('first_name','LIKE',"%{$search}%")
                            ->orWhere('last_name', 'LIKE',"%{$search}%")
                            ->orWhere('email', 'LIKE',"%{$search}%")
                            ->orWhere('mobile', 'LIKE',"%{$search}%")
                            ->count();
        }

        $data = array();
        if(!empty($users))
        {
            foreach ($users as $index => $user)
            {
            if($user->first_name != ''){ $first_name = $user->first_name;}else{$first_name = "";}
            if($user->last_name != ''){ $last_name = $user->last_name;}else{$last_name = "";}
            if($user->email != ''){ $email = $user->email;}else{$email = "";}
            if($user->mobile != ''){ $mobile = $user->mobile;}else{$mobile = "";}
            if($user->wallet_balance != ''){ $wallet_balance = currency().$user->wallet_balance;}else{$wallet_balance = "";}
            $points = '<span class="label label-table label-primary">'.$user->cancel_points.'</span>';
            $action = '<form action="'.route('admin.user.destroy', $user->id).'" method="POST">
                    '.csrf_field().'
                    <input type="hidden" name="_method" value="DELETE">
                    <a href="'. route('admin.user.request', $user->id).'" class="btn btn-info btn-rounded label-left b-a-0 waves-effect waves-light"><span class="btn-label"><i class="fa fa-search"></i></span>'.trans("admin.member.history").'</a>
                    <a href="'.route('admin.user.edit', $user->id).'" class="btn btn-success btn-rounded label-left b-a-0 waves-effect waves-light"><span class="btn-label"><i class="fa fa-pencil"></i></span>'.trans("admin.member.edit").'</a>
                    <button class="btn btn-danger btn-rounded label-left b-a-0 waves-effect waves-light" onclick="return confirm(`Are you sure?`)"><span class="btn-label"><i class="fa fa-trash"></i></span> '.trans("admin.member.delete").'</button>
                </form>';

                $nestedData['id'] = $start + 1;
                $nestedData['first_name'] = $first_name;
                $nestedData['last_name'] =  $last_name;
                $nestedData['email'] =  $email;
                $nestedData['mobile'] = $mobile;
                $nestedData['rating'] = $user->rating;
                $nestedData['wallet_balance'] = currency($user->wallet_balance);
                $nestedData['points'] = $points;
                $nestedData['action'] = $action;
                $data[] = $nestedData;
                $start++;
            }
        }
        $json_data = array(
                    "draw"            => intval($request->input('draw')),  
                    "recordsTotal"    => intval($totalData),  
                    "recordsFiltered" => intval($totalFiltered), 
                    "data"            => $data
                    );
            
        echo json_encode($json_data);     

    }


    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate($request, [
            'first_name' => 'required|max:255',
            'last_name' => 'required|max:255',
            'email' => 'required|unique:users,email|email|max:255',
            'mobile' => 'digits_between:6,13',
            'picture' => 'mimes:jpeg,jpg,bmp,png|max:5242880',
            'password' => 'required|min:6|confirmed',
        ]);

        try{

            $user = $request->all();

            $user['payment_mode'] = 'CASH';
            $user['password'] = bcrypt($request->password);
            $user['mobile'] = Setting::get('country_code', '+91').$request->mobile;
            $user['favourite_driver'] = implode(',',$request->favourite_driver);
            if($request->hasFile('picture')) {
                $user['picture'] = $request->picture->store('user/profile');
            }

            $user = User::create($user);

            return back()->with('flash_success','User Details Saved Successfully');

        } 

        catch (Exception $e) {
            return back()->with('flash_error', 'User Not Found');
        }
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\User  $user
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        try {
            $user = User::findOrFail($id);
            return view('admin.users.user-details', compact('user'));
        } catch (ModelNotFoundException $e) {
            return $e;
        }
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\User  $user
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        try {
            $user = User::findOrFail($id);
            $providers = Provider::select('id','first_name','last_name','mobile')->get();
            return view('admin.users.edit',compact('user','providers'));
        } catch (ModelNotFoundException $e) {
            return $e;
        }
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\User  $user
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $this->validate($request, [
            'first_name' => 'required|max:255',
            'last_name' => 'required|max:255',
            'mobile' => 'digits_between:6,13',
            'picture' => 'mimes:jpeg,jpg,bmp,png|max:5242880',
        ]);

        try {

            $user = User::findOrFail($id);

            if($request->hasFile('picture')) {
                Storage::delete($user->picture);
                $user->picture = $request->picture->store('user/profile');
            }

            $user->first_name = $request->first_name;
            $user->last_name = $request->last_name;
            $user->mobile = Setting::get('country_code', '+91').$request->mobile;
            $user->favourite_driver = implode(',',$request->favourite_driver);
            $user->save();

            return redirect()->route('admin.user.index')->with('flash_success', 'User Updated Successfully');    
        } 

        catch (ModelNotFoundException $e) {
            return back()->with('flash_error', 'User Not Found');
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\User  $user
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        
        try {

            User::find($id)->delete();
            return back()->with('message', 'User deleted successfully');
        } 
        catch (Exception $e) {
            return back()->with('flash_error', 'User Not Found');
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Provider  $provider
     * @return \Illuminate\Http\Response
     */
    public function request($id){

        try{

            $requests = UserRequests::where('user_requests.user_id',$id)
                    ->RequestHistory()
                    ->get();
            $user_id =  $id;
            $provider_id = '';      
            return view('admin.request.index', compact('requests','user_id','provider_id'));
        }

        catch (Exception $e) {
             return back()->with('flash_error','Something Went Wrong!');
        }

    }

}