2024-03-28 14:52:40 +05:30
< ? php
2024-04-09 17:56:07 +05:30
2024-03-28 14:52:40 +05:30
namespace App\Http\Controllers\Admin ;
use App\Http\Controllers\Controller ;
use Illuminate\Http\Request ;
use App\Models\User ;
use Illuminate\Support\Facades\Hash ;
use Illuminate\Support\Facades\Auth ;
use Illuminate\Support\Facades\Session ;
use Illuminate\Support\Facades\Validator ;
use DataTables ;
use Mail ;
2024-07-03 11:36:57 +05:30
use App\Mail\sendEmailOTP ;
2024-03-28 14:52:40 +05:30
use App\Mail\UpdatePasswordMail ;
class AdminProfileController extends Controller
{
public function viewProfile ()
{
$data = User :: find ( auth () -> user () -> id );
return view ( 'Admin.Pages.manage_sub_admin.edit_admin_profile' , compact ( 'data' ));
}
2024-07-03 11:36:57 +05:30
public function sendOtpOnMail ( Request $request )
{
// dd($request->all());
$validator = validator :: make ( $request -> all (),[ 'new_email' => 'required|unique:users,email' ],[ 'requreid' => 'Email field is required.' , 'unique' => 'Email should be unique.' ]);
$validateMessage = validationErrorMessage ( $validator );
if ( $validateMessage )
{
return response () -> json ([ 'status' => 400 , 'message' => $validateMessage ]);
}
$OTP = rand ( 1000 , 9999 );
Mail :: to ( $request -> new_email ) -> send ( new sendEmailOTP ( $OTP ));
session () -> forget ([ 'email_update_otp' , 'old_email' , 'new_email' ]);
session () -> put ( 'email_update_otp' , $OTP );
session () -> put ( 'old_email' , $request -> old_email );
session () -> put ( 'new_email' , $request -> new_email );
if ( session () -> has ( 'email_update_otp' ) || session () -> has ( 'old_email' ) || session () -> has ( 'new_email' ))
{
return response () -> json ([ 'status' => 200 , 'message' => " OTP has been send to your mail. " ]);
}
return response () -> json ([ 'status' => 400 , 'message' => " Error in sending OTP. " ]);
}
public function verifyEmailOtp ( Request $request )
{
$otp = session () -> get ( 'email_update_otp' );
$old_email = session () -> get ( 'old_email' );
$new_email = session () -> get ( 'new_email' );
// dd($new_email,$old_email);
if ( ! $otp && ! $old_email && ! $new_email )
{
return response () -> json ([ 'status' => 400 , 'message' => 'Enter your email again.' ]);
}
if (( int ) $otp != ( int ) $request -> email_otp )
{
return response () -> json ([ 'status' => 400 , 'message' => 'OTP not matched.' ]);
}
$updated = User :: where ( 'email' , $old_email ) -> update ([ 'email' => $new_email ]);
if ( $updated )
{
return response () -> json ([ 'status' => 200 , 'message' => 'Email updated successfully' ]);
}
}
2024-03-28 14:52:40 +05:30
public function getUsers ( Request $request )
{
if ( $request -> ajax ()) {
$data = User :: where ([ 'role' => 0 , 'status' => 1 ]) -> get ();
// dd($data);
return Datatables :: of ( $data )
-> addIndexColumn ()
-> addColumn ( 'action' , function ( $row ) {
$actionBtn = '<a href="javascript:void(0)" class="edit btn btn-success btn-sm">Edit</a> <a href="javascript:void(0)" class="delete btn btn-danger btn-sm">Delete</a>' ;
return $actionBtn ;
})
-> rawColumns ([ 'action' ])
// ->editColumn('name',function($row){
// return '<div class="text-center">' . $row->name . '</div>';
// })
// ->editColumn('email',function($row){
// return '<div class="text-center">' . $row->email . '</div>';
// })
// ->editColumn('password',function($row){
// return '<div class="text-center">' . $row->password . '</div>';
// })
// ->addColumn('edit',function ($row){
// $email = $row->email;
// $password = $row->password;
// $editBtn = '<a class="action_icon edit_button" href="#" data-toggle="modal" data-target="#exampleModal" data-email="'.$email.'" data-password="'.$password.'">
// <svg class="svg-inline--fa fa-pen-to-square" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="pen-to-square" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.8 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z"></path></svg><!-- <i class="fa-solid fa-pen-to-square"></i> Font Awesome fontawesome.com -->
// </a>';
// return $editBtn;
// })
// ->rawColumns(['name','email','password','edit'])
-> make ( true );
}
// return view('Admin.edit_admin_profile');
}
public function editProfile ( Request $request )
{
$validator = Validator :: make ( $request -> all (), [
'update_id' => 'required' ,
'name' => [
'required' ,
// 'regex:/^[a-zA-Z\s]+$/',
],
'email' => [
'required' ,
// 'regex/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/',
],
'mobile_number' => [
'required' ,
'min:10' ,
'max:12' ,
// 'regex:regex:/^(\+\d{1,3}[- ]?)?\d{10,12}$/',
],
'profile_image' => [
'mimes:jpeg,png,jpg,gif,svg' ,
'max:2048' ,
],
], [
'required' => 'This :attribute field is required' ,
'mobile_number.min' => 'Mobile number should be minimum 10 digits' ,
'mobile_number.max' => 'Mobile number should be maxmium 12 digits' ,
'profile_image.mimes' => " Image accepts only jpeg,png,jpg,gif,svg " ,
'profile_image.max' => " Image size not more than 2mb " ,
'name.regex' => 'This :attribute contain only alphabets' ,
'email.regex' => 'Enter valid email address' ,
'mobile_number.regex' => 'Mobile number contain only digits' ,
]);
$validationMessage = validationErrorMessage ( $validator );
if ( $validationMessage ) {
return response () -> json (
[
'status' => 400 ,
'message' => $validationMessage
]
);
}
$uploadImage = $request -> has ( 'profile_image' ) ? $this -> uploadProfileImage ( Auth :: user () -> id , $request -> profile_image ) : Auth :: user () -> getRawOriginal ( 'profile_image' );
$data = User :: where ( 'id' , Auth :: user () -> id ) -> update ([
'name' => $request -> name ,
'email' => $request -> email ,
'contact_number' => $request -> mobile_number ,
'profile_image' => $uploadImage ,
]);
if ( $data ) {
return response () -> json (
[
'status' => 200 ,
'message' => " Profile update successfull "
]
);
}
return response () -> json (
[
'status' => 204 ,
'message' => 'Profile not updated, Something error!'
]
);
}
public function uploadProfileImage ( $id , $image )
{
$user = User :: where ( 'id' , $id ) -> first ();
if ( \Storage :: exists ( $user -> profile_image )) {
\Storage :: delete ( $user -> profile_image );
}
$fileName = time () . Auth :: user () -> id . '.' . $image -> extension ();
$image -> move ( public_path ( '/uploads/profile/img' ), $fileName );
return $fileName ;
}
public function UpdatePassword ( Request $request )
{
$validator = Validator :: make ( $request -> all (), [
'current_password' => 'required' ,
'password' => [ 'required' , 'min:8' , 'regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\x])(?=.*[!$#%@]).*$/' , 'confirmed' ]
// 'confirm_password' => 'required_with:new_password|same:new_password|required',
], [
'required' => 'The :attribute field is required' ,
'same' => 'The :attribute must contain the same password' ,
'min' => 'The :attribute field must be 8 characters minimum' ,
'regex' => 'The :attribute field must contain at least 1 uppercase letter and symbol and also a number' ,
'confirmed' => 'Password does not match'
]);
$validationMessage = validationErrorMessage ( $validator );
if ( $validationMessage ) {
2024-04-09 17:56:07 +05:30
return response () -> json ([ 'status' => 400 , 'message' => $validationMessage ]);
2024-03-28 14:52:40 +05:30
}
$user = User :: find ( Auth :: user () -> id );
if ( Hash :: check ( $request -> current_password , $user -> password )) {
$updatePassword = User :: where ( 'id' , $request -> updateId ) -> update ([
'password' => bcrypt ( $request -> password ),
]);
if ( $updatePassword ) {
Session :: flush ();
\Auth :: logout ();
return response () -> json ([ 'status' => 200 , 'message' => " Password update successfull " ]);
} else {
return response () -> json ([ 'status' => 204 , 'message' => 'Password not updated, Something error!' ]);
}
}
return response () -> json ([ 'status' => 204 , 'message' => 'Password not matched!' ]);
}
public function viewUsersProfile ()
{
2024-04-09 17:56:07 +05:30
$check = checkSidebarAccess ( 'update-user-password' );
if ( ! $check ) {
abort ( 404 );
}
2024-03-28 14:52:40 +05:30
2024-04-24 15:20:53 +05:30
$users = User :: where ([ 'role' => false , 'status' => true ]) -> get ();
2024-03-28 14:52:40 +05:30
return view ( 'Admin.Pages.manage_sub_admin.update_user_password' , compact ( 'users' ));
}
public function updateUsersProfile ( Request $request )
{
// dd($request->all());
$validate = Validator :: make ( $request -> all (), [
'password' => 'required|min:8' ,
'confirm_password' => 'required_with:password|same:password|min:8' ,
], [
'required' => " This field is required " ,
'password.confirmed' => " Password not matched " ,
]);
if ( $validate -> fails ()) {
return response () -> json (
[
" status " => 400 ,
" message " => $validate -> errors (),
]
);
}
$email = $request -> email ;
$newPassword = $request -> password ;
$userData = User :: where ( 'email' , $email ) -> first ();
if ( $userData -> password == $newPassword ) {
return response () -> json ([
'status' => 201 ,
'message' => " Password matched same " ,
]);
} else {
$updatePassword = User :: where ( 'email' , $email ) -> update ([
'password' => bcrypt ( $newPassword ),
]);
if ( $updatePassword ) {
Mail :: to ( $email ) -> send ( new UpdatePasswordMail ( $newPassword ));
return response () -> json ([
'status' => 200 ,
'message' => " Password update successfully " ,
]);
}
return response () -> json ([
'status' => 201 ,
'message' => " Password not updated " ,
]);
}
}
}