Files
freeu-project/app/Http/Controllers/Admin/ManageSubAdminController.php

279 lines
10 KiB
PHP
Raw Permalink Normal View History

2024-03-28 14:52:40 +05:30
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Traits\HttpResponse;
use App\Http\Controllers\Controller;
use App\Services\Admin\ManageSubAdminService;
use App\Models\User;
2024-04-09 17:56:07 +05:30
use App\Models\Iam_App_Resource_Action_Link;
use App\Models\Iam_App_Resources;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Hash;
2024-05-24 19:33:10 +05:30
use Carbon\Carbon;
2024-03-28 14:52:40 +05:30
class ManageSubAdminController extends Controller
{
use HttpResponse;
protected $admin;
public function __construct(ManageSubAdminService $admin)
{
$this->admin = $admin;
}
public function index()
{
2024-04-09 17:56:07 +05:30
$check = checkSidebarAccess('user-list');
if (!$check) {
abort(404);
}
return view('Admin.Pages.manage_sub_admin.manage_sub_admin', [
2024-03-28 14:52:40 +05:30
'users' => $this->admin->getAllAdmin()
]);
}
// public function role_list()
// {
// return view('Admin.Pages.manage_sub_admin.role_list');
// }
// public function view_role()
// {
// return view('Admin.Pages.manage_sub_admin.view_role');
// }
2024-04-09 17:56:07 +05:30
public function status(Request $request)
2024-03-28 14:52:40 +05:30
{
$statusChanged = $this->admin->changeStatus($request);
return $statusChanged ?
$this->response('Status Changed!', 200) :
$this->response('Error Changing Status!', 400);
}
2024-04-09 17:56:07 +05:30
2024-03-28 14:52:40 +05:30
public function listSubAdmin()
{
2024-04-09 17:56:07 +05:30
$check = checkSidebarAccess('sub-admin');
if (!$check) {
abort(404);
}
2024-06-14 16:47:39 +05:30
$subAdmin = User::where(['role' => 2])->whereNotIn('id', [auth()->user()->id])->orderBy('created_at','desc')->get();
2024-04-09 17:56:07 +05:30
// $subAdmin = User::where('status', 1)->whereIn('role', ['1', '2'])->whereNotIn('id', [auth()->user()->id])->latest()->get();
2024-03-28 14:52:40 +05:30
// dd($subAdmin);
2024-04-09 17:56:07 +05:30
return view('Admin.sub_admin_list', ['subAdmin' => $subAdmin]);
2024-03-28 14:52:40 +05:30
}
2024-04-09 17:56:07 +05:30
2024-06-11 17:42:46 +05:30
// public function addSubAdmin(Request $request)
2024-03-28 14:52:40 +05:30
public function addSubAdmin(Request $request)
{
2024-06-11 17:42:46 +05:30
// dd($request->all());
$validator = Validator::make($request->post(), [
2024-03-28 14:52:40 +05:30
'name' => 'required',
2024-06-11 17:42:46 +05:30
// 'address' => 'required',
2024-06-14 16:47:39 +05:30
'mobile_number' => 'required|unique:users,contact_number',
2024-04-09 17:56:07 +05:30
'password' => 'required',
2024-06-14 16:47:39 +05:30
'email' => 'required|unique:users',
2024-04-09 17:56:07 +05:30
], [
2024-06-11 17:42:46 +05:30
'unique' => ':attribute should be unique',
'required' => ':attribute is required'
2024-04-09 17:56:07 +05:30
]);
2024-06-11 17:42:46 +05:30
$validationMessage = validationErrorMessage($validator);
if ($validationMessage) {
return response()->json(['status' => 400, 'message' => $validationMessage]);
2024-05-21 13:22:05 +05:30
}
2024-06-11 17:42:46 +05:30
// $principalType = Iam_Principal_Type::find($request->role_type);
$emailAlreadyExists = User::where('email',$request->email)->exists();
$contactAlreadyExists = User::where('contact_number',$request->contact_number)->exists();
2024-06-14 16:47:39 +05:30
// if($emailAlreadyExists)
// {
// return response()->json(['status' => 400, 'message' =>'email should be unique']);
// }
// if($contactAlreadyExists)
// {
// return response()->json(['status' => 400, 'message' =>'Mobile number should be unique']);
// }
2024-06-04 10:50:01 +05:30
2024-06-11 17:42:46 +05:30
// defining user type
if ($request->role_type == 1) {
$roleType = 1;
} else if ($request->role_type == 2) {
$roleType = 2;
} else {
$roleType = 0;
}
// dd(Hash::make($request->password));
$addUser = User::insertGetId([
// 'principal_type_xid' => $principalType->id,
2024-03-28 14:52:40 +05:30
'name' => $request->name,
'email' => $request->email,
'contact_number' => $request->mobile_number,
2024-04-09 17:56:07 +05:30
'password' => Hash::make($request->password),
2024-03-28 14:52:40 +05:30
'role' => $roleType,
2024-06-11 17:42:46 +05:30
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
2024-03-28 14:52:40 +05:30
]);
2024-06-11 17:42:46 +05:30
// $addUser = null;
if ($addUser == null) {
return response()->json(['status' => 400, 'message' => 'Something error!']);
2024-04-09 17:56:07 +05:30
}
2024-06-11 17:42:46 +05:30
// dd('hello');
foreach ($request->all() as $key => $value) {
if ($key == '_token' || $key == 'name' || $key == 'email' || $key == 'mobile_number' || $key == 'role_type' || $key == 'password') {
continue;
} else {
// dd($value );
$appResource = Iam_App_Resources::find((int)$value);
2024-03-28 14:52:40 +05:30
$addAppResourceActionLink = Iam_App_Resource_Action_Link::create([
2024-06-11 17:42:46 +05:30
'user_xid' => $addUser,
2024-03-28 14:52:40 +05:30
'app_resource_xid' => $appResource->id,
]);
}
}
return response()->json(['status' => 200, 'message' => 'User Added!']);
}
2024-04-09 17:56:07 +05:30
2024-06-11 17:42:46 +05:30
// old not running code
// {
// $validator = Validator::make($request->all(), [
// 'name' => 'required',
// 'mobile_number' => 'required',
// 'password' => 'required',
// 'email' => 'required|email|unique:users,email',
// ], [
// 'required' => ':attribute is required',
// 'unique' => 'The :attribute has already been taken.',
// 'email' => 'The :attribute must be a valid email address.',
// ]);
// if ($validator->fails()) {
// return response()->json(['status' => 400, 'message' => $validator->errors()->first()]);
// }
// if(User::where('contact_number', $request->mobile_number)->exists()) {
// return response()->json(['status' => 400, 'message' => 'Mobile number should be unique']);
// }
// $roleType = $request->role_type ?? 0; // Default role type
// $user = User::create([
// 'name' => $request->name,
// 'email' => $request->email,
// 'contact_number' => $request->mobile_number,
// 'password' => Hash::make($request->password),
// 'role' => $roleType,
// ]);
// if (!$user) {
// return response()->json(['status' => 400, 'message' => 'Something went wrong!']);
// }
// // Assuming $request->resource_ids is an array of resource IDs to assign to the user
// foreach ($request->resource_ids ?? [] as $resourceId) {
// $appResource = Iam_App_Resources::find($resourceId);
// if ($appResource) {
// $addAppResourceActionLink = Iam_App_Resource_Action_Link::create([
// 'user_xid' => $user->id,
// 'app_resource_xid' => $appResource->id,
// ]);
// }
// }
// return response()->json(['status' => 200, 'message' => 'User Added!']);
// }
2024-06-04 10:50:01 +05:30
2024-03-28 14:52:40 +05:30
public function viewSubAdmin(Request $request)
{
2024-04-09 17:56:07 +05:30
// dd((int)$request->id);
$id = (int)$request->id;
2024-03-28 14:52:40 +05:30
$user = User::find($id);
$accessPage = Iam_App_Resource_Action_Link::where('user_xid', $id)->pluck('app_resource_xid');
2024-04-09 17:56:07 +05:30
// dd($accessPage);
return view('Admin.view-sub-admin', ['user' => $user, 'accessPage' => $accessPage, 'id' => $id]);
2024-03-28 14:52:40 +05:30
}
public function updateSubAdmin(Request $request)
{
// dd($request->all());
// dd($request->ip());
2024-04-09 17:56:07 +05:30
$id = (int)$request->id;
2024-03-28 14:52:40 +05:30
// dd($id);
$validator = Validator::make($request->all(), [
'name' => 'required',
// 'address' => 'required',
2024-04-09 17:56:07 +05:30
'mobile_number' => 'required|unique:users,contact_number,' . $id . '',
2024-03-28 14:52:40 +05:30
// 'pan_no' => 'required|unique:users,pan_no,' . $id . '',
'email' => 'required|unique:users,email,' . $id . '',
], [
'email.unique' => 'Email is not unique',
2024-05-09 12:58:13 +05:30
'mobile_number.unique' => 'Mobile Number is not unique',
2024-03-28 14:52:40 +05:30
'name.required' => 'Name is required',
'email.required' => 'Email is required'
]);
2024-04-09 17:56:07 +05:30
$validationMessage = validationErrorMessage($validator);
2024-03-28 14:52:40 +05:30
if ($validationMessage) {
return response()->json(['status' => 400, 'message' => $validationMessage]);
}
$updateUser = User::where('id', $id)->update([
'name' => $request->name,
// 'address' => $request->address,
'contact_number' => $request->mobile_number,
'role' => $request->role_type,
'email' => $request->email,
]);
// getting old resource access id
$oldAccessResourceId = array();
$olddata = Iam_App_Resource_Action_Link::where('user_xid', $id)->pluck('app_resource_xid');
foreach ($olddata as $oldAppId) {
array_push($oldAccessResourceId, $oldAppId);
}
// getting new access id
$newAccessResourceId = array();
foreach ($request->all() as $key => $value) {
if ($key == '_token' || $key == '_method' || $key == 'id' || $key == 'name' || $key == 'email' || $key == 'role_type' || $key == 'mobile_number') {
continue;
} else {
array_push($newAccessResourceId, intval($value));
}
}
// dd($newAccessResourceId);
// getting id for removing
$removeOldResourceAccessId = array_diff($oldAccessResourceId, $newAccessResourceId);
// removing old access
foreach ($removeOldResourceAccessId as $oldAccessId) {
Iam_App_Resource_Action_Link::where(['user_xid' => $id, 'app_resource_xid' => $oldAccessId])->delete();
}
// adding new access id
foreach ($request->all() as $key => $value) {
if ($key == '_token' || $key == '_method' || $key == 'id' || $key == 'name' || $key == 'email' || $key == 'mobile_number' || $key == 'role_type') {
continue;
} else {
// dd($request->post());
$checkAccess = Iam_App_Resource_Action_Link::where(['user_xid' => $id, 'app_resource_xid' => $value])->doesntExist();
if ($checkAccess) {
2024-04-09 17:56:07 +05:30
$appResource = Iam_App_Resources::find((int)$value);
2024-03-28 14:52:40 +05:30
$addAppResourceActionLink = Iam_App_Resource_Action_Link::create([
'user_xid' => $id,
'app_resource_xid' => $appResource->id,
]);
}
}
}
return response()->json(['status' => 200, 'message' => 'User Updated!']);
}
2024-04-09 17:56:07 +05:30
public function editSubAdmin(Request $request)
{
$id = (int)$request->id;
$user = User::find($id);
$accessPage = Iam_App_Resource_Action_Link::where('user_xid', $id)->pluck('app_resource_xid');
return view('Admin.edit-sub-admin', ['user' => $user, 'accessPage' => $accessPage, 'id' => $id]);
}
2024-06-03 19:30:09 +05:30
}