Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
CRAP
0.00% covered (danger)
0.00%
0 / 88
RoleController
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
380
0.00% covered (danger)
0.00%
0 / 88
 index
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 7
 rolelistdata
0.00% covered (danger)
0.00%
0 / 1
132
0.00% covered (danger)
0.00%
0 / 42
 create
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 8
 store
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 5
 show
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 edit
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 14
 update
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 7
 destroy
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 4
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Authorizable;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
use Illuminate\Support\Facades\Validator;
use App\Http\Controllers\Admin\flash;
use App\Models\Admin\UserDetail;
use Session;
use App\Helpers\AttendanceHelper;
class RoleController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $home= 'Home';
        $title = '/Setup/Roles';
        $backurl = route('home');
        // For Attendance Marking
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        return view('administrationForms.Role.RoleTable', compact('home','title','backurl','val','valTeam','valUser'));
    }
    public function rolelistdata(Request $request)
    {
        $column_key = array("0"=>"name","1"=>"","2" =>"");
        $where_condition = "1 = 1";
        $order_key              =   $request->input('order')[0]['column'];
        $order                  =   $column_key[$order_key];
        $dir                    =   $request->input('order')[0]['dir'];
        if(trim($dir)==''){
            $dir = 'desc';   
        }
        if ($order != '') {
            $orderBy = " ORDER BY ".$order." ".$dir;
        }
        if(null !==($request->input('search.value')) && trim($request->input('search.value'))!=''){
            $search = $request->input('search.value');
            $where_condition .= " AND (name Like '%$search%')";
        }
        $count_model = Role::whereRaw($where_condition)->count();
        $total_app_count        =   $count_model;
        $totalFiltered          =   $count_model; 
        $data_model = Role::whereRaw($where_condition)
              ->orderBy($order , $dir)
              ->offset( intval($request->input('start')))->limit(intval($request->input('length')))
              ->get();
     
        $data = array();
        if(count($data_model)>0){
            foreach($data_model as $database_model){
                $nestedData['name'] = $database_model->name;
                $nestedData['action'] = '-';
                $edit_link = '';
                if(auth()->user()->can('Edit Roles module'))
                {
                    $edit_route = route('role.edit',$database_model->id);
                    $edit_link = '<a href="'.$edit_route.'" data-original-title="Edit"> <i class="icon-pencil7" title="edit" style="color:#3699FF !important;"></i> </a>';
                    $nestedData['action'] = $edit_link;
                }
                if(auth()->user()->can('Delete Roles module'))
                {
                    $userRole = UserDetail::where('role_id','=',$database_model->id)->whereNull('deleted_at')->count();
                    $isused = '0';
                    if(isset($userRole) && !empty($userRole))
                    {
                        $isused = '1';
                    }
                   
                    $delete_link = '<a href="#" title="Delete" data-original-title="Delete" style="padding-left: 5px"; onclick="deleteRoles('.$database_model->id.','.$isused.');"><i class="icon-bin" style="color:#dc3545 !important;"></i></a>';
                    
                    $nestedData['action'] = $edit_link.'&nbsp;'.$delete_link;
                }
                $data[] = $nestedData;
            }
        }
       $json_data = array(
        "draw"            => intval( $request->input('draw')),   
        "recordsTotal"    => intval( $total_app_count ),  
        "recordsFiltered" => intval($total_app_count ),
        "data"            => $data,   // total data array
      );
      echo json_encode($json_data);exit;
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(Request $request)
    {
        $home= 'Home';
        $title = '/Setup/Create-Roles';
        $backurl = route('role.index');
        $createpermissions = Permission::get()->groupBy(['module_name','sub_heading_name']);
        // For Attendance Marking
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        return view('administrationForms.Role.RoleForm', compact( 'createpermissions','home','title','backurl','val','valTeam','valUser'));
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate($request, ['name' => 'required|unique:roles']);
        $role = Role::create($request->only('name'));
        $role->givePermissionTo($request->input(['permissions']));
        Session::flash('success', 'Role Added Successfully!');
        return redirect()->route('role.index');
    }
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit(Request $request, $id)
    {
        $home= 'Home';
        $title = '/Setup/Edit/Role';
        $backurl = route('role.index');
        $role = Role::where('id', $id)->with('permissions')->first();
        $permissions= Permission::get()->groupBy(['module_name','sub_heading_name']);
        // get already assigned permission
        $assignedPermissions = [];
        foreach ($role->permissions as $value)
        {
            $assignedPermissions[] = $value->name;
        }
        Session::flash('warning', 'Edit Role');
        // For Attendance Marking
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        return view('administrationForms.Role.RoleForm', compact('role', 'permissions','home',
                    'title','assignedPermissions','backurl','val','valTeam','valUser'))->with('role',Role::find($id));
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        Role::where('id',$id)->update($request->only('name'));
        $role = Role::findByName($request->input('name'));
        $permissionsList = ($request['permissions']);
        $role->syncPermissions($permissionsList);
        $role->givePermissionTo($permissionsList);
        Session::flash('success', 'Roles Updated Successfully!');
        return redirect()->route('role.index');
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy(Request $request)
    {
        $id = $request->id;
        $role = Role::find($id);
        $role->delete();
        return response()->json(['success_flag'=>1,'success_message'=>'Role Deleted Successfully']); 
    }
}