662 lines
19 KiB
PHP
662 lines
19 KiB
PHP
<?php if(!defined('BASEPATH')) exit('No direct script access allowed');
|
|
|
|
require APPPATH . '/libraries/BaseController.php';
|
|
|
|
/**
|
|
* Class : user (User Details - Controller)
|
|
* User Class to control all user related operations.
|
|
* @author : Venba Info Tech -
|
|
* @version : 1.1
|
|
* @since : 18 November 2017
|
|
*/
|
|
class user extends BaseController
|
|
{
|
|
/**
|
|
* Default constructor of the class
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->load->model('user_model');
|
|
$this->load->model('dahsboard_Model');
|
|
$this->load->library('form_validation');
|
|
$this->isLoggedIn();
|
|
}
|
|
|
|
/**
|
|
* Index Page for this controller(default function of the class)
|
|
*/
|
|
public function index()
|
|
{
|
|
$this->global['pageTitle'] = 'Resico : Dashboard';
|
|
|
|
$this->load->model('employeedetails_model');
|
|
$this->load->model('dahsboard_Model');
|
|
|
|
$data['EmpCount'] = $this->employeedetails_model->getEmployeeCount();
|
|
|
|
$data['totalpurchaseorder']=$this->dahsboard_Model->totalpurchaseorder();
|
|
$data['totalordervalue']=$this->dahsboard_Model->totalordervalue();
|
|
|
|
$data['pendingpo']=$this->dahsboard_Model->pendingpo();
|
|
|
|
// $data['totalserviceamount']=$this->dahsboard_Model->totalserviceamount();
|
|
// $data['totalcapitalamount']=$this->dahsboard_Model->totalcapitalamount();
|
|
// $data['totalimportamount']=$this->dahsboard_Model->totalimportamount();
|
|
// $data['totalrevenueamount']=$this->dahsboard_Model->totalrevenueamount();
|
|
|
|
$data['totalimportpo']=$this->dahsboard_Model->totalimportpo();
|
|
|
|
$data['details']=$this->dahsboard_Model->reqdetail();
|
|
|
|
$data['pending_details']=$this->dahsboard_Model->req_pending();
|
|
$data['list']=$this->dahsboard_Model->req_list();
|
|
|
|
$data['serviceprogress']=$this->dahsboard_Model->serviceprogress();
|
|
$data['revenueprogress']=$this->dahsboard_Model->revenueprogress();
|
|
$data['importprogress']=$this->dahsboard_Model->importprogress();
|
|
$data['capitalprogress']=$this->dahsboard_Model->capitalprogress();
|
|
|
|
//month-wise area chart
|
|
$data['getTotalServicePoCount'] = $this->dahsboard_Model->getTotalServicePoCount();
|
|
$data['getTotalimportPoCount'] = $this->dahsboard_Model->getTotalimportPoCount();
|
|
$data['getTotalcapitalPoCount'] = $this->dahsboard_Model->getTotalcapitalPoCount();
|
|
$data['getTotalrevenuePoCount'] = $this->dahsboard_Model->getTotalrevenuePoCount();
|
|
|
|
//dashboard pie chart
|
|
$data['importbudgt'] = $this->dahsboard_Model->importbudgt();
|
|
$data['importbal'] = $this->dahsboard_Model->importbal();
|
|
$data['servicebudgt'] = $this->dahsboard_Model->servicebudgt();
|
|
$data['servicebal'] = $this->dahsboard_Model->servicebal();
|
|
$data['revenuebudgt'] = $this->dahsboard_Model->revenuebudgt();
|
|
$data['revenuebal'] = $this->dahsboard_Model->revenuebal();
|
|
$data['capitalbud'] = $this->dahsboard_Model->capitalbud();
|
|
$data['capitalbal'] = $this->dahsboard_Model->capitalbal();
|
|
$data['totemp']=$this->dahsboard_Model->totemp();
|
|
$data['totloan']=$this->dahsboard_Model->totloan();
|
|
$data['totpay']=$this->dahsboard_Model->totpay();
|
|
$data['totrec']=$this->dahsboard_Model->totrec();
|
|
$data['emplist']=$this->dahsboard_Model->emplist();
|
|
|
|
/* yesterday absent list count in employee*/
|
|
$dates = date('Y-m');
|
|
$date = $dates.'-01';
|
|
$dat = date('d',strtotime("-1 days"));
|
|
$WH = 'WH'.date('j',strtotime("-1 days"));
|
|
$yesterday = $this->dahsboard_Model->attyesterday($WH,$date);
|
|
|
|
$values=0;
|
|
foreach ($yesterday as $weekda => $value) {
|
|
if($value[$WH] == 0){
|
|
$values++;
|
|
}
|
|
|
|
}
|
|
|
|
$data['values'] = $values;
|
|
|
|
/*Today absent list count in employee*/
|
|
$dates = date('Y-m');
|
|
$date = $dates.'-01';
|
|
$dat = date('d');
|
|
$WH = 'WH'.date('j');
|
|
$yesterday = $this->dahsboard_Model->attyesterday($WH,$date);
|
|
$values=0;
|
|
|
|
foreach ($yesterday as $weekda => $value) {
|
|
if($value[$WH] == 0){
|
|
$values++;
|
|
}
|
|
}
|
|
|
|
$data['today'] = $values;
|
|
$this->loadViews("dashboard", $this->global, $data , NULL);
|
|
}
|
|
|
|
function attendancemonth()
|
|
{
|
|
|
|
$date = date('Y-m');
|
|
|
|
$dates = $date.'-01';
|
|
$EmpID= $this->input->post('id');
|
|
$monthabs = $this->dahsboard_Model->attendance($EmpID,$dates);
|
|
$persent_month = date('t');
|
|
$values=0;
|
|
$weekdays = array();
|
|
$date = date('d');
|
|
|
|
for($i=1;$i<=$persent_month;$i++)
|
|
{
|
|
$weekdays[] = 'WH'.$i;
|
|
}
|
|
|
|
foreach ($monthabs as $weekda ) {
|
|
foreach ($weekda as $key => $value) {
|
|
foreach ($weekdays as $weeks) {
|
|
|
|
if($weeks == $key)
|
|
{
|
|
if($value != 0){
|
|
$values++;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
$year = date('Y');
|
|
$current_month = date('m');
|
|
$CUR_month = date('t');
|
|
|
|
$data['values'] = $values;
|
|
$data['present_percentage'] = round(($values/$date)*100);
|
|
$data['CUR_month'] = $date;
|
|
|
|
echo json_encode($data);
|
|
|
|
}
|
|
|
|
public function getFinancialStartDate() {
|
|
$CURMONTH = date('n');
|
|
$CURYEAR = date('Y');
|
|
$FINYEAR = 0;
|
|
if($CURMONTH >= 4 ) {
|
|
$FINYEAR = $CURYEAR;
|
|
}else {
|
|
$FINYEAR = $CURYEAR-1;
|
|
}
|
|
|
|
$dateInString = $FINYEAR.'-4-1';
|
|
$result = date_create($dateInString);
|
|
return $result;
|
|
}
|
|
|
|
public function getFinancialEndDate() {
|
|
$CURMONTH = date('n');
|
|
$CURYEAR = date('Y');
|
|
$FINYEAR = 0;
|
|
if($CURMONTH < 4 ) {
|
|
$FINYEAR = $CURYEAR;
|
|
}else {
|
|
$FINYEAR = $CURYEAR+1;
|
|
}
|
|
|
|
$dateInString = $FINYEAR.'-3-31';
|
|
$result = date_create($dateInString);
|
|
return $result;
|
|
}
|
|
|
|
function attendanceyear()
|
|
{
|
|
$CURMONTH = date('m');
|
|
$CURDATE = date('d');
|
|
|
|
|
|
$EmpID= $this->input->post('id');
|
|
$day = array();
|
|
|
|
|
|
$datejoin=$this->dahsboard_Model->joindate($EmpID);
|
|
|
|
$DateofJoiningInString = $datejoin[0]->DateofJoining;
|
|
$DateofJoining = date_create($DateofJoiningInString);
|
|
|
|
|
|
|
|
$finStart = $this->getFinancialStartDate();
|
|
$finEnd = $this->getFinancialEndDate();
|
|
|
|
|
|
$JoinedMonth = date_format($DateofJoining,"n");
|
|
|
|
if($DateofJoining >= $finStart && $DateofJoining <= $finEnd) {
|
|
|
|
$JoinedMonthAttendance = $this->dahsboard_Model->getAllAttendance($EmpID,$JoinedMonth);
|
|
|
|
|
|
$doj_month =date_format($DateofJoining,"n");
|
|
$doj_year= date_format($DateofJoining,"Y");
|
|
$doj_day= date_format($DateofJoining,"j");
|
|
|
|
$joinedMonthDaysCount = cal_days_in_month(CAL_GREGORIAN, $doj_month, $doj_year);
|
|
$joinedMonthWorkingDayCount = $joinedMonthDaysCount - $doj_day;
|
|
|
|
|
|
|
|
$joinedMonthDays =0;
|
|
for($j=$doj_day;$j<=$joinedMonthDaysCount;$j++)
|
|
{
|
|
$weekdays[] = 'WH'.$j;
|
|
}
|
|
foreach ($JoinedMonthAttendance as $day ) {
|
|
//print_r($weekda);
|
|
foreach ($day as $key => $value) {
|
|
foreach ($weekdays as $weeks) {
|
|
|
|
if($weeks == $key)
|
|
{
|
|
if($value!= 0){
|
|
|
|
$joinedMonthDays++;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
$result = $this->dahsboard_Model->attendanceyear($EmpID, $JoinedMonth + 1);
|
|
$yearabs = $this->dahsboard_Model->getAllAttendance($EmpID,$CURMONTH);
|
|
|
|
//print_r($yearabs);exit();
|
|
$TotalNoofDays = $result[0]->TotalWorkingDays;
|
|
$DaysWorked = $result[0]->DaysWorked;
|
|
|
|
|
|
$values=0;
|
|
|
|
$weekdays = array();
|
|
$date = date('d');
|
|
|
|
$Work= array_sum($weekdays);
|
|
|
|
for($j=1;$j<=$date;$j++)
|
|
{
|
|
$weekdays[] = 'WH'.$j;
|
|
}
|
|
foreach ($yearabs as $day ) {
|
|
//print_r($weekda);
|
|
foreach ($day as $key => $value) {
|
|
foreach ($weekdays as $weeks) {
|
|
|
|
if($weeks == $key)
|
|
{
|
|
if($value != 0){
|
|
|
|
$values++;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
$TotalNoofDays = $TotalNoofDays+$CURDATE + $joinedMonthWorkingDayCount ;
|
|
$DaysWorked = $DaysWorked+$values+$joinedMonthDays;
|
|
|
|
$final_res = round(($DaysWorked /$TotalNoofDays) * 100);
|
|
$data['workeds']=$DaysWorked;
|
|
$data['yeardata'] = $final_res;
|
|
$data['totaldays'] = $TotalNoofDays;
|
|
|
|
|
|
echo json_encode($data);
|
|
|
|
|
|
}else {
|
|
$result = $this->dahsboard_Model->attendanceyear($EmpID, 4);
|
|
$yearabs = $this->dahsboard_Model->getAllAttendance($EmpID,$CURMONTH);
|
|
|
|
|
|
$TotalNoofDays = $result[0]->TotalWorkingDays;
|
|
$DaysWorked = $result[0]->DaysWorked;
|
|
|
|
|
|
$values=0;
|
|
|
|
$weekdays = array();
|
|
$date = date('d');
|
|
|
|
$Work= array_sum($weekdays);
|
|
|
|
for($j=1;$j<=$date;$j++)
|
|
{
|
|
$weekdays[] = 'WH'.$j;
|
|
}
|
|
foreach ($yearabs as $day ) {
|
|
//print_r($weekda);
|
|
foreach ($day as $key => $value) {
|
|
foreach ($weekdays as $weeks) {
|
|
|
|
if($weeks == $key)
|
|
{
|
|
if($value != 0){
|
|
|
|
$values++;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
$TotalNoofDays = $TotalNoofDays+$CURDATE;
|
|
$DaysWorked = $DaysWorked+$values;
|
|
|
|
$final_res = round(($DaysWorked /$TotalNoofDays) * 100);
|
|
$data['workeds']=$DaysWorked;
|
|
$data['yeardata'] = $final_res;
|
|
$data['totaldays'] = $TotalNoofDays;
|
|
|
|
echo json_encode($data);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* To load the user list
|
|
*/
|
|
function userListing()
|
|
{
|
|
if($this->isAdmin() == TRUE)
|
|
{
|
|
$this->loadThis();
|
|
}
|
|
else
|
|
{
|
|
|
|
$data['userRecords'] = $this->user_model->userListing();
|
|
|
|
$this->global['pageTitle'] = 'Resico : User Listing';
|
|
|
|
$this->loadViews("users", $this->global, $data, NULL);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* This function is used to load the add new form
|
|
*/
|
|
function addNew()
|
|
{
|
|
if($this->isAdmin() == TRUE)
|
|
{
|
|
$this->loadThis();
|
|
}
|
|
else
|
|
{
|
|
$data['EmpList'] = $this->user_model->getAllEmployees();
|
|
|
|
$data['roles'] = $this->user_model->getUserRoles();
|
|
|
|
$this->global['pageTitle'] = 'Resico : Add New User';
|
|
|
|
$this->loadViews("addNew", $this->global, $data, NULL);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* To check whether email already exist or not
|
|
*/
|
|
function checkEmailExists()
|
|
{
|
|
$userId = $this->input->post("userId");
|
|
$email = $this->input->post("email");
|
|
|
|
if(empty($userId)){
|
|
$result = $this->user_model->checkEmailExists($email);
|
|
} else {
|
|
$result = $this->user_model->checkEmailExists($email, $userId);
|
|
}
|
|
|
|
if(empty($result)){ echo("true"); }
|
|
else { echo("false"); }
|
|
}
|
|
|
|
/**
|
|
* Validation for Employee Dropdown
|
|
*/
|
|
function Employee_validate($selectValue)
|
|
{
|
|
if($selectValue == '0')
|
|
{
|
|
$this->form_validation->set_message('Employee_validate', 'Please Select Employee.');
|
|
return false;
|
|
}
|
|
else // user picked something
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Validation for Role Dropdown
|
|
*/
|
|
function Role_validate($selectValue)
|
|
{
|
|
if($selectValue == '0')
|
|
{
|
|
$this->form_validation->set_message('Role_validate', 'Please Select Role.');
|
|
return false;
|
|
}
|
|
else // user picked something
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
/**
|
|
* To add new user to the system
|
|
*/
|
|
function addNewUser()
|
|
{
|
|
if($this->isAdmin() == TRUE)
|
|
{
|
|
$this->loadThis();
|
|
}
|
|
else
|
|
{
|
|
|
|
$this->form_validation->set_rules('EmpList','EmpList','trim|callback_Employee_validateS');
|
|
$this->form_validation->set_rules('role','role','trim|callback_Role_validate');
|
|
$this->form_validation->set_rules('password','Password','required|max_length[20]');
|
|
$this->form_validation->set_rules('cpassword','Confirm Password','trim|required|matches[password]|max_length[20]');
|
|
|
|
|
|
if($this->form_validation->run() == FALSE)
|
|
{
|
|
$this->addNew();
|
|
}
|
|
else
|
|
{
|
|
$EmpID = $this->input->post('EmpList');
|
|
$roleId = $this->input->post('role');
|
|
$password = $this->input->post('password');
|
|
$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
|
|
$Createddt = $dt->format('Y-m-d H:i:s');
|
|
$email = $this->input->post('MailID');
|
|
|
|
$userInfo = array('email'=>$email,'EmpID'=>$EmpID,'password'=>getHashedPassword($password),'roleId'=>$roleId,'createdBy'=>$this->vendorId,'createdDtm'=>$Createddt);
|
|
|
|
$result = $this->user_model->addNewUser($userInfo);
|
|
|
|
if($result > 0)
|
|
{
|
|
|
|
redirect('userListing','refresh');
|
|
echo "<script>alert('New User Created successfully!');</script>";
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
redirect('userListing','refresh');
|
|
echo "<script>alert('Failiure User Creation!');</script>";
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* For editing purpose and it has oldest values only.
|
|
*/
|
|
function editOld($UserId = '')
|
|
{
|
|
if($this->isAdmin() == TRUE )
|
|
{
|
|
$this->loadThis();
|
|
}
|
|
else
|
|
{
|
|
if($UserId == '')
|
|
{
|
|
// redirect('userListing');
|
|
}
|
|
|
|
$Uid = $_GET['UID'];
|
|
$data['roles'] = $this->user_model->getUserRoles();
|
|
$data['EmpList'] = $this->user_model->GetEmployeeDetails($Uid);
|
|
$data['EmpRole'] = $this->user_model->GetRoleNameByUserID($Uid);
|
|
|
|
$this->global['pageTitle'] = 'Resico : Edit User';
|
|
$this->loadViews("editOld", $this->global, $data, NULL);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* To store edited user information
|
|
*/
|
|
function editUser()
|
|
{
|
|
if($this->isAdmin() == TRUE)
|
|
{
|
|
$this->loadThis();
|
|
}
|
|
else
|
|
{
|
|
$userId = $this->input->post('EmpList');
|
|
$this->form_validation->set_rules('EmpList','EmpList','trim|callback_Employee_validateS');
|
|
$this->form_validation->set_rules('role','role','trim|callback_Role_validate');
|
|
$this->form_validation->set_rules('password','Password','required|max_length[20]');
|
|
$this->form_validation->set_rules('cpassword','Confirm Password','trim|required|matches[password]|max_length[20]');
|
|
|
|
if($this->form_validation->run() == FALSE)
|
|
{
|
|
$this->editOld($userId);
|
|
}
|
|
else
|
|
{
|
|
$EmpID = $this->input->post('EmpList');
|
|
$role = $this->input->post('role');
|
|
$password = $this->input->post('password');
|
|
$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
|
|
$updatedDate = $dt->format('Y-m-d H:i:s');
|
|
|
|
$userInfo = array();
|
|
$userInfo = array('password'=>getHashedPassword($password),'roleId'=>$role,'EmpId'=>$EmpID,'updatedDtm'=>$updatedDate);
|
|
|
|
$result = $this->user_model->editUser($userInfo, $EmpID);
|
|
|
|
if($result == true)
|
|
{
|
|
$this->session->set_flashdata('success', 'User updated successfully');
|
|
}
|
|
else
|
|
{
|
|
$this->session->set_flashdata('error', 'User updation failed');
|
|
}
|
|
|
|
redirect('userListing');
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* To delete the user
|
|
*/
|
|
function deleteUser()
|
|
{
|
|
echo 'Delete';
|
|
$Uid = $this->input->post('id');
|
|
$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
|
|
$updatedDate = $dt->format('Y-m-d H:i:s');
|
|
|
|
$userInfo = array('isDeleted'=>1,'updatedBy'=>$this->vendorId, 'updatedDtm'=>$updatedDate);
|
|
$result = $this->user_model->deleteUser($Uid, $userInfo);
|
|
|
|
echo 'Succssfully change the user status to InAcive';
|
|
|
|
}
|
|
|
|
/**
|
|
* To load the change password screen
|
|
*/
|
|
function loadChangePass()
|
|
{
|
|
$this->global['pageTitle'] = 'Resico : Change Password';
|
|
|
|
$this->loadViews("changePassword", $this->global, NULL, NULL);
|
|
}
|
|
|
|
|
|
/**
|
|
* To store change the password of the user into DB
|
|
*/
|
|
function changePassword()
|
|
{
|
|
$this->load->library('form_validation');
|
|
|
|
$this->form_validation->set_rules('oldPassword','Old password','required|max_length[20]');
|
|
$this->form_validation->set_rules('newPassword','New password','required|max_length[20]');
|
|
$this->form_validation->set_rules('cNewPassword','Confirm new password','required|matches[newPassword]|max_length[20]');
|
|
|
|
if($this->form_validation->run() == FALSE)
|
|
{
|
|
$this->loadChangePass();
|
|
}
|
|
else
|
|
{
|
|
$oldPassword = $this->input->post('oldPassword');
|
|
$newPassword = $this->input->post('newPassword');
|
|
|
|
$resultPas = $this->user_model->matchOldPassword($this->vendorId, $oldPassword);
|
|
|
|
if(empty($resultPas))
|
|
{
|
|
$this->session->set_flashdata('nomatch', 'Your old password not correct');
|
|
redirect('loadChangePass');
|
|
}
|
|
else
|
|
{
|
|
$usersData = array('password'=>getHashedPassword($newPassword), 'updatedBy'=>$this->vendorId,
|
|
'updatedDtm'=>date('Y-m-d H:i:sa'));
|
|
|
|
$result = $this->user_model->changePassword($this->vendorId, $usersData);
|
|
|
|
if($result > 0) { $this->session->set_flashdata('success', 'Password updation successful'); }
|
|
else { $this->session->set_flashdata('error', 'Password updation failed'); }
|
|
|
|
redirect('loadChangePass');
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* To load pagenotfound view
|
|
*/
|
|
function pageNotFound()
|
|
{
|
|
$this->global['pageTitle'] = 'Resico : 404 - Page Not Found';
|
|
|
|
$this->loadViews("404", $this->global, NULL, NULL);
|
|
}
|
|
}
|
|
|
|
?>
|