238 lines
8.1 KiB
PHP
238 lines
8.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\ManageModule;
|
|
use App\Models\IamPrincipal;
|
|
use App\Models\ManageModuleLink;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Exception;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Illuminate\Validation\Rule;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Support\Facades\Mail;
|
|
use App\Mail\Add_Subadmin;
|
|
|
|
class ManageSubAdminController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$sub_admins_module = ManageModule::latest()->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]);
|
|
}
|
|
}
|