You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
3.6 KiB
99 lines
3.6 KiB
<?php
|
|
|
|
namespace App\Http\Controllers\Vendor;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\EmployeeRole;
|
|
use Brian2694\Toastr\Facades\Toastr;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use App\CentralLogics\Helpers;
|
|
use Illuminate\Validation\Rule;
|
|
|
|
class CustomRoleController extends Controller
|
|
{
|
|
public function create()
|
|
{
|
|
$rl=EmployeeRole::where('restaurant_id',Helpers::get_restaurant_id())->orderBy('name')->paginate(config('default_pagination'));
|
|
return view('vendor-views.custom-role.create',compact('rl'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'modules'=>'required|array|min:1',
|
|
'name' => [
|
|
'required','string',Rule::unique('employee_roles')->where(function($query) {
|
|
$query->where('restaurant_id', Helpers::get_restaurant_id());
|
|
})
|
|
],
|
|
],[
|
|
'name.required'=>translate('messages.Role name is required!'),
|
|
'modules.required'=>translate('messages.Please select atleast one module')
|
|
]);
|
|
DB::table('employee_roles')->insert([
|
|
'name'=>$request->name,
|
|
'modules'=>json_encode($request['modules']),
|
|
'status'=>1,
|
|
'restaurant_id'=>Helpers::get_restaurant_id(),
|
|
'created_at'=>now(),
|
|
'updated_at'=>now()
|
|
]);
|
|
|
|
Toastr::success(translate('messages.role_added_successfully'));
|
|
return back();
|
|
}
|
|
|
|
public function edit($id)
|
|
{
|
|
$role=EmployeeRole::where('restaurant_id',Helpers::get_restaurant_id())->where(['id'=>$id])->first(['id','name','modules']);
|
|
return view('vendor-views.custom-role.edit',compact('role'));
|
|
}
|
|
|
|
public function update(Request $request,$id)
|
|
{
|
|
$request->validate([
|
|
'modules'=>'required|array|min:1',
|
|
'name' => [
|
|
'required','string',Rule::unique('employee_roles')->where(function($query)use($id) {
|
|
$query->where('restaurant_id', Helpers::get_restaurant_id())->where('id','<>', $id);
|
|
})
|
|
]
|
|
],[
|
|
'name.required'=>translate('messages.Role name is required!'),
|
|
'name.unique'=>translate('messages.Role name already taken!'),
|
|
'modules.required'=>translate('messages.Please select atleast one module')
|
|
]);
|
|
|
|
DB::table('employee_roles')->where('restaurant_id',Helpers::get_restaurant_id())->where(['id'=>$id])->update([
|
|
'name'=>$request->name,
|
|
'modules'=>json_encode($request['modules']),
|
|
'status'=>1,
|
|
'restaurant_id'=>Helpers::get_restaurant_id(),
|
|
'updated_at'=>now()
|
|
]);
|
|
|
|
Toastr::success(translate('messages.role_updated_successfully'));
|
|
return redirect()->route('vendor.custom-role.create');
|
|
}
|
|
|
|
public function distroy($id)
|
|
{
|
|
$role=EmployeeRole::where('restaurant_id',Helpers::get_restaurant_id())->where(['id'=>$id])->delete();
|
|
Toastr::success(translate('messages.role_deleted_successfully'));
|
|
return back();
|
|
}
|
|
|
|
public function search(Request $request){
|
|
$key = explode(' ', $request['search']);
|
|
$rl=EmployeeRole::where('restaurant_id',Helpers::get_restaurant_id())->
|
|
where(function ($q) use ($key) {
|
|
foreach ($key as $value) {
|
|
$q->orWhere('name', 'like', "%{$value}%");
|
|
}
|
|
})->orderBy('name')->limit(50)->get();
|
|
return response()->json([
|
|
'view'=>view('vendor-views.custom-role.partials._table',compact('rl'))->render()
|
|
]);
|
|
}
|
|
}
|
|
|