the_mechanic/app/Controllers/Users.php
venba-Inspriron-3558 3a2456b629 FIX_minor Bugs
2025-11-13 17:54:23 +05:30

529 lines
17 KiB
PHP
Executable File

<?php
namespace App\Controllers;
use App\Models\UsersModel;
use App\Models\RoleModel;
use App\Models\BusinessModel;
use App\Models\BranchModel;
use App\Models\JobcardProductModel;
use App\Models\JobcardModel;
use App\Models\BikemodelsModel;
use App\Models\BikemakeModel;
use App\Helpers\MailHelper;
use CodeIgniter\API\ResponseTrait;
class Users extends BaseController
{
public $session;
use ResponseTrait;
public function __construct()
{
$this->session = session();
}
public function dashboard()
{
$UsersModel = new UsersModel();
$dashboard_data = $UsersModel->dashboard_live_data($this->session->get('logged_user_branch_id'));
foreach ($dashboard_data as &$value) {
$assigned_ids = !empty(json_decode($value['assigned_to'], true)) ? json_decode($value['assigned_to'], true) : [0];
$user = $UsersModel->select('users.name as username, roles.roles as userrole')->join('roles', 'roles.role_id = users.role', 'left')->whereIn('users.user_id', $assigned_ids)->findAll();
$value['username'] = '';
foreach ($user as $val) {
if (isset($val['username'])) {
$value['username'] .= $val['username'] . '- ' . $val['userrole'] .'<br>';
}
}
}
$JobcardModel = new JobcardModel();
$current_date = date('Y-m-d');
$data['delivery_data'] = $JobcardModel->where('DATE(delivery_date)', $current_date)->where('isactive',1)->findAll();
$data['dashboard_data'] = $dashboard_data;
return view('dashboard',$data);
}
## For User Listing
public function index()
{
$UsersModel = new UsersModel();
$business_id =session()->get('logged_user_business_id');
$branch_id =session()->get('logged_user_branch_id');
$users = $UsersModel->where('business_id',$business_id)->where('branch_id',$branch_id)->findAll();
$data['users']=$users;
$roleModel = new RoleModel();
// Assuming $users is an array of user data
foreach ($users as $value) {
if ($value['isactive'] == 1) {
// Call the method from the model to get the role name
$roleName = $roleModel->getRoleNameById($value['role']);
// Output the role name
// echo $roleName;
}
}
return view('user_list',['users' => $users, 'roleModel' => $roleModel]);
}
public function forgot_password()
{
$UsersModel = new UsersModel();
if($this->request->getmethod() == 'post')
{
$email = $this->request->getVar('email');
$staff_data = $UsersModel->where('email', $email)->find();
if ($staff_data)
{
$otp = rand(1000 , 9999);
$MailHelper = new MailHelper();
$mail_send =$MailHelper->send_otp_email($this->request->getVar('email') , $otp );
$data['status'] = 'success';
$data['otp'] = $otp;
echo json_encode($data);
}
else
{
$data['status'] = 'failed';
echo json_encode($data);
}
}else{
// print_r("11111111111111111111");die;
return view('forgot_password.php');
}
}
public function verify_otp()
{
$UsersModel = new UsersModel();
if($this->request->getmethod() == 'post')
{
$otp = $this->request->getVar('otp');
$verify_otp = $this->request->getVar('verify_otp');
if ($otp == $verify_otp)
{
$email = $this->request->getVar('email');
$data = $UsersModel->where('email', $email)->find();
if ($data)
{
$this->session->setTempdata('user_id',$data[0]['user_id'],3);
$this->session->setTempdata('email',$data[0]['email'],3);
$this->session->setTempdata('mail_success', "OTP verified sucessfully",3);
return view('reset_password.php');
}
}
else
{
$this->session->setTempdata('error', "You entered wrong OTP.Please retry",3);
return view('forgot_password.php');
}
}
}
public function change_password_forget()
{
$UsersModel = new UsersModel();
if($this->request->getmethod() == 'post')
{
$userData = $this->request->getVar();
$user_id = $this->request->getVar('user_id');
$userData['password'] = password_hash($userData['password'], PASSWORD_DEFAULT);
$UsersModel->where('user_id', $user_id )->set($userData)->update();
$this->session->setTempdata('mail_success', "Password set sucessfully",3);
return redirect()->to(base_url());
}
}
public function user_list($branch_id)
{
$UsersModel = new UsersModel();
$users = $UsersModel->where('branch_id',$branch_id)->findAll();
$data['users']=$users;
$roleModel = new RoleModel();
// Assuming $users is an array of user data
foreach ($users as $value) {
if ($value['isactive'] == 1) {
// Call the method from the model to get the role name
$roleName = $roleModel->getRoleNameById($value['role']);
// Output the role name
// echo $roleName;
}
}
return view('user_list_super_admin',['users' => $users, 'roleModel' => $roleModel, 'branch_id' => $branch_id]);
}
public function new_user($user_id)
{
$uri = $this->request->getUri();
// Get the query parameters
$queryParams = $uri->getQuery();
if ($user_id === '0') {
$BusinessModel=new BusinessModel();
$BranchModel=new BranchModel();
$business=$BusinessModel->findAll();
// print_r(session()->get());die;
$business_select = $BusinessModel->where('business_id',session()->get('logged_user_business_id'))->findAll();
$branch_list = $BranchModel->where('branch_id',session()->get('logged_user_branch_id'))->findAll();
$rolemodel = new RoleModel();
$roles =$rolemodel->getRoles();
$data['page_name'] = "Add User";
$data['users'] = [];
$data['business'] = $business_select;
$data['branch'] = $branch_list;
$data['roles'] = $roles;
} else if ($user_id !== '0') {
$UsersModel = new UsersModel();
$users=$UsersModel->getUserById($user_id);
$BusinessModel=new BusinessModel();
$BranchModel=new BranchModel();
$business=$BusinessModel->findAll();
$business_select = $BusinessModel->where('business_id',session()->get('logged_user_business_id'))->findAll();
$branch = $BranchModel->where('branch_id',$users['branch_id'])->findAll();
$rolemodel = new RoleModel();
$roles =$rolemodel->getRoles();
$data['page_name'] = "Edit User";
$data['users']=$users;
$data['branch'] = $branch;
$data['business'] = $business_select;
$data['roles'] = $roles;
}
$data['user_id'] = $user_id;
return view('user_form',$data);
}
public function new_user_super_admin($branch_id)
{
$BusinessModel=new BusinessModel();
$BranchModel=new BranchModel();
$branch_list = $BranchModel->where('branch_id',$branch_id)->findAll();
// $business=$BusinessModel->findAll();
$business_select = $BusinessModel->where('business_id', $branch_list[0]['business_id'])->findAll();
$rolemodel = new RoleModel();
$roles =$rolemodel->getRoles();
$data['page_name'] = "Add User";
$data['users'] = [];
$data['business'] = $business_select;
$data['branch'] = $branch_list;
$data['roles'] = $roles;
// $data['user_id'] = $user_id;
return view('user_form',$data);
}
public function edit_user_super_admin($user_id)
{
$UsersModel = new UsersModel();
$users=$UsersModel->getUserById($user_id);
$BusinessModel=new BusinessModel();
$BranchModel=new BranchModel();
$business_select = $BusinessModel->where('business_id',$users['business_id'])->findAll();
$branch = $BranchModel->where('branch_id',$users['branch_id'])->findAll();
$rolemodel = new RoleModel();
$roles =$rolemodel->getRoles();
$data['page_name'] = "Edit User";
$data['users']=$users;
$data['branch'] = $branch;
$data['business'] = $business_select;
$data['roles'] = $roles;
$data['user_id'] = $user_id;
return view('user_form',$data);
}
public function edit_account($user_id)
{
$roleModel = new RoleModel();
$businessModel = new BusinessModel();
$usersModel = new UsersModel();
$uri = $this->request->getUri();
// Get the query parameters
$queryParams = $uri->getQuery();
$data = [];
// Fetch roles once (used in both cases)
$data['roles'] = $roleModel->getRoles();
$data['business'] = $businessModel->findAll();
if ($user_id === '0') { // New user
$data['users'] = [];
$data['role_name'] = '';
} else { // Existing user
$users = $usersModel->getUserById($user_id);
$data['users'] = $users;
$branchModel = new BranchModel();
$data['branches'] = $branchModel->where('business_id', $users['business_id'])->findAll();
$role = $roleModel->where('role_id', $users['role'])->first();
$data['role_name'] = $role['roles'] ?? '';
}
$data['user_id'] = $user_id;
return view('edit_account_form',$data);
}
public function add_user()
{
// Load UsersModel
$UsersModel = new UsersModel();
// Get form data
$data = [
'name' => $this->request->getPost('name'),
'email' => $this->request->getPost('email'),
'mobile_no' => $this->request->getPost('mobile'),
'role' => $this->request->getPost('role'),
'business_id' => $this->request->getPost('business'),
'branch_id' => $this->request->getPost('branch'),
'isactive' => 1 // Assuming this is a default value or handled separately
];
$user_id = trim($this->request->getPost('user_id')); // get and trim
if (empty($user_id) || $user_id == 0) {
// Hash the password
$password = $this->request->getPost('password');
$hashedPassword = password_hash($password, PASSWORD_DEFAULT); // Use PASSWORD_DEFAULT for bcrypt hashing
// Add hashed password to the data array
$data['password'] = $hashedPassword;
}
// Get user_id from the form
// Check if user_id is provided
if (!empty($user_id) && $user_id != 0) {
// Update existing user
$UsersModel->update($user_id, $data);
} else {
// Insert new user
$UsersModel->insert($data);
}
// Redirect to user listing page or wherever appropriate
return redirect()->to('index'); // Change '/users' to your desired redirect URL
}
public function add_account()
{
// Load UsersModel
$UsersModel = new UsersModel();
// Get form data
$data = [
'name' => $this->request->getPost('name'),
'email' => $this->request->getPost('email'),
'mobile_no' => $this->request->getPost('mobile'),
'role' => $this->request->getPost('role'),
'business_id' => $this->request->getPost('business'),
'branch_id' => $this->request->getPost('branch'),
'isactive' => 1 // Assuming this is a default value or handled separately
];
// Hash the password
$password = $this->request->getPost('password');
$hashedPassword = password_hash($password, PASSWORD_DEFAULT); // Use PASSWORD_DEFAULT for bcrypt hashing
// Add hashed password to the data array
$data['password'] = $hashedPassword;
// Get user_id from the form
$user_id = $this->request->getPost('user_id');
// Check if user_id is provided
if (!empty($user_id)) {
// Update existing user
$UsersModel->update($user_id, $data);
} else {
// Insert new user
$UsersModel->insert($data);
}
// Redirect to user listing page or wherever appropriate
return redirect()->to('dashboard'); // Change '/users' to your desired redirect URL
}
public function delete_user($user_id)
{
$model = new UsersModel();
$where = ['user_id' => $user_id, 'isactive' => 1]; // Assuming 'isactive' is a column in your database
$existingUser = $model->where($where)->first();
if ($existingUser) {
$data['isactive'] = 0;
if ($model->update($user_id, $data)) {
session()->setFlashdata('success', 'Deleted successfully.');
$this->logger->info("Users: has been Inactivated successfully. Inactivated ID = ".$user_id);
}
}
// Redirect to the index function
return redirect()->to('index');
}
public function get_branch()
{
// Check if business ID is provided via POST request
$business_id = $this->request->getPost('business_id');
// Initialize an array to store the branch data
$branch_data = [];
// Check if business ID is valid and not empty
if (!empty($business_id)) {
// Load the BranchModel (assuming you have a BranchModel defined)
$branchModel = new BranchModel();
// Query the database to retrieve branches associated with the selected business ID
$branches = $branchModel->getBranchesByBusinessId($business_id);
// Check if branches are found
if (!empty($branches)) {
// Iterate through branches and store branch ID and name in the branch_data array
foreach ($branches as $branch) {
$branch_data[] = [
'branch_id' => $branch['branch_id'],
'branch_name' => $branch['branch_name']
];
}
}
}
// Return the branch data as a JSON response
return $this->response->setJSON($branch_data);
}
public function edit_mail($user_id){
$UsersModel = new UsersModel();
$data = $this->request->getPost();
$UsersModel->update($user_id, $data);
$user_mail =$UsersModel->where('user_id',$user_id)->first();
return json_encode($user_mail);
}
public function change_password($user_id){
$old_password =$this->request->getPost('old_password');
$new_password =$this->request->getPost('new_password');
$confirm_password =$this->request->getPost('confirm_password');
$type = $this->request->getPost('type') ?? 'change';
$UsersModel = new UsersModel();
if ($type !== 'reset') {
$user = $UsersModel->where('user_id',$user_id)->first();
$data_old_password = $user['password'];
if (!password_verify($old_password, $data_old_password)) {
return $this->response->setJSON([
'status' => 'error',
'message' => 'Old Password does not match.'
]);
}
}
if($new_password != $confirm_password){
$response = array(
'status' => 'error',
'message' => 'New Password And Confirm Password Not Match...'
);
return json_encode($response);
}
$hashedPassword = password_hash($new_password, PASSWORD_DEFAULT);
$data['password'] = $hashedPassword;
if ($UsersModel->update($user_id, $data)) {
$response = array(
'status' => 'success',
'message' => 'Password Change Succuessfully'
);
return json_encode($response);
}
}
public function status_user()
{
try {
$user_id = $this->request->getPost('user_id');
$isactive = $this->request->getPost('isactive');
$UsersModel = new UsersModel();
$data = [
'isactive' => $isactive
];
$updated = $UsersModel->update($user_id, $data);
if ($updated) {
$result = $data;
return $this->respond(['status' => 'success','code' => 200],200);
} else {
$result = "No Match's";
return $this->respond(['status' => 'failed','code' => 404],404);
}
} catch (\Exception $exception) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $exception],500);
}
}
}