Viewing file: AgentController.php (5.63 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\AgentRating;
use App\Models\User;
use App\Models\AgentLoginLog;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
class AgentController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
function index() {
if (Auth::user()->is_agent == 1) {
abort(403, 'Unauthorized');
}
$data=User::where('is_agent',1)->get();
$ratings_summary = AgentRating::select(
'user_id',
DB::raw('COUNT(*) AS total_rows'),
DB::raw('COUNT(CASE WHEN rating > 0 THEN 1 END) AS rated_rows'),
DB::raw('ROUND(AVG(CASE WHEN rating > 0 THEN rating END), 1) AS average_rating'),
DB::raw('ROUND((COUNT(CASE WHEN rating > 0 THEN 1 END) / COUNT(*)) * 100, 1) AS rating_ratio')
)
->groupBy('user_id')
->get();
return view('agent.index',['users'=>$data, 'ratings_summary'=>$ratings_summary]);
}
function create(Request $req)
{
if (Auth::user()->is_agent == 1) {
abort(403, 'Unauthorized');
}
$validator = Validator::make($req->all(), [
'name' => 'required|string|max:255',
'email' => 'required|string|max:255|unique:users',
'phone_no' => 'required|string|max:255|unique:users',
'agent_id' => 'required|string|max:255|unique:users',
'password' => 'required|string|min:6',
], [
'name.required' => 'Agent Name can`t be empty',
'phone_no.unique' => 'Phone Number already used',
'agent_id.unique' => 'Agent ID already used',
'email.unique' => 'Email already used',
'password.min' => 'Password minimum 6 character require',
]);
if ($validator->fails()==true) {
return redirect()->back()->withErrors($validator->errors()->all())->withInput();
} {
$data= User::create([
'name' => $req->input('name'),
'email' => $req->input('email'),
'phone_no' => $req->input('phone_no'),
'password' => Hash::make($req->input('password')),
'agent_id' => $req->input('agent_id'),
'is_agent' => 1
]);
return redirect()->back()->with('message', "Agent added successfully");
}
}
function update(Request $req)
{
if (Auth::user()->is_agent == 1) {
abort(403, 'Unauthorized');
}
$validator = Validator::make($req->all(), [
'name' => 'required|string|max:255',
'email' => 'required|string|max:255|unique:users,email,'.$req->input('user_id'),
'phone_no' => 'nullable|string|max:255|unique:users,phone_no,'.$req->input('user_id'),
'agent_id' => 'nullable|string|max:255|unique:users,agent_id,'.$req->input('user_id'),
'password' => 'nullable|string|min:6'
], [
'name.required' => 'Name can`t be empty',
'email.required' => 'Email can`t be empty',
'phone_no.unique' => 'Phone Number already used',
'agent_id.unique' => 'Agent ID already used',
'email.unique' => 'Email already used',
'password.min' => 'Password minimum 6 character require'
]);
// $user_email=User::where("id","!=",$req->input('user_id'))->where("email",$req->input('email'))->exists();
// $user_name=User::where("id","!=",$req->input('user_id'))->where("name",$req->input('name'))->exists();
if ($validator->fails()==true) {
return redirect()->back()->withErrors($validator->errors()->all());
// } else if($user_email) {
// return redirect()->back()->withErrors("Email already used");
// }else if($user_name) {
// return redirect()->back()->withErrors("Agent name already used");
}else{
$user=User::find($req->input('user_id'));
$user->name = $req->input('name');
$user->email = $req->input('email');
$user->phone_no = $req->input('phone_no');
$user->agent_id = $req->input('agent_id');
$user->save();
return redirect()->back()->with('message', "Agent info updated successfully");
}
}
function delete(Request $req) {
if (Auth::user()->is_agent == 1) {
abort(403, 'Unauthorized');
}
$data=User::find($req->input('user_id'))->delete();
return redirect()->back()->with('message', "Agent deleted successfully");
}
function password(Request $req) {
if (Auth::user()->is_agent == 1) {
abort(403, 'Unauthorized');
}
$validator = Validator::make($req->all(), [
'password' => 'required|string|min:6'
], [
'password.required' => 'Password can`t be empty',
'password.min' => 'Password minimum 6 character require'
]);
$user=User::where('id',$req->user_id)->update([
'password' =>Hash::make($req->password)
]);
return redirect()->back()->with('message', "New password set successfully");
}
function logInLogs() {
if (Auth::user()->id > 1) {
abort(403, 'Unauthorized');
}
$logs = AgentLoginLog::with('user')->orderBy('created_at', 'desc')->paginate(50);
return view('agent.login_logs', compact('logs'));
}
}
|