MMCT TEAM
Server IP : 103.191.208.50  /  Your IP : 216.73.216.53
Web Server : LiteSpeed
System : Linux orion.herosite.pro 4.18.0-553.53.1.lve.el8.x86_64 #1 SMP Wed May 28 17:01:02 UTC 2025 x86_64
User : celkcksm ( 1031)
PHP Version : 7.4.33
Disable Function : show_source, system, shell_exec, passthru, popen, exec
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/celkcksm/ecampus.ncriptech.com/application/controllers/admin/lms/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/celkcksm/ecampus.ncriptech.com/application/controllers/admin/lms/BooksIssue.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');


/**
 * 
 */
class BooksIssue  extends BaseAdminController
{
	public $db_group='';
	protected $inst_id='';
    protected $inst_type='';
    protected $ctms_access='';

    function __construct()
    {
        parent::__construct();
		$userdata=$this->data['userdata'];
		$this->inst_code=$institute_data['inst_code'];

        $institute_data=check_institute($this->data['userdata']);

        //print_obj($institute_data);die;

        $this->inst_id=$institute_data['institute_id'];
        $this->inst_type=$institute_data['inst_type'];

        $this->lms_access=$institute_data['lms_access'];

        // $this->load->model('lms/author_model','lmsam');
        $this->load->model(array('lms/book_model'=>'lmsbm','lms/rack_model'=>'rcm','lms/publisher_model'=>'pbm','lms/category_model'=>'cam','lms/author_model'=>'aum','lms/language_model'=>'lsmlm','lms/issues_model'=>'lsmism'));
        // $this->load->model('lms/publisher_model','lmspm');
    }


    public function indexBooksIssue(){

		$books_count=$this->lmsbm->get_total_books(null,null,null,$this->inst_code);

		if($this->data['userdata']->user_type=='student'  || $this->data['userdata']->user_type=='agent'  )
		{
            redirect($this->data['base_url']);

		}
    	if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Books Issues';

            if($this->lms_access=='yes'){

				$this->data['books_count']=$books_count;
				$edit_access= check_access_control($this->data['userdata'],'lms_books_issue','edit');
            	$add_access= check_access_control($this->data['userdata'],'lms_books_issue','add');
            	$view_access= check_access_control($this->data['userdata'],'lms_books_issue','view');

				if($this->data['userdata']->user_role==1){
					$add_access='yes';
					$edit_access="yes";
					$view_access="yes";
				}
	
				if($add_access=='yes'){
					$this->data['add_option_view_form']=$add_access;
				}
				else{
					$this->data['add_option_view_form']='no';
				}

                $this->theme->title($this->data['page_title'])->load('lms/vw_books_issues', $this->data);

            }else{
                $this->theme->title($this->data['page_title'])->load('lms/vw_lms_permission_denied', $this->data);
            }


        }else{

            redirect($this->data['base_url']);
        }
    }

    public function indexBooksIssueAddEdit($issue_id=null){
    	if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Issue New Book';

			$issue_data=[];
			$_sessions=[];
			$issued_books=[];
			
			$books_count=$this->lmsbm->get_total_books(null,null,null,$this->inst_code);

            if($this->lms_access=='yes'){
				$edit_access= check_access_control($this->data['userdata'],'lms_books_issue','edit');
            	$add_access= check_access_control($this->data['userdata'],'lms_books_issue','add');
            	$view_access= check_access_control($this->data['userdata'],'lms_books_issue','view');

				if($this->data['userdata']->user_role==1){
					$add_access='yes';
					$edit_access="yes";
					$view_access="yes";
				}


				if($add_access=='yes' && $edit_access=='yes' && $view_access=='yes'){
					if($issue_id!=null){
						$issue_id=decode_data($issue_id);
						$issue_data=$this->lsmism->get_book_issue_data(array('issue_id'=>$issue_id),TRUE,$this->inst_code);
						

						if(!empty($issue_data)){
							if($issue_data->issue_user_type=='student'){
								$sessions=$this->sessm->get_session(array('session_inst_id'=>$this->inst_id,'session_status'=>'active'),FALSE,$this->inst_code);	

								if(!empty($sessions)){
									foreach ($sessions as $key => $value) {
										$_sessions[]=array(
											'session_id'=>$value->session_id,
											'session_start_year'=>$value->session_start_year,
											'session_end_year'=>$value->session_end_year,
											'selected'=>($value->session_id==$issue_data->issue_user_session_id)?'selected':''
										);
									}
								}
							}else if($issue_data->issue_user_type=='employee'){

							}


							$books_ids=char_separated(unserialize($issue_data->issue_book_id));
							$books_param['book_ids']=$books_ids;
							$books_param['order'] = array('book_id' => 'ASC');
							$issued_books=$this->lmsbm->get_book_data($books_param,$this->inst_code);
						}

						//print_obj($issued_books);
					}

					$this->data['books_count']=$books_count;

					$this->data['issue_data']=$issue_data;

					$this->data['issued_books']=$issued_books;

					$this->data['sessions']=$_sessions;

					$this->theme->title($this->data['page_title'])->load('lms/vw_books_issues_add_edit', $this->data);
				}else{
					$this->theme->title($this->data['page_title'])->load('lms/vw_lms_permission_denied', $this->data);
				}
            }else{
                $this->theme->title($this->data['page_title'])->load('lms/vw_lms_permission_denied', $this->data);
            }


        }else{

            redirect($this->data['base_url']);
        }
    }


	public function onSearchBooksIssue(){
        
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){
				$edit_access= check_access_control($this->data['userdata'],'lms_books_issue','edit');
            	$delete_access= check_access_control($this->data['userdata'],'lms_books_issue','delete');

				if($this->data['userdata']->user_role==1){
					$edit_access='yes';
					$delete_access="yes";
				}

            	$param['inst_id']=$this->inst_id;
            	$param['inst_type']=$this->inst_type;

                $param['column_order'] = array(
                    null,
                    'book_name',
                    'book_isbn'
                );

                $param['column_search'] = array('book_name');
                $param['order'] = array('issue_id' => 'ASC');
                $posts=$this->input->post();


                //$param['created_by']=session_userdata('admin_id');

                $list = $this->lsmism->_get_book_issue_data($posts,$param,FALSE,$this->inst_code);                
                
                $data = array();
                $no = 0;

                $action='';

                foreach ($list as $bdata){
                    $no++;

                    $row = array();

                    if($bdata->issue_penalty_applied=='yes'){
                    	$penalty=number_format($bdata->issue_penalty);
                    }else if($bdata->issue_penalty_applied=='no'){
                    	$penalty='<span class="badge badge-success">Not Applied</span>';
                    }

                    $book_ids=unserialize($bdata->issue_book_id);

                    $_book_data='<ol>';

                    foreach ($book_ids as $key => $value) {
                    	$book_data=$this->lmsbm->get_book(array('book_id'=>$value),TRUE,$this->inst_code);

                    	$_book_data.='<li>'.$book_data->book_name.'</li>';
                    }

                    $_book_data.='</ol>';

					if(!empty($bdata->stu_mid_name)){
						$stu_name=$bdata->stu_first_name.' '.$bdata->stu_mid_name.' '.$bdata->stu_last_name;
					}else{
						$stu_name=$bdata->stu_first_name.' '.$bdata->stu_last_name;
					}

					$total_penalty=$this->lsmism->get_book_issue_late_fees_data(array('book_issue_id'=>$bdata->issue_id),TRUE,$this->inst_code);

					if($bdata->issue_status=='returned'){
						$status='<span class="badge badge-success">Returned</span>';
					}else if($bdata->issue_status=='renewed'){
						$status='<span class="badge badge-warning">Renewed</span>';
					}else if($bdata->issue_status=='not_returned'){
						$status='<span class="badge badge-info">Not Returned</span>';
					}else if($bdata->issue_status=='lost'){
						$status='<span class="badge badge-danger">Lost</span>';
					}

                    $row[]  =   $no; 
                    $row[]  =   $stu_name.'<br>'.$bdata->stu_user_code;
                    $row[]	=	date('d-m-Y',strtotime($bdata->issue_issued_at)).'<br>'.date('d-m-Y',strtotime($bdata->issue_return_last_date));
                    $row[]  =   $status;

                    $row[]=	(!empty($total_penalty) && $total_penalty->late_fee>0)?'₹ '.number_format($total_penalty->late_fee,2):'N/A';

                    $row[]  =   $_book_data;					

					$action='<div class="btn-group btn-group-rounded" role="group" aria-label="Basic example">';

					if($edit_access=='yes' && $delete_access=='yes'){
						$action.='<a class="btn btn-xs btn-dark" href="'.$this->data['base_url'].'/lms/books/issues/add/'.encode_data($bdata->issue_id ).'" ><i class="fa fa-edit"></i></a><button type="button" class="btn btn-xs btn-danger btn_del_book_issues" data-book_issue_id="'.encode_data($bdata->issue_id).'"><i class="fa fa-trash"></i></button>';
					}else if($edit_access=='no' && $delete_access=='yes'){
						$action.='<button type="button" class="btn btn-xs btn-danger btn_del_book_issues" data-book_issue_id="'.encode_data($bdata->issue_id).'"><i class="fa fa-trash"></i></button>';
					}else if($edit_access=='yes' && $delete_access=='no'){
						$action.='<a class="btn btn-xs btn-dark" href="'.$this->data['base_url'].'/lms/books/issues/add/'.encode_data($bdata->issue_id ).'" ><i class="fa fa-edit"></i></a>';
					}else if($edit_access=='no' && $delete_access=='no'){
						$action.='action not permitted';
					}

					$action.='</div>';
                    
                    $row[]  =   $action;

                    $data[] = $row; 
                }

                $output = array(
                    "draw" => isset($posts['draw'])?$posts['draw']:'',
                    "recordsTotal" => $this->lsmism->_get_book_issue_data($posts,$param,TRUE,$this->inst_code),
                    "recordsFiltered" => $this->lsmism->_get_book_issue_data($posts,$param,TRUE,$this->inst_code),
                    "data" => $data,
                );
                
                echo json_encode($output);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
        
    }


    public function onLoadIssueableBooks(){
    	 if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

            	$param['inst_id']=$this->inst_id;
            	$param['inst_type']=$this->inst_type;

                $param['column_order'] = array(
                    null,
                    'book_name',
                    'author_name'
                );

                $param['column_search'] = array('book_name');
                $param['order'] = array('book_id' => 'ASC');
				$param['inst_available']='yes';
				$param['book_available_copy']=true;
                $posts=$this->input->post();

                if(isset($posts['issue_id'])){
                	$issue_id=decode_data($posts['issue_id']);
                	$issued_data=$this->lsmism->get_book_issue_data(array('issue_id'=>$issue_id));
                	$books_ids=char_separated(unserialize($issued_data->issue_book_id));
					$books_param['book_ids']=$books_ids;
					$books_param['order'] = array('book_id' => 'ASC');
					$issued_books=$this->lmsbm->get_book_data($books_param,$this->inst_code);
                }else{                	
                	$issued_books=array();
                }


                $list = $this->lmsbm->_get_book_data($posts,$param,FALSE,FALSE);               
                
                $data = array();
                $no = 0;

               	if(!empty($list)){
               	 	foreach ($list as $bdata){ 

	                    $data[] = array(
	                    	'book_id'=>$bdata->book_id,
	                    	'book_name'=>$bdata->book_name,
	                    	'book_code'=>$bdata->book_code,
							'book_author'=>$bdata->author_name,
	                    	'book_qty'=>$bdata->book_qty,
	                    	'book_is_available'=>$bdata->book_is_available,
							'book_available_copy'=>$bdata->book_available_copy,
	                    	'book_category'=>$bdata->category_name,
	                    	'book_issued'=>(in_array($bdata->book_id, $issued_books))?'checked':'',
	                    	'book_disabled'=>(in_array($bdata->book_id, $issued_books))?'disabled':'',
	                    ); 
	                }
               	}

	               
                $this->data['data_rows']=$data;
				$this->data['issued_books']=$issued_books;

                $return['html']=$this->theme->view('_pages/lms/vw_books_to_issue_dyna',$this->data,true);

                json_headers($return);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
        	redirect($this->data['base_url']);
        }
    }


    public function onAddEditBookIssuesData(){
	    if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
	        if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

				$db_group=$this->inst_code;
	        	$user_id=$this->data['userdata']->user_id;
	        	$issue_id=post_data('_issue_id');
	        	$session_id=post_data('issue_session');
				$member_type=post_data('issue_member_type');
				$department_id=post_data('issue_department');
	        	$student_id=post_data('issue_member');
	        	$last_date=post_data('issue_return_last_date');
	        	$penalty=post_data('issue_penalty');
				$penalty_applicable=post_data('issue_penalty_applicable');
				$penalty_type=post_data('issue_penalty_type');

	        	if(empty($issue_id)){
	        		// $this->form_validation->set_rules('issue_session', 'Session', 'trim|required|numeric|greater_than[0]');
	        		// $this->form_validation->set_rules('issue_student', 'Student', 'trim|required|numeric|greater_than[0]');
	        		$this->form_validation->set_rules('issue_return_last_date', 'Last Date', 'trim|required|regex_match[/^\d{2}-\d{2}-\d{4}$/]');
	        	}

	        	

				$issue_book_id=$this->input->post('issue_book_id');

				if(empty($issue_id)){
					if($penalty_applicable=='yes'){
						$this->form_validation->set_rules('issue_penalty', 'Penalty value', 'trim|required|regex_match[/^(?:\d+\.?\d*|\.\d+)$/]');
					}					

					if ($this->form_validation->run() == FALSE){
						$validation_error_data = strip_tags($this->form_validation->error_string());
						$return['error']=$validation_error_data;
					}else{
						if(!empty($issue_book_id)){
							foreach ($issue_book_id as $key => $value) {             			
								$book_ids[]=$value;							
							}

							if($member_type=='student'){
								$issue_user_id=$student_id;
							}

							$d=array(
								'issue_user_session_id'=>($member_type=='student')?$session_id:0,
								'issue_user_department_id'=>($member_type=='employee')?$department_id:0,
								'issue_user_id'=>$issue_user_id,
								'issue_user_type'=>$member_type,
								'issue_inst_id'=>$this->inst_id,
								'issue_inst_type'=>$this->inst_type,
								'issue_book_id'=>serialize($book_ids),							
								'issue_return_last_date'=>date('Y-m-d',strtotime($last_date)),
								'issue_penalty'=>$penalty,
								'issue_penalty_type'=>$penalty_type,
								'issue_penalty_applied'=>$penalty_applicable,
								'issue_penalty'=>($penalty_applicable=='yes')?$penalty:0,
								'issue_issued_at'=>date('Y,m-d'),
								'issue_issued_by'=>$user_id
							);	
							$added=$this->lsmism->store_book_issue_data($d,$db_group);

							if($added){
								foreach ($book_ids as $key => $value) {
									$book_data=$this->lmsbm->get_book(array('book_id'=>$value),TRUE,$db_group);
									if(!empty($book_data)){
										$available_copy=$book_data->book_available_copy-1;
										$book_is_available=($available_copy==0)?'no':'yes';
										$this->lmsbm->update_book_data(array('book_is_available'=>$book_is_available,'book_available_copy'=>$available_copy),array('book_id'=>$value),FALSE,$db_group);
									}																
								}

								$return['success']='Book has been issued';
							}else{
								$return['error']='Book has not been issued';
							}
						}else{
							$return['error']='Select at least one book to issue';
						}
					}
					
				}else{
					if(is_string($issue_id)){

						$issue_id=decode_data($issue_id);
						$issue_return_status=post_data('issue_return_status');
						$issue_return_date=post_data('issue_return_date');

						$issued_data=$this->lsmism->get_book_issue_data(array('issue_id'=>$issue_id));

						if(!empty($issued_data)){
							$d['issue_updated_by']=$user_id;
							$d['issue_updated_at']=date('Y,m-d');

							$prev_book_ids=unserialize($issued_data->issue_book_id); //previous book ids

							foreach ($issue_book_id as $key => $value) {             			
								$book_ids[]=$value;							
							}

							if(!empty($book_ids)){
								array_push($prev_book_ids,$book_ids);
							}								

							if($member_type=='student'){
								$issue_user_id=$student_id;
							}

							$d['issue_status']=$issue_return_status;
							

							if($issue_return_status=='returned'){
								$d['issue_return_date']=date('Y-m-d',strtotime($issue_return_date));
							} 
							
							if($issue_return_status=='renewed'){
								$d['issue_renew_date']= date('Y-m-d',strtotime($issue_return_date));
							}

							$added=$this->lsmism->update_book_issue_data($d,array('issue_id'=>$issue_id),FALSE,$db_group);


							if($added){
								$stored_book_uids=unserialize($issued_data->issue_book_id);

								foreach ($stored_book_uids as $key => $value) {
									$book_data=$this->lmsbm->get_book(array('book_id'=>$value),TRUE,$db_group);
									if(!empty($book_data)){
										$available_copy=$book_data->book_available_copy+1;
										$book_is_available=($available_copy==0)?'no':'yes';
										$this->lmsbm->update_book_data(array('book_is_available'=>$book_is_available,'book_available_copy'=>$available_copy),array('book_id'=>$value),FALSE,$db_group);
									}
								}

								foreach ($book_ids as $key => $value) {	
									$_book_data=$this->lmsbm->get_book(array('book_id'=>$value),FALSE,$db_group);
									if(!empty($_book_data)){
										$_available_copy=$_book_data->book_available_copy-1;
										$_book_is_available=($_available_copy==0)?'no':'yes';
										$this->lmsbm->update_book_data(array('book_is_available'=>$_book_is_available,'book_available_copy'=>$_available_copy),array('book_id'=>$value),FALSE,$db_group);
									}			
								}

								if($issue_return_status=='returned'){
									$msg='Books has been returned';
								}else if($issue_return_status=='renewed'){
									$msg='Book has been renewed';
								}else if($issue_return_status=='not_returned'){
									$msg='Book has not been returned';
								}

								//echo $msg;die;

								$return['success']=$msg;
								$return['redirect']=$this->data['base_url'].'/lms/books/issues';
							}else{
								$return['error']='There has been asn error in updating status';
							}
						}else{
							$return['error']='Book issue data not found';
						}

					}else{
						$return['error']='Data manipulation is not allowed';
					}
				}	                	
                
	            
	            json_headers($return);

	        }else{
	            redirect($this->data['base_url']);
	        }
	    }else{
	        redirect($this->data['base_url']);
    	}
    }


	public function onDeleteBookIssues(){
		if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
			if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){
				$issue_id=post_data('_book_issue_id');
				if(!empty($issue_id)){
					$issue_id=decode_data($issue_id);
					$issue_data=$this->lsmism->get_book_issue_data(array('issue_id'=>$issue_id));
					if(!empty($issue_data)){
						$book_ids=unserialize($issue_data->issue_book_id);
						$deleted=$this->lsmism->delete_book_issue_data(array('issue_id'=>$issue_id));
						if($deleted){
							foreach ($book_ids as $key => $value) {
								$book_data=$this->lmsbm->get_book(array('book_id'=>$value));
								if(!empty($book_data)){
									$available_copy=$book_data->book_available_copy+1;
									$book_is_available=($available_copy==0)?'no':'yes';
									$this->lmsbm->update_book_data(array('book_is_available'=>$book_is_available,'book_available_copy'=>$available_copy),array('book_id'=>$value));
								}
							}
							$this->lsmism->delete_book_issue_late_fees_data(array('book_issue_id'=>$issue_id));

							$return['success']='Book issue has been deleted';
						}else{
							$return['error']='Data not deleted.Try after sometime';
						}
						
					}else{
						$return['error']='Book issue data not found';
					}

				}

				json_headers($return);
			}else{
				redirect($this->data['base_url']);
			}
		}else{
			redirect($this->data['base_url']);
		}
	}
}

MMCT - 2023