get(); $sub_admins_data = IamPrincipal::where('principal_type_xid', 2)->latest()->get(); return view('Admin.pages.manage_users.manage_sub_admin.manage_subadmin', compact('sub_admins_data', 'sub_admins_module')); } public function create() { $sub_admins_module = ManageModule::latest()->get(); return view('Admin.pages.manage_users.manage_sub_admin.create', compact('sub_admins_module')); } /* Created By : shailesh Gupta Created at : 29 May 2024 Use : To store sub admin form and email */ public function store_subadmin(Request $request) { // Validation rules $rules = [ 'sub_admin_email' => 'required|string|email|max:100|unique:iam_principal,email_address,NULL,id,principal_type_xid,2', ]; // Custom error messages $messages = [ 'sub_admin_email.required' => 'Please enter this field', 'sub_admin_email.email' => 'Please enter a valid email address', 'sub_admin_email.unique' => 'This email is already registered', ]; $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } try { DB::beginTransaction(); $sub_admin = new IamPrincipal(); $sub_admin->first_name = $request->input('sub_admin_name'); $sub_admin->last_name = $request->input('sub_admin_lname'); $sub_admin->user_name = 'sub_admin'; $sub_admin->principal_type_xid = 2; $sub_admin->principal_source_xid = Auth::guard('admin')->user()->principal_source_xid; $sub_admin->email_address = $request->input('sub_admin_email'); $sub_admin->password = bcrypt($request->input('password')); $sub_admin->save(); $moduleIds = $request->input('module_id'); foreach ($moduleIds as $moduleId) { $sub_admin_permission = new ManageModuleLink; $sub_admin_permission->principal_xid = $sub_admin->id; $sub_admin_permission->manage_modules_xid = $moduleId; $sub_admin_permission->save(); } $mailData = [ 'username' => $request->input('sub_admin_name'), 'password' => $request->input('password'), ]; Mail::to($sub_admin->email_address)->send(new Add_Subadmin($mailData)); DB::commit(); return jsonResponseWithSuccessMessage(__('success.save_data')); } catch (Exception $e) { DB::rollBack(); Log::error("Store Subadmin Page Load Failed: " . $e->getMessage()); return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); } } public function edit($id) { // dd($id); $sub_admins_module = ManageModule::latest()->get(); $edit_sub_admin = IamPrincipal::with(['moduleLinks' => function ($query) { $query->with('module'); }])->find($id); return view('Admin.pages.manage_users.manage_sub_admin.edit', compact('edit_sub_admin', 'sub_admins_module')); } public function delete_sub_admin($id) { /* Created By : Megha Created at : 14 Feb 2024 Use : To Delete Admin. */ try { DB::beginTransaction(); $passport = IamPrincipal::find($id); $passport->delete(); DB::commit(); return response()->json(['success' => true, 'status' => 200]); } catch (Exception $e) { DB::rollBack(); Log::error("delete_passport function Load Failed " . $e->getMessage()); return response()->json(['success' => false, 'status' => 500, 'message' => __('auth.something_went_wrong')]); } } public function update_subadmin(Request $request) { /* Created By : Megha Created at : 14 Feb 2024 Use : To update sub admin form. */ try { $userId = $request->sub_admin_id; $user = IamPrincipal::findOrFail($userId); // Fetch the user to update $rules = [ 'sub_admin_email' => [ 'required', 'string', 'email', 'max:100', Rule::unique('iam_principal', 'email_address') ->ignore($userId) // Ignore the current user's ID ->whereNull('deleted_at') // Ensure the record is not soft-deleted ], ]; $messages = [ 'sub_admin_email.required' => 'Please enter this field', 'sub_admin_email.email' => 'Please enter a valid email address', 'sub_admin_email.unique' => 'This email is already registered', ]; $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } DB::beginTransaction(); // Update user details $user->user_name = 'sub_admin'; $user->first_name = $request->input('sub_admin_name'); $user->last_name = $request->input('sub_admin_lname'); $user->principal_type_xid = 2; $user->principal_source_xid = Auth::guard('admin')->user()->principal_source_xid; $user->email_address = $request->input('sub_admin_email'); // Uncomment and set the password if needed // $user->password = bcrypt($request->input('password')); $user->save(); // Update module links ManageModuleLink::where('principal_xid', $user->id)->delete(); $moduleIds = $request->input('module_id'); foreach ($moduleIds as $moduleId) { $sub_admin_permission = new ManageModuleLink; $sub_admin_permission->principal_xid = $user->id; $sub_admin_permission->manage_modules_xid = $moduleId; $sub_admin_permission->save(); } DB::commit(); return jsonResponseWithSuccessMessage(__('success.save_data')); } catch (Exception $e) { DB::rollBack(); Log::error("Update Sub Admin Failed: " . $e->getMessage()); return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); } } public function change_admin_status(Request $request) { /* Created By : Megha Created at : 14 Feb 2024 Use : To change passport status. */ try { DB::beginTransaction(); $status = IamPrincipal::find($request->passport_id); $status->is_active = $request->status; $status->save(); DB::commit(); return jsonResponseWithSuccessMessage(__('success.update_data')); } catch (Exception $e) { Log::error("Update Status function Load Failed " . $e->getMessage()); return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); } } public function get_sub_admin_permission(Request $request) { $testing_admin_id = $request->id; $test = ManageModuleLink::where('principal_xid', $testing_admin_id)->get('manage_modules_xid')->toArray(); return response()->json(['success' => true, 'data' => $test]); } }