444 lines
14 KiB
PHP
444 lines
14 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use App\Models\UsersModel;
|
|
use App\Models\UsersLogModel;
|
|
|
|
class Users extends BaseController {
|
|
protected array $data;
|
|
|
|
function __construct() {
|
|
$this->data['levels'] = array('0'=>'None', '1'=>'Super User', '2'=> 'Technical Support Manager', '3' => 'TSO IVD', '4'=>'Product Spesialis');
|
|
}
|
|
|
|
public function index() {
|
|
$db = \Config\Database::connect();
|
|
$sql = "select u.*, up.texts as userposition, ud.texts as userdepartment from users u
|
|
left join userposition up on u.userposid=up.userposid
|
|
left join userdepartment ud on u.userdeptid=ud.userdeptid
|
|
order by enddate";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['users'] = $results;
|
|
return view('users_index', $data);
|
|
}
|
|
|
|
public function view($userid = null) {
|
|
|
|
$db = \Config\Database::connect();
|
|
|
|
$sql = "select u.*, up.texts as userposition, ud.texts as userdepartment,
|
|
CONCAT(ur.firstname,' ',ur.lastname) AS userreportto, o.offname
|
|
from users u
|
|
left join userposition up on u.userposid=up.userposid
|
|
left join userdepartment ud on u.userdeptid=ud.userdeptid
|
|
left join users ur on ur.userid=u.reportto
|
|
left join offices o on o.offid=u.offid
|
|
where u.userid='$userid'
|
|
order by enddate";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['users'] = $results;
|
|
|
|
$sql = "select * from users_log where userid='$userid' ORDER BY createdate DESC;";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['users_log'] = $results;
|
|
|
|
return view('users_view', $data);
|
|
}
|
|
|
|
public function edit($userid = null) {
|
|
$db = \Config\Database::connect();
|
|
if($userid != 0) {
|
|
$sql = "SELECT *, up.texts as userposition, ud.texts as userdepartment
|
|
FROM users u
|
|
left join userposition up on up.userposid=u.userposid
|
|
left join userdepartment ud on ud.userdeptid=u.userdeptid
|
|
WHERE userid='$userid'";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['users'] = $results;
|
|
}
|
|
|
|
$sql = "SELECT * FROM userposition";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['userposition'] = $results;
|
|
$sql = "SELECT * FROM userdepartment";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['userdepartment'] = $results;
|
|
|
|
//$sql = "SELECT userid, firstname, lastname FROM users WHERE userposid IN (1,2,3)";
|
|
$sql = "SELECT userid, firstname, lastname FROM users"; // Sementara
|
|
$query = $db->query($sql);
|
|
|
|
$results = $query->getResultArray();
|
|
$data['userreportto'] = $results;
|
|
$sql = "SELECT * FROM offices";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['offices'] = $results;
|
|
|
|
$data['levels'] = $this->data['levels'];
|
|
|
|
if ($this->request->getMethod() === 'post') {
|
|
|
|
// Mencegah Tanggal Agar Tidak 0000-00-00
|
|
$enddate = $this->request->getVar('enddate');
|
|
if($this->request->getVar('enddate') === ''){$enddate=null;}
|
|
|
|
// Untuk User Baru
|
|
if ($this->request->getVar('userid') == 0) {
|
|
$rules = [
|
|
'userid' => 'required',
|
|
'usernumber' => 'required',
|
|
'firstname' => 'required',
|
|
'initial' => 'required',
|
|
'email_1' => 'required',
|
|
'phone' => 'required',
|
|
'userposid' => 'required',
|
|
'userdeptid' => 'required',
|
|
'startdate' => 'required',
|
|
];
|
|
$data['new_value'] = [
|
|
'userid' => $this->request->getVar('userid'),
|
|
'usernumber' => $this->request->getVar('usernumber'),
|
|
'firstname' => $this->request->getVar('firstname'),
|
|
'lastname' => $this->request->getVar('lastname'),
|
|
'initial' => $this->request->getVar('initial'),
|
|
'birthdate' => ($this->request->getVar('birthdate') == '') ? NULL : $this->request->getVar('birthdate'),
|
|
'email_1' => $this->request->getVar('email_1'),
|
|
'email_2' => $this->request->getVar('email_2'),
|
|
'phone' => $this->request->getVar('phone'),
|
|
'level' => $this->request->getVar('level'),
|
|
'userposid' => $this->request->getVar('userposid'),
|
|
'userdeptid' => $this->request->getVar('userdeptid'),
|
|
'reportto' => $this->request->getVar('reportto'),
|
|
'offid' => $this->request->getVar('offid'),
|
|
'startdate' => $this->request->getVar('startdate'),
|
|
'enddate' => $enddate
|
|
];
|
|
|
|
// Untuk User Yang Sudah Ada
|
|
} else {
|
|
|
|
$rules = [
|
|
'userid' => 'required',
|
|
'usernumber' => 'required',
|
|
'firstname' => 'required',
|
|
'initial' => 'required',
|
|
'email_1' => 'required',
|
|
'phone' => 'required',
|
|
'startdate' => 'required',
|
|
];
|
|
|
|
$data['new_value'] = [
|
|
'userid' => $this->request->getVar('userid'),
|
|
'usernumber' => $this->request->getVar('usernumber'),
|
|
'firstname' => $this->request->getVar('firstname'),
|
|
'lastname' => $this->request->getVar('lastname'),
|
|
'initial' => $this->request->getVar('initial'),
|
|
'birthdate' => ($this->request->getVar('birthdate') == '') ? NULL : $this->request->getVar('birthdate'),
|
|
'email_1' => $this->request->getVar('email_1'),
|
|
'email_2' => $this->request->getVar('email_2'),
|
|
'phone' => $this->request->getVar('phone'),
|
|
'level' => $this->request->getVar('level'),
|
|
'startdate' => $this->request->getVar('startdate'),
|
|
'enddate' => $enddate
|
|
];
|
|
}
|
|
|
|
if($this->validate($rules)) {
|
|
|
|
// Untuk Mengupdate User yg Sudah Ada
|
|
if($userid != 0) {
|
|
$usersModel= new UsersModel();
|
|
$usersModel->update($userid, $data['new_value']);
|
|
return view('form_success');
|
|
|
|
// Untuk User Baru/Fresh
|
|
} else {
|
|
|
|
// Input Tabel Users
|
|
$usersModel= new UsersModel();
|
|
$usersModel->set('createdate', 'NOW()', FALSE);
|
|
$usersModel->insert($data['new_value']);
|
|
|
|
// Input Tabel User Logs
|
|
// get data
|
|
$userdeptid = $data['new_value']['userdeptid'];
|
|
$sql = "SELECT texts FROM userdepartment WHERE userdeptid = $userdeptid";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$userdepartmenttext = $results[0]['texts'];
|
|
// get data
|
|
$userposid = $data['new_value']['userposid'];
|
|
$sql = "SELECT texts FROM userposition WHERE userposid = $userposid";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$userpostext = $results[0]['texts'];
|
|
// get data
|
|
$userreportid = $data['new_value']['reportto'];
|
|
$sql = "SELECT CONCAT(firstname, ' ', lastname) as fullname FROM users WHERE userid='$userreportid'";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$userreporttext = $results[0]["fullname"];
|
|
// get data
|
|
$useroffid = $data['new_value']['offid'];
|
|
$sql = "SELECT offname FROM offices WHERE offid = $useroffid";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$userofftext = $results[0]['offname'];
|
|
// set data
|
|
$data['new_log_value'] = [
|
|
'userid' => $usersModel->getInsertID(),
|
|
'userdepartment' => $userdepartmenttext,
|
|
'userposition' => $userpostext,
|
|
'reportto' => $userreporttext,
|
|
'office' => $userofftext,
|
|
'startdate' => $data['new_value']['startdate'],
|
|
'enddate' => $data['new_value']['enddate']
|
|
];
|
|
$UsersLogModel = new UsersLogModel();
|
|
$UsersLogModel->set('createdate', 'NOW()', FALSE);
|
|
$UsersLogModel->insert($data['new_log_value']);
|
|
|
|
return view('form_success');
|
|
}
|
|
|
|
} else {
|
|
$data['validation'] = $this->validator;
|
|
return view('users_editor',$data);
|
|
}
|
|
}
|
|
return view('users_editor', $data);
|
|
}
|
|
|
|
public function edit_password($userid = null) {
|
|
$db = \Config\Database::connect();
|
|
$sql = "SELECT * FROM users WHERE userid='$userid'";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['users'] = $results;
|
|
if ($this->request->getMethod() === 'post') {
|
|
$rules = [
|
|
'userid' => 'required',
|
|
'password' => 'required',
|
|
'password_confirm' => 'required|matches[password]'
|
|
];
|
|
$data['new_value'] = [
|
|
'password' => password_hash($this->request->getVar('password'), PASSWORD_DEFAULT)
|
|
];
|
|
if($this->validate($rules)){
|
|
$usersModel= new UsersModel();
|
|
$usersModel->update($userid, $data['new_value']);
|
|
return view('form_success');
|
|
} else {
|
|
$data['validation'] = $this->validator;
|
|
return view('users_edit_password',$data);
|
|
}
|
|
}
|
|
return view('users_edit_password', $data);
|
|
}
|
|
|
|
public function toggle($userid = 0) {
|
|
$db = \Config\Database::connect();
|
|
$sql = "update users set enddate=
|
|
case when enddate is not null then null
|
|
else NOW()
|
|
end
|
|
where userid='$userid'";
|
|
if($db->query($sql)) { return view('form_success'); }
|
|
else { return view('form_fail'); }
|
|
}
|
|
|
|
// Update Jabatan
|
|
public function edit_role($userid){
|
|
|
|
$db = \Config\Database::connect();
|
|
|
|
$startwork = date('Y-m-d');
|
|
$data['startwork'] = $startwork;
|
|
|
|
if($userid != 0) {
|
|
$sql = "SELECT *, up.texts as userposition, ud.texts as userdepartment
|
|
FROM users u
|
|
left join userposition up on up.userposid=u.userposid
|
|
left join userdepartment ud on ud.userdeptid=u.userdeptid
|
|
WHERE userid='$userid'";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['users'] = $results;
|
|
}
|
|
|
|
$sql = "SELECT * FROM userposition";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['userposition'] = $results;
|
|
|
|
$sql = "SELECT * FROM userdepartment";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['userdepartment'] = $results;
|
|
|
|
//$sql = "SELECT userid, firstname, lastname FROM users WHERE userposid IN (1,2,3)";
|
|
$sql = "SELECT userid, firstname, lastname FROM users"; // Sementara
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['userreportto'] = $results;
|
|
|
|
$sql = "SELECT offid, offname FROM offices";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['offices'] = $results;
|
|
|
|
if ($this->request->getMethod() === 'post') {
|
|
|
|
$rules = [
|
|
'userid' => 'required',
|
|
'userposid' => 'required',
|
|
'userdeptid' => 'required',
|
|
'reportto' => 'required',
|
|
'offid' => 'required',
|
|
'startdate' => 'required',
|
|
];
|
|
|
|
$userid = $this->request->getVar('userid');
|
|
$userposid = $this->request->getVar('userposid');
|
|
$userdeptid = $this->request->getVar('userdeptid');
|
|
$reportto = $this->request->getVar('reportto');
|
|
$offid = $this->request->getVar('offid');
|
|
$startdate = $this->request->getVar('startdate');
|
|
|
|
$data['new_value'] = [
|
|
'userid' => $this->request->getVar('userid'),
|
|
'userposid' => $this->request->getVar('userposid'),
|
|
'userdeptid' => $this->request->getVar('userdeptid'),
|
|
'reportto' => $this->request->getVar('reportto'),
|
|
'offid' => $this->request->getVar('offid'),
|
|
];
|
|
|
|
if($this->validate($rules)){
|
|
|
|
// Update Users
|
|
$usersModel= new UsersModel();
|
|
$usersModel->update($userid, $data['new_value']);
|
|
|
|
|
|
// Update Log_Users
|
|
$sql = "SELECT userlogid FROM users_log where userid=$userid order by userlogid desc limit 1";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
|
|
if($results != null){
|
|
$userlogid = $results[0]['userlogid'];
|
|
$data['users_log'] = [
|
|
'enddate' => $startdate
|
|
];
|
|
|
|
$usersLogModel= new UsersLogModel();
|
|
$usersLogModel->update($userlogid, $data['users_log']);
|
|
}
|
|
|
|
// Insert Log_Users
|
|
$sql = "SELECT texts FROM userdepartment WHERE userdeptid = $userdeptid";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$userdepttext = $results[0]['texts'];
|
|
|
|
$sql = "SELECT texts FROM userposition WHERE userposid = $userposid";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$userposidtext = $results[0]['texts'];
|
|
|
|
$sql = "SELECT CONCAT(firstname, ' ', lastname) as fullname FROM users WHERE userid = $reportto";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
if($results != null) {$usernametext = $results[0]['fullname'];} else {$usernametext=null;}
|
|
|
|
$sql = "SELECT offname as texts FROM offices WHERE offid = $offid";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$offname = $results[0]['texts'];
|
|
|
|
$data['users_log'] = [
|
|
'userid' => $userid,
|
|
'userposition' => $userposidtext,
|
|
'userdepartment' => $userdepttext,
|
|
'reportto' => $usernametext,
|
|
'office' => $offname,
|
|
'startdate' => $this->request->getVar('startdate'),
|
|
];
|
|
|
|
$usersLogModel= new UsersLogModel();
|
|
$usersLogModel->set('createdate', 'NOW()', FALSE);
|
|
$usersLogModel->insert($data['users_log']);
|
|
|
|
|
|
return view('form_success');
|
|
|
|
} else {
|
|
$data['validation'] = $this->validator;
|
|
return view('users_position_editor',$data);
|
|
}
|
|
}
|
|
|
|
return view('usersrole_editor',$data);
|
|
}
|
|
|
|
// Edit History Jabatan
|
|
public function users_log_edit($userlogid = 0) {
|
|
$db = \Config\Database::connect();
|
|
|
|
$sql = "SELECT * FROM users_log WHERE userlogid='$userlogid'";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['users_log'] = $results;
|
|
$userid = $results[0]['userid'];
|
|
|
|
$sql = "SELECT CONCAT(firstname, ' ', lastname) as fullname FROM users WHERE userid='$userid'";
|
|
$query = $db->query($sql);
|
|
$results = $query->getResultArray();
|
|
$data['fullname'] = $results[0]['fullname'];
|
|
|
|
if ($this->request->getMethod() === 'post') {
|
|
|
|
$enddate = $this->request->getVar('enddate');
|
|
if($enddate === ''){$enddate=null;}
|
|
|
|
$rules = [
|
|
'startdate' => 'required'
|
|
];
|
|
$data['new_value'] = [
|
|
'startdate' => $this->request->getVar('startdate'),
|
|
'enddate' => $enddate,
|
|
];
|
|
if($this->validate($rules)){
|
|
$usersLogModel = new UsersLogModel();
|
|
$usersLogModel->update($userlogid, $data['new_value']);
|
|
|
|
return view('form_success');
|
|
} else {
|
|
$data['validation'] = $this->validator;
|
|
return view('userslog_edit',$data);
|
|
}
|
|
}
|
|
|
|
return view('userslog_edit', $data);
|
|
}
|
|
|
|
// Hapus History Jabatan
|
|
public function users_log_delete($userlogid = 0) {
|
|
$db = \Config\Database::connect();
|
|
$sql = "DELETE FROM users_log WHERE userlogid='$userlogid'";
|
|
if($db->query($sql)) {
|
|
//return view('form_success');
|
|
return redirect()->to('/users');}
|
|
else {
|
|
//return view('form_fail');
|
|
return redirect()->to('/users');}
|
|
}
|
|
} |