<?php
namespace App\Http\Controllers;
use Yajra\Datatables\Datatables as Datatables;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Facades\Excel;
use Validator;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Input;
use App\Helper\MailHelper as MailHelper;
use Notification;
use Auth;
use App\Models\User;
use App\Models\Settings\Organisation;
use App\Models\Settings\Department;
use App\Models\Settings\Section;
use App\Models\Settings\Roles;
use App\Models\Settings\Permissions;
use App\Models\Settings\RolePermission;
use App\Models\Settings\UserRoles;
use App\Models\Settings\MaterialType;
use App\Models\Settings\MaterialSubType;
use App\Models\Settings\RoleMaterialType;
use Jrean\UserVerification\Traits\VerifiesUsers;
use Jrean\UserVerification\Facades\UserVerification;
use Request as req;

class UserRegisterController extends Controller
{
    use VerifiesUsers;
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */

    /////role /////
    public function roles_creation()
    {
        $roles = Roles::all();
        return view('User/roles_creation', compact('roles'));
    }
    public function get_role_details(Request $request)
    {
        $columns = array(
            0=> 'id',
            1=> 'name',
            2=> 'guard_name',
            3=> 'level',
            4=> 'status',
            5=> 'action',
        );
        $totalData = Roles::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')))
        {            
            $posts = Roles::offset($start)
                         ->limit($limit)
                         ->orderBy('id','desc')
                         ->get();
        }
        else 
        {
            $search = $request->input('search.value'); 
            $posts =  Roles::where('name', 'LIKE',"%{$search}%")
                            ->orWhere('guard_name', 'LIKE',"%{$search}%")
                            ->offset($start)
                            ->limit($limit)
                            ->orderBy($order,$dir)
                            ->get();
            $totalFiltered = Roles::where('name', 'LIKE',"%{$search}%")
                            ->orWhere('guard_name', 'LIKE',"%{$search}%")
                            ->count();
        }
        $data = array();
        if(!empty($posts))
        {
            $status_val = "";
            $level_val  ="";
            $n = 0;
            foreach ($posts as $post)
            {   
                $n++;
                $status_val = $post->status;
                if($status_val == 1)
                {
                    $status = "Active";
                }               
                else
                {
                    $status = "Not Active";
                }
                $level_val = $post->level;
                if($level_val == 1)
                {
                    $level = "Level 1";
                }               
                else if($level_val == 2)
                {
                    $level = "Level 2";
                }
                else if($level_val == 3)
                {
                    $level = "Level 3";
                }
                else if($level_val == 4)
                {
                    $level = "Level 4";
                }
                else
                {
                    $level = "";
                }
                $nestedData['DT_RowIndex'] = $n;
                $nestedData['name'] = $post->name;
                $nestedData['guard_name'] = $post->guard_name;
                $nestedData['level'] = $level;
                $nestedData['status'] = $status;
                $nestedData['action'] = '<a href="'.url('show_role').'/'.$post->id.'" title="Update Role"><span style="color:blue;"><i class="fa fa-edit"></i></span></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#"  title="Delete Role" onClick="confirmDeleteRoles('.$post->id.');"><span style="color:red;"><i class="fa fa-btn fa-minus-circle"></i></span></a>';
                $data[] = $nestedData;
            }
        }
        $json_data = array(
                    "draw"            => intval($request->input('draw')),  
                    "recordsTotal"    => intval($totalData),  
                    "recordsFiltered" => intval($totalFiltered), 
                    "data"            => $data   
                    );
        echo json_encode($json_data); 
    }
    public function roles_creation_post(Request $request)
    {
        $messsages = array(
            'name.required'=>'Please enter name',
            );
        $rules = array(
            'name'=>'required|max:250',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $name=$request->name;
        $guard_name = $request->guard_name;
        $level = $request->level;
        $id = Auth::user()->id;
        $role_count = Roles::where('name',$name)->count();
        if($role_count==0)
        {
                $insert_id = Roles::create([
                    'name' => $name,
                    'guard_name' => $guard_name,
                    'level' => $level,
                    'status' => 1,
                ]);
        }
        if($insert_id)
            notify()->success('Role has been added');
        else
            smilify('Error', 'Role already exist');

        return redirect()->back();
    }
    public function show_role($id)
    {
        $roles = Roles::where('id',$id)->first();
        return view('User/show_role', compact('roles'));
    }
    public function show_role_post(Request $request)
    {
        $messsages = array(
            'name.required'=>'Please enter name',
            );
        $rules = array(
            'name'=>'required|max:250',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $name=$request->name;
        $guard_name = $request->guard_name;
        $role_id = $request->role_id;
        $level = $request->level;
        $status = $request->status;
        $id = Auth::user()->id;
        $upd_flg = 0;
        $roles = Roles::where('id',$role_id)->first();
        if(isset($roles))
        {
            $roles->name=$name;
            $roles->guard_name=$guard_name;
            $roles->status = $status;
            $roles->level = $level;
            $roles->save();
            $upd_flg = 1;
        }
        if($upd_flg)
            notify()->success('Role has been updated');
        else
            smilify('Error', '');

        return redirect('roles_creation');
    }
    public function delete_roles(Request $request)
    {
        $roleid = $request->roleid;
        $role_permission_count = RolePermission::where('role_id',$roleid)->count();
        if($role_permission_count==0)
        {
            $user_role_count = UserRoles::where('role_id',$roleid)->count();
            if($user_role_count==0)
            {
                $roles = Roles::where('id',$roleid)->first();
                if(isset($roles))
                {
                    $roles->status = 0;
                    $roles->save();
                }
                $roles_delete=Roles::where('id',$roleid)->delete();
                return 1;
            }
        }
        else
        {
            return 0;
        }
    }
    ///////////////////

    ////permission//////////////
    public function permission_creation()
    {
        $permissions = Permissions::all();
        return view('User/permission_creation', compact('permissions'));
    }
    public function get_permission_details(Request $request)
    {
        $columns = array(
            0=> 'id',
            1=> 'name',
            2=> 'guard_name',
            3=> 'status',
            4=> 'action',
        );
        $totalData = Permissions::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')))
        {            
            $posts = Permissions::offset($start)
                         ->limit($limit)
                         ->orderBy('id','desc')
                         ->get();
        }
        else 
        {
            $search = $request->input('search.value'); 
            $posts =  Permissions::where('type', 'LIKE',"%{$search}%")
                            ->orWhere('name', 'LIKE',"%{$search}%")
                            ->orWhere('guard_name', 'LIKE',"%{$search}%")
                            ->offset($start)
                            ->limit($limit)
                            ->orderBy($order,$dir)
                            ->get();
            $totalFiltered = Permissions::where('type', 'LIKE',"%{$search}%")
                            ->orWhere('name', 'LIKE',"%{$search}%")
                            ->orWhere('guard_name', 'LIKE',"%{$search}%")
                            ->count();
        }
        $data = array();
        if(!empty($posts))
        {
            foreach ($posts as $post)
            {   
                $status_val = $post->status;
                if($status_val == 1)
                {
                    $status = "Active";
                }               
                else
                {
                    $status = "Not Active";
                }
                $nestedData['DT_RowIndex'] = $post->id;
                $nestedData['name'] = $post->name;
                $nestedData['guard_name'] = $post->guard_name;
                $nestedData['status'] = $status;
                $nestedData['action'] = '<a href="'.url('show_permission').'/'.$post->id.'" title="Update Permissions"><span style="color:blue;"><i class="fa fa-edit"></i></span></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#"  title="Delete Permissions" onClick="confirmDeletePermissions('.$post->id.');"><span style="color:red;"><i class="fa fa-btn fa-minus-circle"></i></span></a>';
                $data[] = $nestedData;
            }
        }
        $json_data = array(
                    "draw"            => intval($request->input('draw')),  
                    "recordsTotal"    => intval($totalData),  
                    "recordsFiltered" => intval($totalFiltered), 
                    "data"            => $data   
                    );
        echo json_encode($json_data); 
    }
    public function permission_creation_post(Request $request)
    {
        $messsages = array(
            'name.required'=>'Please enter name',
            );
        $rules = array(
            'name'=>'required|max:191',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $name=$request->name;
        $guard_name = $request->guard_name;
        $id = Auth::user()->id;
        $permission_count = Permissions::where('name',$name)->count();
        if($permission_count==0)
        {
                $insert_id = Permissions::create([
                    'name' => $name,
                    'guard_name' => $guard_name,
                    'status' => 1,
                ]);
        }
        if($insert_id)
            notify()->success('Permission has been added');
        else
            smilify('Error', 'Permission already exist');

        return redirect()->back();
    }
    public function show_permission($id)
    {
        $permissions = Permissions::where('id',$id)->first();
        return view('User/show_permission', compact('permissions'));
    }
    public function show_permission_post(Request $request)
    {
        $messsages = array(
            'name.required'=>'Please enter name',
            );
        $rules = array(
            'name'=>'required|max:250',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $name=$request->name;
        $guard_name = $request->guard_name;
        $permission_id = $request->permission_id;
        $status = $request->status;
        $id = Auth::user()->id;
        $upd_flg = 0;
        $permissions = Permissions::where('id',$permission_id)->first();
        if(isset($permissions))
        {
            $permissions->name=$name;
            $permissions->guard_name=$guard_name;
            $permissions->status = $status;
            $permissions->save();
            $upd_flg = 1;
        }
        if($upd_flg)
            notify()->success('Permission has been updated');
        else
            smilify('Error', '');

        return redirect('permission_creation');
    }
    public function delete_permission(Request $request)
    {
        $permission_id = $request->permission_id;
        $role_permission_count = RolePermission::where('permission_id',$permission_id)->count();
        if($role_permission_count==0)
        {
            $permissions = Permissions::where('id',$permission_id)->first();
            if(isset($permissions))
            {
                $permissions->status = 0;
                $permissions->save();
            }
            $permission_delete=Permissions::where('id',$permission_id)->delete();
            return 1;         
        }
        else
        {
            return 0;
        }
    }
    ///////////////////////////

    ///role permission mapping/////////////////
    public function role_permission_mapping()
    {
        $roles = Roles::where('status',1)->get();
        $permissions = Permissions::where('status',1)->get();
        return view('User/role_permission_mapping', compact('roles','permissions'));
    }
    public function role_permission_mapping_post(Request $request)
    {
        $insert_role_permission_id="";
        $role_id = $request->role_id;
        $id = Auth::user()->id;
        $permissions = $request->permissions;
        foreach($permissions as $permission)
        {
            $role_permission_count = RolePermission::where('role_id',$role_id)->where('permission_id',$permission)->where('status',1)->count();
            if($role_permission_count==0)
            {
                $insert_role_permission_id = RolePermission::create([
                    'role_id' => $role_id,
                    'permission_id' => $permission,
                    'status' => 1,
                ]);
            }
        }
        
        if($insert_role_permission_id)  
            notify()->success('Permission has been added to Role');
        else
            smilify('Error','');
        return redirect()->back();
    }
    public function get_permission_data(Request $request)
    {
        $role_id = $request->role_id;
        $div_value ='<table class="table table-hover table-bordered table-striped datatable" width="100%">
                    <thead>
                    <tr>
                      <th>Slno</th>
                      <th>Permission</th>
                      <th>Actions</th>
                    </tr>';
        $n=0;
        $role_permission = RolePermission::where('role_id',$role_id)->with('permission')->get();
        foreach($role_permission as $role_permissions)
        {
            $n++;
            $permission_name = $role_permissions->permission->name;
            $div_value.='<tr>
                              <td>'.$n.'</td>
                              <td>'.$permission_name.'</td>
                              <td><a href="#" onclick="confirmDeleteRolePermissions('.$role_permissions->id.')"><span style="color:red;"><i class="fa fa-btn fa-minus-circle"></i></span></a> 
                              </td>
                        </tr>';
        }
        return $div_value;
    }
    public function delete_role_permission(Request $request)
    {
        $role_permission_id = $request->role_permission_id;
        $role_permission_delete=RolePermission::where('id',$role_permission_id)->delete();
        return 1;         
    }
    /////////////////////////////////////////

    ///role material type mapping/////////////////
    public function role_material_type_mapping()
    {
        $roles = Roles::where('status',1)->get();
        $organisations = Organisation::all();
        return view('User/role_material_type_mapping', compact('roles','organisations'));
    }
    public function role_material_type_mapping_post(Request $request)
    {
        $insert_role_materialtype_id="";
        $role_id = $request->role_id;
        $id = Auth::user()->id;
        $material_types = $request->material_type_id;
        foreach($material_types as $material_type)
        {
            $role_materialtype_count = RoleMaterialType::where('role_id',$role_id)->where('material_type_id',$material_type)->count();
            if($role_materialtype_count==0)
            {
                $insert_role_materialtype_id = RoleMaterialType::create([
                    'role_id' => $role_id,
                    'material_type_id' => $material_type,
                ]);
            }
        }
        
        if($insert_role_materialtype_id)  
            notify()->success('Material Type has been added to Role');
        else
            smilify('Error','');
        return redirect()->back();
    }
    public function get_role_material_type_data(Request $request)
    {
        $role_id = $request->role_id;
        $div_value ='<table class="table table-hover table-bordered table-striped datatable" width="100%">
                    <thead>
                    <tr>
                      <th>Slno</th>
                      <th>Material Type</th>
                      <th>Actions</th>
                    </tr>';
        $n=0;
        $role_materialtype = RoleMaterialType::where('role_id',$role_id)->with('materialtype')->get();
        foreach($role_materialtype as $role_materialtypes)
        {
            $n++;
            $material_type_name = $role_materialtypes->materialtype->material_type_name;
            $div_value.='<tr>
                              <td>'.$n.'</td>
                              <td>'.$material_type_name.'</td>
                              <td><a href="#" onclick="confirmDeleteRoleMaterialType('.$role_materialtypes->id.')"><span style="color:red;"><i class="fa fa-btn fa-minus-circle"></i></span></a> 
                              </td>
                        </tr>';
        }
        return $div_value;
    }
    public function delete_role_material_type(Request $request)
    {
        $role_materialtype_id = $request->role_materialtype_id;
        $role_materialType_delete=RoleMaterialType::where('id',$role_materialtype_id)->delete();
        return 1;         
    }
    /////////////////////////////////////////

    //////////user////////////////////////////
    public function user_registration()
    {
        $roles = Roles::where('status',1)->get();
        $users = User::with('userrole')->get();
        $organisations = Organisation::all();
        return view('User/user_registration', compact('roles','users','organisations'));
    }
    public function get_section($department_id)
    {
        $sections=Section::where('department_id',$department_id)->get();
        return $sections->pluck('section_name', 'id');
    }
    public function get_user_details(Request $request)
    {
        $columns = array(
            0=> 'id',
            1=> 'organisation_name',
            2=> 'department_name',
            3=> 'section_name',
            4=> 'name',
            5=> 'email',
            6=> 'roles',
            7=> 'status',
            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')))
        {            
            $posts = User::with('organisation','department','section')
                         ->offset($start)
                         ->limit($limit)
                         ->orderBy('id','desc')
                         ->get();
        }
        else 
        {
            $search = $request->input('search.value'); 
            $posts =  User::with('organisation','department','section')
                            ->where('name', 'LIKE',"%{$search}%")
                            ->orWhere('guard_name', 'LIKE',"%{$search}%")
                            ->offset($start)
                            ->limit($limit)
                            ->orderBy($order,$dir)
                            ->get();
            $totalFiltered = User::with('organisation','department','section')
                            ->where('name', 'LIKE',"%{$search}%")
                            ->orWhere('guard_name', 'LIKE',"%{$search}%")
                            ->count();
        }
        $data = array();
        if(!empty($posts))
        {
            $organisation_name = "";
            $department_name = "";
            $section_name = "";
            foreach ($posts as $post)
            {   
                $user_role_name = "";
                $status_val = $post->status;
                if($status_val == 1)
                {
                    $status = "Active";
                }               
                else
                {
                    $status = "Not Active";
                }
                $user_id = $post->id;
                $user_roles = UserRoles::where('user_id',$user_id)->with('role')->get();
                foreach($user_roles as $user_role)
                {
                    $role = $user_role->role->name;
                    if($user_role_name)
                    {
                        $user_role_name = $user_role_name.",".$role;
                    }
                    else
                    {
                        $user_role_name = $role;
                    }
                }
                if(isset($post->organisation_id))
                    $organisation_name = $post->organisation->organisation_name;
                if(isset($post->department_id))
                    $department_name = $post->department->department_name;
                if(isset($post->section_id))
                    $section_name = $post->section->section_name;
                $nestedData['DT_RowIndex'] = $post->id;
                $nestedData['organisation_name'] = $organisation_name;
                $nestedData['department_name'] = $department_name;
                $nestedData['section_name'] = $section_name;
                $nestedData['name'] = $post->name;
                $nestedData['email'] = $post->email;
                $nestedData['roles'] = $user_role_name;
                $nestedData['status'] = $status;
                $nestedData['action'] = '<a href="'.url('show_user').'/'.$post->id.'" title="Update User"><span style="color:blue;"><i class="fa fa-edit"></i></span></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#"  title="Delete User" onClick="confirmDeleteUser('.$post->id.');"><span style="color:red;"><i class="fa fa-btn fa-minus-circle"></i></span></a>';
                $data[] = $nestedData;
            }
        }
        $json_data = array(
                    "draw"            => intval($request->input('draw')),  
                    "recordsTotal"    => intval($totalData),  
                    "recordsFiltered" => intval($totalFiltered), 
                    "data"            => $data   
                    );
        echo json_encode($json_data); 
    }
    public function user_registration_post(Request $request)
    {
        $messsages = array(
            'name.required'=>'Please enter name',
            'email.required'=>'Please enter email id',
            'password.required'=>'Please enter password',
            'confirm_password.required'=>'Please enter confirm password',
            );
        $rules = array(
            'name'=>'required|max:191',
            'email'=>'required|max:191',
            'password'=>'required|max:191',
            'confirm_password'=>'required|max:191',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $name=$request->name;
        $emailid=$request->email;
        $password=$request->password;
        $cpassword=$request->confirm_password;
        $organisation_id = $request->organisation_id;
        $department_id = $request->department_id;
        $section_id = $request->section_id;
        //dd($request);
        $id = Auth::user()->id;
        $roles_count = 0;
        $user_upd_id ="";
        $user_count = User::withTrashed()->where('email',$emailid)->count();
        if($user_count==0)
        {
            if(!(strcmp($password, $cpassword)) == 0)
            {
                return redirect()->back()->with('status',"Password and confirm should be same.");
            }
            else
            {
                //////////////////////////////////////////////////////////////////////
                $newpassword = Hash::make($cpassword);
                $insert_id = User::create([
                    'organisation_id' => $organisation_id,
                    'department_id' => $department_id,
                    'section_id' => $section_id,
                    'name' => $name,
                    'email' => $emailid,
                    'password' => $newpassword,
                    'status' => 1,
                ]);
                $userid = $insert_id->id;
                if ($request->hasFile("photo")) 
                {
                    $fileobj=$request->file("photo")->getClientOriginalName();

                    $destpath="uploads/users";

                    $custom_file_name =$userid.'-'.$fileobj;

                    $path = $request->file("photo")->storeAs($destpath,$custom_file_name);

                    $uploadphoto = User::where('id',$userid)->update(['photo' => $path]);
                }
        
                $user_id = $insert_id->id;
                $roles = $request->roles;
                if($roles!=null)
                {
                    foreach($roles as $role)
                    {
                        $user_role_count = UserRoles::where('user_id',$user_id)->where('role_id',$role)->where('status',1)->count();
                        if($user_role_count==0)
                        {
                            $insert_user_role_id = UserRoles::create([
                                'user_id' => $user_id,
                                'role_id' => $role,
                                'status' => 1,
                            ]);
                        }
                    }
                }
                
                $subject="Test";
                $html="<div style='color: #343434; font-family: Open Sans; font-size: 20px; text-align: justify;'>Dear $name,<br><br>Your Login has been created. <br>Your username is your registered email address $emailid and password is $cpassword . </div>";
                $text=$html;
                $mailobj = new MailHelper();
                $result=$mailobj->sendmailbymailgun($subject,$html,$text,$emailid);

                UserVerification::generate($insert_id);
                UserVerification::send($insert_id, 'Verify Your Account');
                
            }
        }
        else
        {
            if(!(strcmp($password, $cpassword)) == 0)
            {
                return redirect()->back()->with('status',"Password and confirm should be same.");
            }
            else
            {
                ///update the user if the user is deleted. and inserted again ////
                $user_upd = User::withTrashed()->where('email',$emailid)->first();
                if(isset($user_upd))
                {
                    $user_upd_id = $user_upd->id;
                }
                if($user_upd_id)
                {
                    $newpassword = Hash::make($cpassword);
                    $user_pwd = User::withTrashed()->where('id',$user_upd_id)->first();
                    $user_pwd->status = 1;
                    $user_pwd->deleted_at = null;
                    $user_pwd->name = $name;
                    $user_pwd->password = $newpassword;
                    $user_pwd->organisation_id = $organisation_id;
                    $user_pwd->department_id = $department_id;
                    $user_pwd->section_id = $section_id;
                    $user_pwd->save();

                    $roles = $request->roles;
                    if($roles!=null)
                    {
                        $user_roles_del = UserRoles::where('user_id',$user_upd_id)->delete();
                        foreach($roles as $role)
                        {
                            $user_role_count = UserRoles::where('user_id',$user_upd_id)->where('role_id',$role)->where('status',1)->count();
                            if($user_role_count==0)
                            {
                                $insert_user_role_id = UserRoles::create([
                                    'user_id' => $user_upd_id,
                                    'role_id' => $role,
                                    'status' => 1,
                                ]);
                            }
                        }
                    }

                    $subject="Test";
                    $html="<div style='color: #343434; font-family: Open Sans; font-size: 20px; text-align: justify;'>Dear $name,<br><br>Your Login has been created. <br>Your username is your registered email address $emailid and password is $cpassword . </div>";
                    $text=$html;
                    $mailobj = new MailHelper();
                    $result=$mailobj->sendmailbymailgun($subject,$html,$text,$emailid);

                    UserVerification::generate($insert_id);
                    UserVerification::send($insert_id, 'Verify Your Account');
                }
            }
        }
        

        if($insert_id)  
            notify()->success('User has been added');
        elseif($user_pwd)  
            notify()->success('User has been updated');
        else
            smilify('Error','User with same email id exist');
        return redirect()->back();
    }   
    public function show_user($id)
    {
        $roles = Roles::where('status',1)->get();
        $users = User::where('id',$id)->with('userrole')->first();
        return view('User/show_user', compact('roles','users'));
    }
    public function show_user_post(Request $request)
    {
        /*$messsages = array(
            'name.required'=>'Please enter name',
            'email.required'=>'Please enter email id',
            'password.required'=>'Please enter password',
            'confirm_password.required'=>'Please enter confirm password',
            );
        $rules = array(
            'name'=>'required|max:191',
            'email'=>'required|max:191',
            'password'=>'required|max:191',
            'confirm_password'=>'required|max:191',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();*/
        $insert_id="";
        $name=$request->name;
        $email=$request->email;
        $password=$request->password;
        $cpassword=$request->confirm_password;
        $user_id = $request->user_id;
        $status = $request->status;
        //dd($request);
        $updflg = 0;
        $id = Auth::user()->id;
        $users = User::where('id',$user_id)->first();
        if(isset($users))
        {
            $updflg = 1;
            $users->name=$name;
            $users->email=$email;
            $users->status=$status;
            $users->save();

            if($password && $cpassword)
            {
                if(!(strcmp($password, $cpassword)) == 0)
                {
                    return redirect()->back()->with('status',"Password and confirm should be same.");
                }
                else
                {
                    if($cpassword)
                    {
                        $newpassword = Hash::make($cpassword);
                        $user_pwd = User::where('id',$user_id)->first();
                        $user_pwd->password = $newpassword;
                        $user_pwd->save();
                    }
                }
            }
            $roles = $request->roles;
            $user_role_del = UserRoles::where('user_id',$user_id)->delete();
            foreach($roles as $role)
            {

                $user_role_count = UserRoles::where('user_id',$user_id)->where('role_id',$role)->where('status',1)->count();
                if($user_role_count==0)
                {
                    $insert_user_role_id = UserRoles::create([
                        'user_id' => $user_id,
                        'role_id' => $role,
                        'status' => 1,
                    ]);
                }
            }
        }
        if($updflg==1)  
            notify()->success('User has been updated');
        else
            smilify('Error','');

        /*$subject="Test";
        $html="<div style='color: #343434; font-family: Open Sans; font-size: 20px; text-align: justify;'>Dear $name,<br><br>Your Login has been created. <br>Your username is your registered email address $emailid and password is $passwordkey </div>";
        $text=$html;
        $mailobj = new MailHelper();
        $result=$mailobj->sendmailbymailgun($subject,$html,$text,$emailid);*/

        return redirect('user_registration');
    }
    public function delete_user(Request $request)
    {
        $user_id = $request->user_id;
        $user_roles = UserRoles::where('user_id',$user_id)->get();
        foreach($user_roles as $user_role)
        {
            $user_role_id = $user_role->id;
            $user_roles_del = UserRoles::where('id',$user_role_id)->delete();
        }
        $users = User::where('id',$user_id)->first();
        if(isset($users))
        {
            $users->status = 0;
            $users->verified = 0;
            $users->verification_token = null;
            $users->save();
        }
        $user_delete=User::where('id',$user_id)->delete();
        return 1;         
        
    }
    ///////////////////////////////////////////////////////
    
}
