Find us on facebook

Oct 12, 2017

navigation

<div class="navbar-default sidebar" role="navigation">
    <div class="sidebar-nav navbar-collapse">
        <ul class="nav" id="side-menu">
            <li class="sidebar-search">
                <div class="input-group custom-search-form">
                    <input type="text" class="form-control" placeholder="Search...">
                    <span class="input-group-btn">
                        <button class="btn btn-default" type="button">
                        <i class="fa fa-search"></i>
                        </button>
                    </span>
                </div>
                <!-- /input-group -->
            </li>
            <li>
                <a href="{!! url('/dashboard'); !!}"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a>
            </li>
            <li>
                <a href="#"><i class="fa fa-edit fa-fw"></i> Lists<span class="fa arrow"></span></a>
                <ul class="nav nav-second-level">
                @if(Auth::user()->user_level  == 1)
                    <li>
                          <a href="{!! url('/users/list'); !!}">Users</a>
                    </li>
                @endif
                </ul>
                <!-- /.nav-second-level -->
            </li>
        </ul>
    </div>
    <!-- /.sidebar-collapse -->
</div>
<!-- /.navbar-static-side -->

Update View

@extends('layouts.app')
@section('content')
<div class="row">
    <div class="col-lg-12">
        <h2 class="label-info"></h2>
    </div>
    <!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<div class="row">
    <div class="col-lg-12">
        <div class="panel panel-default">
            <div class="panel-heading">
                Update Profile
            </div>
            <!-- /.panel-heading -->
            <div class="panel-body">
                <p>
                    <form role="form" action="{!! url('/user/updateprofile'); !!}" method="post" enctype="multipart/form-data">
                        <input type="hidden" name="_token" value="{{ csrf_token() }}">
                        <input type="hidden" id="uid" name="uid" value="{{($profile['id']) ? $profile['id'] : ""}}">
                        <table class="table table-bordered table-striped">
                            <tbody>
                                <tr>
                                    <td><label>Profile Picture</label></td>
                                    <td><input type='file' id="prof_pic" name="prof_pic" />
                                <img id="profPic"  alt="your image" style="width: 100px;" src="{{ URL::asset(($profile['profile_image']) ? '/images/profiles/'.$profile['profile_image'] : '/images/profiles/profile.jpg') }}" /></td>
                            </tr>
                        </tbody>
                    </table>
                    <table class="table table-bordered table-striped">
                        <tbody>
                            <tr>
                                <td><label>Name</label></td>
                                <td colspan="3"><input class="form-control"  id ="name" name ="name" value="{{($profile['name']) ? $profile['name'] : ""}}"></td>
                            </tr>
                            <tr>
                                <td><label>Username</label></td>
                                <td><input class="form-control" disabled id ="username" name ="username" value="{{($profile['username']) ? $profile['username'] : ""}}"></td>
                                <td><label>User level</label></td>
                                <td><input class="form-control"  disabled id ="user_level" name ="user_level" value="{{($profile['user_level']) ? \Config::get('config.userLevel') [$profile['user_level']]: ""}}"></td>
                            </tr>
                            <tr>
                                <td><label>Email</label></td>
                                <td colspan="3"><input class="form-control"  id ="email" name ="email" value="{{($profile['email']) ? $profile['email'] : ""}}"></td>
                            </tr>
                            <tr>
                                <td><label>Phone No 1.</label></td>
                                <td><input class="form-control"  id ="phone_no1" name ="phone_no1" value="{{($profile['phone_no_1']) ? $profile['phone_no_1'] : ""}}"></td>
                                <td><label>Phone No 2.</label></td>
                                <td><input class="form-control"  id ="phone_no2" name ="phone_no2" value="{{($profile['phone_no_2']) ? $profile['phone_no_2'] : ""}}"></td>
                            </tr>
                            <tr>
                                <td><label>Address</label></td>
                                <td><textarea class="form-control" rows="2" id="address" name="address" >{{($profile['address']) ? $profile['address'] : ""}}</textarea></td>
                                <td><label>Date Joined</label></td>
                                <td><input class="form-control" disabled id ="date_joined" name ="date_joined" value="{{($profile['date_joined']) ? $profile['date_joined'] : ""}}"></td>
                            </tr>
                            <tr>
                                <td><label>Report to</label></td>
                                <td colspan="3"><input class="form-control"  id ="report_to" name ="report_to" value="{{($profile['report_to']) ? $profile['report_to'] : ""}}"></td>
                            </tr>
                        </tbody>
                    </table>
                    <button type="submit" class="btn btn-default btn-primary" id="profile_submit" style="float: right;">Save </button>
                    <div style="clear: both;"></div>
                </form>
            </p>
        </div>
        <!-- /.panel-body -->
    </div>
    <!-- /.panel -->
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<script type="text/javascript" src="{{ URL::asset('/js/app/user/app.user.profile.js') }}"></script>
@endsection

Repository

<?php

namespace App\Repositories;

use App\Contracts\UserInterface;
use App\User;
use Carbon\Carbon;
use Datatables;

class EloquentUserRepository implements UserInterface {

    /**
     * Create a new repository instance.
     *
     * @return void
     */
    public function __construct() {}

    /**
     * Get users datatable json
     * @return JSON Datatable json object
     */
    function data() {
        $users = User::select(array(
            'id',
            'name',
            'email',
            'user_level',
            'date_joined',
            'is_activated',

        ));

        return Datatables::of($users)
            ->make(true);

    }

    /**
     * Get user by user ID
     * @param  int $userId User ID
     * @return json object
     */
    function getUserById($userId) {
        $user = User::select(array(
            'id',
            'name',
            'username',
            'email',
            'address',
            'phone_no_1',
            'phone_no_2',
            'date_joined',
            'profile_image',
            'password',
            'user_level',
            'is_activated',
            'report_to',

        ))->where('users.id', '=', $userId)->first();

        return \Response::json($user);

    }

    function activate(Array $payload) {
        $user = User::where('id', $payload['uid'])->first();
        if (!empty($user) && !is_null($user)) {
            $currentDateTime = Carbon::now();
            $user->user_level = ($payload['user_level']) ? $payload['user_level'] : Null;
            $user->is_activated = ($payload['activate']) ? $payload['activate'] : 0;
            if ($payload['activate'] == 1 && $user->date_joined == NULL) {
                $user->date_joined = $currentDateTime;

            }
            $success = $user->save();
            return $success;
        }

    }

    function updateProfile(Array $payload) {
        $user = User::where('id', $payload['uid'])->first();

        if (!empty($user) && !is_null($user)) {
            if (!empty($payload['prof_pic'])) {
                $file = $payload['prof_pic'];
                $destination = public_path() . "/images/profiles/" . $payload['uid'];
                $ext = $file->getClientOriginalExtension();
                $filename_original = $file->getClientOriginalName();
                $filename = md5($filename_original) . '.' . $ext;
                $path = $destination . '/' . $filename;
                $uploaded = $file->move($destination, $filename);

                if ($uploaded) {
                    $user->profile_image = $payload['uid'] . "/" . $filename;
                }
            }

            $user->name = ($payload['name']) ? $payload['name'] : "";
            $user->email = ($payload['email']) ? $payload['email'] : "";
            $user->phone_no_1 = ($payload['phone_no1']) ? $payload['phone_no1'] : Null;
            $user->phone_no_2 = ($payload['phone_no2']) ? $payload['phone_no2'] : Null;
            $user->address = ($payload['address']) ? $payload['address'] : Null;
            $user->report_to = ($payload['report_to']) ? $payload['report_to'] : Null;

            $success = $user->save();
            return $success;
        }

    }

}

Interface

<?php

namespace App\Contracts;

interface UserInterface {

    /**
     * Get datatable json
     * @return JSON Datatable json object
     */
    public function data();

    /**
     * Get user by user id
     * @param  int $userId User ID
     * @return json object
     */
    public function getUserById($userId);

    public function activate(Array $payload);

    public function updateProfile(Array $payload);

}

Controller

<?php

namespace App\Http\Controllers;

use App\Contracts\CustomerInterface;
use App\Contracts\DashboardInterface;
use App\Contracts\UserInterface;
use Auth;
use Illuminate\Http\Request;

class UserController extends Controller {

    protected $customer;
    protected $dashboard;
    protected $user;
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct(CustomerInterface $customer, DashboardInterface $dashboard, UserInterface $user) {
        $this->middleware('auth');
        $this->customer = $customer;
        $this->dashboard = $dashboard;
        $this->user = $user;
    }

    /**
     * Show the user list.
     *
     * @return view
     */
    public function listUsers() {
        return view('user.list');
    }

    /**
     * Get users list data.
     *
     * @return view
     */
    public function data() {
        return $this->user->data();
    }

    /**
     * Get user by User id.
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function getUserById(Request $request) {

        return $this->user->getUserById($request->input('uid'));
    }

    /**
     * Process activate request.
     *
     * @return string
     */
    public function activate(Request $request) {
        $payload = [
            "uid" => $request->input('uid'),
            "user_level" => $request->input('user_level'),
            "activate" => $request->input('activate'),

        ];

        $success = ($this->user->activate($payload)) ? "true" : "false";

        return $success;
    }

    /**
     * user profile view.
     *
     * @return view
     */
    public function profile() {
        $profile = $this->user->getUserById(Auth::user()->id);
        $profileData = json_decode($profile->getContent(), true);
        return view('user.profile')->with("profile", $profileData);
    }

    /**
     * update user profile.
     *
     * @return view
     */
    public function updateProfile(Request $request) {

        $payload = [
            "uid" => $request->input('uid'),
            "prof_pic" => $request->file('prof_pic'),
            "name" => $request->input('name'),
            "username" => $request->input('username'),
            "user_level" => $request->input('user_level'),
            "email" => $request->input('email'),
            "phone_no1" => $request->input('phone_no1'),
            "phone_no2" => $request->input('phone_no2'),
            "address" => $request->input('address'),
            "date_joined" => $request->input('date_joined'),
            "report_to" => $request->input('report_to'),

        ];

        $success = ($this->user->updateProfile($payload)) ? "true" : "false";

        return redirect('/user/profile');
    }

}

Routes

Route::get('/user/profile', 'UserController@profile');
Route::post('/user/updateprofile', 'UserController@updateProfile');
Route::get('/clear-cache', function () {
    $exitCode = Artisan::call('cache:clear');
    // return what you want
});

Route::group(['middleware' => 'admin'], function () {
    Route::get('/users/list', 'UserController@listUsers');
    Route::get('/users/data', 'UserController@data');

    Route::post('/user', 'UserController@getUserById');
    Route::post('/user/activate', 'UserController@activate');
});

Register service provider

In config/app.php

App\Providers\RouteServiceProvider::class,



<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class TestServiceProvider extends ServiceProvider {
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot() {
        //
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register() {
        $this->app->bind('App\Contracts\AdvertisementInterface', 'App\Repositories\EloquentAdvertisementRepository');
           }
}