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.
		
		
		
		
			
				
					168 lines
				
				5.9 KiB
			
		
		
			
		
	
	
					168 lines
				
				5.9 KiB
			| 
								 
											2 years ago
										 
									 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace App\Http\Controllers\Admin;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use App\CentralLogics\Helpers;
							 | 
						||
| 
								 | 
							
								use App\Http\Controllers\Controller;
							 | 
						||
| 
								 | 
							
								use App\Models\Admin;
							 | 
						||
| 
								 | 
							
								use App\Models\AdminRole;
							 | 
						||
| 
								 | 
							
								use Brian2694\Toastr\Facades\Toastr;
							 | 
						||
| 
								 | 
							
								use Illuminate\Http\Request;
							 | 
						||
| 
								 | 
							
								use Illuminate\Support\Facades\DB;
							 | 
						||
| 
								 | 
							
								use Rap2hpoutre\FastExcel\FastExcel;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class EmployeeController extends Controller
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function add_new()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $rls = AdminRole::whereNotIn('id', [1])->get();
							 | 
						||
| 
								 | 
							
								        return view('admin-views.employee.add-new', compact('rls'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function store(Request $request)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $request->validate([
							 | 
						||
| 
								 | 
							
								            'f_name' => 'required',
							 | 
						||
| 
								 | 
							
								            'l_name' => 'nullable|max:100',
							 | 
						||
| 
								 | 
							
								            'role_id' => 'required',
							 | 
						||
| 
								 | 
							
								            'image' => 'required|max:2048',
							 | 
						||
| 
								 | 
							
								            'email' => 'required|unique:admins',
							 | 
						||
| 
								 | 
							
								            'phone' => 'required|regex:/^([0-9\s\-\+\(\)]*)$/|min:10|max:20|unique:admins',
							 | 
						||
| 
								 | 
							
								            'password' =>'required|min:6'
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if ($request->role_id == 1) {
							 | 
						||
| 
								 | 
							
								            Toastr::warning(translate('messages.access_denied'));
							 | 
						||
| 
								 | 
							
								            return back();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        DB::table('admins')->insert([
							 | 
						||
| 
								 | 
							
								            'f_name' => $request->f_name,
							 | 
						||
| 
								 | 
							
								            'l_name' => $request->l_name,
							 | 
						||
| 
								 | 
							
								            'phone' => $request->phone,
							 | 
						||
| 
								 | 
							
								            'zone_id' => $request->zone_id,
							 | 
						||
| 
								 | 
							
								            'email' => $request->email,
							 | 
						||
| 
								 | 
							
								            'role_id' => $request->role_id,
							 | 
						||
| 
								 | 
							
								            'password' => bcrypt($request->password),
							 | 
						||
| 
								 | 
							
								            'image' => Helpers::upload('admin/', 'png', $request->file('image')),
							 | 
						||
| 
								 | 
							
								            'created_at' => now(),
							 | 
						||
| 
								 | 
							
								            'updated_at' => now(),
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Toastr::success(translate('messages.employee_added_successfully'));
							 | 
						||
| 
								 | 
							
								        return redirect()->route('admin.employee.list');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function list()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $em = Admin::zone()->with(['role'])->where('role_id', '!=','1')->latest()->paginate(config('default_pagination'));
							 | 
						||
| 
								 | 
							
								        return view('admin-views.employee.list', compact('em'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function edit($id)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $e = Admin::zone()->where('role_id', '!=','1')->where(['id' => $id])->first();
							 | 
						||
| 
								 | 
							
								        if (auth('admin')->id()  == $e['id']){
							 | 
						||
| 
								 | 
							
								            Toastr::error(translate('messages.You_can_not_edit_your_own_info'));
							 | 
						||
| 
								 | 
							
								            return redirect()->route('admin.employee.list');
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $rls = AdminRole::whereNotIn('id', [1])->get();
							 | 
						||
| 
								 | 
							
								        return view('admin-views.employee.edit', compact('rls', 'e'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function update(Request $request, $id)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $request->validate([
							 | 
						||
| 
								 | 
							
								            'f_name' => 'required|max:100',
							 | 
						||
| 
								 | 
							
								            'l_name' => 'nullable|max:100',
							 | 
						||
| 
								 | 
							
								            'role_id' => 'required',
							 | 
						||
| 
								 | 
							
								            'email' => 'required|unique:admins,email,'.$id,
							 | 
						||
| 
								 | 
							
								            'phone' => 'required|regex:/^([0-9\s\-\+\(\)]*)$/|min:10|max:20|unique:admins,phone,'.$id,
							 | 
						||
| 
								 | 
							
								            'password' => 'nullable|min:6',
							 | 
						||
| 
								 | 
							
								            'image' => 'nullable|max:2048',
							 | 
						||
| 
								 | 
							
								        ], [
							 | 
						||
| 
								 | 
							
								            'f_name.required' => translate('messages.first_name_is_required'),
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if ($request->role_id == 1) {
							 | 
						||
| 
								 | 
							
								            Toastr::warning(translate('messages.access_denied'));
							 | 
						||
| 
								 | 
							
								            return back();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $e = Admin::where('role_id','!=',1)->findOrFail($id);
							 | 
						||
| 
								 | 
							
								        if (auth('admin')->id()  == $e['id']){
							 | 
						||
| 
								 | 
							
								            Toastr::error(translate('messages.You_can_not_edit_your_own_info'));
							 | 
						||
| 
								 | 
							
								            return redirect()->route('admin.employee.list');
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if ($request['password'] == null) {
							 | 
						||
| 
								 | 
							
								            $pass = $e['password'];
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            if (strlen($request['password']) < 6) {
							 | 
						||
| 
								 | 
							
								                Toastr::warning(translate('messages.password_length_warning',['length'=>'6']));
							 | 
						||
| 
								 | 
							
								                return back();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            $pass = bcrypt($request['password']);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if ($request->has('image')) {
							 | 
						||
| 
								 | 
							
								            $e['image'] = Helpers::update('admin/', $e->image, 'png', $request->file('image'));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        DB::table('admins')->where(['id' => $id])->update([
							 | 
						||
| 
								 | 
							
								            'f_name' => $request->f_name,
							 | 
						||
| 
								 | 
							
								            'l_name' => $request->l_name,
							 | 
						||
| 
								 | 
							
								            'phone' => $request->phone,
							 | 
						||
| 
								 | 
							
								            'zone_id' => $request->zone_id,
							 | 
						||
| 
								 | 
							
								            'email' => $request->email,
							 | 
						||
| 
								 | 
							
								            'role_id' => $request->role_id,
							 | 
						||
| 
								 | 
							
								            'password' => $pass,
							 | 
						||
| 
								 | 
							
								            'image' => $e['image'],
							 | 
						||
| 
								 | 
							
								            'updated_at' => now(),
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Toastr::success(translate('messages.employee_updated_successfully'));
							 | 
						||
| 
								 | 
							
								        return redirect()->route('admin.employee.list');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function distroy($id)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $role=Admin::zone()->where('role_id', '!=','1')->where(['id'=>$id])->first();
							 | 
						||
| 
								 | 
							
								        if (auth('admin')->id()  == $role['id']){
							 | 
						||
| 
								 | 
							
								            Toastr::error(translate('messages.You_can_not_edit_your_own_info'));
							 | 
						||
| 
								 | 
							
								            return redirect()->route('admin.employee.list');
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $role->delete();
							 | 
						||
| 
								 | 
							
								        Toastr::info(translate('messages.employee_deleted_successfully'));
							 | 
						||
| 
								 | 
							
								        return back();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function search(Request $request){
							 | 
						||
| 
								 | 
							
								        $key = explode(' ', $request['search']);
							 | 
						||
| 
								 | 
							
								        $employees=Admin::zone()->where('role_id', '!=','1')
							 | 
						||
| 
								 | 
							
								        ->where(function ($q) use ($key) {
							 | 
						||
| 
								 | 
							
								            foreach ($key as $value) {
							 | 
						||
| 
								 | 
							
								                $q->orWhere('f_name', 'like', "%{$value}%");
							 | 
						||
| 
								 | 
							
								                $q->orWhere('l_name', 'like', "%{$value}%");
							 | 
						||
| 
								 | 
							
								                $q->orWhere('phone', 'like', "%{$value}%");
							 | 
						||
| 
								 | 
							
								                $q->orWhere('email', 'like', "%{$value}%");
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        })->limit(50)->get();
							 | 
						||
| 
								 | 
							
								        return response()->json([
							 | 
						||
| 
								 | 
							
								            'view'=>view('admin-views.employee.partials._table',compact('employees'))->render(),
							 | 
						||
| 
								 | 
							
								            'count'=>$employees->count()
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function employee_list_export(Request $request){
							 | 
						||
| 
								 | 
							
								        $withdraw_request = Admin::zone()->with(['role'])->where('role_id', '!=','1')->get();
							 | 
						||
| 
								 | 
							
								        if($request->type == 'excel'){
							 | 
						||
| 
								 | 
							
								            return (new FastExcel($withdraw_request))->download('Employee.xlsx');
							 | 
						||
| 
								 | 
							
								        }elseif($request->type == 'csv'){
							 | 
						||
| 
								 | 
							
								            return (new FastExcel($withdraw_request))->download('Employee.csv');
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |