load->model('Admin_model'); $this->load->helper('url'); $this->load->library('email'); $this->load->helper('file'); $this->load->helper('common_helper'); $this->load->library('Ciqrcode'); date_default_timezone_set('Asia/Kathmandu'); $this->nepaliDateObject = new NepaliDate(); $this->nepali_current_date = cuurentNepaliDate($this->nepaliDateObject); } public function index() { if (!isset($_SESSION['admin_id'])) { $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('admin/header', $data); $this->load->view('admin/login'); $this->load->view('admin/footer'); } else { redirect(base_url() . 'Admin/dashboard'); } } public function admin_login() { $uname = $this->input->post('email'); $pwd = $this->input->post('password'); if ($this->Admin_model->login($uname, $pwd)) { if (isset($_POST['remember_me']) && $_POST['remember_me'] == 'on') { //set 0 instead of time to remove the cookie once the browser is closed setcookie("username", $_POST["email"], time() + (20 * 365 * 24 * 60 * 60)); //86400 seconds in a day setcookie("password", $_POST["password"], time() + (20 * 365 * 24 * 60 * 60)); setcookie("rem_me", 'On', time() + (20 * 365 * 24 * 60 * 60)); } else { if (isset($_COOKIE['username'])) { unset($_COOKIE['username']); setcookie('username', ''); } if (isset($_COOKIE['password'])) { unset($_COOKIE['password']); setcookie('password', ''); } if (isset($_COOKIE['rem_me'])) { unset($_COOKIE['rem_me']); setcookie('rem_me', ''); } } $admin_info = $this->Admin_model->login($uname, $pwd); //getting values from database $admin_id = $admin_info->id; $admin_role = $admin_info->role; $admin_rights = $admin_info->rights; $admin_email = $admin_info->email; $admin_role_ids = $admin_info->admin_role_ids; $admin_name = $admin_info->admin_name; //create required sessions $this->session->set_userdata('admin_id', $admin_id); $this->session->set_userdata('admin_role', $admin_role); $this->session->set_userdata('admin_rights', $admin_rights); $this->session->set_userdata('admin_email', $admin_email); $this->session->set_userdata('admin_role_ids', $admin_role_ids); $this->session->set_userdata('admin_name', $admin_name); echo '1'; } else { echo '0'; } } public function admin_logout() { $this->session->sess_destroy(); redirect(base_url() . 'Admin', 'refresh'); } public function dashboard() { if (isset($_SESSION['admin_id'])) { $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['subject_count'] = $this->db->count_all('subject'); $data['course_count'] = $this->db->count_all('course'); $data['classroom_count'] = $this->db->count_all('classroom'); $data['teacher_count'] = $this->db->count_all('teacher'); $data['student_count'] = $this->db->count_all('students'); $data['exam_count'] = 0; $data['session_count'] = 0; $data['application_count'] = $this->db->count_all('applications'); $data['notification_count'] = $this->db->count_all('notifications'); // report start by shivakumar // $sqlQuery1 = "SELECT feetype_name,icon FROM fee_types WHERE is_active='yes'"; // $data['feestype_data'] = $this->Admin_model->get_query_result($sqlQuery1); // $fee_type_data = array(); // $start_date = date('Y-m-01', strtotime($this->nepali_current_date)); // $current_date = date('Y-m-t', strtotime($this->nepali_current_date)); // $sqlQuery1 = "SELECT id as feetype_id,feetype_name,icon FROM fee_types WHERE is_active='yes'"; // $feetypelist = $this->Admin_model->get_query_result($sqlQuery1); // if (isset($feetypelist) && !empty($feetypelist)) { // foreach ($feetypelist as $ftype) { // if ($ftype['feetype_id'] == 1) { // $appication_totalamt = $this->Admin_model-> ($start_date, $current_date, $ftype['feetype_name'], 'student_fee_online_transactions'); // $fee_type_data[] = array( // 'feetype_id' => $ftype['feetype_id'], // 'feetype_name' => $ftype['feetype_name'], // 'feetype_icon' => $ftype['icon'], // 'feetype_total' => 0, // 'feetype_due_amt' => 0, // 'feetype_paid_amount' => (isset($appication_totalamt) && !empty($appication_totalamt)) ? $appication_totalamt : 0 // ); // } else { // $result = $this->Admin_model->currentMonth_fee($start_date, $current_date, $ftype['feetype_id']); // $fee_type_data[] = array( // 'feetype_id' => $ftype['feetype_id'], // 'feetype_name' => $ftype['feetype_name'], // 'feetype_icon' => $ftype['icon'], // 'feetype_total' => (isset($result['total_course_fee']) && !empty($result['total_course_fee'])) ? $result['total_course_fee'] : 0, // 'feetype_due_amt' => (isset($result['pending_fee']) && !empty($result['pending_fee'])) ? $result['pending_fee'] : 0, // 'feetype_paid_amount' => (isset($result['paid_amount']) && !empty($result['paid_amount'])) ? $result['paid_amount'] : 0 // ); // } // } // } // $data['current_report_data'] = $fee_type_data; $course_query = "SELECT * FROM course WHERE is_active='yes'"; $data['courses'] = $this->Admin_model->get_query_result($course_query); // report end by shivakumar $data['menulist'] = $this->Admin_model->get_adminMenu(); // dd($data['menulist']); $this->load->view('admin/header', $data); $this->load->view('admin/dashboard'); $this->load->view('admin/footer'); } } //subject start public function subject() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $sqlquery = "SELECT * FROM subject ORDER BY id DESC"; $data['subjects'] = $this->Admin_model->get_query_result($sqlquery); $this->load->view('admin/header', $data); $this->load->view('admin/subject'); $this->load->view('admin/footer'); } public function add_edit_subject($subjectId) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/ae_subject.php')) show_404(); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['id'] = $subjectId; if (count($_POST) > 0) { $res = $this->Admin_model->add_edit_subject($subjectId, $_POST); $this->session->set_flashdata('successsubject', str_replace('%s', 'new subject', THE_ADD_SUCCESS_MSG)); if ($subjectId > 0) $this->session->set_flashdata('successsubject', str_replace('%s', 'subject', THE_UPDATE_SUCCESS_MSG)); redirect(base_url() . 'admin/subject'); } $data['title'] = 'Add New Subject'; if ($subjectId > 0) { $data['title'] = 'Update Subject'; $whereqry = array('id' => $subjectId); $data['subject'] = $this->Admin_model->get_subject_details($whereqry); } $this->load->view('admin/header', $data); $this->load->view('admin/ae_subject'); $this->load->view('admin/footer'); } public function addupdate_subject($s_id = '') { if (isset($_POST['update_subject'])) { $s_id = ($_POST['sid'] != 0) ? $_POST['sid'] : 0; $s_name = $_POST['sname']; $s_icon = $_POST['subicon']; $subject_code = $_POST['subcode']; $this->form_validation->set_rules('sname', 'Subject Name', 'required'); $this->form_validation->set_rules('subicon', 'Subject Icon', 'required'); if ($this->form_validation->run() == FALSE) { redirect(base_url() . 'admin/add-edit-subject/' . $s_id, 'refresh'); } else { if ($s_id == 0) { $insertdata = $this->Admin_model->add_subject($s_name, $s_icon, $subject_code); if ($insertdata == 1) { $this->session->set_flashdata('successsubject', str_replace('%s', 'new subject', THE_ADD_SUCCESS_MSG)); } else { $this->session->set_flashdata('errorsubject', str_replace('%s', 'subject', THE_INSERT_FAILED_MSG)); } } else { $is_active = $_POST['is_active']; $updatedata = $this->Admin_model->update_subject($s_id, $s_name, $s_icon, $subject_code, $is_active); if ($updatedata == 1) { $this->session->set_flashdata('successsubject', str_replace('%s', 'subject', THE_UPDATE_SUCCESS_MSG)); } else { $this->session->set_flashdata('errorsubject', str_replace('%s', 'subject', THE_UPDATE_FAILED_MSG)); } } redirect(base_url() . 'admin/subject/' . $s_id, 'refresh'); } } } public function subject_deleted() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $sid = ''; $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['subjects'] = $this->Admin_model->get_delsubjects(); $this->load->view('admin/header', $data); $this->load->view('admin/subject-deleted'); $this->load->view('admin/footer'); } public function course_deleted() { if (isset($_SESSION['admin_id'])) { $sid = ''; $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['course'] = $this->Admin_model->get_delcourse(); $this->load->view('admin/header', $data); $this->load->view('admin/course-deleted'); $this->load->view('admin/footer'); } } public function installment_deleted() { if (isset($_SESSION['admin_id'])) { $sid = ''; $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['installment'] = $this->Admin_model->get_delinstall(); // print_r($data['installment']); $this->load->view('admin/header', $data); $this->load->view('admin/installment_delete'); $this->load->view('admin/footer'); } } public function delete_data() { $id = $_POST['id']; $table = $_POST['table']; $data = $this->Admin_model->delete_data($id, $table); print_r($data); } public function delete_batch($batchId) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $batchId = ($batchId != '') ? $batchId : 0; if ($batchId != 0) { $result = $this->Admin_model->delete_batch($batchId); if ($result == 'exists') { $this->session->set_flashdata('danger', str_replace('%s', 'Batch', ALREADY_ASSIGNED_MSG)); } else if ($result == 'success') { $this->session->set_flashdata('success', str_replace('%s', 'Batch', THE_DELETE_SUCCESS_MSG)); } else if ($result == 'failed') { $this->session->set_flashdata('danger', str_replace('%s', 'Batch', THE_DELETE_ERROR_MSG)); } } else { $this->session->set_flashdata('danger', str_replace('%s', 'Batch', THE_DELETE_ERROR_MSG)); } redirect(base_url() . 'admin/batches'); } public function delete_classroom($del_id) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $clsroomId = (isset($del_id) && !empty($del_id)) ? $del_id : 0; if ($clsroomId != 0) { $result = $this->Admin_model->delete_classroom($clsroomId); if ($result == 'exists') $this->session->set_flashdata('error_msg', 'The Deleting classroom associated with Online session or Students'); else $this->session->set_flashdata('success_msg', str_replace('%s', 'classroom', THE_DELETE_SUCCESS_MSG)); } else { $this->session->set_flashdata('error_msg', 'Classroom Not Found'); } redirect(base_url() . "admin/classroom"); } public function delete_data_permanent() { $id = $_POST['id']; $table = $_POST['table']; $data = $this->Admin_model->delete_data_permanent($id, $table); print_r($data); } public function delete_classroom_permanent() { $id = $_POST['id']; $table = $_POST['table']; $data = $this->Admin_model->delete_classroom_permanent($id, $table); print_r($data); } public function restore_data() { $id = $_POST['id']; $table = $_POST['table']; $data = $this->Admin_model->restore_data($id, $table); print_r($data); } //subject end //course start public function addedit_course() { $c_id = $_POST['cid']; $c_name = $_POST['cname']; $c_sub = $_POST['csubject']; $c_fee = $_POST['cfee']; $a_fee = $_POST['afee']; $csub = implode(',', $c_sub); $data_array = array( 'subject_id' => $csub, 'course_name' => $c_name, 'course_fee' => $c_fee, 'application_fee' => $a_fee ); $data = $this->Admin_model->addedit_course($c_id, $data_array); print_r($data); } //course end /**************************************** START of Batches - Nandini Hulsurkar ************************************/ public function cron_create_db_backup() { $res = $this->database_backup_common(); if (isset($res['successCnt']) && $res['successCnt'] == 4) echo "The database backup has been created successfully."; else echo 'Oops.. Something went wrong in creatingt the database backup.'; exit; } public function database_backup_common() { $this->load->helper('file'); $nepaliDandT = $this->nepali_current_date; $nepaliDandT = str_replace(' ', '_', $nepaliDandT); $nepaliDandT = str_replace(':', '-', $nepaliDandT); //$this->the_path = $_SERVER["DOCUMENT_ROOT"].'/black-board/'; $this->the_path = $_SERVER["DOCUMENT_ROOT"] . '/'; $theDBBDir = $this->the_path . 'database_backups'; if (!file_exists($theDBBDir)) { mkdir($theDBBDir, 0777, true); } $dbArray = array(); $mainDBName = $this->db->database . '.sql'; array_push($dbArray, $mainDBName); $libraryDBObj = $this->load->database('erisnClassroom_lms', TRUE); $libraryDBName = $libraryDBObj->database . '.sql'; array_push($dbArray, $libraryDBName); $hostelDBObj = $this->load->database('hms', TRUE); $hostelDBName = $hostelDBObj->database . '.sql'; array_push($dbArray, $hostelDBName); $busTrackingDBObj = $this->load->database('erisnClassroom_bts', TRUE); $busTrackingDBName = $busTrackingDBObj->database . '.sql'; array_push($dbArray, $busTrackingDBName); $successCnt = 0; $errArray = array(); foreach ($dbArray as $key => $value) { $this->load->dbutil(); $prefs = array( 'format' => 'zip', 'filename' => $value ); $backup = $this->dbutil->backup($prefs); $backupThisDB = $nepaliDandT . '.zip'; $save = $theDBBDir . '/' . $backupThisDB; $res = write_file($save, $backup); if ($res) $successCnt++; else array_push($errArray, $value); } //echo $successCnt; //echo '
';print_r($errArray);
		//echo '
';print_r($dbArray);exit;

		$theReturn['successCnt'] = $successCnt;
		$theReturn['errArray'] = $errArray;
		return $theReturn;
	}

	public function create_database_backup()
	{
		$res = $this->database_backup_common();

		if (isset($res['successCnt']) && $res['successCnt'] == 4)
			$this->session->set_flashdata('success', 'The database backup has been created successfully.');
		else
			$this->session->set_flashdata('danger', 'Oops.. Something went wrong in creatingt the database backup.');

		redirect(base_url() . 'admin/db-backups');
	}

	public function delete_database_backup($fileName)
	{

		$theDBBDir = 'database_backups/' . $fileName;
		if (file_exists($theDBBDir)) {
			if (unlink($theDBBDir))
				$this->session->set_flashdata('success', 'The database backup has been deleted successfully.');
			else
				$this->session->set_flashdata('danger', 'Oops.. Something went wrong in deleting the database backup.');
		} else
			$this->session->set_flashdata('danger', 'Oops.. The database backup file which you are trying to delete doesnot exist.');

		redirect(base_url() . 'admin/db-backups');
	}

	public function database_backups()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'Admin');

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$dbBackupFiles = array();
		$theDBBDir = 'database_backups';
		if (file_exists($theDBBDir)) {
			$dbBackupFiles = array_diff(scandir($theDBBDir, 1), array('..', '.'));
			//echo '
'; print_r($dbBackupFiles);exit;
		}
		$data['dbBackupFiles'] = $dbBackupFiles;

		$this->load->view('admin/header', $data);
		$this->load->view('admin/database-backups', $data);
		$this->load->view('admin/footer');
	}

	public function batches()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'Admin');

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$data['batch'] = $this->Admin_model->get_batches();

		$this->load->view('admin/header', $data);
		$this->load->view('admin/batch');
		$this->load->view('admin/footer');
	}

	public function ajaxCheckIsBatchNameAlreadyExists()
	{
		$result = 'Insufficient Data';
		if (isset($_POST['batch_name']) && $_POST['batch_name'] != '' && isset($_POST['id']) && $_POST['id'] != '') {
			$result = $this->Admin_model->check_batch_name_already_exists($_POST['id'], $_POST['batch_name']);
		}
		echo $result;
		exit;
	}

	public function add_edit_batch($batchId)
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'Admin');

		$sql = "SELECT * FROM batch WHERE id = $batchId";
		$batchDetails = $this->Admin_model->get_batches('', $sql);;
		if (empty($batchDetails) && $batchId != 0)
			redirect('admin/batches');

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$data['bid'] = $batchId;

		$data['title'] = 'Add New Batch';
		if ($batchId > 0) {
			$data['title'] = 'Update Batch';
			$data['batchDetails'] = $batchDetails;
		}

		if (count($_POST) > 0) {
			//echo '
'; print_r($_POST);exit;
			$res = $this->Admin_model->add_edit_batch($batchId, $_POST);

			$this->session->set_flashdata('success', str_replace('%s', 'new batch', THE_ADD_SUCCESS_MSG));
			if ($batchId > 0)
				$this->session->set_flashdata('success', str_replace('%s', 'batch', THE_UPDATE_SUCCESS_MSG));

			redirect(base_url() . 'admin/batches');
		}

		$this->load->view('admin/header', $data);
		$this->load->view('admin/add-edit-batch');
		$this->load->view('admin/footer');
	}

	/**************************************** END of Batches - Nandini Madam************************************/

	//classroom start
	public function classroom()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/classroom.php'))
			show_404();
		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$query = "SELECT cl.*,c.course_name,s.section_name FROM classroom cl LEFT JOIN course c ON cl.course_id =c.id LEFT JOIN section s ON cl.section_id=s.id ORDER BY cl.id ASC";
		$data['classroomlist'] = $this->Admin_model->get_query_result($query);
		$data['title'] = "Classroom List";

		$this->load->view('admin/header', $data);
		$this->load->view('admin/classroom');
		$this->load->view('admin/footer');
	}

	public function add_edit_classroom($classroomId)
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/ae_classroom.php'))
			show_404();
		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$data['courselist'] = $this->Admin_model->get_general_result_details('course', 'DESC', array('is_active' => 'yes'));

		$data['id'] = $classroomId;
		if ($classroomId > 0) {
			$data['title'] = "Update Classroom ";
			$data['classroom'] = $this->Admin_model->get_general_row_details('classroom', 'ASC', array('id' => $classroomId));

			$sqlQuery = "SELECT cl.*,cs.subject_id as course_subject_ids,cts.teacher_id, cts.is_class_teacher FROM classroom cl JOIN course_subjects cs ON cl.course_id=cs.course_id LEFT JOIN classroom_teacher_subject cts ON cs.subject_id=cts.subject_id AND cl.id=cts.classroom_id WHERE cl.id='$classroomId'";
			// $sqlQuery = "SELECT cl.*,cs.subject_id as course_subject_ids FROM classroom cl JOIN
			//  course_subjects cs ON cl.course_id=cs.course_id  WHERE cl.id='$classroomId' AND cs.subject_id NOT IN (Select subject_id as subid from classroom_teacher_subject WHERE classroom_id = $classroomId)";
			$data['course_subjects'] = $this->Admin_model->get_query_result($sqlQuery);

			// dd($data['course_subjects']);
			$data['subjects_teacher'] = $this->Admin_model->get_general_result_details('classroom_teacher_subject', 'ASC', array('classroom_id' => $classroomId));
			// $sqlQuery = "SELECT cs.subject_id,cts.teacher_id FROM `classroom` cl LEFT JOIN classroom_teacher_subject cts on cts.classroom_id=cl.id LEFT JOIN course_subjects cs ON cl.course_id=cs.id WHERE cts.classroom_id=$classroomId";
			// $data['subjects_teacher'] = $this->Admin_model->get_query_result($sqlQuery);

			// echo "
";
			// print_r($data['course_subjects']);
			// die();


			$section_query = "SELECT cl.id ,cs.section_id as sectionId,s.section_name FROM classroom cl LEFT JOIN course_sections cs ON cs.course_id=cl.course_id LEFT JOIN section s ON s.id = cs.section_id WHERE s.is_active='yes' AND cl.id=$classroomId";
			$data['sectionlist'] = $this->Admin_model->get_query_result($section_query);
		} else {
			$data['title'] = " Add Classroom ";
		}
		if (count($_POST) > 0) {
			// echo "
";
			// print_r($_POST);
			// exit;
			if ($classroomId == 0) {
				$check_exists = $this->Admin_model->get_general_result_details('classroom', 'ASC', array('course_id' => $_POST['course_id'], 'section_id' => $_POST['section_id']));
				if (count($check_exists) > 0) {
					$this->session->set_flashdata('error_msg', str_replace('%s', 'Course and Section', THE_EXISTS_ERROR_MSG));
					redirect(base_url() . 'Admin/classroom');
				} else {
					$rst = $this->Admin_model->add_update_classroom($classroomId, $_POST);
					if ($rst === 1)
						$this->session->set_flashdata('success_msg', str_replace('%s', 'new classroom', THE_ADD_SUCCESS_MSG));
					else if ($rst === 2)
						$this->session->set_flashdata('success_msg', str_replace('%s', 'classroom', THE_UPDATE_SUCCESS_MSG));
					else
						$this->session->set_flashdata('error_msg', str_replace('%s', 'new classroom', THE_ADD_ERROR_MSG));
					redirect(base_url() . 'Admin/classroom');
				}
			} else {

				$rst = $this->Admin_model->add_update_classroom($classroomId, $_POST);
				if ($rst === 1)
					$this->session->set_flashdata('success_msg', str_replace('%s', 'new classroom', THE_ADD_SUCCESS_MSG));
				else if ($rst === 2)
					$this->session->set_flashdata('success_msg', str_replace('%s', 'classroom', THE_UPDATE_SUCCESS_MSG));
				else if ($rst === 3)
					$this->session->set_flashdata('error_msg', str_replace('%s', 'classroom', THE_UPDATE_NO_CHANGES_MSG));
				else
					$this->session->set_flashdata('error_msg', str_replace('%s', 'new classroom', THE_ADD_ERROR_MSG));
				redirect(base_url() . 'Admin/classroom');
			}
		}

		$this->load->view('admin/header', $data);
		$this->load->view('admin/ae_classroom');
		$this->load->view('admin/footer');
	}

	public function get_courseSubject()
	{
		$cid = $_POST['cur_id'];
		$tid = '';
		$data['subname'] = $this->Admin_model->get_coursesubject($cid);
		$data['teacher'] = $this->Admin_model->get_teacher($tid);
		echo json_encode($data);
	}

	public function addedit_classroom()
	{
		$cr_id = $_POST['crid'];
		$cr_name = $_POST['crname'];
		$cr_batch_from = $_POST['crbatch_from'];
		$cr_batch_to = $_POST['crbatch_to'];
		$cr_course = $_POST['crcourse'];
		$cr_subject = $_POST['crsubject'];
		$cr_teacher = $_POST['crteacher'];

		$data = $this->Admin_model->addedit_classroom($cr_id, $cr_name, $cr_batch_from, $cr_batch_to, $cr_course, $cr_subject, $cr_teacher);
		print_r($data);
	}


	public function classroom_deleted()
	{
		if (isset($_SESSION['admin_id'])) {
			$crid = '';
			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();
			$data['classroom'] = $this->Admin_model->get_delclassroom($crid);
			$classroom = $data['classroom'];
			$prev = "";
			$cur = "";
			$subject = '';
			$classroom_details = array();
			$k = 0;


			for ($i = 0; $i < count($classroom); $i++) {

				if ($prev == '' && $cur == '') {
					$prev = $classroom[$i]['classroom_name'];
					$cur = $classroom[$i]['classroom_name'];

					$final_details[$k]['classroom_name'] = $classroom[$i]['classroom_name'];
					$data_teacher = $this->Admin_model->get_teacher($classroom[$i]['teacher_id']);
					$data_course = $this->Admin_model->get_course($classroom[$i]['course_id']);

					$final_details[$k]['course_id'] = $classroom[$i]['course_id'];
					$final_details[$k]['id'] = $classroom[$i]['id'];
					$final_details[$k]['course_name'] = $data_course['course_name'];

					$subject = '';
					$teacher = '';

					$k++;
				} else {
					$cur = $classroom[$i]['classroom_name'];
				}

				if ($cur != $prev) {

					//echo $payment_installment;
					$lastk = $k - 1;
					if ($i == count($classroom) - 1) {
						//$installment_details[$lastk]['payment'] = $payment;
						$data_subject = $this->Admin_model->get_subjects($classroom[$i]['subject_id']);
						$data_teacher = $this->Admin_model->get_teacher($classroom[$i]['teacher_id']);

						if ($data_subject['subject_name'] != '' &&  $data_teacher['teacher_name'] != '') {
							$final_details[$k]['subject'] = $data_subject['subject_name'];
							$final_details[$k]['teacher'] =  $data_teacher['subject_name'];
						}
					} else {
						$final_details[$lastk]['subject'] = $subject;
						$final_details[$lastk]['teacher'] = $teacher;
					}

					$final_details[$lastk]['subject'] = $subject;
					$final_details[$lastk]['teacher'] = $teacher;


					$final_details[$k]['classroom_name'] = $cur;
					$final_details[$k]['course_id'] = $classroom[$i]['course_id'];
					$final_details[$k]['id'] = $classroom[$i]['id'];


					$data_subject = $this->Admin_model->get_subjects($classroom[$i]['subject_id']);
					$data_course = $this->Admin_model->get_course($classroom[$i]['course_id']);
					$data_teacher = $this->Admin_model->get_teacher($classroom[$i]['teacher_id']);

					$final_details[$k]['course_name'] = $data_course['course_name'];

					if (isset($data_subject['subject_name']) &&  isset($data_teacher['teacher_name'])) {
						$subject = $data_subject['subject_name'];
						$teacher = $data_teacher['teacher_name'];
					}
					$k++;
				} else {
					if ($i == count($classroom) - 1) {
						$lastk = $k - 1;
						$data_subject = $this->Admin_model->get_subjects($classroom[$i]['subject_id']);
						$data_teacher = $this->Admin_model->get_teacher($classroom[$i]['teacher_id']);

						if ($data_subject['subject_name'] != '' &&  $data_teacher['teacher_name'] != '') {
							$subject .= '
' . $data_subject['subject_name']; $teacher .= '
' . $data_teacher['teacher_name']; } $final_details[$lastk]['subject'] = $subject; $final_details[$lastk]['teacher'] = $teacher; } else { $cur = $classroom[$i]['classroom_name']; // $payment .= '
'.$installment[$i]['payment_installment'].'-'.$installment[$i]['payable_amount']; $data_subject = $this->Admin_model->get_subjects($classroom[$i]['subject_id']); $data_teacher = $this->Admin_model->get_teacher($classroom[$i]['teacher_id']); if (isset($data_subject['subject_name']) && isset($data_teacher['teacher_name'])) { $subject .= '
' . $data_subject['subject_name']; $teacher .= '
' . $data_teacher['teacher_name']; } } } $prev = $cur; } /* echo "
";
	      print_r($final_details);    
	      */

			$data['final_details'] = $final_details;

			$this->load->view('admin/header', $data);
			$this->load->view('admin/classroom-deleted');
			$this->load->view('admin/footer');
		}
	}
	//classroom end

	//teacher start
	public function teacher($id = '')
	{
		if (isset($_SESSION['admin_id'])) {

			if ($id == 1) {
				$this->session->set_flashdata('success_msg', str_replace('%s', 'Teacher', THE_DELETE_SUCCESS_MSG));
			}
			$tid = '';
			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();
			$teachers = $this->Admin_model->get_teacher($tid);

			foreach ($teachers as $key => $value) {

				$filePath = 'assets_admin/images/teacher-profile/' . $value['photo'];
				if (file_exists($filePath)) {
					$teachers[$key]['profile_pic'] = base_url() . 'assets_admin/images/teacher-profile/' . $value['photo'];
				} else {
					$teachers[$key]['profile_pic'] = base_url() . 'common_assets/No-Image.jpg';
				}
			}
			$data['teacher'] = $teachers;
			$hr_db = $this->load->database('hr', TRUE);
			$hr_roles = $hr_db->query("SELECT * from staff_roles where is_active = 'yes'")->result_array();
			$hr_designation = $hr_db->query("SELECT * from hr_designation where is_active = 'yes'")->result_array();
			$data['hr_designation'] = $hr_designation;
			$data['hr_roles'] = $hr_roles;
			$this->load->view('admin/header', $data);
			$this->load->view('admin/teacher');
			$this->load->view('admin/footer');
		}
	}

	public function add_edit_teacher($tid = NULL)
	{
		if (isset($_SESSION['admin_id'])) {
			$data['tid'] = $tid;
			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();

			//shankar code start here /
			$data['subject_list'] = $this->Admin_model->get_subjects();
			$data['assign_subjects'] = array('0');

			//shankar code end here
			if ($tid > 0) {
				$data['detail'] = $this->Admin_model->get_teacher($tid);

				//shankar code start here

				$data['subjects'] = $this->Admin_model->get_teacher($tid, 1);
				$dat = array();
				foreach ($data['subjects'] as $key => $val) {
					array_push($dat, $val['id']);
				}

				$data['assign_subjects'] = $dat;

				//shankar code end here
			}

			$hr_db = $this->load->database('hr', TRUE);
			$hr_roles = $hr_db->query("SELECT * from staff_roles where is_active = 'yes'")->result_array();
			$hr_designation = $hr_db->query("SELECT * from hr_designation where is_active = 'yes'")->result_array();
			$data['hr_designation'] = $hr_designation;
			$data['hr_roles'] = $hr_roles;
			// dd($hr_designation);

			$this->load->view('admin/header', $data);
			$this->load->view('admin/add-edit-teacher');
			$this->load->view('admin/footer');
		}
	}

	public function teacher_deleted()
	{
		if (isset($_SESSION['admin_id'])) {
			$sid = '';
			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();
			$data['teacher'] = $this->Admin_model->get_delteacher();
			$this->load->view('admin/header', $data);
			$this->load->view('admin/teacher-deleted');
			$this->load->view('admin/footer');
		}
	}

	public function addedit_teacher()
	{

		$t_id = $_POST['tid'];

		//   $u_name = $_POST['uname'];
		$t_name = $_POST['tname'];
		$t_email = $_POST['temail'];
		$t_mobile = $_POST['tmobile'];
		$t_address = $_POST['taddress'];
		$t_password = $_POST['tpassword'];
		$t_role = $_POST['role'];
		$t_designation = $_POST['designation'];

		// dd($_POST);

		//shankar code start here
		$c_sub = $_POST['csubject'];
		//shankar code end here

		$profile_image = "";
		if (!empty($_FILES['file']['name'])) {
			$config['upload_path']   = 'assets_admin/images/teacher-profile/';
			$config['allowed_types']     = 'gif|jpg|jpeg|png|jiff|jfif';
			$this->load->library('upload', $config);
			$this->upload->initialize($config);

			$this->load->library('upload', $config);
			$teacher_pic_prev = $this->db->get_where('teacher', array('id' => $t_id))->row()->photo;

			if ($this->upload->do_upload('file')) {
				unlink('assets_admin/images/teacher-profile/' . $teacher_pic_prev);
				$data['upload_data'] = $this->upload->data('file_name');
				$profile_image = $data['upload_data'];
			} else {
				$profile_image = '';
			}
		}



		$data_array = array(
			// 'username' => $u_name,
			'teacher_name' => $t_name,
			'email' => $t_email,
			'mobile' => $t_mobile,
			'address' => $t_address,
			'role' => $t_role,
			'designation' => $t_designation
		);

		$data = $this->Admin_model->addedit_teacher($t_id, $t_password, $profile_image, $data_array, $c_sub);

		// 		var_dump($data);

		if ((int) $data == 1) {
			$this->session->set_flashdata('success_msg', str_replace('%s', 'New Teacher', THE_ADD_SUCCESS_MSG));
		} else if ((int) $data == 2) {
			$this->session->set_flashdata('success_msg', str_replace('%s', 'Teacher', THE_UPDATE_SUCCESS_MSG));
		} else {
			$this->session->set_flashdata('error_msg', str_replace('%s', '! Teacher Alredy Exist  ', THE_ADD_ERROR_MSG));
		}

		redirect(base_url() . 'Admin/teacher');
	}	//teacher end


	public function get_application()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/application.php'))
			show_404();

		$cfid = '';
		$cid = '';
		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$query = "SELECT * FROM course WHERE is_active='yes'";
		$data['courses'] = $this->Admin_model->get_query_result($query);

		if (isset($_POST['filterSubmit']) && $_POST['filterSubmit'] == 'Filter') {
			$course_id = $this->input->post('course');
			$e_date = $this->input->post('end');
			$s_date = $this->input->post('start');

			$s_date = $s_date ? $s_date : '';
			$e_date = $e_date ? $e_date : '';
			$course_id = $course_id ? $course_id : '';

			$data['new'] = $this->Admin_model->get_application($s_date, $e_date, $course_id);
			$data['approved'] = $this->Admin_model->get_approved_application($s_date, $e_date, $course_id);
			$data['rejected'] = $this->Admin_model->get_rejected_application($s_date, $e_date, $course_id);
		} else {
			$data['new'] = $this->Admin_model->get_application($start = '', $end = '', $course = '');
			$data['approved'] = $this->Admin_model->get_approved_application($start = '', $end = '', $course = '');
			$data['rejected'] = $this->Admin_model->get_rejected_application($start = '', $end = '', $course = '');
		}
		$this->load->view('admin/header', $data);
		$this->load->view('admin/application', $data);
		$this->load->view('admin/footer');
	}


	public function process_application()
	{
		// $baseurl=base_url();
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		// $id = $this->uri->segment(3);
		// $res = $this->uri->segment(4);
		$id = $_POST['id'];
		$res = $_POST['val'];
		$result = $this->Admin_model->get_student_details('applications', array('id' => $id));
		// $this->load->config('email');
		// $from = $this->config->item('smtp_user');
		// $this->email->from($from);
		// $this->email->set_newline("\r\n");

		// dd($_POST);

		if ($res == 0) {
			$stats = 'Rejected';
			$reject_data = array(
				"studname" => $result['name'],
				"baseurl" => base_url()
			);
			$reject_data['school_info'] = $this->Admin_model->get_logo_from_setting();
			$msg = $this->load->view('email-reject', $reject_data, TRUE);
			$data = array(
				'status' => 'rejected'
			);

			// $this->email->to($result['email']);
			// $this->email->subject('Application');
			// $this->email->message($msg);

			// echo "Mailer Error: " . $this->email->print_debugger();
			// $this->email->send();
			// if (sendMail($result['email'], 'Application', $msg)) {
			$rst = $this->Admin_model->process_application($id, $data);
			if ($rst == 1) {
				$this->session->set_flashdata('success', 'Application has been Rejected.');
				echo 1;
			} else {

				$this->session->set_flashdata('error', 'Application has Not been Rejected.');
				echo 0;
			}
			// } else {
			// 	$this->session->set_flashdata('error', 'The mail is Not Sent');
			// 	echo -1;
			// 	//  echo "Mailer Error: " . $this->email->print_debugger();
			// }
		} else {
			$stats = 'Approved';
			// $approve_data = array(
			// 	"studname" => $result['name'],
			// 	"make_payment" => base_url() . "student/admission_payment/" . $id,
			// 	"baseurl" => base_url()
			// );
			// $approve_data['school_info'] = $this->Admin_model->get_logo_from_setting();
			// $msg = $this->load->view('email-approve', $approve_data, TRUE);

			$data = array(
				'status' => 'approved'
			);

			// // $this->email->to($result['email']);
			// // $this->email->subject('Application');
			// // $this->email->message($msg);

			// // if (sendMail($result['email'], 'Application', $msg)) {
			$rst = $this->Admin_model->process_application($id, $data);
			if ($rst == 1) {

				$application_info = $this->db->query("SELECT * FROM applications WHERE id = $id")->row_array();

				$res = $this->db->query("SELECT count(id) as student_count FROM students ")->row_array();
				$exist_data = (isset($res['student_count']) && ($res['student_count'] != 0)) ? $res['student_count'] : 0;

				$this->db->select_max('id');
				$query  = $this->db->get('students');
				$resid = $query->row_array();
				$resid = (isset($resid['id']) && !empty($resid['id'])) ? $resid['id'] : 0;
				$studentMaxId = $resid + 1;
				$pid = date('Y', strtotime($this->nepali_current_date)) . '0' . $studentMaxId;
				$school_info = $this->Admin_model->get_logo_from_setting();
				$school_prefix = (!empty($school_info['school_prefix_id'])) ? $school_info['school_prefix_id'] : 'BB';
				$studentid = $school_prefix . STUDENT_PREFIX . $pid;
				$parent_id = $school_prefix . STUDENT_PARENT_PREFIX . $pid;
				$qr_path = $this->generate_qrcode($studentid);

				$td = array(
					'name' => $application_info['name'],
					'course' => $application_info['course'],
					'batch_id' => $application_info['batch_id'],
					'email' => $application_info['email'],
					'studentId' => $studentid,
					'password' => $application_info['password'],
					'mobile' => $application_info['mobile'],
					'gender' => $application_info['gender'],
					'dob' => $application_info['dob'],
					'father_name' => $application_info['father_name'],
					'mother_name' => $application_info['mother_name'],
					'emergency_contact_name' => $application_info['emergency_contact_name'],
					'emergency_contact_number' => $application_info['emergency_contact_number'],
					'parent_username' => $application_info['name'],
					'parent_password' => $application_info['name'],
					'country' => $application_info['country'],
					'state' => $application_info['state'],
					'address1' => $application_info['address1'],
					'photo' => $application_info['photo'],
					'school_certificate' => $application_info['school_certificate'],
					'exam_result' => $application_info['exam_result'],
					'medical_cerificate' => $application_info['medical_cerificate'],
					'registered_on' => $this->nepali_current_date,
					'qr_code' => $qr_path,
					'parent_username' => $parent_id,
					'parent_password' => md5($parent_id),
					'parent_pan' => '',
				);
				$insert = $this->db->insert('students', $td);

				$this->session->set_flashdata('success', 'Application has been approved.');
				echo 1;
			} else {
				$this->session->set_flashdata('error', 'Application has Not been approved.');
				echo 0;
			}
			// dd($id);
			// } else {
			// 	$this->session->set_flashdata('error', 'The mail is Not Sent');
			// 	echo -1;
			// 	// echo "Mailer Error: " . $this->email->print_debugger();
			// }
		}
		redirect('/admin/get_application');
	}

	public function application_request($id, $res)
	{
		if (isset($_SESSION['admin_id'])) {
			$result = $this->Admin_model->get_student_details('applications', array('id' => $id));
			if ($res == 0) {
				$stats = 'Rejected';
				$reject_data = array(
					"studname" => $result['name'],
					"baseurl" => base_url()
				);
				$reject_data['school_info'] = $this->Admin_model->get_logo_from_setting();
				$msg = $this->load->view('email-reject', $reject_data, TRUE);
				$data = array(
					'status' => 'rejected'
				);
			} else {
				$stats = 'Approved';
				$approve_data = array(
					"studname" => $result['name'],
					"make_payment" => base_url() . "student/admission_payment/" . $id,
					"baseurl" => base_url()
				);

				$approve_data['school_info'] = $this->Admin_model->get_logo_from_setting();
				$msg = $this->load->view('email-approve', $approve_data, TRUE);

				$data = array(
					'status' => 'approved'
				);
			}

			// $this->load->config('email');
			// $from = $this->config->item('smtp_user');
			// $this->email->from($from);
			// $this->email->set_newline("\r\n");
			// $this->email->to($result['email']);
			// $this->email->subject('Application');
			// $this->email->message($msg);
			// echo $resu= $this->email->send();
			// echo $this->email->print_debugger(array('headers'));
			if (sendMail($result['email'], 'Application', $msg)) {
				$resultt = $this->Admin_model->process_application($id, $data);
				if ($resultt) {
					$this->session->set_flashdata('success', 'Application has been ' . $data['status'] . '.');
					echo 1;
				} else {
					$this->session->set_flashdata('error', 'Application has Not been ' . $data['status'] . '.');
					echo 0;
				}
			} else {
				// echo "Mailer Error: " . $this->email->print_debugger();
				$this->session->set_flashdata('error', 'The mail is Not Sent');
				echo -1;
			}
			redirect(base_url() . "admin/get_application");
		}
	}

	public function view_applicant()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$id = $this->uri->segment(3);

		$data['applicant'] = $this->Admin_model->view_applicant($id);

		$this->load->view('admin/header', $data);
		$this->load->view('admin/view_applicant', $data);
		$this->load->view('admin/footer');
	}



	public function documents_reupload()

	{
		$id = $this->input->post('student_id');

		$this->load->helper('url');
		$this->load->helper(array('form', 'url'));

		$config['upload_path'] = 'assets_student/application/';
		$config['allowed_types'] = 'gif|jpg|png|jpeg|jfif|jiff';
		$config['file_name'] = uniqid('img', false);

		foreach ($_FILES as $key => $value) {
			if ($value['error'] == 4) {
				unset($_FILES[$key]);
				array_values($_FILES);
			}
		}

		if (count($_FILES) == 0) {
			redirect('/admin/view_student/' . $id);
		}

		$this->load->library('upload', $config);

		$this->upload->initialize($config);

		$data['currentURL'] = current_url();

		$data['id'] = $id;

		if ($_FILES['photo']['size'] != 0) {

			if (!$this->upload->do_upload('photo')) {
				$data['photo'] = "";
			} else {
				$photo = array('upload_data' => $this->upload->data());
				$data['photo'] = $photo['upload_data']['file_name'];
			}
		}

		if ($_FILES['school']['size'] != 0) {
			if (!$this->upload->do_upload('school')) {
				$data['school_certificate'] = "";
			} else {
				$school = array('upload_data' => $this->upload->data());
				$data['school_certificate'] = $school['upload_data']['file_name'];
			}
		}
		if ($_FILES['exam']['size'] != 0) {
			if (!$this->upload->do_upload('exam')) {
				$data['exam_result'] = "";
			} else {
				$exam = array('upload_data' => $this->upload->data());
				$data['exam_result'] = $exam['upload_data']['file_name'];
			}
		}
		if ($_FILES['medical']['size'] != 0) {
			if (!$this->upload->do_upload('medical')) {
				$data['medical_cerificate'] = "";
			} else {
				$medical = array('upload_data' => $this->upload->data());
				$data['medical_cerificate'] = $medical['upload_data']['file_name'];
			}
		}

		$app_new_id = $this->Admin_model->update_studentsdoc($data);
		redirect('/admin/view_student/' . $data['id']);
	}

	public function student()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		$cid = '';
		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['batchId'] = isset($data['school_info']['batch_id']) ? $data['school_info']['batch_id'] : 0;
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		if ($this->input->post('filterSubmit') == "Filter") {

			// $this->form_validation->set_rules('filter-Sdate', 'Start Date', 'required');
			$this->form_validation->set_rules('filter-course', 'Course', 'required');
			// $this->form_validation->set_rules('filter-Edate', 'End Date', 'required');				

			$course_id = $_POST['filter-course'] ? $_POST['filter-course'] : 0;
			$batch_id = $_POST['filter-batch'] ? $_POST['filter-batch'] : $data['school_info']['batch_id'];
			// $e_date = isset($_POST['filter-Edate']) ? $_POST['filter-Edate'] : '';
			// $s_date = isset($_POST['filter-Sdate']) ? $_POST['filter-Sdate'] : '';

			$data['courseId'] = $course_id;
			$data['batchId'] = $batch_id;
			// $data['sdate'] = $s_date;
			// $data['edate'] = $e_date;
			if (!$this->form_validation->run() == FALSE) {
				$std_query = "SELECT sb.student_id,sb.batch_id as student_batch,sb.classroom_id,sb.roll_no,sb.registration_no,sb.symbol_no, cl.course_id, cl.section_id, s.*, b.b_name FROM student_batch sb 
								JOIN classroom cl ON cl.id = sb.classroom_id 
								JOIN students s ON s.id = sb.student_id 
								JOIN batch b ON b.id = $batch_id
								WHERE sb.batch_id = $batch_id AND cl.course_id = $course_id AND s.is_active='yes'";

				$students = $this->db->query($std_query)->result_array();
				$data['students'] = $students;
				// dd($students);
			} else {
				$std_query = "SELECT sb.student_id,sb.batch_id as student_batch,sb.classroom_id,sb.roll_no,sb.registration_no,sb.symbol_no, cl.course_id, cl.section_id, s.*, b.b_name FROM student_batch sb 
								JOIN classroom cl ON cl.id = sb.classroom_id 
								JOIN students s ON s.id = sb.student_id 
								JOIN batch b ON b.id = $batch_id
								WHERE sb.batch_id = $batch_id AND s.is_active='yes'";
				$students = $this->db->query($std_query)->result_array();

				$data['students'] = $students;
			}
		} else {
			// $data['students'] = $this->Admin_model->get_students();			
			$data['students'] = array();
		}

		foreach ($data['students'] as $key => $value) {
			$batch_id =  $value['batch_id'];
			$batch_name = '-';
			$batch_name_row = $this->db->get_where('batch', array('id' => $batch_id))->row();
			if (count((array)$batch_name_row) > 0) {
				$batch_name = $batch_name_row->b_name;
			}
			$data['students'][$key]['batch_name'] = $batch_name;
		}

		$data['course'] = $this->db->query("select * from course WHERE is_active='yes'")->result_array();
		$data['batch'] = $this->Admin_model->get_batch();

		$this->load->view('admin/header', $data);
		$this->load->view('admin/student-list', $data);
		$this->load->view('admin/footer');
	}

	//course start
	public function classroom_student()
	{
		if (isset($_SESSION['admin_id'])) {

			$clsid = $this->uri->segment(3);
			$cid = $this->uri->segment(4);
			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();
			$data['course_id'] = $cid;
			$data['class_id'] = $clsid;
			$data['students'] = $this->Admin_model->get_classstudents($clsid);
			$this->load->view('admin/header', $data);
			$this->load->view('admin/classroom-students');
			$this->load->view('admin/footer');
		}
	}

	//course start
	public function students_notassign()
	{
		if (isset($_SESSION['admin_id'])) {

			$clsid = $this->uri->segment(3);
			$cid = $this->uri->segment(4);
			$data['course_id'] = $cid;
			$data['class_id'] = $clsid;
			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();
			$data['students'] = $this->Admin_model->get_coursestudents($cid);

			$this->load->view('admin/header', $data);
			$this->load->view('admin/students-notassigned');
			$this->load->view('admin/footer');
		}
	}

	//course start
	public function student_class_assignment()
	{
		if (isset($_SESSION['admin_id'])) {

			$cid = $this->uri->segment(3);
			$data['course_id'] = $cid;
			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();
			$data['students'] = $this->Admin_model->get_coursestudents($cid);
			$this->load->view('admin/header', $data);
			$this->load->view('admin/students-assign');
			$this->load->view('admin/footer');
		}
	}

	// 	public function assign_classroom()
	// 	{
	// 	    if(isset($_SESSION['admin_id'])){

	// 	        $classid = $this->uri->segment(3);
	// 	        $sid = $this->uri->segment(4);

	// 	        $data['currentURL'] = current_url();
	// 	        //get logo
	// 	        $data['logo'] = $this->Admin_model->get_logo();
	// $data['school_info'] = $this->Admin_model->get_logo_from_setting();
	// 	        //get menu list
	// 	        $data['menulist'] = $this->Admin_model->get_adminMenu();
	// 	        $data['students'] = $this->Admin_model->assign_clssroom($classid,$sid);
	// 	        $course = $this->Admin_model->get_studentcourse($sid);
	// 	        $course_id = $course['course'];
	//     	    redirect(base_url().'Admin/students_notassign/'.$classid.'/'.$course_id);
	// 	    }
	// 	}

	public function view_classstudent()
	{

		if (isset($_SESSION['admin_id'])) {
			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();
			$id = $this->uri->segment(3);

			$data['student'] = $this->Admin_model->view_student($id);

			$this->load->view('admin/header', $data);
			$this->load->view('admin/view_classstudent', $data);
			$this->load->view('admin/footer');
		}
	}

	public function remove_student()
	{
		if (isset($_SESSION['admin_id'])) {

			$data['currentURL'] = current_url();
			$id = $_POST['id'];
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();
			$this->Admin_model->get_removestudent($id);
		}
	}





	// public function testexam(){
	//     if(isset($_SESSION['admin_id'])){

	//     $data['currentURL'] = current_url();
	//     //get logo
	//     $data['logo'] = $this->Admin_model->get_logo();
	// $data['school_info'] = $this->Admin_model->get_logo_from_setting();
	//     //get menu list
	//     $data['menulist'] = $this->Admin_model->get_adminMenu();
	//         $this->load->view('admin/header',$data);
	//         $this->load->view('admin/exam-add-edit',$data);
	//         $this->load->view('admin/footer');
	//     }
	// }


	//   public function listtestexam(){
	//     if(isset($_SESSION['admin_id'])){

	//     $data['currentURL'] = current_url();
	//     //get logo
	//     $data['logo'] = $this->Admin_model->get_logo();
	//	$data['school_info'] = $this->Admin_model->get_logo_from_setting();
	//     //get menu list
	//     $data['menulist'] = $this->Admin_model->get_adminMenu();
	//         $this->load->view('admin/header',$data);
	//         $this->load->view('admin/examlist',$data);
	//         $this->load->view('admin/footer');
	//     }
	// }

	// public function addexam(){
	// 	print_r($_POST);
	// 	die();
	// }


	// Section Controllers - Afras - 10/08/2021

	public function section()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		$data['currentURL'] = current_url();

		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$data['result'] = $this->Admin_model->get_table_info('section');

		$this->load->view('admin/header', $data);
		$this->load->view('admin/section');
		$this->load->view('admin/footer');
	}

	public function deleteSection($secId)
	{


		$confirm = $this->Admin_model->checkSectioninCourse($secId);

		if ($confirm == 'failed') {
			$sql = $this->Admin_model->deleteSection($secId);

			if ($sql) {
				$this->session->set_flashdata('success', 'Section has been successfully deleted');
				redirect(base_url() . 'admin/sections');
			} else {
				$this->session->set_flashdata('failed', 'Section could not been deleted, Please try again!');
				redirect(base_url() . 'admin/sections');
			}
		} else {

			if ($confirm == 'Course Error') {
				$session_msg = 'Section is linked with Course, But No Courses Found';
				$this->session->set_flashdata('failed', $session_msg);
				redirect(base_url() . 'admin/sections');
			}

			foreach ($confirm as $key => $value) {
				if ($key == 0) {
					$roomNames = $value;
				} else {
					$roomNames = ', ' . $value;
				}
			}

			$session_msg = "Delete Failed! 
Section connected to " . $roomNames . " Course"; $this->session->set_flashdata('failed', $session_msg); redirect(base_url() . 'admin/sections'); } } public function validateSectionName() { $sectionName = strtolower($this->input->post('value')); $id = $this->input->post('id'); $query = $this->Admin_model->check_value_exists('section', array('LOWER(section_name)' => $sectionName), $id); if ($query) echo 'success'; else echo 'failed'; } public function add_edit_section($sectionId) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/ae_section.php')) show_404(); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['id'] = $sectionId; $whereClause = array('id' => $sectionId); $checkSectionExists = $this->Admin_model->get_section_details($whereClause); if (empty($checkSectionExists) && $sectionId != 0) { $this->session->set_flashdata('failed', 'There is no section with selected id'); redirect(base_url() . 'Admin/section'); } if (count($_POST) > 0) { $_POST['section_name'] = $this->convertToCapCase($_POST['section_name']); if ($sectionId > 0) { $_POST['modified'] = $this->nepali_current_date; } else { $_POST['created'] = $this->nepali_current_date; } $sql = $this->Admin_model->add_edit_section($sectionId, $_POST); if (($sql) && $sectionId > 0) { $this->session->set_flashdata('success', 'Section has been updated successfully'); redirect(base_url() . 'Admin/section'); } else if ($sql) { $this->session->set_flashdata('success', 'Section has been addedd successfully'); redirect(base_url() . 'Admin/section'); } else { $this->session->set_flashdata('failed', 'Section updation failed as it is linked with course or classroom'); redirect(base_url() . 'Admin/section'); } } $data['title'] = 'Add New Section'; if ($sectionId > 0) { $data['title'] = 'Edit Section'; $data['result'] = $checkSectionExists; } $this->load->view('admin/header', $data); $this->load->view('admin/ae_section'); $this->load->view('admin/footer'); } function convertToCapCase($str) { $str = strtolower($str); return ucwords($str); } // Section Controllers - Afras - 10/08/2021 // assign syllabus start by shivu function assign_syllabus($id) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/assign-syllabus.php')) show_404(); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['title'] = "Assigning Syllabus - "; $data['subject'] = $this->Admin_model->get_general_details('subject', 'ASC', array('id' => $id)); $query = "SELECT c.id as course_id,c.course_name,s.id FROM course_subjects cs LEFT JOIN course c ON cs.course_id=c.id LEFT JOIN subject s ON cs.subject_id=s.id WHERE c.is_active='yes' AND cs.subject_id=$id"; $data['courses'] = $this->Admin_model->get_query_result($query); $qry1 = "SELECT s.id,s.syllabus,c.course_name FROM `subject_syllabus` s JOIN course c ON c.id=s.course_id WHERE s.subject_id=$id"; $data['syllabuslist'] = $this->Admin_model->get_query_result($qry1); $data['action_url'] = base_url() . "admin/ae_assign_syllabus"; $this->load->view('admin/header', $data); $this->load->view('admin/assign-syllabus'); $this->load->view('admin/footer'); } public function ae_assign_syllabus($id) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $config['upload_path'] = 'assets_admin/images/syllabus/' . $_POST['course_id'] . '-' . $_POST['subject_id'] . '/'; if (!is_dir($config['upload_path'])) mkdir($config['upload_path'], 0777, TRUE); $config['allowed_types'] = 'pdf|jpeg|jpg|png'; $config['max_size'] = '5120'; $this->load->library('upload', $config); // dd($_FILES); $this->upload->initialize($config); if ($this->upload->do_upload('syllabus')) { $upload_data = 'assets_admin/images/syllabus/' . $_POST['course_id'] . '-' . $_POST['subject_id'] . '/' . $this->upload->data('file_name'); if (count($_POST) > 0) { $result = $this->Admin_model->insert_update_data($_POST, $upload_data); if ($result == 1) $this->session->set_flashdata('successsubject', 'Syllabus has been updated successfully'); else if ($result == 2) $this->session->set_flashdata('successsubject', 'Syllabus has been insert successfully'); else $this->session->set_flashdata('errorsubject', 'Syllabus Insertion Failed'); } else { $this->session->set_flashdata('errorsubject', 'Please Upload valid File'); } } else { $error = array('error' => $this->upload->display_errors()); $this->session->set_flashdata('errorsubject', $error['error']); } redirect(base_url() . 'admin/subject'); } public function checkname() { $namevalue = $_POST['value']; $table = $_POST['tablename']; $dbcolumn = $_POST['column']; $result = $this->Admin_model->get_general_details($table, 'ASC', array($dbcolumn => $namevalue)); if (count($result) > 0) echo 1; else echo 0; } public function checksyllabus() { $subject_id = (isset($_POST['subject_id'])) ? $_POST['subject_id'] : 0; $course_id = (isset($_POST['course_id'])) ? $_POST['course_id'] : 0; $result = $this->Admin_model->get_general_details('subject_syllabus', 'ASC', array('subject_id' => $subject_id, 'course_id' => $course_id)); if (count($result) > 0) echo $result['syllabus']; else echo 0; } // assign syllabus end here // Course Controllers - 12-10-2021 Afras Khan public function course() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (isset($_SESSION['admin_id'])) { $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); // $data['course'] = $this->Admin_model->get_course_details(); $sql = "SELECT c.id, c.course_name, se.section_name, s.subject_name, c.created from course c inner join course_sections ce on c.id = ce.course_id inner join course_subjects cs on c.id = cs.course_id inner join section se on ce.section_id = se.id inner join subject s on s.id = cs.subject_id GROUP BY c.id, se.section_name, s.subject_name ORDER BY c.id "; $data['result'] = $this->Admin_model->get_course_subject_section($sql); $getCourseNames = "Select c.id,c.course_name, cf.amount from course c left join course_fees cf on c.id = cf.course_id AND cf.fees_type = 2 GROUP BY c.course_name, c.id, cf.amount ORDER BY c.id ASC"; $data['course_names'] = $this->Admin_model->get_table_info('course', '', $getCourseNames); // dd($data['course_names']); $this->load->view('admin/header', $data); $this->load->view('admin/course'); $this->load->view('admin/footer'); } } public function add_edit_course($cid = NULL) { if (isset($_SESSION['admin_id'])) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/ae_section.php')) show_404(); $whereClause = array('id' => $cid); $checkCourseExists = $this->Admin_model->get_course_details($whereClause); if (empty($checkCourseExists) && $cid != 0) { $this->session->set_flashdata('failed', 'There is no course with selected id'); redirect(base_url() . 'Admin/course'); } $sid = ''; $data['id'] = $cid; $data['currentURL'] = current_url(); $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['subject_list'] = $this->Admin_model->get_table_info('subject', array('is_active' => 'yes')); $data['section_list'] = $this->Admin_model->get_table_info('section', array('is_active' => 'yes')); if (count($_POST) > 0) { $course_name = ucwords(strtolower($this->input->post('course_name'))); $status = $this->input->post('is_active'); $subject_section_ids['subject'] = $this->input->post('csubject'); $subject_section_ids['section'] = $this->input->post('csection'); if ($cid == 0) { $insertArr = array( 'course_name' => $course_name, 'is_active' => $status, 'created' => $this->nepali_current_date ); $course_query = $this->Admin_model->add_edit_course($cid, $insertArr, $subject_section_ids); if ($course_query) { $this->session->set_flashdata('success', 'Course has been added successfully '); redirect(base_url() . 'Admin/course'); } else { $this->session->set_flashdata('failed', 'Course could not be added, Please try again!'); redirect(base_url() . 'Admin/course'); } } else if ($cid > 0) { $insertArr = array( 'course_name' => $course_name, 'is_active' => $status, 'modified' => $this->nepali_current_date ); // $check_course_in_classroom = $this->Admin_model->get_table_info_row('classroom', array('course_id' => $cid)); $check_course_in_classroom = $this->db->query("SELECT * FROM classroom WHERE course_id=$cid")->result_array(); if (!empty($check_course_in_classroom)) { // echo "
";
						// print_r($check_course_in_classroom);
						foreach ($check_course_in_classroom as $each_cl_value) {

							$arr1 = explode(' - ', $each_cl_value['classroom_name']);

							$arr1[0] = $course_name;
							$class_name = implode(' - ', $arr1);
							// print_r($class_name);
							$this->db->set('classroom_name', $class_name)
								->where('id', $each_cl_value['id'])
								->update('classroom');
						}
						// exit;

						// $arr = explode(' - ', $check_course_in_classroom['classroom_name']);

						// $arr[0] = $course_name;
						// $class_name = implode(' - ', $arr);

						// $this->db->set('classroom_name', $class_name)
						// ->where('course_id', $cid)
						// ->update('classroom');
					}

					// Updating Course table with name and date
					$course_query = $this->Admin_model->add_edit_course($cid, $insertArr, $subject_section_ids);

					// Updating Course-Sections with updated section Id's 
					$pre_course_sec = $this->Admin_model->get_course_sections($cid);
					$preSelectedSections = array_column($pre_course_sec, 'section_id');
					// dd($pre_course_sec);
					$section_flag = ($preSelectedSections == $subject_section_ids['section']);

					if (!$section_flag) {

						foreach ($subject_section_ids['section'] as $key => $value) {

							foreach ($preSelectedSections as $pre_key => $pre_val) {
								if ($value == $pre_val) {
									array_splice($preSelectedSections, $pre_key, 1);
								}
							}
						}

						$update_course_section = $this->Admin_model->update_course_section($subject_section_ids['section'], $preSelectedSections, $cid);

						if ($update_course_section['status'] == 'failed') {


							$sectionNameMsg = 'Cannot unselect ' . $update_course_section['section-names'];
							$sectionNameMsg .= '
As They are connected with : '; $sectionNameMsg .= $update_course_section['class-name'] . ' class'; $this->session->set_flashdata('failed', $sectionNameMsg); redirect(base_url() . 'admin/add_edit_course/' . $cid); } else if (!$update_course_section) { $sectionNameMsg = 'Course could not be updated. Please try again later'; $this->session->set_flashdata('failed', $sectionNameMsg); redirect(base_url() . 'admin/add_edit_course/' . $cid); } } // Updating Course-Subjects with updated section Id's $update_course_subject = $this->Admin_model->update_course_subject($subject_section_ids['subject'], $cid); // Yogesh $offlineExams = $this->Admin_model->get_course_offfline_exam($cid); // echo '
';

					$update_course_offline_exam =
						$this->Admin_model->update_course_offline_exam($subject_section_ids['subject'], $offlineExams, $cid);


					// echo '
';
					// print_r($update_course_offline_exam);

					if ($update_course_subject['status'] == 'failed') {

						$subjectNameMsg = 'Cannot unselect ' . $update_course_subject['subject-names'];
						$subjectNameMsg .= '
As They are connected with : '; $subjectNameMsg .= $update_course_subject['sub-class-name'] . ' class'; $this->session->set_flashdata('failed', $subjectNameMsg); redirect(base_url() . 'admin/add_edit_course/' . $cid); } else if (!$update_course_subject) { $subjectNameMsg = 'Course could not be updated. Please try again later'; $this->session->set_flashdata('failed', $subjectNameMsg); redirect(base_url() . 'admin/add_edit_course/' . $cid); } $this->session->set_flashdata('success', 'Course has been updated successfully'); redirect(base_url() . 'admin/course/'); exit(); } } // POST IF CONDITION ENDS $data['title'] = 'Add New Course'; if ($cid > 0) { $data['title'] = 'Edit Course 1'; $whereClause = array('id =' => $cid); $data['course_info'] = $this->Admin_model->get_course_details($whereClause); $data['course_section_info'] = $this->Admin_model->get_course_sections($cid); $data['course_subject_info'] = $this->Admin_model->get_course_subjects($cid); // dd($data['course_subject_info']); $selectedSec = array(); $selectedSub = array(); if (!empty($data['course_section_info'])) { foreach ($data['course_section_info'] as $key => $value) { array_push($selectedSec, array( 'id !=' => $value['section_id'] )); } } if (!empty($data['course_subject_info'])) { foreach ($data['course_subject_info'] as $key => $value) { array_push($selectedSub, array( 'id !=' => $value['subject_id'] )); } } $data['difference_section'] = $this->Admin_model->unselected_subject_section($selectedSec, 'section'); $data['difference_subject'] = $this->Admin_model->unselected_subject_section($selectedSub, 'subject'); } $this->load->view('admin/header', $data); $this->load->view('admin/ae_course'); $this->load->view('admin/footer'); } } public function ajax_validate_course_name() { $courseName = strtolower($this->input->post('value')); $id = $this->input->post('id'); $query = $this->Admin_model->check_value_exists('course', array('LOWER(course_name)' => $courseName), $id); if ($query) echo 'success'; else echo 'failed'; } public function delete_course($cid) { $confirm = $this->Admin_model->check_course_in_classroom($cid); if ($confirm == 'failed') { $sql = $this->Admin_model->deleteCourse($cid); if ($sql) { $this->session->set_flashdata('success', 'Course has been successfully deleted'); redirect(base_url() . 'admin/course'); } else { $this->session->set_flashdata('failed', 'Course could not been deleted, Please try again!'); redirect(base_url() . 'admin/course'); } } else { if ($confirm == 'Classroom Error') { $session_msg = 'Course is linked with Classrooms, But No Classrooms Found'; $this->session->set_flashdata('failed', $session_msg); redirect(base_url() . 'admin/course'); } foreach ($confirm as $key => $value) { if ($key == 0) { $roomNames = $value; } else { $roomNames .= ', ' . $value; } } $session_msg = "Delete Failed!
Course connected to " . $roomNames . " Classrooms"; $this->session->set_flashdata('failed', $session_msg); redirect(base_url() . 'admin/course'); } } // Course Controllers Ends - 12-10-2021 Afras Khan // Notification Controllers Starts - 13-10-2021 - Afras Khan public function notifications() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (isset($_SESSION['admin_id'])) { $data['filterArray'] = $this->Admin_model->getDistinctNotifications(); if (isset($_POST['filterSubmit'])) { $filterName = $this->input->post('filter-name'); $filterClass = $this->input->post('filter-classroom'); $filterTeacher = $this->input->post('filter-teacher'); $filterDate = $this->input->post('filter-date'); $sql = $this->Admin_model->getFilterNotifications($filterName, $filterClass, $filterTeacher, $filterDate); if ($sql != 'failed') { $data['notificationInfo'] = $sql; $_SESSION['isFilterActve'] = true; } else { $data['notificationInfo'] = $this->Admin_model->get_notification_details(); } } else { $data['notificationInfo'] = $this->Admin_model->get_notification_details(); } $data['currentURL'] = current_url(); $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $data['menulist'] = $this->Admin_model->get_adminMenu(); $this->load->view('admin/header', $data); $this->load->view('admin/notifications', $data); $this->load->view('admin/footer'); } } public function notification_form() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $queryData = array(); $student = isset($_POST['student_classroom']) ? $this->input->post('student_classroom') : NULL; $teacher = isset($_POST['teacher_name']) ? $this->input->post('teacher_name') : NULL; date_default_timezone_set('Asia/Kolkata'); $queryData = array( 'notification_title' => $this->input->post('notification_title'), 'notification_to' => $this->input->post('notification_to'), 'student_classroom' => $student, 'teacher_id' => $teacher, 'description' => $this->input->post('description'), 'created_at' => $this->nepali_current_date ); $query = $this->Admin_model->insertNotificationData($queryData); if ($query) { if (isset($_SESSION['admin_id'])) { $this->session->set_flashdata('success', str_replace('%s', 'Notification', THE_ADD_SUCCESS_MSG)); redirect(base_url() . 'Admin/notifications'); } else { $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('admin/header', $data); $this->load->view('admin/login'); $this->load->view('admin/footer'); } } else { // Query Else Condition $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $this->load->view('admin/header', $data); $this->load->view('admin/send-notifications', $data); $this->load->view('admin/footer'); } } public function ajax_fetch_notifications_data() { $selectedValue = $this->input->post('value'); if ($selectedValue == 'teacher') { // Fetch Teachers name if value is teachers $id = ''; $teachers = $this->Admin_model->get_teacherUnique($id); $jsonVar = json_encode($teachers); echo $jsonVar; } else if ($selectedValue == 'student') { $id = ''; $student = $this->Admin_model->get_classroomUnique($id); $jsonVar = json_encode($student); echo $jsonVar; } else if ($selectedValue == 'both') { $id = ''; $data['student'] = $this->Admin_model->get_classroomUnique($id); $data['teachers'] = $this->Admin_model->get_teacherUnique($id); $jsonVar = json_encode($data); echo $jsonVar; } } public function send_notifications() { if (isset($_SESSION['admin_id'])) { $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $this->load->view('admin/header', $data); // $this->load->view('admin/send-notifications', $data); $this->load->view('admin/footer'); } } public function delete_notification() { $id = $this->input->get('id'); $sql = $this->Admin_model->deleteNotification($id); if ($sql) { $this->session->set_flashdata('success', str_replace('%s', 'Notification', THE_DELETE_SUCCESS_MSG)); redirect(base_url() . 'Admin/notifications'); } else { $this->session->set_flashdata('failed', str_replace('%s', 'Notification', THE_DELETE_ERROR_MSG)); redirect(base_url() . 'Admin/notifications'); } } public function view_notification($id) { $sql = $this->Admin_model->getSingleNotification($id); if ($sql !== 'failed') { if (isset($_SESSION['admin_id'])) { $data['result'] = $sql; $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $this->load->view('admin/header', $data); $this->load->view('admin/notif-details', $data); $this->load->view('admin/footer'); } } else { $this->session->set_flashdata('failed', 'Row could not been viewed, Please try again in sometime!'); redirect(base_url() . 'Admin/notifications'); } } public function ajax_validate_notification_name() { $notification_title = strtolower($this->input->post('value')); $id = 0; $query = $this->Admin_model->check_value_exists('notifications', array('LOWER(notification_title)' => $notification_title), $id); if ($query) echo 'success'; else echo 'failed'; } // Notification Controllers Ends - 13-10-2021 - Afras Khan // shankar code Start for exam secton 13-10-21 public function add_exam_view() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['result'] = $this->Admin_model->get_exam_details(); $this->load->view('admin/header', $data); $this->load->view('admin/exams'); $this->load->view('admin/footer'); } public function delete_added_Exam($examId) { $sql = $this->Admin_model->deleteExam($examId); if ($sql) { $this->session->set_flashdata('success', 'Exam has been successfully deleted'); redirect(base_url() . 'admin/exam-view'); } else { $this->session->set_flashdata('failed', 'Sorry ! Exam already assign to Question Paper'); redirect(base_url() . 'admin/exam-view'); } } public function validateAddedExamName() { $sql = $this->Admin_model->get_exam_details(); $AllNames = array(); foreach ($sql as $key => $value) { array_push($AllNames, array( 'name' => $value['e_name'], 'id' => $value['id'] )); } echo json_encode($AllNames); } public function add_edit_exam($examId) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['id'] = $examId; $whereClause = array('id' => $examId); $checkSectionExists = $this->Admin_model->get_exam_details($whereClause); if (empty($checkSectionExists) && $examId != 0) { $this->session->set_flashdata('failed', 'There is no exam with selected id'); redirect(base_url() . 'admin/ae_exam'); } if (count($_POST) > 0) { $_POST['e_name'] = $this->convertToCapCase($_POST['e_name']); if ($examId > 0) { $_POST['modified'] = $this->nepali_current_date; } else { $_POST['created'] = $this->nepali_current_date; $_POST['modified'] = $this->nepali_current_date; } $sql = $this->Admin_model->add_edit_exam($examId, $_POST); if (($sql) && $examId > 0) { $this->session->set_flashdata('success', str_replace('%s', 'Exam', THE_UPDATE_SUCCESS_MSG)); // $this->session->set_flashdata('success', 'Section has been updated successfully'); redirect(base_url() . 'admin/exam-view'); } else if ($sql) { $this->session->set_flashdata('success', str_replace('%s', 'new exam', THE_ADD_SUCCESS_MSG)); // $this->session->set_flashdata('success', 'Section has been addedd successfully'); redirect(base_url() . 'admin/exam-view'); } else { $this->session->set_flashdata('danger', str_replace('%s', 'Exam', THE_ADD_ERROR_MSG)); // $this->session->set_flashdata('failed', 'Section updation failed'); redirect(base_url() . 'admin/exam-view'); } } $data['title'] = 'Add New Exam'; if ($examId > 0) { $data['title'] = 'Edit Exam'; $data['result'] = $checkSectionExists; } // echo"
";print_r($data);exit();
		$this->load->view('admin/header', $data);
		$this->load->view('admin/ae_exam');
		$this->load->view('admin/footer');
	}

	// shankar code end for exam secton 13-10-21

	// Admin Role Controller - 16-10-21 Afras Khan

	public function roles()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		$data['currentURL'] = current_url();

		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$sql = "Select a.*, ar.menu_ids from admin_roles a LEFT JOIN admin_role_permissions ar on a.id = ar.admin_role_ids;";
		$data['result'] = $this->Admin_model->get_table_info('admin_roles', '', $sql);

		$this->load->view('admin/header', $data);
		$this->load->view('admin/roles');
		$this->load->view('admin/footer');
	}

	public function add_edit_roles($arId)
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		if (!file_exists(APPPATH . 'views/admin/ae_role.php'))
			show_404();

		$data['currentURL'] = current_url();

		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$data['id'] = $arId;


		$whereClause = array('id' => $arId);
		$checkRoleExists = $this->Admin_model->get_role_details($whereClause);

		if (empty($checkRoleExists) && $arId != 0) {
			$this->session->set_flashdata('failed', 'There is no admin role with selected id');
			redirect(base_url() . 'admin/roles/list');
		}

		if (count($_POST) > 0) {

			$_POST['role_name'] = ucwords(strtolower($_POST['role_name']));

			$rolePermId = $this->input->post('rolesid');
			unset($_POST['rolesid']);

			if (!empty($rolePermId)) {
				$rolePermId = implode(',', $rolePermId);
			}



			if ($arId > 0) {
				$_POST['modified'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date));
				$permids = array(
					'menu_ids' => $rolePermId
				);
			}



			$sql = $this->Admin_model->add_edit_role($arId, $_POST);

			if ($arId == 0) {
				$permids = array(
					'admin_role_ids' => $sql,
					'menu_ids' => $rolePermId
				);
			}



			if (!empty($rolePermId)) {
				$rolePermQuery = $this->Admin_model->add_edit_role_permissions($arId, $permids);
			}


			if (($sql) && ($permids) && $arId > 0) {
				$this->session->set_flashdata('success', str_replace('%s', 'Role', THE_UPDATE_SUCCESS_MSG));
				redirect(base_url() . 'admin/roles/list');
			} else if (($sql) && ($permids)) {
				$this->session->set_flashdata('success', str_replace('%s', 'Role', THE_ADD_SUCCESS_MSG));
				redirect(base_url() . 'admin/roles/list');
			} else {
				$this->session->set_flashdata('failed', str_replace('%s', 'Role', THE_UPDATE_ERROR_MSG));
				redirect(base_url() . 'admin/roles/list');
			}
		}

		$data['title'] = 'Add New Role';

		if ($arId > 0) {
			$data['title'] = 'Edit Role';
			$data['result'] = $checkRoleExists;
			$where_permissions = array('admin_role_ids' => $arId);
			$permissions_info = $this->Admin_model->get_table_info('admin_role_permissions', $where_permissions);

			$id_string = array_column($permissions_info, 'menu_ids');
			$id_string = array_shift($id_string);
			$data['pre_selected_ids'] = explode(',', $id_string);
		}

		$this->load->view('admin/header', $data);
		$this->load->view('admin/ae_role');
		$this->load->view('admin/footer');
	}

	public function ajax_validate_role_name()
	{

		$valName = strtolower($this->input->post('value'));

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

		$query = $this->Admin_model->check_value_exists('admin_roles', array('LOWER(role_name)' => $valName), $id);

		if ($query)
			echo 'success';
		else
			echo 'failed';
	}

	public function delete_role($roleId)
	{

		$checkRoleExists = $this->Admin_model->get_table_info('admin', array('admin_role_ids' => $roleId));

		if (empty($checkRoleExists)) {

			$sql = $this->Admin_model->delete_role($roleId);

			if ($sql) {
				$this->session->set_flashdata('success', str_replace('%s', 'Role', THE_DELETE_SUCCESS_MSG));
				redirect(base_url() . 'admin/roles/list');
			} else {
				$this->session->set_flashdata('failed', str_replace('%s', 'Role', THE_DELETE_ERROR_MSG));
				redirect(base_url() . 'admin/roles/list');
			}
		} else {
			$session_msg = "Delete Failed! 
Role has been assigned to an User"; $this->session->set_flashdata('failed', $session_msg); redirect(base_url() . 'admin/roles/list'); } } // Admin Role Controller Ends - 16-10-21 Afras Khan // User Role Controller - 18-10-21 Afras Khan public function users() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $sql = "Select a.*, ar.role_name from admin a LEFT JOIN admin_roles ar on a.admin_role_ids = ar.id"; $data['result'] = $this->Admin_model->get_table_info('admin', '', $sql); $this->load->view('admin/header', $data); $this->load->view('admin/users'); $this->load->view('admin/footer'); } public function add_edit_users($uId) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/ae_user.php')) show_404(); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); //get admin roles $data['roles'] = $this->Admin_model->get_table_info("admin_roles", array('status' => 'Active')); $data['id'] = $uId; $sql = "Select a.*, ar.role_name from admin a LEFT JOIN admin_roles ar on a.admin_role_ids = ar.id WHERE a.id = '$uId'"; $adminData = $this->Admin_model->get_table_info('admin', '', $sql); if (empty($adminData) && $uId != 0) { $this->session->set_flashdata('failed', 'There is no user with selected id'); redirect(base_url() . 'Admin/users/list'); } if (count($_POST) > 0) { unset($_POST['confirm_password']); $_POST['password'] = md5($this->input->post('password')); $_POST['admin_name'] = ucwords(strtolower($this->input->post('admin_name'))); if ($uId > 0) { $_POST['modified'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date)); if ($_POST['replace_password'] != '') { $_POST['password'] = md5($this->input->post('replace_password')); unset($_POST['replace_password']); } else { unset($_POST['replace_password']); } } else $_POST['created'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date)); $insert_user_query = $this->Admin_model->add_edit_users($uId, $_POST); if (!empty($insert_user_query) && $uId > 0) { $this->session->set_flashdata('success', str_replace('%s', 'User', THE_UPDATE_SUCCESS_MSG)); redirect(base_url() . 'admin/users/list'); } else if (!empty($insert_user_query)) { $this->session->set_flashdata('success', str_replace('%s', 'User', THE_ADD_SUCCESS_MSG)); redirect(base_url() . 'admin/users/list'); } else { if ($id > 0) { $this->session->set_flashdata('failed', str_replace('%s', 'User', THE_UPDATE_ERROR_MSG)); redirect(base_url() . 'admin/users/list'); } else { $this->session->set_flashdata('failed', str_replace('%s', 'User', THE_ADD_ERROR_MSG)); redirect(base_url() . 'admin/users/list'); } } } $data['title'] = 'Add New User'; if ($uId > 0) { $data['title'] = 'Edit User'; $data['result'] = $adminData; $admin_role_id = $data['result'][0]['admin_role_ids']; $roleQuery = "Select id, role_name from admin_roles where id != '$admin_role_id'"; $data['pre_selected_roles'] = $this->Admin_model->get_table_info('admin_roles', '', $roleQuery); } $this->load->view('admin/header', $data); $this->load->view('admin/ae_user'); $this->load->view('admin/footer'); } public function ajax_validate_user_email() { $valName = strtolower($this->input->post('value')); $id = $this->input->post('id'); $query = $this->Admin_model->check_value_exists('admin', array('LOWER(email)' => $valName), $id); if ($query) echo 'success'; else echo 'failed'; } public function delete_user($uId) { if ($uId == $_SESSION['admin_id']) { $session_msg = 'The User you are trying to delete is currently been logged in'; $this->session->set_flashdata('failed', $session_msg); redirect(base_url() . 'admin/users/list'); } $sql = $this->Admin_model->delete_user($uId); if ($sql) { $this->session->set_flashdata('success', str_replace('%s', 'User', THE_DELETE_SUCCESS_MSG)); redirect(base_url() . 'admin/users/list'); } else { $this->session->set_flashdata('failed', str_replace('%s', 'User', THE_DELETE_ERROR_MSG)); redirect(base_url() . 'admin/users/list'); } } // User Role Controller ends - 18-10-21 Afras Khan // function assign_students() // { // if (!isset($_SESSION['admin_id'])) // redirect(base_url() . 'admin'); // if (!file_exists(APPPATH . 'views/admin/assign_students.php')) // show_404(); // $data['currentURL'] = current_url(); // //get logo // $data['logo'] = $this->Admin_model->get_logo(); //$data['school_info'] = $this->Admin_model->get_logo_from_setting(); // $data['title'] = " Assign Students"; // //get menu list // $data['menulist'] = $this->Admin_model->get_adminMenu(); // $data['student_list'] = $this->Admin_model->get_general_result_details('students', 'DESC'); // $this->load->view('admin/header', $data); // $this->load->view('admin/assign_students'); // $this->load->view('admin/footer'); // } // SHANKAR code of Exam Questions creation Start from here 20-10-21 public function list_test_exam() { if (isset($_SESSION['admin_id'])) { $crid = ''; $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['course'] = $this->Admin_model->get_allcourse($crid); if (isset($_POST['filterSubmit'])) { // $filterName = $this->input->post('filter-name'); // $filterClass = $this->input->post('filter-classroom'); $course_id = $this->input->post('filter-course'); $e_date = $this->input->post('filter-Edate'); $s_date = $this->input->post('filter-Sdate'); $data['exam_data'] = $this->Admin_model->get_all_questions($s_date, $e_date, $course_id); } else { $data['exam_data'] = $this->Admin_model->get_all_questions(); } $data['subject'] = $this->Admin_model->get_subjects($crid); $data['teacher'] = $this->Admin_model->get_teacher($crid); $data['current_nepali_date'] = date('Y-m-d', strtotime('+2 day', strtotime($this->nepali_current_date))); $this->load->view('admin/header', $data); $this->load->view('admin/examlist', $data); $this->load->view('admin/footer'); } } public function get_sections_from_classroom($c_id) { $result = $this->Admin_model->get_sections_from_classroom($c_id); // echo json_encode($result); echo json_encode($result); } public function get_subject_teachers($s_id) { // $result = $this->Admin_model->get_s $teacher_query = "SELECT ts.teacher_id ,ts.subject_id, ts.is_active FROM teacher_subjects ts WHERE ts.is_active='yes' AND ts.subject_id=$s_id"; $query2 = "SELECT ts.teacher_id ,ts.subject_id, ts.is_active, t.teacher_name FROM teacher_subjects ts LEFT JOIN teacher t ON t.id=ts.teacher_id WHERE ts.is_active='yes' AND ts.subject_id=$s_id"; $teacherList = $this->Admin_model->get_query_result($query2); echo json_encode($teacherList); } public function get_subjects_from_course($course_id) { $result = $this->Admin_model->get_subjects_from_course($course_id); // echo json_encode($result); echo json_encode($result); } public function get_teacher_from_subject() { // var_dump($_POST); $section_id = json_decode($this->input->post('section_id')); $course_id = json_decode($this->input->post('course_id')); $subject_id = json_decode($this->input->post('subject_id')); // echo $course_id."
".$subject_id."
"; // print_r($section_id); // echo "
"; // echo count($section_id); $list_teachers = array(); for ($i = 0; $i < count($section_id); $i++) { $teachers_name = $this->Admin_model->get_teacher_from_subject($course_id, $section_id[$i], $subject_id); for ($j = 1; $j <= count($teachers_name); $j++) { array_push($list_teachers, array( 'id' => $teachers_name[$j - 1]['id'], 'teacher_name' => $teachers_name[$j - 1]['teacher_name'] )); } } echo json_encode($list_teachers); } public function check_teacher_exam_exist() { // var_dump($_POST); $section_id = json_decode($this->input->post('section_id')); $course_id = json_decode($this->input->post('course_id')); $subject_id = json_decode($this->input->post('subject_id')); $teacher_id = json_decode($this->input->post('teacher_id')); $exam_id = json_decode($this->input->post('exam_id')); $result = $this->db->query('select section_id from questions where exam_id=' . $exam_id . ' and course_id = ' . $course_id . ' and subject_id = ' . $subject_id . ' and YEAR(exam_date) = YEAR(CURDATE()) ')->row_array(); $status = 'no'; if ($result) { for ($i = 0; $i < count($section_id); $i++) { if (in_array($section_id[$i], explode(',', $result['section_id']))) $status = 'yes'; } } echo json_encode($status); } public function add_edit_exam_question() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $que_id = $this->uri->segment(3); $view = $this->uri->segment(4); $crid = ''; $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['exam'] = $this->Admin_model->get_exam_name(); $data['course'] = $this->Admin_model->get_course($crid); $data['nepali_curr_date'] = $this->nepali_current_date; if (count($_POST) > 0) { $start_time = $_POST['exam_date'] . ' ' . $_POST['start_time']; $start_time = date('Y-m-d H:i:s', strtotime($start_time)); $end_time = $_POST['exam_date'] . ' ' . $_POST['end_time']; $end_time = date('Y-m-d H:i:s', strtotime($end_time)); if ($que_id > 0) { $data = array( 'exam_id' => $_POST['exam_name'], 'course_id' => $_POST['course_name'], 'section_id' => implode(",", $_POST['section']), 'subject_id' => $_POST['subject_id'], 'teacher_id' => $_POST['teacher'], 'exam_date' => date('Y-m-d', strtotime($_POST['exam_date'])), 'exam_starttime' => $start_time, 'exam_endtime' => $end_time, 'exam_duration' => $_POST['exam_duration'], 'exam_question_format' => $_POST['mrks_array'], 'total_marks' => $_POST['total_marks'], 'passing_marks' => $_POST['passing_marks'], 'published' => 'yes', 'modified' => $this->nepali_current_date ); } else { $data = array( 'exam_id' => $_POST['exam_name'], 'course_id' => $_POST['course_name'], 'section_id' => implode(",", $_POST['section']), 'subject_id' => $_POST['subject_id'], 'teacher_id' => $_POST['teacher'], 'exam_date' => date('Y-m-d', strtotime($_POST['exam_date'])), 'exam_starttime' => $start_time, 'exam_endtime' => $end_time, 'exam_duration' => $_POST['exam_duration'], 'exam_question_format' => $_POST['mrks_array'], 'total_marks' => $_POST['total_marks'], 'passing_marks' => $_POST['passing_marks'], 'published' => 'yes', 'created' => $this->nepali_current_date ); } $sql = $this->Admin_model->add_exam_exam_paper($que_id, $data); if (($sql) && $que_id > 0) { $this->session->set_flashdata('success', str_replace('%s', 'Exam', THE_UPDATE_SUCCESS_MSG)); // $this->session->set_flashdata('success', 'Section has been updated successfully'); redirect(base_url() . 'admin/test-exam-list'); } else if ($sql) { $this->session->set_flashdata('success', str_replace('%s', 'new exam', THE_ADD_SUCCESS_MSG)); // $this->session->set_flashdata('success', 'Section has been addedd successfully'); redirect(base_url() . 'admin/test-exam-list'); } else { $this->session->set_flashdata('danger', str_replace('%s', 'Exam', THE_ADD_ERROR_MSG)); // $this->session->set_flashdata('failed', 'Section updation failed'); redirect(base_url() . 'admin/test-exam-list'); } } $data['title'] = 'Add New Question Paper'; $data['result'] = ''; if ($que_id > 0) { $data['title'] = 'Edit Question Paper'; $data['result'] = $this->Admin_model->get_all_questions($s_date = '', $e_date = '', $crid = '', $que_id); $sections = explode(",", $data['result']['section_id']); $getSection = array(); for ($i = 0; $i < count($sections); $i++) { $whereClause = array('id' => $sections[$i]); $sec = $this->Admin_model->get_section_details($whereClause); array_push($getSection, $sec); } $data['section_data'] = $getSection; } $data['e_id'] = $que_id; $data['view'] = $view; if ($view == 1) { $data['title'] = 'View Exam Questions'; } // echo"
";
		// print_r($data['section_data']);
		// print_r($data['result']);
		// exit();

		$this->load->view('admin/header', $data);
		$this->load->view('admin/exam-add-edit', $data);
		$this->load->view('admin/footer');
	}
	// 	SHANKAR code of Exam Questions creation End here 20-10-21

	// Admin Forgot Password Controller - 23-10-2021 Afras Khan

	public function ajax_send_password_email()
	{

		$email = strtolower($this->input->post('email'));

		$query = $this->Admin_model->get_table_info('admin', array('email =' => $email));

		if (empty($query)) {
			echo 'failed';
		} else {
			$this->load->helper('common_helper');
			$Encoded_email = urlsafe_b64encode($email);


			$data = array(
				"admin_name" =>  $query[0]['admin_name'],
				"reset_link" => base_url() . "admin/reset-password/" . $Encoded_email,
				"baseurl" => base_url()
			);

			$msg = $this->load->view('admin/forgot-password-template', $data, TRUE);

			$this->load->config('email');
			$from = $this->config->item('smtp_user');
			$this->email->from($from);
			$this->email->set_newline("\r\n");
			$this->email->to($email);
			$this->email->subject('Reset Password');
			$this->email->message($msg);

			if ($this->email->send()) {
				echo 'success';
			} else {
				echo 'mailErr';
			}
		}
	}

	public function reset_admin_password($email)
	{

		$this->load->helper('common_helper');
		$decodedEmailId = urlsafe_b64decode($email);

		if (!file_exists(APPPATH . 'views/admin/forgot-password.php'))
			show_404();

		$data['currentURL'] = current_url();

		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		$data['id'] = $this->db->get_where('admin', array('email' => $decodedEmailId))->row()->id;

		$data['encodedKey'] = $email;
		if (count($_POST) > 0) {

			$admin_id = $this->input->post('id');
			$pwd = md5($this->input->post('password'));

			$data = array('password' => $pwd);

			$query = $this->Admin_model->update_admin_password($admin_id, $data);
			if ($query) {
				$this->session->set_flashdata('success', str_replace('%s', 'Password', THE_UPDATE_SUCCESS_MSG));
				redirect(base_url() . 'admin/');
			} else {
				$this->session->set_flashdata('failed', str_replace('%s', 'Password', THE_UPDATE_FAILED_MSG));
				redirect(base_url() . 'admin/reset-password/' . $email);
			}
			exit();
		}




		$this->load->view('admin/header', $data);
		$this->load->view('admin/reset-password');
		$this->load->view('admin/footer');
	}

	public function forgot_password()
	{

		if (!file_exists(APPPATH . 'views/admin/forgot-password.php'))
			show_404();

		$data['currentURL'] = current_url();

		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();


		$this->load->view('admin/header', $data);
		$this->load->view('admin/forgot-password');
		$this->load->view('admin/footer');
	}

	// Admin Forgot Password Controller Ends - 23-10-2021 Afras Khan

	function assign_students($classroomId)
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/assign_students.php'))
			show_404();
		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$classroom_name = $this->db->get_where('classroom', array('id' => $classroomId))->row()->classroom_name;
		$data['title'] = "Student List of " . $classroom_name;
		$data['classroomid'] = $classroomId;
		$data['back_url'] = urlsafe_b64encode($classroomId . '-qqcksbvlwierhwjerw');
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		// 		$query = "SELECT sb.id as stud_batch_id, sb.roll_no, sb.batch_id,sb.classroom_id,s.* FROM student_batch sb JOIN students s ON sb.student_id=s.id AND sb.batch_id = s.batch_id WHERE sb.classroom_id=$classroomId";
		// $query = "SELECT sb.id as stud_batch_id, sb.roll_no, sb.batch_id,sb.classroom_id,s.* FROM student_batch sb JOIN students s ON sb.student_id=s.id AND sb.batch_id = s.batch_id JOIN classroom cl ON cl.id=sb.classroom_id WHERE cl.course_id=s.course AND sb.classroom_id=$classroomId";
		$query = "SELECT sb.id as stud_batch_id, sb.roll_no, sb.batch_id as student_batch, sb.classroom_id, s.* FROM student_batch sb LEFT JOIN students s ON sb.student_id=s.id WHERE sb.batch_id = " . $data['school_info']['batch_id'] . " AND sb.classroom_id=$classroomId ORDER BY sb.roll_no";

		// exit;
		$data['student_list'] = $this->Admin_model->get_query_result($query);


		$this->load->view('admin/header', $data);
		$this->load->view('admin/assign_students');
		$this->load->view('admin/footer');
	}

	function assign_classroom($classroomId)
	{

		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/assign_classroom.php'))
			show_404();

		$classroom_id = (int)str_replace("-qqcksbvlwierhwjerw", '', urlsafe_b64decode($classroomId));

		$check_classroom_id = $this->db->query('select * from classroom where id =' . $classroom_id)->row_array();

		if (empty($check_classroom_id))
			redirect(base_url() . 'admin');

		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['title'] = "Assign Students";

		$data['course_id'] = $check_classroom_id['course_id'];
		$data['back_url'] = urlsafe_b64encode($check_classroom_id['id'] . '-qqcksbvlwierhwjerw');
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$data['batch_list'] = $this->Admin_model->get_general_result_details('batch', 'DESC', array('is_active' => 'yes'));
		$data['course_list'] = $this->Admin_model->get_general_result_details('course', 'DESC', array('is_active' => 'yes', 'id' => $data['course_id']));
		$data['student_list'] = $this->Admin_model->get_general_result_details('students', 'DESC', array('assign_status' => 'no', 'is_active' => 'yes', 'course' => $data['course_id']));

		$data['section_list'] = $this->Admin_model->get_general_result_details('section', 'DESC', array('is_active' => 'yes'));

		$this->load->view('admin/header', $data);
		$this->load->view('admin/assign_classroom');
		$this->load->view('admin/footer');
	}

	public function getsectionsbyCourse()
	{
		$result2 = array();
		$courseId = $_REQUEST['courseid'];
		$query = "SELECT section_id FROM course_sections WHERE course_id=$courseId";
		// 		SELECT s.section_name,s.id as section_id FROM course_sections cs LEFT JOIN section s ON s.id=cs.section_id  WHERE cs.course_id =$courseId ORDER BY s.id DESC
		$result = $this->Admin_model->get_query_result($query);

		if (count($result) > 0) {
			foreach ($result as $value) {
				$sectionId = (!empty($value['section_id'])) ? $value['section_id'] : 0;
				$query2 = "SELECT s.section_name,cl.section_id as section_id FROM classroom cl LEFT JOIN section s ON s.id=cl.section_id WHERE cl.course_id =$courseId AND cl.section_id=$sectionId ORDER BY s.id DESC";
				$rst = $this->Admin_model->get_query_row($query2);
				if ($rst != '') {
					$result2[] = $rst;
				}
			}
			if (count($result2) > 0) {
				echo json_encode($result2);
			} else {
				$result2[] = array('section_id' => null, 'section_name' => 'No sections Found');
				echo json_encode($result2);
			}
		} else {
			$result[] = array('section_id' => null, 'section_name' => 'No sections Found');
			echo json_encode($result);
		}
	}


	public function ajaxstudentfilters()
	{
		extract($_POST);
		// Array ( [batch_filter] => 2 [course_filter] => 1 [section_filter] => )
		$where = array();
		if (isset($_POST['batch_filter']) && ($_POST['batch_filter'] != '')) {
			$where['batch_id'] = $batch_filter;
		}
		if (isset($_POST['course_filter']) && ($_POST['course_filter'] != '')) {
			$where['course'] = $course_filter;
		}
		$where['assign_status'] = 'no';
		$data['student_list'] = $this->Admin_model->get_general_result_details('students', 'DESC', $where);
		// echo $this->db->last_query();
		$unassigned_list = $this->load->view('admin/view-unassigned-students', $data, TRUE);
		echo $unassigned_list;
	}

	public function assignedtoclassroom()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/assign_classroom.php'))
			show_404();

		// print_r($this->input->post());
		if ($this->input->post('assignto') == 'assigntoclassroom') {
			$this->form_validation->set_rules('course_filter', 'Course', 'required');
			$this->form_validation->set_rules('section_filter', 'Section', 'required');

			$this->form_validation->set_rules('batch_filter', 'Batch', 'required');
			$this->form_validation->set_rules('student_list[]', 'Student List', 'required');
			// 			$this->form_validation->set_message('check', 'Please Select Students ');

			$check_classroom_id = $this->db->query('select * from classroom where course_id =' . $this->input->post('course_filter'))->row_array();
			$back_url = urlsafe_b64encode($check_classroom_id['id'] . '-qqcksbvlwierhwjerw');
			if ($this->form_validation->run() == FALSE) {

				$this->assign_classroom($back_url);
			} else {

				$failed = array();
				$get_class_id = '';
				if (count($this->input->post()) > 0) {
					$studentids = $this->input->post('student_list');
					$batchId = $this->input->post('batch_filter');
					$courseId = $this->input->post('course_filter');
					$sectionId = $this->input->post('section_filter');
					$courseName = $this->db->get_where('course', array('id' => $courseId))->row()->course_name;
					$sectionName = $this->db->get_where('section', array('id' => $sectionId))->row()->section_name;
					$classrom = $this->Admin_model->get_general_row_details('classroom', 'DESC', array('course_id' => $courseId, 'section_id' => $sectionId, 'is_active' => 'yes'));
					if ($classrom != '') {
						$get_class_id = $classrom['id'];
						foreach ($studentids as $stud_id) {
							$insertData = array(
								'student_id' => $stud_id,
								'batch_id' => $batchId,
								'classroom_id' => $classrom['id']
							);

							$results = $this->Admin_model->get_general_row_details('student_batch', 'DESC', array('student_id' => $stud_id, 'batch_id' => $batchId, 'classroom_id' => $classrom['id']));
							if ($results != '') {
								$studName = $this->db->get_where('students', array('id' => $results['student_id']))->row()->name;
								$failed[] = $studName;
							} else {
								$roll_no = $this->db->query('select roll_no from student_batch where batch_id=' . $batchId . ' and classroom_id =' . $classrom['id'] . ' and is_active ="yes" order by roll_no DESC')->row_array();
								if (!empty($roll_no)) {
									$insertData['roll_no'] = $roll_no['roll_no'] + 1;
								} else {
									$insertData['roll_no'] = 1;
								}

								$last_id = $this->Admin_model->insert_assign_classroom($insertData);
								if ($last_id > 0) {
									$this->db->where(array('id' => $stud_id, 'is_active' => 'yes', 'assign_status' => 'no'));
									$this->db->update('students', array('assign_status' => 'yes', 'modified' => $this->nepali_current_date));
								}
								$this->session->set_flashdata('success_msg', "The Students are Successfully Assigned to Classroom");
							}
						}
						$faillist = implode(',', $failed);
						if (!empty($faillist)) {
							$this->session->set_flashdata('error_msg', str_replace('%s', $faillist, CLASSROOM_ALREADY_ASSIGNED_MSG));
						}
					} else {
						$this->session->set_flashdata('error_msg', str_replace('%s', $courseName . ' and ' . $sectionName, CLASSROOM_NOTEXISTS_MSG));
					}
				}
				if (empty($get_class_id))
					redirect('admin/dashboard');
				else
					redirect('admin/assign-students/' . $get_class_id);
			}
		}
	}

	public function remove_classroom_student($studId, $batchId, $classroomID)
	{
		$condition = array(
			'student_id' => $studId,
			'batch_id' => $batchId,
			'classroom_id' => $classroomID
		);
		$result = $this->Admin_model->delete_row('student_batch', $condition);
		if ($result) {
			$this->db->set('assign_status', 'no');
			$this->db->where(array('id' => $studId, 'batch_id' => $batchId, 'assign_status' => 'yes'));
			$rst = $this->db->update('students');
			if ($rst)
				$this->session->set_flashdata('success_msg', str_replace('%s', 'Student', THE_DELETE_SUCCESS_MSG));
			else
				$this->session->set_flashdata('error_msg', str_replace('%s', 'Student', THE_DELETE_ERROR_MSG));
		} else {
			$this->session->set_flashdata('error_msg', str_replace('%s', 'Student', THE_DELETE_ERROR_MSG));
		}
		redirect('admin/assign-students/' . $classroomID);
	}


	public function getSubjectsByCourse()
	{
		$courseID = $_REQUEST['course_id'];
		$subject_query = "SELECT s.subject_name,s.id FROM course_subjects	cs LEFT JOIN subject s ON s.id=cs.subject_id WHERE cs.course_id=$courseID";
		$result['subjects'] = $this->Admin_model->get_query_result($subject_query);
		echo json_encode($result);
	}

	public function getTeacherbysubjects()
	{
		$subjectId = $_REQUEST['subject_id'];
		$teaher_query = "SELECT t.id as teach_id,t.teacher_name FROM teacher_subjects ts LEFT JOIN teacher t ON t.id=ts.teacher_id WHERE ts.subject_id=$subjectId";
		$data['teachers'] = $this->Admin_model->get_query_result($teaher_query);
		echo json_encode($data);
	}

	//shankar code for teacher view 27-10-2021
	public function view_teacher($tid)
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$data['teacher_info'] = $this->Admin_model->get_teacher($tid);
		$data['teacher_onlinesession'] = array();

		$counter = 0;
		(!empty($data['monday']) && isset($data['monday'])) ? ($counter > count($data['monday'])) ? '' : $counter = count($data['monday']) : '';
		(!empty($data['tuesday']) && isset($data['tuesday'])) ? ($counter > count($data['tuesday'])) ? '' : $counter = count($data['tuesday']) : '';

		(!empty($data['wednesday']) && isset($data['wednesday'])) ? ($counter > count($data['wednesday'])) ? '' : $counter = count($data['wednesday']) : '';
		(!empty($data['thursday']) && isset($data['thursday'])) ? ($counter > count($data['thursday'])) ? '' : $counter = count($data['thursday']) : '';
		(!empty($data['friday']) && isset($data['friday'])) ? ($counter > count($data['friday'])) ? '' : $counter = count($data['friday']) : '';
		(!empty($data['saturday']) && isset($data['saturday'])) ? ($counter > count($data['saturday'])) ? '' : $counter = count($data['saturday']) : '';
		(!empty($data['sunday']) && isset($data['sunday'])) ? ($counter > count($data['sunday'])) ? '' : $counter = count($data['sunday']) : '';


		$data['count'] = $counter;

		$data['course_subject'] = $this->Admin_model->get_course_subjects_teacher($tid, 1);
		foreach ($data['course_subject'] as $key) {
			$data['all_co_sub'] = $this->Admin_model->get_course_subjects_teacher($tid, $key['classroom_id']);
		}

		$this->load->view('admin/header', $data);
		$this->load->view('admin/view-teacher');
		$this->load->view('admin/footer');
	}
	//shankar code for teacher view 27-10-2021


	// Fee Course - 10-11-2021 Afras Khan

	public function fee_course()
	{
		// dd($_POST);
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		if (!file_exists(APPPATH . 'views/admin/fee-course.php'))
			show_404();

		$data['currentURL'] = current_url();

		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$data['current_batch'] = $data['school_info']['batch_id'];

		$data['selected_batch'] = $data['current_batch'];

		if ($this->input->post('filterSubmit') == "Filter") {

			$this->form_validation->set_rules('filter-batch', 'Batch', 'required');
			$this->form_validation->set_rules('filter-course', 'Course', 'required');
			// $this->form_validation->set_rules('filter-feeType', 'Fees Name', 'required');					

			$course_id = (isset($_POST['filter-course']) && !empty($_POST['filter-course'])) ? $_POST['filter-course'] : 0;
			$batch = (isset($_POST['filter-batch']) && !empty($_POST['filter-batch'])) ? $_POST['filter-batch'] : 0;
			$feeType = (isset($_POST['filter-feeType']) && !empty($_POST['filter-feeType'])) ? $_POST['filter-feeType'] : 0;
			$feeName = (isset($_POST['filter-feesName']) && !empty($_POST['filter-feesName'])) ? $_POST['filter-feesName'] : '';

			$data['courseId'] = $course_id;
			$data['bacth_id'] = $batch;
			$data['feeType_id'] = $feeType;
			$data['feeName'] = $feeName;
			$data['selected_batch'] = $data['bacth_id'];
			if (!$this->form_validation->run() == FALSE) {
				$where = '';
				if ($feeType > 0)
					$where .= " AND ft.id = $feeType";

				if (strlen($feeName) > 0)
					$where .= " AND cf.fee_values like '%$feeName%'";

				$sql = "SELECT b.b_name as batch, c.course_name as course, ft.feetype_name as feetype, cf.* FROM course_fees cf inner join batch b on cf.batch_id = b.id INNER JOIN course c on cf.course_id = c.id INNER JOIN fee_types ft on cf.fees_type = ft.id WHERE b.id = $batch AND c.id = $course_id $where ORDER BY cf.id ASC";

				$data['course_fees'] = $this->Admin_model->get_table_info('course_fees', '', $sql);
			}
		}

		if (!empty($data['course_fees']) && isset($data['course_fees'])) {
			foreach ($data['course_fees'] as $key => $value) {

				$data['course_fees'][$key]['due_date'] = date('Y-m-d', strtotime($value['due_date']));
			}
		}

		$data['course'] = $this->db->query("select * from course WHERE is_active='yes'")->result_array();
		$data['batch'] = $this->Admin_model->get_batch();
		$data['fee_types'] = $this->db->query("select * from fee_types WHERE is_active='yes'")->result_array();

		$this->load->view('admin/header', $data);
		$this->load->view('admin/fee-course.php');
		$this->load->view('admin/footer');
	}

	public function fee_types()
	{
		// dd($_POST);
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		if (!file_exists(APPPATH . 'views/admin/fee-types.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$data['current_batch'] = $data['school_info']['batch_id'];
		$data['selected_batch'] = $data['current_batch'];
		$data['title'] = 'Fee Types';
		$data['fee_types'] = $this->db->query("select * from fee_types")->result_array();

		if (ACCOUNTING) :
			foreach ($data['fee_types'] as $feeKey => &$fee) {
				$fee['default_account'] = $this->accounting->fetchMappedAccount('fee_types', $fee['id']) ?? "Not Set";     //HERE FETCH DEFAULT ACCOUNT FROM MAPPING TABLE
			}
		endif;

		if ($_POST > 0) {
			if (isset($_POST['addFeeType']) && ($_POST['addFeeType'] == 'Add')) {
				$feeTitle = $_POST['title'];
				$isUnique = $this->Admin_model->get_unique_name_main_db('feetype_name', $feeTitle, 'fee_types');

				if ($isUnique) {
					$in_data['feetype_name'] = $feeTitle;
					$in_data['is_active'] = 'yes';
					$in_data['created'] = $this->nepali_current_date;
					$in_data['modified'] =  $this->nepali_current_date;
					$this->db->insert('fee_types', $in_data);
					$feetype_id = $this->db->insert_id();
					if (ACCOUNTING) :
						$mappedAccountID = $_POST['account_id'];
						$this->accounting->updateFeeTypeAccountMapping($feetype_id, $mappedAccountID);

					endif;
					$this->session->set_flashdata('success', str_replace('%s', 'Fee Type', 'New fee type has been added.'));
				} else {
					$this->session->set_flashdata('danger', str_replace('%s', 'Fee Type', 'Fee name already exist.'));
				}
				redirect(base_url() . 'admin/fee-types');
			} else if (isset($_POST['updateFeeType']) && ($_POST['updateFeeType'] == 'Update')) {

				// dd($_POST);

				$feeId = $_POST['feeId'];
				$feeTitle = $_POST['title'];
				$isUnique = $this->Admin_model->update_unique_name_main_db('feetype_name', $feeTitle, 'fee_types', $feeId);
				if ($isUnique) {
					$up_data['feetype_name'] = $feeTitle;
					$up_data['is_active'] = $_POST['is_active'];
					$up_data['modified'] =  $this->nepali_current_date;
					$this->db->where('id', $feeId);
					$this->db->update('fee_types', $up_data);
					$feetype_id = $feeId;
					if (ACCOUNTING) :
						$mappedAccountID = $_POST['account_id'];
						$this->accounting->updateFeeTypeAccountMapping($feetype_id, $mappedAccountID);

					endif;
					$this->session->set_flashdata('success', str_replace('%s', 'Fee Type', 'Fee details has been updated successfully.'));
				} else {
					$this->session->set_flashdata('danger', str_replace('%s', 'Fee Type', 'Fee name already exist.'));
				}
				redirect(base_url() . 'admin/fee-types');
			}
		}

		$this->load->view('admin/header', $data);
		$this->load->view('admin/fee-types.php');
		$this->load->view('admin/footer');
	}

	public function expense_types()
	{
		// dd($_POST);
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		if (!file_exists(APPPATH . 'views/admin/expense-types.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$data['current_batch'] = $data['school_info']['batch_id'];
		$data['selected_batch'] = $data['current_batch'];
		$data['title'] = 'Expense Types';
		$data['expense_types'] = $this->db->query("select * from expense_types")->result_array();

		if (ACCOUNTING) :
			foreach ($data['expense_types'] as $feeKey => &$fee) {
				$fee['default_account'] = $this->accounting->fetchMappedAccount('expense_types', $fee['id']) ?? "Not Set";     //HERE FETCH DEFAULT ACCOUNT FROM MAPPING TABLE
			}
		endif;

		if ($_POST > 0) {
			if (isset($_POST['addExpenseType']) && ($_POST['addExpenseType'] == 'Add')) {
				$feeTitle = $_POST['title'];
				$isUnique = $this->Admin_model->get_unique_name_main_db('name', $feeTitle, 'expense_types');

				if ($isUnique) {
					$in_data['name'] = $feeTitle;
					$in_data['status'] = 'yes';
					$in_data['created_on'] = $this->nepali_current_date;
					$in_data['modified_on'] =  $this->nepali_current_date;
					$this->db->insert('expense_types', $in_data);
					$feetype_id = $this->db->insert_id();
					if (ACCOUNTING) :
						$mappedAccountID = $_POST['account_id'];
						$this->accounting->updateExpenseTypeAccountMapping($feetype_id, $mappedAccountID);

					endif;
					$this->session->set_flashdata('success', str_replace('%s', 'Expense Type', 'New expense type has been added.'));
				} else {
					$this->session->set_flashdata('danger', str_replace('%s', 'Expense Type', 'Expense name already exist.'));
				}
				redirect(base_url() . 'admin/expense-types');
			} else if (isset($_POST['updateExpenseType']) && ($_POST['updateExpenseType'] == 'Update')) {

				// dd($_POST);

				$expenseId = $_POST['expenseId'];
				$feeTitle = $_POST['title'];
				$isUnique = $this->Admin_model->update_unique_name_main_db('name', $feeTitle, 'expense_types', $expenseId);
				if ($isUnique) {
					$up_data['name'] = $feeTitle;
					$up_data['status'] = $_POST['is_active'];
					$up_data['modified_on'] =  $this->nepali_current_date;
					$this->db->where('id', $expenseId);
					$this->db->update('expense_types', $up_data);
					$expensetype_id = $expenseId;
					if (ACCOUNTING) :
						$mappedAccountID = $_POST['account_id'];
						$this->accounting->updateExpenseTypeAccountMapping($expensetype_id, $mappedAccountID);

					endif;
					$this->session->set_flashdata('success', str_replace('%s', 'Expense Type', 'Expense details has been updated successfully.'));
				} else {
					$this->session->set_flashdata('danger', str_replace('%s', 'Expense Type', 'Expense name already exist.'));
				}
				redirect(base_url() . 'admin/expense-types');
			}
		}

		$this->load->view('admin/header', $data);
		$this->load->view('admin/expense-types.php');
		$this->load->view('admin/footer');
	}


	// public function add_edit_fee_course($feesId)
	// {
	// 	// dd($_POST);

	// 	if (!isset($_SESSION['admin_id']))
	// 		redirect(base_url() . 'admin');

	// 	if (!file_exists(APPPATH . 'views/admin/ae_fee_course.php'))
	// 		show_404();

	// 	$checkIfExists = $this->Admin_model->get_table_info('course_fees', array('id' => $feesId));

	// 	if (empty($checkIfExists) && $feesId != 0) {
	// 		$this->session->set_flashdata('failed', 'There is no fees with selected id');
	// 		redirect(base_url() . 'admin/fee-course');
	// 	}

	// 	$data['fees_id'] = $feesId;
	// 	$data['school_info'] = $this->Admin_model->get_logo_from_setting();

	// 	$batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes'));
	// 	$data['batches'] = $batches;

	// 	$data['current_batch'] = $data['school_info']['batch_id'];


	// 	// dd($data['current_batch']);

	// 	$data['payment_types'] = $this->Admin_model->get_table_info('payment_types', '', '', 'ASC');


	// 	$courses = $this->Admin_model->get_table_info('course', '', '', 'ASC');
	// 	$data['courses'] = $courses;

	// 	$data['feeTypes'] = $this->Admin_model->get_table_info('fee_types', array('is_active' => 'yes'), '', 'ASC');

	// 	if (count($_POST) > 0) {
	// 		// dd($_POST);
	// 		$grouped = isset($_POST['grouped']) ? 'yes' : 'no';

	// 		foreach ($_POST as $key => $value) {

	// 			if ($key == 'englishdate' || $key == 'nepalidate') {
	// 				foreach ($value as $key2 => $value2) {
	// 					if ($value2 == '') {
	// 						unset($_POST[$key][$key2]);
	// 					}
	// 				}
	// 			}

	// 			if (!$_POST[$key]) {
	// 				unset($_POST[$key]);
	// 			}
	// 		}

	// 		// dd($_POST);

	// 		$batch_id = $this->input->post('batch_id');
	// 		$course_id = $this->input->post('course_id');
	// 		$hostel_plan = NULL;
	// 		if (isset($_POST['hostel_plan_id'])) {
	// 			$hostel_plan = $this->input->post('hostel_plan_id');
	// 		}
	// 		$route_id = NULL;
	// 		if (isset($_POST['new_route_id'])) {
	// 			$route_id = $this->input->post('new_route_id');
	// 		}

	// 		if (array_key_exists('common_bs_due_date', $_POST)) {
	// 			$due_date = $this->input->post('common_bs_due_date');
	// 		} else if (array_key_exists('common_ad_due_date', $_POST)) {
	// 			$due_date = $this->input->post('common_ad_due_date');
	// 		} else {
	// 			if (array_key_exists('bsdate', $_POST)) {
	// 				$due_date = $_POST['bsdate'][0];
	// 			}
	// 			if (array_key_exists('englishdate', $_POST)) {
	// 				$due_date = $_POST['englishdate'][0];
	// 			}
	// 		}

	// 		$due_date = date('Y-m-d H:i:s', strtotime($due_date));

	// 		$fees_type = $this->input->post('feetype');

	// 		$fees_name = array();

	// 		for ($i = 0; $i < count($_POST['feename']); $i++) {
	// 			$fees_name[$i]['name'] = $_POST['feename'][$i];
	// 			$fees_name[$i]['amount'] = $_POST['feeamount'][$i];
	// 		}

	// 		$fee_values = implode(',', $_POST['feename']);

	// 		$fees_name = json_encode($fees_name);
	// 		$amount = 0;

	// 		foreach ($_POST['feeamount'] as $key => $value) {
	// 			$amount += $value;
	// 		}

	// 		$nowDate = $this->nepali_current_date;

	// 		// Adding Data Inside POST
	// 		if ($feesId == 0) {
	// 			$insertFlag = false;

	// 			foreach ($course_id as $key => $value) {
	// 				$allData = array();
	// 				if ($fees_type == 8) { // For Monthly Fee

	// 					foreach ($_POST['feename'] as $n => $e) {

	// 						$fees_name_inside = array();
	// 						$fees_name_inside[0]['name'] = $e;
	// 						$fees_name_inside[0]['amount'] = $_POST['feeamount'][$n];

	// 						$fees_name_inside = json_encode($fees_name_inside);

	// 						$allData[] = array(
	// 							'batch_id' => $batch_id,
	// 							'course_id' => $value,
	// 							'fees_type' => $fees_type,
	// 							'fees_name' => $fees_name_inside,
	// 							'amount' => $_POST['feeamount'][$n],
	// 							'due_date' => date('Y-m-d H:i:s', strtotime($_POST['bsdate'][$n])),
	// 							'grouped' => $grouped,
	// 							'fee_values' => $_POST['feename'][$n],
	// 							'hostel_plan_id' => $hostel_plan,
	// 							'route_id' => $route_id,
	// 							'created' => $nowDate
	// 						);
	// 					}
	// 				} else if ($fees_type == 4) { // For Transport Fee

	// 					foreach ($_POST['feename'] as $n => $e) {

	// 						$fees_name_route_inside = array();
	// 						$fees_name_route_inside[0]['name'] = $e;
	// 						$fees_name_route_inside[0]['amount'] = $_POST['feeamount'][$n];

	// 						$fees_name_route_inside = json_encode($fees_name_route_inside);

	// 						$allData[] = array(
	// 							'batch_id' => $batch_id,
	// 							'course_id' => $value,
	// 							'fees_type' => $fees_type,
	// 							'fees_name' => $fees_name_route_inside,
	// 							'amount' => $_POST['feeamount'][$n],
	// 							'due_date' => date('Y-m-d H:i:s', strtotime($_POST['bsdate'][$n])),
	// 							'grouped' => $grouped,
	// 							'fee_values' => $_POST['feename'][$n],
	// 							'hostel_plan_id' => $hostel_plan,
	// 							'route_id' => $route_id,
	// 							'created' => $nowDate
	// 						);

	// 						// original code End HERE


	// 					}
	// 				} else {

	// 					$allData[] = array(
	// 						'batch_id' => $batch_id,
	// 						'course_id' => $value,
	// 						'fees_type' => $fees_type,
	// 						'fees_name' => $fees_name,
	// 						'amount' => $amount,
	// 						'due_date' => $due_date,
	// 						'grouped' => $grouped,
	// 						'fee_values' => $fee_values,
	// 						'hostel_plan_id' => $hostel_plan,
	// 						'route_id' => $route_id,
	// 						'created' => $nowDate
	// 					);
	// 				}



	// 				$insertQuery = $this->db->insert_batch('course_fees', $allData);
	// 				if ($insertQuery) {
	// 					$insertFlag = true;
	// 				} else {
	// 					$insertFlag = false;
	// 				}
	// 			}
	// 			if ($insertFlag) {
	// 				$this->session->set_flashdata('success', str_replace('%s', 'Fees', THE_ADD_SUCCESS_MSG));
	// 				redirect(base_url() . 'admin/fee-course');
	// 			} else {

	// 				$this->session->set_flashdata('failed', str_replace('%s', 'Fees', THE_ADD_ERROR_MSG));
	// 				redirect(base_url() . 'admin/fee-course');
	// 			}
	// 		}

	// 		if ($feesId > 0) { // Updating Data Inside POST

	// 			$pay['course_fee_id'] = $feesId;
	// 			$check_payment = $this->db->get_where('students_online_payments', $pay)->row();

	// 			if (!empty($check_payment)) {
	// 				$this->session->set_flashdata('failed', 'Fees cannot be modified as a payment has already been made');
	// 				redirect(base_url() . 'admin/fee-course');
	// 			}

	// 			$allData = array(
	// 				'batch_id' => $batch_id,
	// 				'course_id' => $course_id,
	// 				'fees_type' => $fees_type,
	// 				'fees_name' => $fees_name,
	// 				'amount' => $amount,
	// 				'due_date' => $due_date,
	// 				'grouped' => $grouped,
	// 				'fee_values' => $fee_values,
	// 				'hostel_plan_id' => $hostel_plan,
	// 				'route_id' => $route_id,
	// 				'modified' => $nowDate
	// 			);
	// 			// dd($allData);
	// 			$checkIfFeeRelated = $this->Admin_model->get_table_info('students_online_payments', array('course_fee_id' => $feesId));

	// 			if (empty($checkIfFeeRelated)) {

	// 				$updateQuery = $this->Admin_model->add_edit_fee_course($feesId, $allData);

	// 				if ($updateQuery) {
	// 					$this->session->set_flashdata('success', str_replace('%s', 'Fees', THE_UPDATE_SUCCESS_MSG));
	// 					redirect(base_url() . 'admin/fee-course');
	// 				} else {
	// 					$this->session->set_flashdata('failed', str_replace('%s', 'Fees', THE_UPDATE_ERROR_MSG));
	// 					redirect(base_url() . 'admin/ae-fee-course/' . $feesId);
	// 				}
	// 			} else {
	// 				$this->session->set_flashdata('failed', 'This Fee cannot be edited as installments have already been created');
	// 				redirect(base_url() . 'admin/fee-course');
	// 			}
	// 		}
	// 	}


	// 	if ($feesId > 0) { // Display to AE_EDIT PAGE

	// 		$Feesql = "SELECT b.b_name as batch, c.course_name as course,ft.id as fee_id, ft.feetype_name as feetype, cf.* FROM course_fees cf inner join batch b on cf.batch_id = b.id INNER JOIN course c on cf.course_id = c.id INNER JOIN fee_types ft on cf.fees_type = ft.id WHERE cf.id = '$feesId' ORDER BY cf.id DESC";

	// 		$checkCourseFee = $this->Admin_model->get_table_info('course_fees', '', $Feesql);

	// 		if (empty($checkCourseFee) && $feesId != 0) {
	// 			$this->session->set_flashdata('failed', 'There is no course fee with selected id');
	// 			redirect(base_url() . 'admin/fee-course');
	// 		}

	// 		// start from here by shivuuu
	// 		if ($checkCourseFee[0]['fees_type'] == 4) {
	// 			$transport_db = $this->load->database('erisnClassroom_bts', TRUE);
	// 			$batch_routes = $transport_db->query('SELECT * from bt_batch_routes where batch_id = ' . $checkCourseFee[0]['batch_id'])->row_array();

	// 			if (!empty($batch_routes)) {
	// 				$route_ids = explode(',', $batch_routes['route_ids']);
	// 				$whereClause = '';
	// 				foreach ($route_ids as $bkey => $bvalue) {
	// 					if ($bkey == 0) {
	// 						$whereClause .= "id = '$bvalue'";
	// 					} else {
	// 						$whereClause .= " or id = '$bvalue'";
	// 					}
	// 				}
	// 				$data['edit_route_list'] = $transport_db->query('SELECT * from bt_routes where ' . $whereClause)->result_array();
	// 			}
	// 		}
	// 		// end Here by shivakumar 


	// 		$data['course_fees'] = $checkCourseFee;
	// 		// dd($data['course_fees']);
	// 		foreach ($data['course_fees'] as $key => $value) {

	// 			$data['course_fees'][$key]['due_date'] = date('Y-m-d', strtotime($value['due_date']));
	// 		}
	// 	}

	// 	// dd($data['course_fees']);
	// 	$data['currentURL'] = current_url();

	// 	$data['nepali_months'] = $this->db->query("SELECT * FROM nepali_months")->result_array();

	// 	$data['logo'] = $this->Admin_model->get_logo();
	// 	$data['school_info'] = $this->Admin_model->get_logo_from_setting();

	// 	$data['menulist'] = $this->Admin_model->get_adminMenu();
	// 	$data['check_fees_type'] = (!empty($coursebyfees)) ? $coursebyfees : '';
	// 	// dd($data);
	// 	$this->load->view('admin/header', $data);
	// 	$this->load->view('admin/ae_fee_course.php');
	// 	$this->load->view('admin/footer');
	// }
	public function add_edit_fee_course($feesId)
	{
		// dd($_POST);

		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		if (!file_exists(APPPATH . 'views/admin/ae_fee_course.php'))
			show_404();

		$checkIfExists = $this->Admin_model->get_table_info('course_fees', array('id' => $feesId));

		if (
			empty($checkIfExists) && $feesId != 0
		) {
			$this->session->set_flashdata('failed', 'There is no fees with selected id');
			redirect(base_url() . 'admin/fee-course');
		}

		$data['fees_id'] = $feesId;
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		$batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes'));
		$data['batches'] = $batches;

		$data['current_batch'] = $data['school_info']['batch_id'];


		// dd($data['current_batch']);

		$data['payment_types'] = $this->Admin_model->get_table_info('payment_types', '', '', 'ASC');


		$courses = $this->Admin_model->get_table_info('course', '', '', 'ASC');
		$data['courses'] = $courses;

		$data['feeTypes'] = $this->Admin_model->get_table_info('fee_types', array('is_active' => 'yes'), '', 'ASC');

		if (count($_POST) > 0) {
			// dd($_POST);
			$grouped = isset($_POST['grouped']) ? 'yes' : 'no';

			foreach ($_POST as $key => $value) {

				if (
					$key == 'englishdate' || $key == 'nepalidate'
				) {
					foreach ($value as $key2 => $value2) {
						if ($value2 == '') {
							unset($_POST[$key][$key2]);
						}
					}
				}

				if (!$_POST[$key]) {
					unset($_POST[$key]);
				}
			}

			// dd($_POST);

			$batch_id = $this->input->post('batch_id');
			$course_id = $this->input->post('course_id');
			$hostel_plan = NULL;
			if (isset($_POST['hostel_plan_id'])) {
				$hostel_plan = $this->input->post('hostel_plan_id');
			}
			$route_id = NULL;
			if (isset($_POST['new_route_id'])) {
				$route_id = $this->input->post('new_route_id');
			}

			// if (array_key_exists('common_bs_due_date', $_POST)) {
			// 	$due_date = $this->input->post('common_bs_due_date');
			// } else if (array_key_exists('common_ad_due_date', $_POST)) {
			// 	$due_date = $this->input->post('common_ad_due_date');
			// } else {
			// 	if (array_key_exists('bsdate', $_POST)) {
			// 		$due_date = $_POST['bsdate'][0];
			// 	}
			// 	if (array_key_exists('englishdate', $_POST)) {
			// 		$due_date = $_POST['englishdate'][0];
			// 	}
			// }


			if (isset($_POST['bsdate'][0])) {
				$due_date = date('Y-m-d H:i:s', strtotime($_POST['bsdate'][0]));
			} else {
				$due_date = '';
			}

			$fees_type = $this->input->post('feetype');

			$batch_detail = $this->db->query("SELECT * FROM batch WHERE id = " . $_POST['batch_id'])->row_array();

			$fees_name = array();

			// dd($_POST);
			if (isset($_POST['feename']) && !empty($_POST['feename'][0])) {
				for ($i = 0; $i < count($_POST['feename']); $i++) {
					$fees_name[$i]['name'] = $_POST['feename'][$i];
					$fees_name[$i]['amount'] = $_POST['feeamount'][$i];
				}
				$fee_values = implode(',', $_POST['feename']);

				$fees_name = json_encode($fees_name);
			} else {

				if (($fees_type == 8) || ($fees_type == 4)) {
					$months = $this->db->query("SELECT * FROM nepali_months")->result_array();
					$feename = array();
					foreach ($months as $key => $month) {
						$fees_name[$key]['name'] = $month['month_name'];
						$fees_name[$key]['amount'] = $_POST['feeamount'][0];
						array_push($feename, $month['month_name']);
					}

					$fee_values = implode(',', $feename);
					$fees_name = json_encode($fees_name);
				}
			}


			$amount = 0;

			foreach ($_POST['feeamount'] as $key => $value) {
				$amount += $value;
			}

			$nowDate = $this->nepali_current_date;

			// Adding Data Inside POST
			if ($feesId == 0) {
				$insertFlag = false;

				foreach ($course_id as $key => $value) {
					$allData = array();
					if ($fees_type == 8) { // For Monthly Fee

						$month_fees = json_decode($fees_name);

						foreach ($month_fees as $n => $e) {

							$fees_name_inside = array();
							$fees_name_inside[0]['name'] = $e->name;
							$fees_name_inside[0]['amount'] = $e->amount;


							// print_r($batch_detail);

							$batch_year = explode('-', $batch_detail['b_from'])[0];

							$fees_name_inside = json_encode($fees_name_inside);
							$dueDate = $batch_year . '-' . sprintf("%02d", ($n + 1)) . '-' . '25';
							echo ($batch_year . '-' . sprintf("%02d", ($n + 1)) . '-' . '25' . '
'); $allData[] = array( 'batch_id' => $batch_id, 'course_id' => $value, 'fees_type' => $fees_type, 'fees_name' => $fees_name_inside, 'amount' => $e->amount, 'due_date' => date('Y-m-d H:i:s', strtotime($dueDate)), 'grouped' => $grouped, 'fee_values' => $e->name, 'hostel_plan_id' => $hostel_plan, 'route_id' => $route_id, 'created' => $nowDate ); } // dd($allData); // End of monthly fee } else if ($fees_type == 4) { // For Transport Fee $month_fees = json_decode($fees_name); foreach ($month_fees as $n => $e) { $fees_name_inside = array(); $fees_name_inside[0]['name'] = $e->name; $fees_name_inside[0]['amount'] = $e->amount; // print_r($batch_detail); $batch_year = explode('-', $batch_detail['b_from'])[0]; $fees_name_inside = json_encode($fees_name_inside); $dueDate = $batch_year . '-' . sprintf("%02d", ($n + 1)) . '-' . '25'; // echo ($batch_year . '-' . sprintf("%02d", ($n + 1)) . '-' . '25' . '
'); $allData[] = array( 'batch_id' => $batch_id, 'course_id' => $value, 'fees_type' => $fees_type, 'fees_name' => $fees_name_inside, 'amount' => $e->amount, 'due_date' => date('Y-m-d H:i:s', strtotime($dueDate)), 'grouped' => $grouped, 'fee_values' => $e->name, 'hostel_plan_id' => $hostel_plan, 'route_id' => $route_id, 'created' => $nowDate ); } // dd($allData); // End of transport Fee } else { $allData[] = array( 'batch_id' => $batch_id, 'course_id' => $value, 'fees_type' => $fees_type, 'fees_name' => $fees_name, 'amount' => $amount, 'due_date' => $due_date, 'grouped' => $grouped, 'fee_values' => $fee_values, 'hostel_plan_id' => $hostel_plan, 'route_id' => $route_id, 'created' => $nowDate ); // dd($allData); } $insertQuery = $this->db->insert_batch('course_fees', $allData); if ($insertQuery) { $insertFlag = true; } else { $insertFlag = false; } } if ($insertFlag) { $this->session->set_flashdata('success', str_replace('%s', 'Fees', THE_ADD_SUCCESS_MSG)); redirect(base_url() . 'admin/fee-course'); } else { $this->session->set_flashdata('failed', str_replace('%s', 'Fees', THE_ADD_ERROR_MSG)); redirect(base_url() . 'admin/fee-course'); } } if ($feesId > 0) { // Updating Data Inside POST $pay['course_fee_id'] = $feesId; $check_payment = $this->db->get_where('students_online_payments', $pay)->row(); if (!empty($check_payment)) { $this->session->set_flashdata('failed', 'Fees cannot be modified as a payment has already been made'); redirect(base_url() . 'admin/fee-course'); } $allData = array( 'batch_id' => $batch_id, 'course_id' => $course_id, 'fees_type' => $fees_type, 'fees_name' => $fees_name, 'amount' => $amount, 'due_date' => $due_date, 'grouped' => $grouped, 'fee_values' => $fee_values, 'hostel_plan_id' => $hostel_plan, 'route_id' => $route_id, 'modified' => $nowDate ); // dd($allData); $checkIfFeeRelated = $this->Admin_model->get_table_info('students_online_payments', array('course_fee_id' => $feesId)); if (empty($checkIfFeeRelated)) { $updateQuery = $this->Admin_model->add_edit_fee_course($feesId, $allData); if ($updateQuery) { $this->session->set_flashdata('success', str_replace('%s', 'Fees', THE_UPDATE_SUCCESS_MSG)); redirect(base_url() . 'admin/fee-course'); } else { $this->session->set_flashdata('failed', str_replace('%s', 'Fees', THE_UPDATE_ERROR_MSG)); redirect(base_url() . 'admin/ae-fee-course/' . $feesId); } } else { $this->session->set_flashdata('failed', 'This Fee cannot be edited as installments have already been created'); redirect(base_url() . 'admin/fee-course'); } } } if ($feesId > 0) { // Display to AE_EDIT PAGE $Feesql = "SELECT b.b_name as batch, c.course_name as course,ft.id as fee_id, ft.feetype_name as feetype, cf.* FROM course_fees cf inner join batch b on cf.batch_id = b.id INNER JOIN course c on cf.course_id = c.id INNER JOIN fee_types ft on cf.fees_type = ft.id WHERE cf.id = '$feesId' ORDER BY cf.id DESC"; $checkCourseFee = $this->Admin_model->get_table_info('course_fees', '', $Feesql); if (empty($checkCourseFee) && $feesId != 0) { $this->session->set_flashdata('failed', 'There is no course fee with selected id'); redirect(base_url() . 'admin/fee-course'); } // start from here by shivuuu if ($checkCourseFee[0]['fees_type'] == 4) { $transport_db = $this->load->database('erisnClassroom_bts', TRUE); $batch_routes = $transport_db->query('SELECT * from bt_batch_routes where batch_id = ' . $checkCourseFee[0]['batch_id'])->row_array(); if (!empty($batch_routes)) { $route_ids = explode(',', $batch_routes['route_ids']); $whereClause = ''; foreach ($route_ids as $bkey => $bvalue) { if ($bkey == 0) { $whereClause .= "id = '$bvalue'"; } else { $whereClause .= " or id = '$bvalue'"; } } $data['edit_route_list'] = $transport_db->query('SELECT * from bt_routes where ' . $whereClause)->result_array(); } } // end Here by shivakumar $data['course_fees'] = $checkCourseFee; // dd($data['course_fees']); foreach ($data['course_fees'] as $key => $value) { $data['course_fees'][$key]['due_date'] = date('Y-m-d', strtotime($value['due_date'])); } } // dd($data['course_fees']); $data['currentURL'] = current_url(); $data['nepali_months'] = $this->db->query("SELECT * FROM nepali_months")->result_array(); $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['check_fees_type'] = (!empty($coursebyfees)) ? $coursebyfees : ''; // dd($data); $this->load->view('admin/header', $data); $this->load->view('admin/ae_fee_course.php'); $this->load->view('admin/footer'); } public function add_edit_fee_course_old($feesId) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/ae_fee_course.php')) show_404(); $checkIfExists = $this->Admin_model->get_table_info('course_fees', array('id' => $feesId)); if (empty($checkIfExists) && $feesId != 0) { $this->session->set_flashdata('failed', 'There is no fees with selected id'); redirect(base_url() . 'admin/fee-course'); } $data['fees_id'] = $feesId; $batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes')); $data['batches'] = $batches; $data['payment_types'] = $this->Admin_model->get_table_info('payment_types', '', '', 'ASC'); $courses = $this->Admin_model->get_table_info('course', '', '', 'ASC'); $data['courses'] = $courses; $data['feeTypes'] = $this->Admin_model->get_table_info('fee_types', array('is_active' => 'yes'), '', 'ASC'); // dd($data['feeTypes']); if (count($_POST) > 0) { $grouped = isset($_POST['grouped']) ? 'yes' : 'no'; foreach ($_POST as $key => $value) { if ($key == 'englishdate' || $key == 'nepalidate') { foreach ($value as $key2 => $value2) { if ($value2 == '') { unset($_POST[$key][$key2]); } } } if (!$_POST[$key]) { unset($_POST[$key]); } } $batch_id = $this->input->post('batch_id'); $course_id = $this->input->post('course_id'); $hostel_plan = NULL; if (isset($_POST['hostel_plan_id'])) { $hostel_plan = $this->input->post('hostel_plan_id'); } $route_id = NULL; if (isset($_POST['route_id'])) { $route_id = $this->input->post('route_id'); } if (array_key_exists('common_bs_due_date', $_POST)) { $due_date = $this->input->post('common_bs_due_date'); } else if (array_key_exists('common_ad_due_date', $_POST)) { $due_date = $this->input->post('common_ad_due_date'); } else { if (array_key_exists('bsdate', $_POST)) { $due_date = $_POST['bsdate'][0]; } if (array_key_exists('englishdate', $_POST)) { $due_date = $_POST['englishdate'][0]; } } $due_date = date('Y-m-d H:i:s', strtotime($due_date)); $fees_type = $this->input->post('feetype'); $fees_name = array(); for ($i = 0; $i < count($_POST['feename']); $i++) { $fees_name[$i]['name'] = $_POST['feename'][$i]; $fees_name[$i]['amount'] = $_POST['feeamount'][$i]; } $fee_values = implode(',', $_POST['feename']); $fees_name = json_encode($fees_name); $amount = 0; foreach ($_POST['feeamount'] as $key => $value) { $amount += $value; } $nowDate = $this->nepali_current_date; // Adding Data Inside POST if ($feesId == 0) { $insertFlag = false; foreach ($course_id as $key => $value) { $allData = array( 'batch_id' => $batch_id, 'course_id' => $value, 'fees_type' => $fees_type, 'fees_name' => $fees_name, 'amount' => $amount, 'due_date' => $due_date, 'grouped' => $grouped, 'fee_values' => $fee_values, 'hostel_plan_id' => $hostel_plan, 'route_id' => $route_id, 'created' => $nowDate ); $insertQuery = $this->Admin_model->add_edit_fee_course($feesId, $allData); if ($insertQuery) { $insertFlag = true; } else { $insertFlag = false; return; } } if ($insertFlag) { $this->session->set_flashdata('success', str_replace('%s', 'Fees', THE_ADD_SUCCESS_MSG)); redirect(base_url() . 'admin/fee-course'); } else { $this->session->set_flashdata('failed', str_replace('%s', 'Fees', THE_ADD_ERROR_MSG)); redirect(base_url() . 'admin/fee-course'); } } if ($feesId > 0) { // Updating Data Inside POST $pay['course_fee_id'] = $feesId; $check_payment = $this->db->get_where('students_online_payments', $pay)->row(); if (!empty($check_payment)) { $this->session->set_flashdata('failed', 'Fees cannot be modified as a payment has already been made'); redirect(base_url() . 'admin/fee-course'); } $allData = array( 'batch_id' => $batch_id, 'course_id' => $course_id, 'fees_type' => $fees_type, 'fees_name' => $fees_name, 'amount' => $amount, 'due_date' => $due_date, 'grouped' => $grouped, 'fee_values' => $fee_values, 'hostel_plan_id' => $hostel_plan, 'route_id' => $route_id, 'modified' => $nowDate ); $checkIfFeeRelated = $this->Admin_model->get_table_info('students_online_payments', array('course_fee_id' => $feesId)); if (empty($checkIfFeeRelated)) { $updateQuery = $this->Admin_model->add_edit_fee_course($feesId, $allData); if ($updateQuery) { $this->session->set_flashdata('success', str_replace('%s', 'Fees', THE_UPDATE_SUCCESS_MSG)); redirect(base_url() . 'admin/fee-course'); } else { $this->session->set_flashdata('failed', str_replace('%s', 'Fees', THE_UPDATE_ERROR_MSG)); redirect(base_url() . 'admin/ae-fee-course/' . $feesId); } } else { $this->session->set_flashdata('failed', 'This Fee cannot be edited as installments have already been created'); redirect(base_url() . 'admin/fee-course'); } } } if ($feesId > 0) { // Display to AE_EDIT PAGE $Feesql = "SELECT b.b_name as batch, c.course_name as course, ft.feetype_name as feetype, cf.* FROM course_fees cf inner join batch b on cf.batch_id = b.id INNER JOIN course c on cf.course_id = c.id INNER JOIN fee_types ft on cf.fees_type = ft.id WHERE cf.id = '$feesId' ORDER BY cf.id DESC"; $checkCourseFee = $this->Admin_model->get_table_info('course_fees', '', $Feesql); if (empty($checkCourseFee) && $feesId != 0) { $this->session->set_flashdata('failed', 'There is no course fee with selected id'); redirect(base_url() . 'admin/fee-course'); } $data['course_fees'] = $checkCourseFee; foreach ($data['course_fees'] as $key => $value) { $data['course_fees'][$key]['due_date'] = date('Y-m-d', strtotime($value['due_date'])); } } $data['currentURL'] = current_url(); $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $data['menulist'] = $this->Admin_model->get_adminMenu(); $this->load->view('admin/header', $data); $this->load->view('admin/ae_fee_course.php'); $this->load->view('admin/footer'); } public function ajax_get_hostel_plans() { $select_plan = ''; if (isset($_POST['selected_plan'])) { $select_plan = $this->input->post('selected_plan'); } $plans = $this->Admin_model->get_table_info('hostel_plans', '', '', 'ASC'); $html = ''; if ($select_plan != '' && $select_plan == $name) { $html .= ''; } else { $html .= ''; } echo $html; } public function delete_course_fees($fid) { $checkIfFeeRelated = $this->Admin_model->get_table_info('students_online_payments', array('course_fee_id' => $fid)); if (empty($checkIfFeeRelated)) { $deleteQuery = $this->Admin_model->delete_course_fees($fid); $deleteInst = $this->Admin_model->delete_row('installment', array('course_fee_id' => $fid)); // dd($deleteQuery); if ($deleteQuery) { $this->session->set_flashdata('success', str_replace('%s', 'Fees', THE_DELETE_SUCCESS_MSG)); redirect(base_url() . 'admin/fee-course'); } else { $this->session->set_flashdata('failed', str_replace('%s', 'Fees', THE_DELETE_ERROR_MSG)); redirect(base_url() . 'admin/fee-course'); } } else { $this->session->set_flashdata('failed', 'This Fee cannot be deleted as students have already made payment'); redirect(base_url() . 'admin/fee-course'); } } public function ajax_validate_fee_type() { $data = json_decode($this->input->post('info')); $id = $data->id; $whereClause = ''; if (is_array($data->course_id)) { foreach ($data->course_id as $key => $value) { if ($key == 0) { $whereClause .= "course_id = '$value'"; } else { $whereClause .= " or course_id = '$value'"; } } } else { $whereClause .= "course_id = '$data->course_id'"; } $sql = 'Select * from course_fees WHERE (batch_id = ' . $data->batch_id . ' AND fees_type =' . $data->fee_type . ') AND id != ' . $id . ' AND (' . $whereClause . ')'; // $dataArr = array( // 'batch_id' => $data->batch_id, // 'course_id' => $data->course_id, // 'fees_type' => $data->fee_type // ); // $query = $this->Admin_model->check_value_exists('course_fees', $dataArr, $id); $query = $this->Admin_model->get_table_info('course_fees', '', $sql); if (empty($query)) { echo 'success'; } else { echo 'failed'; } } public function ajax_check_fee_names() { $data = json_decode($this->input->post('info')); // dd($data); $id = $data->id; $whereClause = ''; $q = ''; if (is_array($data->course_id)) { foreach ($data->course_id as $key => $value) { if ($key == 0) { $whereClause .= "course_id = '$value'"; } else { $whereClause .= " or course_id = '$value'"; } } } else { $whereClause .= "course_id = '$data->course_id'"; } if ($data->route_id != '') $q .= " AND route_id = '$data->route_id'"; echo $sql = 'Select * from course_fees WHERE (batch_id = ' . $data->batch_id . ' AND fees_type =' . $data->fee_type . ') AND id != ' . $id . $q . ' AND (' . $whereClause . ')'; $fee_names = $data->fee_names; // dd($fee_names); $query = $this->Admin_model->get_table_info('course_fees', '', $sql); if (empty($query)) { exit(true); } $flag = false; foreach ($query as $key => $value) { $fee_values = explode(',', strtolower($value['fee_values'])); sort($fee_names); sort($fee_values); if ($fee_names == $fee_values) { $fee_values . "-
"; $flag = true; break; } } if ($flag) { echo false; // Dublicate names found } else { echo true; } } // Fee Course End - 10-11-2021 Afras Khan // Fee course validation public function ajax_check_fee_names_new() { $data = json_decode($this->input->post('info')); // dd($data); $coursebyfees = array(); $id = $data->id; $whereClause = ''; $course_arr = implode(',', $data->course_id); $fee_names = implode("','", $data->fee_names); // dd($fee_names); if (count($data->fee_names) > 0) $whereClause .= " AND cf.fee_values IN ('" . $fee_names . "')"; if ($data->route_id != '') $whereClause .= " AND cf.route_id = '$data->route_id'"; if (count($data->course_id) > 0) $whereClause .= ' AND cf.course_id IN (' . $course_arr . ')'; $feesname_exists = $this->db->query("Select cf.*,c.course_name FROM course_fees cf JOIN course c ON cf.course_id=c.id WHERE cf.batch_id=" . $data->batch_id . " AND cf.fees_type =" . $data->fee_type . " AND cf.id != " . $id . $whereClause)->result_array(); // $query1="Select cf.*,c.course_name FROM course_fees cf JOIN course c ON cf.course_id=c.id WHERE cf.batch_id=".$data->batch_id." AND cf.fees_type =".$data->fee_type." AND cf.id != ".$id.$whereClause; if (isset($feesname_exists) && !empty($feesname_exists)) { foreach ($feesname_exists as $k => $vl) { $coursebyfees[$vl['fee_values']][] = $vl['course_name']; } echo json_encode($coursebyfees); } else { echo 0; } } // End here - by shivakumar // To get section name for classroom - shivakumar start public function getSectionsforClassroomByCourse() { $courseId = (isset($_REQUEST['course_id'])) ? $_REQUEST['course_id'] : 0; $query = "SELECT s.section_name,s.id FROM course_sections cs LEFT JOIN section s ON s.id=cs.section_id WHERE s.is_active='yes' AND cs.course_id=$courseId"; $result = $this->Admin_model->get_query_result($query); if (count($result) > 0) { echo json_encode($result); } else { $result = array('id' => '', 'section_name' => 'No sections Found'); echo json_encode($result); } } // To get section name for classroom - shivakumar end public function delete_subject($subject_id) { $subject_id = ($subject_id != '') ? $subject_id : 0; if ($subject_id != 0) { $result = $this->Admin_model->delete_subject($subject_id); if ($result == 'exists') { $this->session->set_flashdata('errorsubject', str_replace('%s', 'Subject', ALREADY_ASSIGNED_MSG)); } else if ($result == 'success') { $this->session->set_flashdata('successsubject', str_replace('%s', 'Subject', THE_DELETE_SUCCESS_MSG)); } else if ($result == 'failed') { $this->session->set_flashdata('errorsubject', str_replace('%s', 'Subject', THE_DELETE_ERROR_MSG)); } } else { $this->session->set_flashdata('errorsubject', str_replace('%s', 'Subject', THE_DELETE_ERROR_MSG)); } redirect(base_url() . 'admin/subject'); } // Student's Info - 14-11-2021 Afras Khan public function view_student($studentid) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/view-student.php')) show_404(); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['student'] = $this->Admin_model->view_student($studentid); $data['student_id'] = $studentid; $data['section_name'] = $this->db->query('select sc.section_name from section sc , student_batch sb, classroom c, students s where s.id =' . $studentid . ' AND sb.student_id = s.id AND sb.batch_id = s.batch_id and c.id = sb.classroom_id and c.section_id = sc.id order by sb.id DESC')->row_array(); // dd($data['student']); $this->load->view('admin/header', $data); $this->load->view('admin/view-student', $data); $this->load->view('admin/footer'); } public function ajax_update_student_files() { extract($_POST['dataArr']); // Below is the data extracted // $file = image name // $path = image path // $studId = student Id // $inputName = input name $updateData[$inputName] = $file; $file_name = uniqid($file, false); $config['upload_path'] = 'assets_student/application/'; $config['allowed_types'] = 'gif|jpg|png'; $config['file_name'] = $file_name; $this->load->library('upload', $config); $this->upload->initialize($config); if (!$this->upload->do_upload('photo')) { echo 'failed in upper'; echo $this->upload->display_errors(); return false; } else { $data = array('upload_data' => $this->upload->data()); $sql = $this->Admin_model->update_student_files($updateData[$inputName], $studId); if ($sql) { echo 'success'; } else { echo 'failed in lower'; } } } public function editInfo_Student($studentid = '') { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/view-student.php')) show_404(); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['student'] = $this->Admin_model->view_student($studentid); foreach ($data['student'] as $key => $value) { $names = explode(' ', $value['name'], 2); if (count($names) > 1) { $data['student'][$key]['first_name'] = $names[0]; $data['student'][$key]['last_name'] = $names[1]; } else { $data['student'][$key]['first_name'] = $names[0]; $data['student'][$key]['last_name'] = ''; } } $data['student_id'] = $studentid; // dd($data['student']); if (isset($_POST['submit_info'])) { $first_name = ucfirst(strtolower($_POST['first_name'])); $last_name = ucfirst(strtolower($_POST['last_name'])); $complete_name = $first_name . ' ' . $last_name; $update_data = array( 'name' => $complete_name, 'iemis' => $_POST['iemis'], 'father_name' => $_POST['fname'], 'mother_name' => $_POST['mname'], 'email' => $_POST['email'], 'mobile' => $_POST['contact'], 'dob' => $_POST['dob'], 'gender' => $_POST['gender'], 'address1' => $_POST['address1'], 'address2' => $_POST['address2'], 'country' => $_POST['country'], 'state' => $_POST['state'], 'zipcode' => $_POST['zipcode'], 'parent_pan' => $_POST['pan'], 'emergency_contact_name' => $_POST['pname'], 'emergency_contact_number' => $_POST['pcontact'] ); $this->db->where('id', $_POST['student_Id']); $update = $this->db->update("students", $update_data); if ($update) { $this->session->set_flashdata('success', str_replace('%s', 'Student', THE_UPDATE_SUCCESS_MSG)); redirect(base_url() . 'admin/view_student/' . $_POST['student_Id']); } else { $this->session->set_flashdata('success', str_replace('%s', 'Student', THE_ADD_ERROR_MSG)); redirect(base_url() . 'admin/view_student/' . $_POST['student_Id']); } } // dd($data['student']); $this->load->view('admin/header', $data); $this->load->view('admin/edit-student-info', $data); $this->load->view('admin/footer'); } public function view_student_payments($student_id) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/view-student-payments.php')) show_404(); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['nepali_curr_date'] = $this->nepali_current_date; $data['student_id'] = $student_id; $this->load->model("Student_model"); $selectedBatchId = isset($_POST['f_batch']) ? $_POST['f_batch'] : $data['school_info']['batch_id']; $student_info_array = "Select s.id as student_id,c.course_id, c.section_id, s.name,s.email,s.studentId, s.photo, s.gender,s.emergency_contact_number, c.classroom_name,b.id as batch_id, b.b_name from students s INNER JOIN student_batch sb on s.id = sb.student_id AND $selectedBatchId = sb.batch_id INNER JOIN classroom c on c.id = sb.classroom_id INNER JOIN batch b on b.id = sb.batch_id WHERE s.id = $student_id ORDER BY sb.id DESC; "; //Student Info $data['student_info_array'] = $this->Admin_model->get_table_info_row('students', '', $student_info_array); // Paid Fees $sql = "Select sop.*, pt.payment_type_name, cf.amount, f.feetype_name, cf.fee_values from students_online_payments sop inner join payment_types pt on pt.id = sop.installment_type_id inner join course_fees cf on cf.id = sop.course_fee_id inner join fee_types f on cf.fees_type = f.id WHERE sop.student_id = '$student_id' ORDER BY sop.id"; $data['payments'] = $this->Admin_model->get_table_info('students_online_payments', '', $sql); // $data['not_paid_fees'] = $not_paid_installments; $fee_transactions = array(); // Paid Transactions $query = "Select sf.id, sf.studentId, sf.payment_for, sf.txn_id, sf.invoice_no, sf.deduction_type, sf.status, sf.payment_date, sf.payment_recived_id, sf.created, sf.modified, sf.payment_method, sf.bank_transaction_id, sf.course_fee_id, sf.install_sno, sf.bill_print_count, cf.batch_id, GROUP_CONCAT(sf.id SEPARATOR ',') AS online_transaction_id , GROUP_CONCAT(sf.payment_amt SEPARATOR ',') AS payment_amt , GROUP_CONCAT(sf.deduction_amount SEPARATOR ',') AS deduction_amount , GROUP_CONCAT(sf.fine_amount SEPARATOR ',') AS fine_amount , GROUP_CONCAT(sf.payment_for SEPARATOR ',') AS payment_for , GROUP_CONCAT(cf.fee_values SEPARATOR ', ') AS fee_values from student_fee_online_transactions sf inner join students s on sf.studentId = s.studentId INNER JOIN course_fees cf on cf.id = sf.course_fee_id WHERE s.id = $student_id GROUP BY sf.invoice_no ORDER BY sf.payment_date ASC"; $fee_transactions = $this->Admin_model->get_table_info('student_fee_online_transactions', '', $query); $final_fee_transactions = array(); foreach ($fee_transactions as $ft_key => $transaction) { $payment_date_time_array = explode(' ', $transaction['payment_date']); $payment_date = explode('-', $payment_date_time_array[0]); $payment_year = $payment_date[0]; $current_date_time_array = explode(' ', $this->nepali_current_date); $current_date = explode('-', $current_date_time_array[0]); $current_year = $current_date[0]; // echo $payment_year .' => '. $current_year .'
'; if (($payment_year == $current_year) || ($selectedBatchId == $transaction['batch_id'])) { array_push($final_fee_transactions, $transaction); } } // dd($final_fee_transactions); $fee_transactions = $final_fee_transactions; $data['transactions'] = $fee_transactions; // dd($data['transactions']); // Table unpaid fees $table_fees = []; // Afras kahan working script start HERE $table_unpaid_query = "Select cf.id as course_fee_id,cf.fee_values as fee_name, cf.batch_id, b.b_name as batch_name, 1 as install_s_no,cf.amount as fee_amount,ft.feetype_name as fee_type,ft.id as fee_type_id, fas.is_half_fee, DATE(cf.due_date) as due_date, IF(ss.id is null,0,ss.id) as scholarship_id, IF(ss.scholarship_amount is null,0,ss.scholarship_amount) as scholarship_amount, IF(ss.scholarship_discount is null,0,ss.scholarship_discount) as scholarship_discount, IF(ss.scholarship_type is null,0,ss.scholarship_type) as scholarship_type, IF(ss.is_active is null,null,ss.is_active) as hasScholarship, IF(sop.id is null,0,sop.id) as sop_id, IF(sop.pending_amount is null,cf.amount,sop.pending_amount) as pending_amount, IF(sop.fine_amount is null,0,sop.fine_amount) as fine_amount, IF(sop.fee_completed is null,'no',sop.fee_completed) as fee_completed from course_fees cf INNER JOIN fee_assigned_students fas on fas.course_fee_id = cf.id AND student_id = $student_id INNER JOIN fee_types ft on ft.id = cf.fees_type LEFT JOIN students_online_payments sop on cf.id = sop.course_fee_id AND sop.student_id = $student_id LEFT JOIN batch b ON b.id = cf.batch_id LEFT JOIN student_scholarship ss on cf.id = ss.course_fee_id AND ss.student_id = $student_id"; // Afras Khan working script End Here $tableUnpaid = $this->Admin_model->get_table_info('students', '', $table_unpaid_query); // echo '
';
		// var_dump($tableUnpaid);
		// dd($tableUnpaid);

		$unpaid_fees_list = array();
		$due_fees_list = array();

		foreach ($tableUnpaid as $u_key => $unpaid_fee) {


			if ($selectedBatchId == $unpaid_fee['batch_id']) {
				array_push($unpaid_fees_list, $unpaid_fee);
			} else {
				array_push($due_fees_list, $unpaid_fee);
			}
		}

		// echo '
';
		// print_r($unpaid_fees_list);
		// dd($due_fees_list);invoice

		$data['table_unpaid_fees'] = $unpaid_fees_list;
		$data['table_due_fees'] = $due_fees_list;
		// rsort($data['table_unpaid_fees']);

		$data['scholarship_types'] = $this->Admin_model->get_query_result("SELECT id, scholarshiptype_name FROM scholarship_types");

		$data['batches'] = $this->db->query('SELECT * FROM batch WHERE is_active = "yes"')->result_array();
		$data['selectedBatch'] = $selectedBatchId;
		$this->load->view('admin/header', $data);
		$this->load->view('admin/view-student-payments');
		$this->load->view('admin/footer');
	}

	public function ajax_fetch_each_transac_details()
	{
		$sop_id = $this->input->post('sopId');

		$sop_info = $this->Admin_model->get_table_info_row('students_online_payments', array('id' => $sop_id));

		$data_to_return = '';
		// dd($sop_info);
		if (!empty($sop_info)) {
			$course_fee_id = $sop_info['course_fee_id'];
			$installments = json_decode($sop_info['payment_details']);
			// dd($installments);
			foreach ($installments as $key => $value) {
				$data_txn['course_fee_id'] = $course_fee_id;
				$data_txn['install_sno'] = $value->install_sno;

				$txn = $this->db->get_where('student_fee_online_transactions', $data_txn)->row_array();
				$stuID = (isset($txn['studentId']) && !empty($txn['studentId'])) ? $txn['studentId'] : 0;
				$transaction_id = (isset($txn['txn_id']) && !empty($txn['txn_id'])) ? $txn['txn_id'] : 0;
				$invoice_link =  base_url() . 'admin/invoice/' . urlsafe_b64encode($stuID) . '/' . urlsafe_b64encode($transaction_id) . '/' . urlsafe_b64encode(0);

				$data_to_return .= '';
				$data_to_return .= '' . $value->install_sno . '';
				$data_to_return .= '' . $value->paid_amount . '';
				$data_to_return .= '' . $value->pending_amount . '';
				$data_to_return .= '' . $value->deduction_type . '';
				$data_to_return .= '' . $value->deduction_amount . '';
				$data_to_return .= '' . $value->fine_amount . '';
				$data_to_return .= '' . $value->payment_via . '';
				$data_to_return .= '' . $value->updated_by . '';
				$data_to_return .= '';

				$data_to_return .= '';
			}
		}

		$json = json_encode($data_to_return);
		echo $json;
	}

	public function ajax_erase_fee_installment()
	{
		$sop_id = $this->input->post('sopId');
		$install_sno = $this->input->post('install_sno');


		$sop_data = $this->Admin_model->get_table_info('students_online_payments', array('id' => $sop_id));

		$undelete = [];
		$update_data = [];
		$course_fee_id = '';

		if (!empty($sop_data)) {
			foreach ($sop_data as $key => $value) {
				$course_fee_id = $value['course_fee_id'];
				$installments = json_decode($value['payment_details'], true);
				//echo '
'; print_r($installments);

				$thePayDetailsNow = array();
				foreach ($installments as $index => $ele) {
					// echo $index."=> ". $ele;				
					if ($ele['install_sno'] == $install_sno) {

						$update_data['pending_amount'] = $value['pending_amount'] + $ele['payable_amount'];
						$update_data['paid_amount'] = $value['paid_amount'] - $ele['paid_amount'];
						$update_data['fine_amount'] = $value['fine_amount'] - $ele['fine_amount'];
						$update_data['deducted_amount'] = $value['deducted_amount'] - $ele['deduction_amount'];
						$update_data['fee_completed'] = 'no';

						unset($installments[$index]);
					} else
						$undelete[] = $installments[$index];
				}

				$update_data['payment_details'] = json_encode($undelete);
			}

			$update_sop = $this->db->update('students_online_payments', $update_data, array('id' => $sop_id));

			if ($update_sop) {
				$student_id = (isset($sop_data[0]['student_id']) && !empty($sop_data[0]['student_id'])) ? $sop_data[0]['student_id'] : 0;

				$rst = $this->db->query('SELECT studentId FROM students WHERE id=' . $student_id)->row_array();

				$studentId = (isset($rst['studentId']) && !empty($rst['studentId'])) ? $rst['studentId'] : 0;

				$revertThisData = $this->db->query("SELECT * FROM student_fee_online_transactions WHERE studentId='$studentId' AND course_fee_id = $course_fee_id AND install_sno = $install_sno")->result_array();
				if (isset($revertThisData[0])) {
					$revertThisData[0]['done_by'] = $_SESSION['admin_id'] . ' - ' . $_SESSION['admin_name'] . ' - ' . $_SESSION['admin_email'];
					$revertThisData[0]['c_date'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date));
					$revertBackuped = $this->db->insert('student_fee_reverts', $revertThisData[0]);
					if ($revertBackuped) {
						$transac_del = $this->db->query("DELETE FROM student_fee_online_transactions WHERE studentId='$studentId' AND course_fee_id = $course_fee_id AND install_sno = $install_sno");
						if ($transac_del)
							echo 'success';
						else
							echo 'trans-failed';
					} else
						echo 'revert-backup-failed';
				} else
					echo 'sfot-record-missing';
				/*$transac_del = $this->db->query("DELETE FROM student_fee_online_transactions WHERE studentId='$studentId' AND course_fee_id = $course_fee_id AND install_sno = $install_sno");
				if($transac_del) {
					echo 'success';
				} else {
					echo 'trans-failed';
				}*/
			} else {
				echo 'failed';
			}
		} else {
			echo 'failed';
		}
	}

	// Student's Info End - 14-11-2021 Afras Khan

	// Fee Installment - Afras Khan - 16-11-2021

	public function fee_installment()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		if (!file_exists(APPPATH . 'views/admin/fee-installment.php'))
			show_404();

		if (isset($_SESSION['admin_id'])) {

			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();

			$sql = "Select c.course_name,cf.amount,ft.feetype_name as fees_name,i.* from course_fees cf inner join installment i on cf.id = i.course_fee_id inner join course c on c.id = cf.course_id inner join fee_types ft on ft.id = cf.fees_type ORDER BY i.id DESC";

			$data['installments'] = $this->Admin_model->get_table_info('installment', '', $sql);

			$this->load->view('admin/header', $data);
			$this->load->view('admin/fee-installment', $data);
			$this->load->view('admin/footer');
		}
	}

	public function delete_installment()
	{
		$id = $_POST['id'];
		$table = $_POST['table'];
		$data = $this->Admin_model->delete_installment($id, $table);
		print_r($data);
	}

	public function restore_installment()
	{
		$id = $_POST['id'];
		$table = $_POST['table'];
		$data = $this->Admin_model->restore_installment($id, $table);
		print_r($data);
	}

	public function addedit_installment()
	{
		//print_r($_POST);
		$cid = $_POST['ficourse'];
		$pay_method = $_POST['payment_method'];
		$amount = $_POST['amount'];
		$duedate = $_POST['duedate'];

		$data_array = array(
			'course_id' => $cid,
			'pay_method' => $pay_method,
			'amount' => $amount,
			'duedate' => $duedate
		);

		$data = $this->Admin_model->addedit_installment($data_array);
		//print_r($data);
		// redirect(base_url().'Admin', 'fee-installment');


	}
	public function add_edit_fee_installment($feesId)
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		if (!file_exists(APPPATH . 'views/admin/add-edit-fee-installment.php'))
			show_404();

		$checkIfExists = $this->Admin_model->get_table_info('installment', array('id' => $feesId));

		if (empty($checkIfExists) && $feesId != 0) {
			$this->session->set_flashdata('failed', 'There is no installment with selected id');
			redirect(base_url() . 'admin/fee-installment');
		}

		if (isset($_SESSION['admin_id'])) {

			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['fees_id'] = $feesId;

			$data['menulist'] = $this->Admin_model->get_adminMenu();

			if ($feesId > 0) {

				$installment = $checkIfExists;

				$cf_id = $installment[0]['course_fee_id'];
				$data['cf_id'] = $cf_id;
				$query = "Select course_id, batch_id,fees_type, due_date, amount, hostel_plan_id from course_fees where id = '$cf_id'";
				$course_batch_ids = $this->Admin_model->get_table_info('course_fees', '', $query);

				$whereClause = "";
				foreach ($course_batch_ids as $key => $value) {
					$whereClause .= 'cf.course_id = ' . $value["course_id"] . ' AND cf.batch_id =' . $value["batch_id"];
					$data['batch_id'] = $value["batch_id"];
					$data['course_id'] = $value["course_id"];
					$data['feetype_id'] = $value['fees_type'];
					$data['due_date'] = date('d-M-Y', strtotime($value["due_date"]));
					$data['due_amount_total'] = $value['amount'];
					$data['hostel_plan_id'] = $value['hostel_plan_id'];
				}

				$data['batch'] = $this->Admin_model->get_install_batch();

				$data['course'] = $this->Admin_model->get_install_course();

				$sql = "Select ft.id, ft.feetype_name from fee_types ft inner join course_fees cf on ft.id = cf.fees_type WHERE " . $whereClause . " GROUP BY ft.id";

				$data['fee_types'] = $this->Admin_model->get_table_info('course_fees', '', $sql);
				$data['installment'] = $installment;
				$data['payment_types'] = $this->Admin_model->get_table_info('payment_types', '', '', 'ASC');

				$data['due_info'] = json_decode($installment[0]['due_amount_date']);


				$data['pt_keys'] = (array_keys((array)$data['due_info']));

				// dd($data['due_info']);

			} else {
				$data['batch'] = $this->Admin_model->get_install_batch();

				$data['payment_types'] = $this->Admin_model->get_table_info('payment_types', '', '', 'ASC');
			}

			$this->load->view('admin/header', $data);
			$this->load->view('admin/add-edit-fee-installment');
			$this->load->view('admin/footer');
		}
	}

	public function get_coursefee()
	{
		$course = $_POST['course'];
		$installment = $_POST['inst'];
		$start = $_POST['start'];
		$data = $this->Admin_model->get_coursefee($course, $installment, $start);
		print_r($data);
	}

	public function get_duedates()
	{

		$course_fee = $_POST['course_fee'];
		$installment = $_POST['inst'];
		$start = $_POST['start'];
		// echo $start;exit;
		$data = $this->Admin_model->get_duedates($course_fee, $installment, $start);
		$json = json_encode($data);
		echo $json;
	}

	public function convert()
	{
		echo $returnURL = base_url() . 'api/Student_api/pay_unpaid_fees/';
	}

	public function ajax_get_installment_course_batch()
	{

		$batch_id = $this->input->post('batch');

		$sql = "select  c.id as course_id, c.course_name, cf.amount, ft.feetype_name from course_fees cf inner join course c on cf.course_id = c.id inner join fee_types ft on cf.fees_type = ft.id WHERE cf.batch_id = '$batch_id' GROUP BY c.course_name";

		$data = $this->Admin_model->get_table_info('course_fees', '', $sql);

		$html = '';

		foreach ($data as $value) {
			$html .= '';
		}

		echo $html;
	}

	public function ajax_get_installment_course_feetype()
	{
		$course_id = $this->input->post('course');
		$batch_id = $this->input->post('batch');

		$sql = "Select ft.id, ft.feetype_name as ft_name from course_fees cf inner join fee_types ft on cf.fees_type = ft.id WHERE cf.batch_id = '$batch_id' AND cf.course_id = '$course_id' GROUP BY ft.id";

		$data = $this->Admin_model->get_table_info('course_fees', '', $sql);

		$html = '';

		foreach ($data as $value) {
			$html .= '';
		}
		echo $html;
	}

	public function ajax_get_installment_course_fee_date_id()
	{

		$course_id = $this->input->post('course');
		$batch_id = $this->input->post('batch');
		$feeid = $this->input->post('fee_id');

		if (isset($_POST['plan_id'])) {
			$plan = $this->input->post('plan_id');
			$where = array(
				'batch_id' => $batch_id,
				'course_id' => $course_id,
				'fees_type' => $feeid,
				'hostel_plan_id' => $plan
			);
		} else {
			$where = array(
				'batch_id' => $batch_id,
				'course_id' => $course_id,
				'fees_type' => $feeid
			);
		}

		$data = $this->Admin_model->get_table_info('course_fees', $where);
		$json = json_encode($data);
		echo $json;
	}

	public function ajax_get_complete_course_fee_id()
	{
		$course_fee = $this->input->post('id');

		$where['id'] = $course_fee;

		$data = $this->Admin_model->get_table_info('course_fees', $where);
		$json = json_encode($data);
		echo $json;
	}

	public function ajax_get_course_fee_hostel_plan()
	{
		$course_id = $this->input->post('course');
		$batch_id = $this->input->post('batch');
		$feeid = $this->input->post('fee_id');

		$where = array(
			'batch_id' => $batch_id,
			'course_id' => $course_id,
			'fees_type' => $feeid
		);

		$sql = "select hp.id, hp.plan_name from hostel_plans hp inner join course_fees cf on cf.hostel_plan_id = hp.id WHERE cf.batch_id = '$batch_id'
		AND cf.course_id = '$course_id'
		AND cf.fees_type = '$feeid' ORDER BY hp.id ASC";

		$data = $this->Admin_model->get_table_info('course_fees', '', $sql);

		$html = '';

		foreach ($data as $value) {
			$html .= '';
		}
		echo $html;
	}

	public function ajax_get_course_fee_values()
	{
		$course_id = $this->input->post('course');
		$batch_id = $this->input->post('batch');
		$feeid = $this->input->post('fee_id');

		$where = array(
			'batch_id' => $batch_id,
			'course_id' => $course_id,
			'fees_type' => $feeid
		);

		$data = $this->Admin_model->get_table_info('course_fees', $where);
		$html = '';

		foreach ($data as $value) {
			$html .= '';
		}
		echo $html;
	}

	public function ajax_get_course_fee_values_count_data()
	{
		$course_id = $this->input->post('course');
		$batch_id = $this->input->post('batch');
		$feeid = $this->input->post('fee_id');

		$where = array(
			'batch_id' => $batch_id,
			'course_id' => $course_id,
			'fees_type' => $feeid
		);

		$data = $this->Admin_model->get_table_info('course_fees', $where);
		$html = '';
		foreach ($data as $value) {
			$html .= '';
		}

		$response['count'] = count($data);
		$response['data'] = $html;

		$json = json_encode($response);
		echo $json;
	}

	public function ajax_validate_course_installment()
	{

		$course_fee_id = $this->input->post('value');

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

		$query = $this->Admin_model->check_value_exists('installment', array('course_fee_id' => $course_fee_id), $id);

		if ($query)
			echo 'success';
		else
			echo 'failed';
	}

	public function insert_update_feeinstallment($feeId)
	{

		$remove = ['paymentoption', 'fibatch_from', 'course_fee', 'batch_id', 'ficourse', 'ft_id'];

		$_POST = array_diff_key($_POST, array_flip($remove));

		$course_fee_id = $this->input->post('course-fee_id');

		$payment_method = $this->input->post('payment_method');
		$amount = $this->input->post('amount');
		$duedate = $this->input->post('duedate');
		$active = $this->input->post('is_active');



		$due_amount_date = array();
		$temp_arr = array();
		$count = 0;

		foreach ($amount as $key => $value) {
			if (!is_array($value)) {
				$temp_arr[$payment_method[$count]][] = array(
					'due_date' => $duedate[$key],
					'amount' => $value
				);
			} else {
				foreach ($value as $index => $ele) {

					$temp_arr[$payment_method[$count]][] = array(
						'due_date' => $duedate[$key][$index],
						'amount' => $ele
					);
				}
			}
			$count++;
		}

		$store_json = json_encode($temp_arr);
		$due_amount_date = $store_json;

		$data_to_db = array(
			'course_fee_id' => $course_fee_id,
			'due_amount_date' => $due_amount_date,
			'is_active' => $active
		);


		if ($feeId == 0) {
			$insertQuery = $this->Admin_model->add_edit_table('installment', $feeId, $data_to_db);

			if ($insertQuery) {
				$this->session->set_flashdata('success', str_replace('%s', 'Fees installment', THE_ADD_SUCCESS_MSG));
				redirect(base_url() . 'admin/fee-installment');
			} else {
				$this->session->set_flashdata('failed', str_replace('%s', 'Fees installment', THE_ADD_ERROR_MSG));
				redirect(base_url() . 'admin/fee-installment');
			}
		}

		if ($feeId > 0) {

			$pay['course_fee_id'] = $course_fee_id;
			$check_payment = $this->db->get_where('students_online_payments', $pay)->row();

			if (!empty($check_payment)) {
				$this->session->set_flashdata('failed', 'Installment cannot be edited as a payment has already been made');
				redirect(base_url() . 'admin/fee-installment');
			}

			$updateQuery = $this->Admin_model->add_edit_table('installment', $feeId, $data_to_db);

			if ($updateQuery) {
				$this->session->set_flashdata('success', str_replace('%s', 'Fees installment', THE_UPDATE_SUCCESS_MSG));
				redirect(base_url() . 'admin/fee-installment');
			} else {
				$this->session->set_flashdata('failed', str_replace('%s', 'Fees installment', THE_UPDATE_ERROR_MSG));
				redirect(base_url() . 'admin/fee-installment');
			}
		}
	}

	public function delete_course_installment($installment_id)
	{
		$course_fee_id = $this->db->get_where('installment', array('id' => $installment_id))->row()->course_fee_id;

		$pay['course_fee_id'] = $course_fee_id;
		$check_payment = $this->db->get_where('students_online_payments', $pay)->row();

		if (!empty($check_payment)) {
			$this->session->set_flashdata('failed', 'Installment cannot be deleted as a payment has already been made');
			redirect(base_url() . 'admin/fee-installment');
		}

		$deleteInst = $this->Admin_model->delete_row('installment', array('id' => $installment_id));

		if ($deleteInst) {
			$this->session->set_flashdata('success', str_replace('%s', 'Fees installment', THE_DELETE_SUCCESS_MSG));
			redirect(base_url() . 'admin/fee-installment');
		} else {
			$this->session->set_flashdata('failed', str_replace('%s', 'Fees installment', THE_DELETE_ERROR_MSG));
			redirect(base_url() . 'admin/fee-installment');
		}
	}

	// Fee installment end - 16-11-2021

	// Online session delete by shivakumar start 
	public function delete_online_session($sessionId)
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		$sessionId = ($sessionId != '') ? $sessionId : 0;
		if ($sessionId != 0) {
			$result = $this->Admin_model->delete_onlinesession($sessionId);
			if ($result == 'exists') {
				$this->session->set_flashdata('danger', str_replace('%s', 'Online Session', ALREADY_ASSIGNED_TIMETABLE_MSG));
			} else if ($result == 'success') {
				$this->session->set_flashdata('success', str_replace('%s', 'Online Session', THE_DELETE_SUCCESS_MSG));
			} else if ($result == 'failed') {
				$this->session->set_flashdata('danger', str_replace('%s', 'Online Session', THE_DELETE_ERROR_MSG));
			}
		} else {
			$this->session->set_flashdata('danger', str_replace('%s', 'Online Session', THE_DELETE_ERROR_MSG));
		}
		redirect(base_url() . 'admin/online_session_list');
	}
	// Online session delete by shivakumar end

	public function reports()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/report.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$fee_type_data = array();
		$studentInfo = array();
		$start_date = date('Y-m-01', strtotime($this->nepali_current_date));
		$current_date = date('Y-m-t', strtotime($this->nepali_current_date));
		$sqlQuery1 = "SELECT id as feetype_id,feetype_name,icon FROM fee_types WHERE is_active='yes'";
		$feetypelist = $this->Admin_model->get_query_result($sqlQuery1);

		if (isset($feetypelist) && !empty($feetypelist)) {
			foreach ($feetypelist as $ftype) {
				if ($ftype['feetype_id'] == 1) {
					$appication_totalamt = $this->Admin_model->get_currentmonthfee($start_date, $current_date, $ftype['feetype_name'], 'student_fee_online_transactions');
					$fee_type_data[] = array(
						'feetype_id' => $ftype['feetype_id'],
						'feetype_name' => $ftype['feetype_name'],
						'feetype_icon' => $ftype['icon'],
						'feetype_total' => 0,
						'feetype_due_amt' => 0,
						'feetype_paid_amount' => (isset($appication_totalamt) && !empty($appication_totalamt)) ? $appication_totalamt : 0
					);
				} else {
					$result = $this->Admin_model->currentMonth_fee($start_date, $current_date, $ftype['feetype_id']);
					$fee_type_data[] = array(
						'feetype_id' => $ftype['feetype_id'],
						'feetype_name' => $ftype['feetype_name'],
						'feetype_icon' => $ftype['icon'],
						'feetype_total' => (isset($result['total_course_fee']) && !empty($result['total_course_fee'])) ? $result['total_course_fee'] : 0,
						'feetype_due_amt' => (isset($result['pending_fee']) && !empty($result['pending_fee'])) ? $result['pending_fee'] : 0,
						'feetype_paid_amount' => (isset($result['paid_amount']) && !empty($result['paid_amount'])) ? $result['paid_amount'] : 0
					);
				}
			}
		}

		if ($this->input->post('filtersubmit') == "filter") {
			$feestype  = (isset($_POST['by_feetype']) && !empty($_POST['by_feetype'])) ? $_POST['by_feetype'] : '';
			$courseId    = (isset($_POST['by_course_id']) && !empty($_POST['by_course_id'])) ? $_POST['by_course_id'] : 0;
			$startDate = (isset($_POST['by_start_paid_date']) && !empty($_POST['by_start_paid_date'])) ? $_POST['by_start_paid_date'] : date('Y-m-01', strtotime($this->nepali_current_date));
			$endDate   = (isset($_POST['by_end_paid_date']) && !empty($_POST['by_end_paid_date'])) ? $_POST['by_end_paid_date'] : date('Y-m-t', strtotime($this->nepali_current_date));
			$where = '';
			if ($feestype != '')
				$where = "WHERE payment_for LIKE '%$feestype%'";
			// else if ($startDate != '')
			// 	$where = "WHERE date(payment_date) = '$startDate'";
			// else if ($endDate != '')
			// 	$where = "WHERE date(payment_date) = '$endDate'";
			else if ($startDate != '' && $endDate != '')
				$where = "WHERE date(payment_date) BETWEEN '$startDate' AND '$endDate'";
			else if ($feestype != '' && $startDate != '')
				$where = "WHERE payment_for LIKE '%$feestype%' AND date(payment_date) = '$startDate'";
			else if ($feestype != '' && $startDate != '' && $endDate != '')
				$where = "WHERE payment_for LIKE '%$feestype%' AND Date(payment_date) BETWEEN '$startDate' AND '$endDate'";

			$Sqlquery = "SELECT * FROM `student_fee_online_transactions` $where ORDER BY id DESC";

			$fees_transactins = $this->Admin_model->get_query_result($Sqlquery);

			foreach ($fees_transactins as $ft_value) {
				$studentId = (isset($ft_value['studentId']) && !empty($ft_value['studentId'])) ? $ft_value['studentId'] : 0;
				if ($courseId != 0) {
					$student_where = array('applicationid' => $studentId, 'course' => $courseId);
				} else {
					$student_where = array('applicationid' => $studentId);
				}
				$student = $this->db->get_where('applications', $student_where)->row_array();
				$studentDetails = (isset($student) && !empty($student)) ? $student : 0;
				if ($studentDetails == 0) {
					if ($courseId != 0) {
						$Studentwhere = array('studentId' => trim($studentId), 'course' => $courseId);
					} else {
						$Studentwhere = array('studentId' => $studentId);
					}
					$studentDetails = $this->db->get_where('students', $Studentwhere)->row_array();
				}
				if ($studentDetails != '') {
					$student_data = array(
						'studentId' => $studentId,
						'stud_id' => $studentId,
						'name' => $studentDetails['name'],
						'course' => $studentDetails['course'],
						'payment_for' => $ft_value['payment_for'],
						'payment_amt' => $ft_value['payment_amt'],
						'txn_id' => $ft_value['txn_id'],
						'invoice_no' => $ft_value['invoice_no'],
						'payment_date' => $ft_value['payment_date'],
						'status' => $ft_value['status'],
						'course_fee_id' => (isset($ft_value['course_fee_id']) && ($ft_value['course_fee_id'] != 0)) ? $ft_value['course_fee_id'] : 0
					);
					$studentInfo[] = $student_data;
				}
			}
			$data['search_course_id'] = $courseId;
			$data['search_feetype'] = $feestype;
			$data['search_start_paid_date'] = $startDate;
			$data['search_end_paid_date'] = $endDate;
		} else {
			$Sqlquery = "SELECT * FROM `student_fee_online_transactions` ORDER BY id DESC LIMIT 100";
			$fees_transactins = $this->Admin_model->get_query_result($Sqlquery);
			foreach ($fees_transactins as $ft_value) {
				$studentId = $ft_value['studentId'];
				$student = $this->db->get_where('applications', array('applicationid' => $studentId))->row_array();
				$studentDetails = (isset($student) && !empty($student)) ? $student : 0;
				if ($studentDetails == 0) {
					$studentDetails = $this->db->get_where('students', array('studentId' => $studentId))->row_array();
				}
				if ($studentDetails != '') {
					$student_data = array(
						'studentId' => $studentId,
						'stud_id' => $studentDetails['id'],
						'name' => $studentDetails['name'],
						'course' => $studentDetails['course'],
						'payment_for' => $ft_value['payment_for'],
						'payment_amt' => $ft_value['payment_amt'],
						'txn_id' => $ft_value['txn_id'],
						'invoice_no' => $ft_value['invoice_no'],
						'payment_date' => $ft_value['payment_date'],
						'status' => $ft_value['status'],
						'course_fee_id' => (isset($ft_value['course_fee_id']) && ($ft_value['course_fee_id'] != 0)) ? $ft_value['course_fee_id'] : 0
					);
					$studentInfo[] = $student_data;
				}
			}
		}
		$data['student_fees'] = $studentInfo;


		$data['current_report_data'] = $fee_type_data;
		$data['course_list'] = $this->db->query("select * from course WHERE is_active='yes'")->result_array();
		$data['feetype_list'] = $this->db->query("select * from fee_types WHERE is_active='yes'")->result_array();
		$this->load->view('admin/header', $data);
		$this->load->view('admin/report', $data);
		$this->load->view('admin/footer');
	}

	public function payment_overview($fees_type_id)
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/payment_overview.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		if ($this->input->post('search_filter') == "Filter") {
			$this->form_validation->set_rules('by_feetype', 'Fees Type', 'required');

			$feesTypeID = (isset($_POST['by_feetype']) && !empty($_POST['by_feetype'])) ? $_POST['by_feetype'] : '';
			$feeTypeName = $this->db->get_where('fee_types', array('id' => $feesTypeID))->row()->feetype_name;
			$courseId = (isset($search['course_id']) && !empty($search['course_id'])) ? $search['course_id'] : 0;
			$start_date = (isset($search['start_date']) && !empty($search['start_date'])) ? $search['start_date'] : date('y-m-01');
			$end_date = (isset($search['end_date']) && !empty($search['end_date'])) ? $search['end_date'] : date('y-m-t');
			$by_payment_status = (isset($search['by_payment_status']) && !empty($search['by_payment_status'])) ? $search['by_payment_status'] : '';
			if ($feesTypeID == 1) {
				$data['payment_data'] = $this->Admin_model->get_payment_by_filter($_POST, $feeTypeName);
			} else {
				$data['payment_data'] = $this->Admin_model->get_payment_by_filter_student($_POST, $feeTypeName);
			}
			$data['search_feetype'] = $feesTypeID;
			if ($courseId != 0)
				$data['course_id'] = $courseId;
			if ($by_payment_status != '')
				$data['by_payment_status'] = $by_payment_status;
		} else {
			if ($fees_type_id > 0) {
				$feeTypeName = $this->db->get_where('fee_types', array('id' => $fees_type_id))->row()->feetype_name;
				if ($fees_type_id == 1) {
					$data['payment_data'] = $this->Admin_model->get_application_fee($feeTypeName);
				} else {
					$data['payment_data'] = $this->Admin_model->get_student_fee($feeTypeName);
				}
				$data['search_feetype'] = $fees_type_id;
			}
		}

		$data['course_list'] = $this->db->query("select * from course WHERE is_active='yes'")->result_array();
		$data['feetype_list'] = $this->db->query("select * from fee_types WHERE is_active='yes'")->result_array();
		$this->load->view('admin/header', $data);
		$this->load->view('admin/payment_overview', $data);
		$this->load->view('admin/footer');
	}

	public function downloadSingleId($studentId)
	{
		$studentinfo = $this->Admin_model->getstudentRow($studentId);
		$data['studentinfo'] = $studentinfo;
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		// dd($data);
		// $this->load->view('admin/singlecard', $data);

		$this->load->library('m_pdf');
		$html = $this->load->view('admin/singlecard', $data, true); //load the pdf.php by passing our data and get all data in $html varriable.
		$pdfFilePath = $studentinfo['studentId'] . '-' . date('Y-m-d H:i:s', strtotime($this->nepali_current_date)) . ".pdf";
		$pdf = $this->m_pdf->loadforStudentIdCard();
		// $stylesheet = '';
		// $pdf->WriteHTML($stylesheet, 1);
		$pdf->WriteHTML($html, 2);
		$pdf->Output($pdfFilePath, "D");
	}

	public function downloadAll()
	{
		$studnet_arr = $this->input->post('student_id_list');
		$this->load->library('m_pdf');
		$studentData = array();
		foreach ($studnet_arr as $studValue) {
			$studentData[] = $this->Admin_model->getstudentRow($studValue);
		}
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['studentlist'] = $studentData;
		// $this->load->view('admin/multipulecards', $data);
		$html = $this->load->view('admin/multipulecards', $data, true);
		$pdfFilePath = 'StudentCards' . '-' . date('YmdHis') . ".pdf";
		$pdf = $this->m_pdf->loadforStudentIdCard();
		$pdf->WriteHTML($html, 2);
		$pdf->Output($pdfFilePath, "D");
	}

	public function invoice($studID, $txn_ID, $count, $invoiceList)
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/invoice.php'))
			show_404();
		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$studentID = urlsafe_b64decode($studID);
		$txnID = urlsafe_b64decode($txn_ID);
		$counter = urlsafe_b64decode($count);
		$invoiceList = urlsafe_b64decode($invoiceList);
		if ($counter > 1)
			$data['back_url'] = 'admin/student_fee_course/' . $counter;
		else
			$data['back_url'] = 'admin/reports';

		// $i_list = [];

		if ($studentID != '' && $txnID != '') {

			$students = $this->db->get_where('students', array('studentId' => $studentID))->row_array();
			// $students = $this->db->query("SELECT name as  FROM students WHERE studentId = $studentID")->row_array();
			$invoiceData = $students;
			$i_list = explode(',',  $invoiceList);
			$i_list_data = [];

			foreach ($i_list as $i_value) {

				$sql1 = "SELECT course_fees.fee_values,s.course as courseID,s.name,s.studentId,b.b_from,b.b_name as batch_name,b.b_end,sb.batch_id,cl.course_id,cl.section_id,s.parent_pan,sfot.remarks
				FROM student_fee_online_transactions sfot LEFT JOIN students s ON sfot.studentId=s.studentId LEFT JOIN student_batch sb ON s.id=sb.student_id AND s.batch_id = sb.batch_id LEFT JOIN classroom cl ON cl.id=sb.classroom_id LEFT JOIN batch b ON sb.batch_id=b.id 
				INNER JOIN course_fees ON sfot.course_fee_id = course_fees.id
				WHERE sfot.studentId='$studentID' AND sfot.txn_id='$txnID' order by sb.id desc";

				// $invoice = $this->db->query("select sf.* from student_fee_online_transactions sf  WHERE sf.id = $i_value")->result_array();
				$invoice = $this->db->get_where('student_fee_online_transactions', array('id' => $i_value))->row_array();

				$courseFee =
					$this->db->query("select id as course_fee_id, amount as fee_amount, fee_values as fee_name, batch_id from course_fees where id = " . $invoice['course_fee_id'])->row_array();


				$invoice['course_fee'] = $courseFee;

				// print_r($invoice);
				$i_list_data[$i_value] = $invoice;
				// print_r($i_list_data[$i_value]->payment_for);
			}

			$selectedBatch = $invoice['course_fee']['batch_id'];

			// dd($invoice['course_fee'] );
			// $student_ID = $this->db->get_where('students', array('studentId' => $studentID))->row();
			// if ($student_ID != '') {

			$sql1 = "SELECT course_fees.fee_values,s.course as courseID,s.name,s.studentId,b.b_from,b.b_name as batch_name,b.b_end,sb.batch_id,cl.course_id,cl.section_id,s.parent_pan 
			FROM student_fee_online_transactions sfot 
			LEFT JOIN students s ON sfot.studentId=s.studentId 
			LEFT JOIN student_batch sb ON s.id=sb.student_id AND sb.batch_id = $selectedBatch
			LEFT JOIN classroom cl ON cl.id=sb.classroom_id 
			LEFT JOIN batch b ON sb.batch_id=b.id 
				INNER JOIN course_fees ON sfot.course_fee_id = course_fees.id
				WHERE sfot.studentId='$studentID' AND sfot.txn_id='$txnID' order by sb.id desc";
			$payment_data = $this->Admin_model->get_query_row($sql1);

			// print_r($payment_data);
			$student_data = array(
				'studentId' => $payment_data['studentId'],
				'studentname' => $payment_data['name'],
				'batch_name' => $payment_data['batch_name'],
				'batch_from' => $payment_data['b_from'],
				'batch_end' => $payment_data['b_end'],
				'course_id' => (isset($payment_data['course_id']) && !empty($payment_data['course_id'])) ? $payment_data['course_id'] : $payment_data['courseID'],
				'tdt' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date)),
				'section_id' => $payment_data['section_id'],
				'parent_pan' => (isset($payment_data['parent_pan']) && !empty($payment_data['parent_pan'])) ? $payment_data['parent_pan'] : '',
				// 'invoice_no' => (isset($payment_data['invoice_no']) && !empty($payment_data['invoice_no'])) ? $payment_data['invoice_no'] : ''

			);
			$student_data['invoices'] = $i_list_data;

			$data['invoice_data'] =  $student_data;
			// 	$data['invoice_data'] = $student_data;
			// } else {

			// 	$sql2 = "SELECT soft.*,course_fees.fee_values,a.name,a.course,b.b_name as batch_name,b.b_from,b.b_end FROM student_fee_online_transactions soft LEFT JOIN applications a ON a.applicationid=soft.studentId LEFT JOIN batch b ON b.id=a.batch_id LEFT JOIN course_fees ON soft.course_fee_id = course_fees.id WHERE soft.studentId='$studentID' AND soft.txn_id='$txnID' order by soft.id desc";
			// 	$paymentdata = $this->Admin_model->get_query_row($sql2);
			// 	// dd($sql2);
			// 	if (count($paymentdata) > 0) {
			// 		$application_data = array(
			// 			'student_fee_online_transactions_id' 	=> $paymentdata['id'],
			// 			'studentId' 							=> $paymentdata['studentId'],
			// 			'payment_for' 							=> $paymentdata['fee_values'] . '(' . $paymentdata['payment_for'] . ')',
			// 			'txn_id' 								=> $paymentdata['txn_id'],
			// 			'payment_amt' 							=> $paymentdata['payment_amt'],
			// 			'paid_date' 							=> $paymentdata['payment_date'],
			// 			'studentname' 							=> $paymentdata['name'],
			// 			'batch_name' 							=> $paymentdata['batch_name'],
			// 			'batch_from' 							=> $paymentdata['b_from'],
			// 			'batch_end' 							=> $paymentdata['b_end'],
			// 			'course_id' 							=> $paymentdata['course'],
			// 			'received_by' 							=> $paymentdata['payment_recived_id'],
			// 			'payment_method' 						=> $paymentdata['payment_method'],
			// 			'fine_amount'							=> $paymentdata['fine_amount'],
			// 			'tdt'									=> date('Y-m-d H:i:s', strtotime($this->nepali_current_date)),
			// 			'deduction_type'						=> $paymentdata['deduction_type'],
			// 			'deduction_amount'						=> $paymentdata['deduction_amount'],
			// 			'section_id' 							=> 0,
			// 			'bill_print_count'						=> $paymentdata['bill_print_count'],
			// 			'course_fee_id'							=> $paymentdata['course_fee_id'],
			// 			'install_sno'							=> $paymentdata['install_sno'],
			// 			'parent_pan'		=> '',
			// 			'invoice_no' => (isset($paymentdata['invoice_no']) && !empty($paymentdata['invoice_no'])) ? $paymentdata['invoice_no'] : ''

			// 		);
			// 		$data['invoice_data'] = $application_data;
			// 	}
			// }
		}

		$this->load->view('admin/header', $data);
		$this->load->view('admin/invoice', $data);
		$this->load->view('admin/footer');
	}

	public function invoicedownload($studID, $txn_ID)
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/invoicepdf.php'))
			show_404();

		$this->load->library('m_pdf');
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$studentID = urlsafe_b64decode($studID);
		$txnID = urlsafe_b64decode($txn_ID);

		if ($studentID != '' && $txnID != '') {
			$student_ID = $this->db->get_where('students', array('studentId' => $studentID))->row();
			if ($student_ID != '') {
				$this->db->where('studentId', $studentID);
				$this->db->where('txn_id', $txnID);
				$this->db->set('bill_print_count', 'bill_print_count+1', FALSE);
				$update = $this->db->update('student_fee_online_transactions');

				$sql1 = "SELECT sfot.*,course_fees.fee_values,s.course as courseID,s.name,s.studentId,b.b_name as batch_name,b.b_from,b.b_end,sb.batch_id,cl.course_id,cl.section_id,s.parent_pan FROM student_fee_online_transactions sfot LEFT JOIN students s ON sfot.studentId=s.studentId LEFT JOIN student_batch sb ON s.id=sb.student_id AND sb.batch_id = s.batch_id LEFT JOIN classroom cl ON cl.id=sb.classroom_id LEFT JOIN batch b ON sb.batch_id=b.id
					INNER JOIN course_fees ON sfot.course_fee_id = course_fees.id
				WHERE sfot.studentId='$studentID' AND sfot.txn_id='$txnID' order by sb.id desc";
				$payment_data = $this->Admin_model->get_query_row($sql1);

				$student_data = array(
					'student_fee_online_transactions_id' => $payment_data['id'],
					'studentId' => $payment_data['studentId'],
					'payment_for' => $payment_data['fee_values'] . '(' . $payment_data['payment_for'] . ')',
					'txn_id' => $payment_data['txn_id'],
					'payment_amt' => $payment_data['payment_amt'],
					'paid_date' => $payment_data['payment_date'],
					'studentname' => $payment_data['name'],
					'batch_name' => $payment_data['batch_name'],
					'batch_from' => $payment_data['b_from'],
					'batch_end' => $payment_data['b_end'],
					'received_by' => $payment_data['payment_recived_id'],
					'payment_method' => $payment_data['payment_method'],
					'course_id' => (isset($payment_data['course_id']) && !empty($payment_data['course_id'])) ? $payment_data['course_id'] : $payment_data['courseID'],

					'tdt'		=> date('Y-m-d H:i:s', strtotime($this->nepali_current_date)),
					'section_id' => $payment_data['section_id'],
					'payment_method' => $payment_data['payment_method'],
					'fine_amount'	=> $payment_data['fine_amount'],
					'deduction_type'	=> $payment_data['deduction_type'],
					'deduction_amount'	=> $payment_data['deduction_amount'],
					'bill_print_count'	=> $payment_data['bill_print_count'],
					'course_fee_id'		=> $payment_data['course_fee_id'],
					'install_sno'		=> $payment_data['install_sno'],
					'parent_pan'		=> (isset($payment_data['parent_pan']) && !empty($payment_data['parent_pan'])) ? $payment_data['parent_pan'] : '',
					'invoice_no' => (isset($payment_data['invoice_no']) && !empty($payment_data['invoice_no'])) ? $payment_data['invoice_no'] : ''
				);
				$data['invoice_data'] = $student_data;
			} else {

				$this->db->where('studentId', $studentID);
				$this->db->where('txn_id', $txnID);
				$this->db->set('bill_print_count', 'bill_print_count+1', FALSE);
				$update = $this->db->update('student_fee_online_transactions');

				$sql2 = "SELECT soft.*,course_fees.fee_values,a.name,a.course,b.b_name as batch_name,b.b_from,b.b_end FROM student_fee_online_transactions soft LEFT JOIN applications a ON a.applicationid=soft.studentId LEFT JOIN batch b ON b.id=a.batch_id INNER JOIN course_fees ON soft.course_fee_id = course_fees.id WHERE soft.studentId='$studentID' AND soft.txn_id='$txnID' order by soft.id desc";
				$paymentdata = $this->Admin_model->get_query_row($sql2);

				if (count($paymentdata) > 0) {
					$application_data = array(
						'student_fee_online_transactions_id' => $paymentdata['id'],
						'studentId' => $paymentdata['studentId'],
						'payment_for' => $paymentdata['fee_values'] . '(' . $paymentdata['payment_for'] . ')',
						'txn_id' => $paymentdata['txn_id'],
						'payment_amt' => $paymentdata['payment_amt'],
						'paid_date' => $paymentdata['payment_date'],
						'studentname' => $paymentdata['name'],
						'batch_name' => $paymentdata['batch_name'],
						'batch_from' => $paymentdata['b_from'],
						'batch_end' => $paymentdata['b_end'],
						'received_by' => $paymentdata['payment_recived_id'],
						'payment_method' => $paymentdata['payment_method'],
						'course_id' => $paymentdata['course'],
						'tdt'		=> date('Y-m-d H:i:s', strtotime($this->nepali_current_date)),
						'section_id' => 0,
						'payment_method' => $paymentdata['payment_method'],
						'fine_amount'	=> $paymentdata['fine_amount'],
						'deduction_type'	=> $paymentdata['deduction_type'],
						'deduction_amount'	=> $paymentdata['deduction_amount'],
						'bill_print_count'  => $paymentdata['bill_print_count'],
						'course_fee_id'		=> $paymentdata['course_fee_id'],
						'install_sno'		=> $paymentdata['install_sno'],
						'parent_pan'		=> '',
						'invoice_no' => (isset($paymentdata['invoice_no']) && !empty($paymentdata['invoice_no'])) ? $paymentdata['invoice_no'] : ''
					);
					$data['invoice_data'] = $application_data;
				}
			}
		}
		// $this->load->view('admin/invoicepdf', $data);
		$html = $this->load->view('admin/invoicepdf', $data, true);
		$pdfFilePath = $studentID . '-' . date('Y-m-dHis') . ".pdf";
		$pdf = $this->m_pdf->loadforinvoice();
		// $stylesheet = file_get_contents(base_url().'assets_admin/css/invoice.css'); // external css
		// $pdf->WriteHTML($stylesheet,1);
		$pdf->WriteHTML($html, 2);
		$pdf->Output($pdfFilePath, "D");
	}


	public function delete_test_exam_question($id)
	{
		$sql = $this->Admin_model->delete_test_exam_question($id);

		if ($sql) {

			$this->session->set_flashdata('success', 'Exam Questions has been successfully deleted');
			redirect(base_url() . 'admin/test-exam-list');
		} else {

			$this->session->set_flashdata('danger', 'Exam Questions could not been deleted, Please try again!');
			redirect(base_url() . 'admin/test-exam-list');
		}
	}

	// batch date by shivakumar start
	public function getbatchDates()
	{
		$batchID = (isset($_POST['batch_id']) && !empty($_POST['batch_id'])) ? $_POST['batch_id'] : 0;
		if ($batchID > 0) {
			$sql = "SELECT * from batch WHERE id='$batchID'";
			$result = $this->Admin_model->get_query_row($sql);
			if (!empty($result)) {
				echo json_encode($result);
			} else
				echo 0;
		} else
			echo 0;
	}

	public function fee_collection($appID)
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/feecollection.php'))
			show_404();

		$cfid = '';
		$cid = '';
		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$student_id = '';
		if ($appID) {
			$applicationID = (isset($appID) && !empty($appID)) ? urlsafe_b64decode($appID) : 0;
			$Sql = "SELECT * FROM applications WHERE applicationid='$applicationID'";
			$result = $this->Admin_model->get_query_row($Sql);
			if ($result != '') {
				$course_fees = $this->Admin_model->applications_get($result, 2);
				$data['feetypeName'] = $this->db->get_where('fee_types', array('id' => 2))->row()->feetype_name;
				$course_fee_id = ($course_fees != '') ? $course_fees['id'] : 0;
				$sqlQuery1 = "SELECT * FROM installment WHERE course_fee_id=$course_fee_id AND is_active='yes'";
				$data['installment'] = $this->Admin_model->get_query_row($sqlQuery1);
				$data['course_fees'] = $course_fees;
				$data['studentinfo'] = $result;
				$data['student_info_array']['name'] = $result['name'];
				$data['student_info_array']['email'] = $result['email'];
				$data['student_info_array']['applicationid'] = $result['applicationid'];
			}
		}

		//Student Info


		$this->load->view('admin/header', $data);
		$this->load->view('admin/feecollection', $data);
		$this->load->view('admin/footer');
	}

	function get_installdetails()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		//paypal return transaction details array
		$install_type = $this->input->post('install_type');
		$installment_id = $this->input->post('installment_id');
		$applicationId = $this->input->post('application_id');
		$install = $this->Admin_model->install_get($installment_id);
		$array_install = json_decode($install['due_amount_date']);
		$html = '';
		foreach ($array_install as $key => $installvalue) {
			if ($key == $install_type) {
				foreach ($installvalue as $inskey => $val) {
					$due_date = ($inskey == 0) ? " Instant Payment " : "" . $val->due_date . "";
					$checkbox = ($inskey == 0) ? "style='color:green'" : "style='color:red'";
					$firstPayment = ($inskey == 0) ? $val->amount : 0;
					$html .= '
'; // //

Due dates :

' . str_replace(',', '
', $n["duedates"]) . ' //
} } } echo $html; } public function feecollectionFromStudent() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $application_id = $_POST['application_id']; $course_fee_id = $_POST['course_fee_id']; $payment_method = $_POST['payment_method']; $installType = $_POST['payment_options']; $description = $_POST['description']; $totalAmount = $_POST['totalAmount']; $fees_type = $_POST['fees_type']; $school_info = $this->Admin_model->get_logo_from_setting(); $reimbursement_type = $_POST['deduction_type'] ? $_POST['deduction_type'] : ''; $reimbursement_amount = $_POST['deduction_amount'] ? $_POST['deduction_amount'] : 0; $studfees = array(); $stid = $this->Admin_model->applicationinfo_movingto_students($application_id); if ($stid == -1) { $this->session->set_flashdata('danger', 'Payment Failed'); redirect(base_url() . 'admin/get_application'); } else { $studentappId = $this->db->get_where('students', array('id' => $stid))->row()->studentId; $coursefees = $this->Admin_model->get_query_row("SELECT id,due_amount_date FROM installment WHERE course_fee_id=$course_fee_id"); $coursefeesarr = json_decode($coursefees['due_amount_date']); $firstpay = true; foreach ($coursefeesarr as $k => $cf_value) { if ($installType == $k) { foreach ($cf_value as $index => $val1) { if ($firstpay) { $studfees[] = array( 'install_sno' => $index + 1, 'due_date' => $val1->due_date, 'feeamount' => $val1->amount, 'deduction_type' => $reimbursement_type, 'deduction_amount' => $reimbursement_amount, 'paid_amount' => $totalAmount - $reimbursement_amount, 'payment_status' => 'yes', 'paid_date' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date)) ); $firstpay = false; } else { $studfees[] = array( 'install_sno' => $index + 1, 'due_date' => $val1->due_date, 'feeamount' => $val1->amount, 'deduction_type' => '', 'deduction_amount' => 0, 'paid_amount' => 0, 'payment_status' => 'no', 'paid_date' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date)) ); } } } } $stdentfee = array( 'student_id' => $stid, 'course_fee_id' => $course_fee_id, 'installment_type_id' => $installType, 'payment_details' => json_encode($studfees), 'payment_method' => $payment_method, 'created' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date)), 'modified' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date)) ); $result = $this->db->insert('students_online_payments', $stdentfee); if (!empty($result)) { $a = mt_rand(100000, 999999); $transData['studentId'] = (!empty($studentappId)) ? $studentappId : $stid; $transData['payment_for'] = $fees_type; $transData['txn_id'] = $a . $studentappId; $transData['payment_amt'] = $totalAmount; $transData['currency_code'] = $school_info['currency']; $transData['status'] = 'Completed'; $transData['payment_date'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date)); $transData['payment_recived_id'] = $this->session->userdata('admin_name'); $transData['payment_method'] = $payment_method; $transData['bank_transaction_id'] = (isset($description) && !empty($description)) ? $description : NULL; $transData['course_fee_id'] = $course_fee_id; $rst = $this->Admin_model->storefeeTransaction($transData); if ($rst) $this->session->set_flashdata('success', 'Fees Added successfully'); else $this->session->set_flashdata('error', 'Fees Insertion failed Transactions '); } else { $this->session->set_flashdata('error', 'Fees collection failed. Please Try once'); } redirect(base_url() . 'admin/get_application'); } } //school Setting by Shankar public function SchoolSetting() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/setting.php')) show_404(); $data['title'] = 'School Settings'; $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['courses'] = $this->Admin_model->get_courses(); $data['batch'] = $this->Admin_model->get_batch(); $data['result'] = $this->db->query('select * from school_settings where id= 1')->row_array(); // $rst=$this->db->query("SELECT invoice_no FROM `student_fee_online_transactions` ORDER BY id DESC")->row_array(); // if(!empty($rst)){ // $data['new_invoice_no']=(isset($rst['invoice_no']) && !empty($rst['invoice_no'])) ? $rst['invoice_no'] :"0000"; // } $data['currency'] = currency_data(); $this->load->view('admin/header', $data); $this->load->view('admin/setting'); $this->load->view('admin/footer'); } public function AddEditSchoolSetting() { // echo "
";print_r($_FILES);
		$get_school_data = $this->db->get('school_settings')->row_array();
		// dd($get_school_data);
		if ($get_school_data) {
			$signiture 	= 'common_assets/' . $get_school_data['authorized_signature'];
			$white_logo = 'common_assets/' . $get_school_data['logo'];
			$color_logo = 'common_assets/' . $get_school_data['color_logo'];
			$markscard_header = ($get_school_data['markscard_header'] != '' && !empty($get_school_data['markscard_header'])) ? 'common_assets/' . $get_school_data['markscard_header'] : '';
		} else {
			$signiture 	= '';
			$white_logo = '';
			$color_logo = '';
			$markscard_header = '';
		}


		$data_array = array();
		// test_view_array($_FILES);
		if (isset($_FILES["ssigniture"]["name"]) && !empty($_FILES["ssigniture"]["name"])) {

			if (file_exists($signiture)) {
				unlink($signiture);
			}


			// $_FILES["ssigniture"]["name"] = 'signature-scan.png';

			$filename = $_FILES["ssigniture"]["name"];

			$location = 'common_assets/' . $filename;


			$imageFileType = pathinfo($location, PATHINFO_EXTENSION);
			$imageFileType = strtolower($imageFileType);

			/* Valid extensions */
			$valid_extensions = array("png");

			$response = 0;
			/* Check file extension */
			if (in_array(strtolower($imageFileType), $valid_extensions)) {
				/* Upload file */
				if (move_uploaded_file($_FILES['ssigniture']['tmp_name'], $location)) {
					$data_array['authorized_signature'] = str_replace("common_assets/", "", $location);
				}
			}
		}


		if (isset($_FILES["swhiteLogo"]["name"]) && !empty($_FILES["swhiteLogo"]["name"])) {

			if (file_exists($white_logo)) {
				unlink($white_logo);
			}



			// $_FILES["swhiteLogo"]["name"] = 'white_logo.png';

			$filename = $_FILES["swhiteLogo"]["name"];

			$location = 'common_assets/' . $filename;

			$imageFileType = pathinfo($location, PATHINFO_EXTENSION);
			$imageFileType = strtolower($imageFileType);

			/* Valid extensions */
			$valid_extensions = array("png");

			$response = 0;
			/* Check file extension */
			if (in_array(strtolower($imageFileType), $valid_extensions)) {
				/* Upload file */
				if (move_uploaded_file($_FILES['swhiteLogo']['tmp_name'], $location)) {

					$data_array['logo'] = str_replace("common_assets/", "", $location);
				}
			}
		}

		if (isset($_FILES["scolorLogo"]["name"]) && !empty($_FILES["scolorLogo"]["name"])) {

			if (file_exists($color_logo)) {
				unlink($color_logo);
			}


			// $_FILES["scolorLogo"]["name"] = 'color_logo.png';

			$filename = $_FILES["scolorLogo"]["name"];

			$location = 'common_assets/' . $filename;


			$imageFileType = pathinfo($location, PATHINFO_EXTENSION);
			$imageFileType = strtolower($imageFileType);

			/* Valid extensions */
			$valid_extensions = array("png");

			$response = 0;
			/* Check file extension */
			if (in_array(strtolower($imageFileType), $valid_extensions)) {
				/* Upload file */
				if (move_uploaded_file($_FILES['scolorLogo']['tmp_name'], $location)) {

					$data_array['color_logo'] = str_replace("common_assets/", "", $location);
				}
			}
		}


		if (isset($_FILES["markscard_header"]["name"]) && !empty($_FILES["markscard_header"]["name"])) {
			if ($markscard_header != '') {
				if (file_exists($markscard_header)) {
					unlink($markscard_header);
				}
			}


			$filename = $_FILES["markscard_header"]["name"];

			$location = 'common_assets/' . $filename;
			$imageFileType = pathinfo($location, PATHINFO_EXTENSION);

			$imageFileType = strtolower($imageFileType);
			// echo $imageFileType; exit;
			$valid_extensions = array("png", "jpg", "jpeg");

			$response = 0;
			/* Check file extension */
			if (in_array($imageFileType, $valid_extensions)) {
				// echo $imageFileType; exit;
				/* Upload file */
				if (move_uploaded_file($_FILES['markscard_header']['tmp_name'], $location)) {

					$data_array['markscard_header'] = str_replace("common_assets/", "", $location);
				}
			}
		}



		// dd($data_array);
		$data_array['school_name'] 		= $_POST['sname'];
		$data_array['school_code'] 		= $_POST['scode'];
		$data_array['email'] 			= $_POST['semail'];
		$data_array['phone'] 			= $_POST['scontact'];
		$data_array['address'] 			= $_POST['saddress'];
		$data_array['website_link'] 	= $_POST['swebsite'];
		$data_array['twitter'] 			= $_POST['stwitter'];
		$data_array['instagram'] 		= $_POST['sinstagram'];
		$data_array['facebook'] 		= $_POST['sfacebook'];
		$data_array['date_format'] 		= $_POST['sdateformat'];
		$data_array['batch_id'] 		= $_POST['sbatch'];
		$cur_sym 						= explode('-', $_POST['scurrency']);
		$data_array['currency']			= $cur_sym[0];
		$data_array['currency_symbol']	= $cur_sym[1];
		$data_array['modified'] 		= date('Y-m-d H:i:s', strtotime($this->nepali_current_date));
		$data_array['pan'] 				= strtoupper($_POST['span']);
		$data_array['school_prefix_id'] = strtoupper($_POST['school_prefix_id']);
		$data_array['invoice_prefix'] = strtoupper($_POST['invoice_prefix']);
		$data_array['invoice_sno'] = trim($_POST['invoice_sno']);
		$data_array['invoice_prefix_status'] = $_POST['invoice_prefix_status'];
		// $data_array['markscard_header'] = (isset($data_array['markscard_header']) && !empty($data_array['markscard_header'])) ? base_url('common_assets/'.$data_array['markscard_header']) :'';
		// dd($data_array);
		$this->db->where('id', 1);
		$this->db->update('school_settings', $data_array);
		$updated_status = $this->db->affected_rows();

		if ($updated_status) {
			$CI = &get_instance();
			$logoSetting = $CI->load->database('schoolSetting', TRUE);

			$check_school = $this->db->query('select school_main_id, auth_key from school_settings')->row_array();
			if (isset($data_array['color_logo']) && !empty($data_array['color_logo'])) {
				$content['logo'] = base_url('common_assets/' . $data_array['color_logo']);
				$logoSetting->where('id', $check_school['school_main_id']);
				$logoSetting->where('auth_key', $check_school['auth_key']);
				$logoSetting->update('school_data', $content);
				$updated_school_data = $logoSetting->affected_rows();
			}


			$check_image = $logoSetting->query('select logo from school_data where id=' . $check_school['school_main_id'] . ' AND auth_key = "' . $check_school['auth_key'] . '"')->row_array();

			if (empty($check_image['logo'])) {
				$content['logo'] = base_url('common_assets/black_logo.png');
				$logoSetting->where('id', $check_school['school_main_id']);
				$logoSetting->where('auth_key', $check_school['auth_key']);
				$logoSetting->update('school_data', $content);
				$updated_school_data = $logoSetting->affected_rows();
			}

			$this->session->set_flashdata('success', str_replace('%s', 'School Setting', THE_UPDATE_SUCCESS_MSG));
			redirect(base_url() . 'admin/SchoolSetting');
		} else {

			$this->session->set_flashdata('danger', str_replace('%s', 'School Setting', THE_UPDATE_FAILED_MSG));
			redirect(base_url() . 'admin/SchoolSetting');
		}
	}


	//shiv kumar code for offline fee collection

	public function student_fee_course()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		// if (!file_exists(APPPATH . 'views/admin/student-fee-list.php'))
		// 	show_404();

		$course_fee_id = $this->uri->segment(3);

		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$data['fees_details'] = $this->db->query("select cf.id as course_fee_id,cf.batch_id, cf.course_id, ft.feetype_name, c.course_name, cf.amount from course c, course_fees cf, fee_types ft where cf.id = '$course_fee_id' and c.id = cf.course_id")->row_array();
		$data['title'] = $data['fees_details']['feetype_name'];
		$student_coure_fee = array();

		if (!empty($data['fees_details'])) {

			$student_list = $this->db->query('select s.id as student_id ,s.name, s.studentId from students s where s.course =' . $data['fees_details']['course_id'] . ' and s.batch_id =' . $data['fees_details']['batch_id'] . '')->result_array();

			foreach ($student_list as $key => $value) {
				$paid_list = $this->db->query('select sop.payment_details, sop.installment_type_id, sop.id as student_online_payment_id from students_online_payments sop where student_id =' . $value['student_id'] . ' and sop.course_fee_id =' . $data['fees_details']['course_fee_id'] . '')->row_array();

				$get_txn_id = $this->db->query('select sfot.txn_id from student_fee_online_transactions sfot where sfot.course_fee_id = ' . $data['fees_details']['course_fee_id'] . ' and sfot.studentId ="' . $value['studentId'] . '" order by sfot.id DESC')->row_array();

				if (!empty($paid_list))
					array_push($student_coure_fee, array(
						'status'					=> 1,
						'student_id'				=> $value['student_id'],
						'student_name'				=> $value['name'],
						'student_number'			=> $value['studentId'],
						'payment_details'			=> $paid_list['payment_details'],
						'installment_type_id'		=> $paid_list['installment_type_id'],
						'student_online_payment_id' => $paid_list['student_online_payment_id'],
						'txn_id'					=> $get_txn_id['txn_id'] ? $get_txn_id['txn_id'] : 0
					));
				else
					array_push($student_coure_fee, array(
						'status'					=> 0,
						'student_id'				=> $value['student_id'],
						'student_name'				=> $value['name'],
						'student_number'			=> $value['studentId']
					));
			}
		}

		$data['course_fee_student'] = $student_coure_fee;
		$this->load->view('admin/header', $data);
		$this->load->view('admin/student-fee-list', $data);
		$this->load->view('admin/footer');
	}

	public function studentfeelistFromStudent()
	{

		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		$this->load->model('Student_model');

		$application_id = $_POST['student_id']; //ECA007362
		$course_fee_id 	= $_POST['fees_type_id']; // 13 
		$payment_method = $_POST['payment_method']; //cash or bank
		$installType 	= $_POST['installment_type_id']; // 1,2,3,4
		$description 	= $_POST['transaction_id']; // transaction id
		$totalAmount 	= $_POST['amount']; // 5000
		$fees_type 		= $_POST['fees_type']; // course fee , application


		$school_info = $this->Admin_model->get_logo_from_setting();

		$check_id_record_exist = $this->db->get_where('students_online_payments', array('student_id' => $application_id, 'course_fee_id' => $course_fee_id))->row();

		$studentappId = $this->db->get_where('students', array('id' => $application_id))->row()->studentId;

		if ($check_id_record_exist) {

			$payment_installments = $check_id_record_exist->payment_details;
			$payment_row_id = $check_id_record_exist->id;
			$flag = true;
			$installment_data = (array)json_decode($payment_installments);

			foreach ($installment_data as $key => $value) {
				if ($value->payment_status == 'no' && $flag) {
					$installment_data[$key]->paid_amount = $totalAmount;
					$installment_data[$key]->payment_status = 'yes';
					$installment_data[$key]->paid_date = date('Y-m-d H:i:s', strtotime($this->nepali_current_date));
					$flag = false;
				}
			}

			$update_data['payment_details'] = json_encode($installment_data);
			$update_data['modified'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date));

			$result_success = $this->Student_model->add_edit_table('students_online_payments', $payment_row_id, $update_data);
		} else {

			$studfees = array();

			$coursefees = $this->Admin_model->get_query_row("SELECT id,due_amount_date  FROM installment WHERE course_fee_id=$course_fee_id");

			if (empty($coursefees)) {
				$this->session->set_flashdata('failed', 'Please Create Installment First');
				redirect(base_url() . 'admin/student_fee_course/' . $course_fee_id);
			}
			$coursefeesarr = json_decode($coursefees['due_amount_date']);
			$firstpay = true;
			foreach ($coursefeesarr as $k => $cf_value) {
				if ($installType == $k) {
					foreach ($cf_value as $index => $val1) {
						if ($firstpay) {
							$studfees[] = array(
								'install_sno' => $index + 1,
								'due_date' => $val1->due_date,
								'feeamount' => $val1->amount,
								'paid_amount' => $totalAmount,
								'payment_status' => 'yes',
								'paid_date' => date('Y-m-d H:i:s')
							);
							$firstpay = false;
						} else {
							$studfees[] = array(
								'install_sno' => $index + 1,
								'due_date' => $val1->due_date,
								'feeamount' => $val1->amount,
								'paid_amount' => 0,
								'payment_status' => 'no',
								'paid_date' => date('Y-m-d H:i:s')
							);
						}
					}
				}
			}
			$stdentfee = array(
				'student_id' => $application_id,
				'course_fee_id' => $course_fee_id,
				'installment_type_id' => $installType,
				'payment_details' => json_encode($studfees),
				'payment_method' => $payment_method,
				'created' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date)),
				'modified' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date))
			);
			$result_success = $this->db->insert('students_online_payments', $stdentfee);
		}


		if ($result_success) {
			$transData['studentId'] = (!empty($studentappId)) ? $studentappId : $application_id;
			$transData['payment_for'] = $fees_type;
			$transData['txn_id'] = date('Ymd', strtotime($this->nepali_current_date)) . $studentappId;
			$transData['payment_amt'] = $totalAmount;
			$transData['currency_code'] = $school_info['currency'];
			$transData['status'] = 'Completed';
			$transData['payment_date'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date));
			$transData['payment_recived_id'] = $this->session->userdata('admin_name');
			$transData['payment_method'] = $payment_method;
			$transData['bank_transaction_id'] = (isset($description) && !empty($description)) ? $description : NULL;
			$transData['course_fee_id'] = $course_fee_id;
			$rst = $this->Admin_model->storefeeTransaction($transData);
			if ($rst)
				$this->session->set_flashdata('success', 'Fees Added successfully');
			else
				$this->session->set_flashdata('failed', 'Fees Insertion failed Transactions ');
		} else {
			$this->session->set_flashdata('failed', 'Fees collection failed. Please Try once');
		}

		redirect(base_url() . 'admin/student_fee_course/' . $course_fee_id);
	}

	public function studentOfflineFees()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		$this->load->model('Student_model');

		$application_id = $_POST['student_id']; //ECA007362
		$course_fee_id 	= $_POST['fees_type_id']; // 13 
		$payment_method = $_POST['payment_method']; //cash or bank
		$installType 	= $_POST['installment_type_id']; // 1,2,3,4
		$description 	= $_POST['transaction_id']; // transaction id
		$totalAmount 	= $_POST['amount']; // 5000
		$fees_type 		= $_POST['fees_type']; // course fee , application


		$school_info = $this->Admin_model->get_logo_from_setting();

		$check_id_record_exist = $this->db->get_where('students_online_payments', array('student_id' => $application_id, 'course_fee_id' => $course_fee_id))->row();

		$studentappId = $this->db->get_where('students', array('id' => $application_id))->row()->studentId;

		if ($check_id_record_exist) {

			$payment_installments = $check_id_record_exist->payment_details;
			$payment_row_id = $check_id_record_exist->id;
			$flag = true;
			$installment_data = (array)json_decode($payment_installments);

			foreach ($installment_data as $key => $value) {
				if ($value->payment_status == 'no' && $flag) {
					$installment_data[$key]->paid_amount = $totalAmount;
					$installment_data[$key]->payment_status = 'yes';
					$installment_data[$key]->paid_date = date('Y-m-d H:i:s', strtotime($this->nepali_current_date));
					$flag = false;
				}
			}

			$update_data['payment_details'] = json_encode($installment_data);
			$update_data['modified'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date));

			$result_success = $this->Student_model->add_edit_table('students_online_payments', $payment_row_id, $update_data);
		} else {

			$studfees = array();

			$coursefees = $this->Admin_model->get_query_row("SELECT id,due_amount_date  FROM installment WHERE course_fee_id=$course_fee_id");

			if (empty($coursefees)) {
				$this->session->set_flashdata('failed', 'Please Create Installment First');
				redirect(base_url() . 'admin/student_fee_course/' . $course_fee_id);
			}
			$coursefeesarr = json_decode($coursefees['due_amount_date']);
			$firstpay = true;
			foreach ($coursefeesarr as $k => $cf_value) {
				if ($installType == $k) {
					foreach ($cf_value as $index => $val1) {
						if ($firstpay) {
							$studfees[] = array(
								'install_sno' => $index + 1,
								'due_date' => $val1->due_date,
								'feeamount' => $val1->amount,
								'paid_amount' => $totalAmount,
								'payment_status' => 'yes',
								'paid_date' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date))
							);
							$firstpay = false;
						} else {
							$studfees[] = array(
								'install_sno' => $index + 1,
								'due_date' => $val1->due_date,
								'feeamount' => $val1->amount,
								'paid_amount' => 0,
								'payment_status' => 'no',
								'paid_date' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date))
							);
						}
					}
				}
			}
			$stdentfee = array(
				'student_id' => $application_id,
				'course_fee_id' => $course_fee_id,
				'installment_type_id' => $installType,
				'payment_details' => json_encode($studfees),
				'payment_method' => $payment_method,
				'created' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date)),
				'modified' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date))
			);
			$result_success = $this->db->insert('students_online_payments', $stdentfee);
		}


		if ($result_success) {
			$transData['studentId'] = (!empty($studentappId)) ? $studentappId : $application_id;
			$transData['payment_for'] = $fees_type;
			$transData['txn_id'] = date('Ymd') . $studentappId;
			$transData['payment_amt'] = $totalAmount;
			$transData['currency_code'] = $school_info['currency'];
			$transData['status'] = 'Completed';
			$transData['payment_date'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date));
			$transData['payment_recived_id'] = $this->session->userdata('admin_name');
			$transData['payment_method'] = $payment_method;
			$transData['bank_transaction_id'] = (isset($description) && !empty($description)) ? $description : NULL;
			$transData['course_fee_id'] = $course_fee_id;
			$rst = $this->Admin_model->storefeeTransaction($transData);
			if ($rst)
				$this->session->set_flashdata('success', 'Fees Added successfully');
			else
				$this->session->set_flashdata('failed', 'Fees Insertion failed Transactions ');
		} else {
			$this->session->set_flashdata('failed', 'Fees collection failed. Please Try once');
		}

		redirect(base_url() . 'admin/view-student-payments/' . $application_id);
	}

	public function viewStudentImportFile()
	{
		if (isset($_SESSION['admin_id'])) {

			if (isset($_SESSION['promote_table']))
				$data['view_data'] = $_SESSION['promote_table'];
			else
				$data['view_data'] = null;

			$cid = '';
			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();


			$data['course'] = $this->db->query("select * from course WHERE is_active='yes'")->result_array();
			$data['batch'] = $this->Admin_model->get_batch();

			$this->load->view('admin/header', $data);
			$this->load->view('admin/importMemberList', $data);
			$this->load->view('admin/footer');
		}
	}

	public function importStudents()
	{
		$school_info = $this->Admin_model->get_logo_from_setting();
		if (empty($_FILES['file']['name'])) {
			$this->session->set_flashdata('failed', 'Please Upload CSV file... ');
			redirect(base_url() . 'admin/student');
		}

		$fileAr = explode('.', $_FILES['file']['name']);

		if ($fileAr[1] !== 'csv') {
			$this->session->set_flashdata('failed', 'Please Upload CSV file... ');
			redirect(base_url() . 'admin/viewStudentImportFile');
		}

		$this->load->library('CSVReader');

		$result =   $this->csvreader->parse_file($_FILES['file']['tmp_name']);
		// dd();

		$table_view = array();

		$course_id 	= $_POST['course'];
		$batch_id 	= $_POST['batch'];
		$section_id = $_POST['section'];
		if (count($result) > 500) {
			$this->session->set_flashdata('failed', 'Data Should not be more than 500 ');
			redirect(base_url() . 'admin/viewStudentImportFile');
		}


		foreach ($result as $key => $value) {

			if (empty($value['name']) || empty($value['email']) || empty($value['mobile']) || empty($value['gender']) || empty($value['dob']) || empty($value['country'])  || empty($value['state']) || empty($value['address1']) || empty($value['zipcode']) || empty($value['hostel']) || empty($value['registered_on']) || empty($value['payment_status']) || empty($value['assign_status']) || empty($value['emergency_contact_name']) || empty($value['emergency_contact_number']) || ((strtolower($value['payment_status']) != 'yes') && (strtolower($value['payment_status']) != 'no')) || ((strtolower($value['assign_status']) != 'yes') && (strtolower($value['assign_status']) != 'no')) || ((strtolower($value['hostel']) != 'yes') && (strtolower($value['hostel']) != 'no'))) {

				array_push($table_view, array(
					'name'                  => $value['name'],
					'studentId'             => '',
					'batch_id'              => $batch_id,
					'email'              => $value['email'],
					'mobile'             => $value['mobile'],
					'gender'             => $value['gender'],
					'dob'                => $value['dob'],
					'registered_on'      => $value['registered_on'],
					'status'             => 'madatory fields not filled'
				));
				continue;
			}

			// dd($table_view);

			$check_query = $this->db->query("SELECT count(id) as count FROM students WHERE email = '" . $value['email'] . "'")->row_array();

			if ($check_query['count'] > 0) {


				array_push($table_view, array(
					'name'                  => $value['name'],
					'studentId'             => '',
					'batch_id'              => $batch_id,
					'email'                 => $value['email'],
					'mobile'                => $value['mobile'],
					'gender'                => $value['gender'],
					'dob'                   => $value['dob'],
					'registered_on'         => date('Y-m-d', strtotime($value['registered_on'])),
					'status'             => 'duplicate'
				));
				continue;
			}
			// dd($table_view);
			$this->db->select_max('id');
			$query  = $this->db->get('students');
			$resid = $query->row_array();
			$resid = (isset($resid['id']) && !empty($resid['id'])) ? $resid['id'] : 0;
			$studentMaxId = $resid + 1;
			// if (strlen($studentMaxId) == 1)
			// 	$pid = "00000" . $studentMaxId;
			// else if (strlen($studentMaxId) == 2)
			// 	$pid = "0000" . $studentMaxId;
			// else if (strlen($studentMaxId) == 3)
			// 	$pid = "000" . $studentMaxId;
			// else if (strlen($studentMaxId) == 4)
			// 	$pid = "00" . $studentMaxId;
			// else if (strlen($studentMaxId) == 5)
			// 	$pid = "00" . $studentMaxId;


			// $studentid = STUDENT_PREFIX . date('Y', strtotime($this->nepali_current_date)) . $pid;
			// $parent_id = STUDENT_PARENT_PREFIX . date('Y', strtotime($this->nepali_current_date)) . $pid;

			$pid = date('Y', strtotime($this->nepali_current_date)) . '0' . $studentMaxId;
			$school_info = $this->Admin_model->get_logo_from_setting();
			$school_prefix = (!empty($school_info['school_prefix_id'])) ? $school_info['school_prefix_id'] : 'BB';

			$studentid = $school_prefix . STUDENT_PREFIX . $pid;
			$parent_id = $school_prefix . STUDENT_PARENT_PREFIX . $pid;


			$qr_path = $this->generate_qrcode($studentid);

			$data_insert = array(
				'name'   					=> $value['name'],
				'studentId'  				=> $studentid,
				'password' 					=> md5($studentid),
				'batch_id'					=> $batch_id,
				'email'  					=> $value['email'],
				'mobile' 					=> $value['mobile'],
				'gender' 					=> ucfirst($value['gender']),
				'dob' 						=> date('Y-m-d', strtotime($value['dob'])),
				'course'   					=> $course_id,
				'emergency_contact_name'  	=> $value['emergency_contact_name'],
				'emergency_contact_number' 	=> $value['emergency_contact_number'],
				'country' 					=> $value['country'],
				'state' 					=> $value['state'],
				'address1' 					=> $value['address1'],
				'address2' 					=> $value['address2'],
				'zipcode' 					=> $value['zipcode'],
				'photo' 					=> "No-Image.jpg",
				'school_certificate' 		=> "No-Image.jpg",
				'exam_result' 				=> "No-Image.jpg",
				'medical_cerificate' 		=> "No-Image.jpg",
				'registered_on' 			=> date('Y-m-d', strtotime($value['registered_on'])),
				'qr_code' 					=> $qr_path,
				'parent_username' 			=> $parent_id,
				'parent_password' 			=> md5($parent_id),
				'payment_status' 			=> strtolower($value['payment_status']),
				'assign_status'				=> 'yes',
				'hostel'					=> strtolower($value['hostel']),
				'modified'					=> $this->nepali_current_date
			);

			$insert = $this->db->insert('students', $data_insert);
			$newId =  $this->db->insert_id();

			if ($newId) {
				$data_insert['status'] = 'success';
				array_push($table_view, $data_insert);

				$clas_query = $this->db->query("select * from classroom where course_id = $course_id and section_id = $section_id")->row_array();
				if ($clas_query) {
					$roll_no = $this->db->query('select roll_no from student_batch where batch_id=' . $batch_id . ' and classroom_id =' . $clas_query['id'] . ' and is_active ="yes" order by roll_no DESC')->row_array();
					if (!empty($roll_no)) {
						$in_data['roll_no'] = $roll_no['roll_no'] + 1;
					} else {
						$in_data['roll_no'] = 1;
					}

					$in_data['student_id'] = $newId;
					$in_data['batch_id'] = $batch_id;
					$in_data['classroom_id'] = $clas_query['id'];
					$in_data['is_active'] = 'yes';
					$in_data['created'] = $this->nepali_current_date;

					$batch_student = $this->db->insert('student_batch', $in_data);
					$batch_student_id =  $this->db->insert_id();

					$studentId = $this->db->get_where('students', array('id' => $newId))->row()->studentId;
					// $course_fee_id=(isset($value['course_fee_id']) && !empty($value['course_fee_id'])) ? $value['course_fee_id'] : 0;
					$course_fee_id = (isset($result[$key]['course_fee_id']) && !empty($result[$key]['course_fee_id'])) ? $result[$key]['course_fee_id'] : 0;
					$paidAmt = (isset($result[$key]['paid_amount']) && !empty($result[$key]['paid_amount'])) ? $result[$key]['paid_amount'] : 0;
					$paidDate = (isset($result[$key]['paid_date']) && !empty($result[$key]['paid_date'])) ? date('Y-m-d H:i:s', strtotime($result[$key]['paid_date'])) : date('Y-m-d H:i:s', strtotime($this->nepali_current_date));
					$payment_method = (isset($result[$key]['payment_method']) && !empty($result[$key]['payment_method'])) ? strtolower($result[$key]['payment_method']) : 'cash';
					if ($course_fee_id > 0) {
						$coursefee = $this->db->get_where('course_fees', array('id' => $course_fee_id))->row_array();
						if (count($coursefee) > 0) {
							$fee_type_name = $this->db->get_where('fee_types', array('id' => $coursefee['fees_type']))->row()->feetype_name;
							if ($coursefee['amount'] > 0 && $coursefee['amount'] >= $paidAmt) {
								$pending_amount = ((int)$coursefee['amount'] - (int)$paidAmt);
								$install_sno = 1;
								$installmentData[] = array(
									"install_sno" => $install_sno,
									"payment_status" => "yes",
									"payable_amount" => $paidAmt,
									"paid_amount" => $paidAmt,
									"paid_date" => $paidDate,
									"total_amount" => $coursefee['amount'],
									"pending_amount" => $pending_amount,
									"due_date" => $coursefee['due_date'],
									"deduction_type" => "",
									"deduction_amount" => 0,
									"fine_amount" => 0,
									"payment_via" => $payment_method,
									"updated_by" => $_SESSION['admin_id'] . ' - ' . $_SESSION['admin_name'] . ' - ' . $_SESSION['admin_email']
								);
								$students_online_payments = array(
									'student_id' => $newId,
									'installment_type_id' => $coursefee['fees_type'],
									'course_fee_id' => $course_fee_id,
									'paid_amount' => $paidAmt,
									'pending_amount' => $pending_amount,
									'payment_details' => json_encode($installmentData),
									'payment_method' => $payment_method
								);
								// echo "
";
								// print_r($students_online_payments);
								$this->db->insert('students_online_payments', $students_online_payments);

								$fee_assigned_students = array('student_id' => $newId, 'course_fee_id' => $course_fee_id, 'created_at' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date)), 'modified' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date)));

								$a = mt_rand(100000, 999999);
								$transData['studentId'] = $studentId;
								$transData['payment_for'] = $fee_type_name;
								$transData['txn_id'] = $a . $studentId;
								$transData['payment_amt'] = $paidAmt;
								$transData['currency_code'] = $school_info['currency'];
								$transData['status'] = 'Completed';
								$transData['deduction_type'] = NULL;
								$transData['deduction_amount'] = 0;
								$transData['payment_date'] = $paidDate;
								$transData['payment_recived_id'] = $this->session->userdata('admin_name');
								$transData['payment_method'] = $payment_method;
								$transData['bank_transaction_id'] = '';
								$transData['course_fee_id'] = $course_fee_id;
								$transData['install_sno'] = $install_sno;

								$this->db->insert('fee_assigned_students', $fee_assigned_students);
								$this->db->insert('student_fee_online_transactions', $transData);
								$installmentData = [];
								// $transData=[];

							} else {
								$this->session->set_flashdata('failed', 'Paid Amount should be less than Fees Amount');
							}
						}
					}
				}
			}
		}
		// exit;
		$_SESSION['promote_table'] = $table_view;
		$this->session->set_flashdata('success', 'Data inserted Successfully......');
		redirect(base_url() . 'admin/viewStudentImportFile');
	}

	public function generate_qrcode($studentID)
	{
		$hex_data   = date('YmdHis') . '-' . $studentID;
		$save_name  = $hex_data . '.png';
		$dir = 'assets_student/studentqrcode/';
		if (!file_exists($dir)) {
			mkdir($dir, 0775, true);
		}
		/* QR Configuration  */
		$config['cacheable']    = true;
		$config['imagedir']     = $dir;
		$config['quality']      = true;
		$config['size']         = '1024';
		$config['black']        = array(255, 255, 255);
		$config['white']        = array(255, 255, 255);
		$this->ciqrcode->initialize($config);
		/* QR Data  */
		$params['data']     = $studentID;
		$params['level']    = 'L';
		$params['size']     = 10;
		$params['savename'] = $config['imagedir'] . $save_name;
		$result = $this->ciqrcode->generate($params);
		return $result;
	}

	public function download_Csv_File()
	{
		$this->load->helper('download');

		//file path
		$file = 'common_assets/demo.csv';

		//download file from directory
		force_download($file, NULL);

		redirect(base_url() . 'admin/student');
	}


	public function get_student_list($batch, $course, $section)
	{
		$result = $this->db->query("
			select s.id, s.name, s.studentId, course_name, section_name 
			from students s, course co, section sc, student_batch sb, classroom c
			where s.course = $course 
			and s.batch_id = $batch 
			and sb.student_id = s.id
			and sb.batch_id = s.batch_id
			and sb.classroom_id = c.id
			and c.id = sb.classroom_id 
			and c.course_id = $course
			and c.section_id = $section
			and sc.id = c.section_id
			and co.id = c.course_id")->result_array();
		echo json_encode($result);
	}

	public function get_count_of_girl_and_boy()
	{
		$course_id  = $this->uri->segment(3);
		$section_id = $this->uri->segment(4);
		if ($section_id == 0) {
			$male_count = $this->db->query('SELECT count(s.id) as male_count FROM students s, classroom c , student_batch sb WHERE s.course = ' . $course_id . ' AND s.course = c.course_id AND sb.batch_id = s.batch_id AND sb.classroom_id = c.id AND sb.student_id = s.id AND s.gender = "Male" GROUP by s.gender ORDER by s.id')->row_array();

			$female_count = $this->db->query('SELECT count(s.id) as female_count FROM students s, classroom c , student_batch sb WHERE s.course = ' . $course_id . ' AND s.course = c.course_id AND sb.batch_id = s.batch_id AND sb.classroom_id = c.id AND sb.student_id = s.id AND s.gender = "Female" GROUP by s.gender ORDER by s.id')->row_array();
		} else {
			$male_count = $this->db->query('SELECT count(s.id) as male_count FROM students s, classroom c , student_batch sb WHERE s.course = ' . $course_id . ' AND c.section_id = ' . $section_id . ' AND s.course = c.course_id AND sb.batch_id = s.batch_id AND sb.classroom_id = c.id AND sb.student_id = s.id AND s.gender = "Male" GROUP by s.gender ORDER by s.id')->row_array();

			$female_count = $this->db->query('SELECT count(s.id) as female_count FROM students s, classroom c , student_batch sb WHERE s.course = ' . $course_id . ' AND c.section_id = ' . $section_id . ' AND s.course = c.course_id AND sb.batch_id = s.batch_id AND sb.classroom_id = c.id AND sb.student_id = s.id AND s.gender = "Female" GROUP by s.gender ORDER by s.id')->row_array();
		}


		if (empty($male_count))
			$male = 0;
		else
			$male = $male_count['male_count'];


		if (empty($female_count))
			$female = 0;
		else
			$female = $female_count['female_count'];

		$Total_count = array('male' => $male, 'female' => $female);
		// $Total_count = array('male'=> 60, 'female'=> 40 );
		echo json_encode($Total_count);
	}


	// Change Password

	public function change_admin_password()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		$data['currentURL'] = current_url();

		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		$data['title'] = 'Change Password';
		if (count($_POST) > 0) {

			$pwd = md5($this->input->post('password'));

			$data = array('password' => $pwd);

			$query = $this->Admin_model->update_admin_password($_SESSION['admin_id'], $data);
			if ($query) {
				$this->session->set_flashdata('success', str_replace('%s', 'Password', THE_UPDATE_SUCCESS_MSG));
				redirect(base_url() . 'admin/admin-change-password');
			} else {
				$this->session->set_flashdata('failed', str_replace('%s', 'Password', THE_UPDATE_FAILED_MSG));
				redirect(base_url() . 'admin/admin-change-password');
			}
			exit();
		}

		$this->load->view('admin/header', $data);
		$this->load->view('admin/change-password');
		$this->load->view('admin/footer');
	}


	public function getStudentsByClassroom()
	{
		$classroomId = $_REQUEST['classroomid'];
		$batchId = $_REQUEST['batchid'];
		$sql = "SELECT s.id,s.studentId,s.name FROM students s JOIN student_batch sb ON s.id=sb.student_id AND s.batch_id = sb.batch_id WHERE s.is_active='yes' AND sb.batch_id=$batchId AND sb.classroom_id=$classroomId";
		$data = $this->Admin_model->get_query_result($sql);
		echo json_encode($data);
	}
	// Attendance section End from here 

	public function calender_Notification()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		$data['currentURL'] = current_url();

		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		$data['title'] = 'Calender';

		$this->load->view('admin/header', $data);
		$this->load->view('admin/calender', $data);
	}

	// Paying Student offline fees - Afraskhan
	public function pay_offline_student_fees()
	{

		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		// dd($_POST);
		$student_transaction_id = $this->input->post('sot_id');
		$installment_key = $this->input->post('install_key');
		$deduction_type = isset($_POST['deduction_type']) && $_POST['deduction_type'] != 'none' ? $this->input->post('deduction_type') : NULL;
		$deduction_amount = isset($_POST['deducted_amount']) ? $this->input->post('deducted_amount') : NULL;
		$payment_type_received = $this->input->post('payment_type');
		$bank_transaction_id = isset($_POST['bank_transaction_id']) ? $this->input->post('bank_transaction_id') : NULL;
		$school_info = $this->Admin_model->get_logo_from_setting();
		$student_transac = null;
		$course_fee_id = $_POST['course_fee_id'] ? $this->input->post('course_fee_id') : NULL;
		$payment_info = isset($_POST['payment_info'])  ? $this->input->post('payment_info') : NULL;
		$student_id = $this->input->post('studentId');
		$update_query = null;
		$total_amount = null;

		if ($student_transaction_id == 'new_payment') {
			// dd($_POST);
			$firstpay = true;
			$payment_info = json_decode($payment_info);
			$installment_type_id = count((array)$payment_info);
			$array_to_insert = [];
			// dd($payment_info);
			foreach ($payment_info as $key => $ele) {
				foreach ($ele as $index => $val1) {
					$total_amount = intval($val1->amount);
					if ($firstpay) {
						$array_to_insert[] = (object)array(
							'install_sno' => $index + 1,
							'due_date' => $val1->due_date,
							'feeamount' => $val1->amount,
							'deduction_type' => $deduction_type,
							'deduction_amount' => $deduction_amount,
							'paid_amount' => $total_amount - $deduction_amount,
							'payment_status' => 'yes',
							'paid_date' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date))
						);
						$firstpay = false;
					} else {
						$array_to_insert[] = (object) array(
							'install_sno' => $index + 1,
							'due_date' => $val1->due_date,
							'feeamount' => $val1->amount,
							'deduction_type' => '',
							'deduction_amount' => 0,
							'paid_amount' => 0,
							'payment_status' => 'no',
							'paid_date' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date))
						);
					}
				}
			}


			$student_transac = array(
				'student_id' => $student_id,
				'course_fee_id' => $course_fee_id,
				'installment_type_id' => $installment_key,
				'payment_details' => json_encode($array_to_insert),
				'payment_method' => $payment_type_received,
				'created' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date)),
				'modified' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date))
			);

			$student_transaction_id = $update_query = $this->Admin_model->insert_data('students_online_payments', $student_transac);
		} else {
			$student_transac = $this->Admin_model->get_table_info_row('students_online_payments', array('id' => $student_transaction_id));

			$installments = json_decode($student_transac['payment_details']);
			foreach ($installments as $index => $ele) {
				if ($ele->install_sno == $installment_key) {
					$installments[$index]->deduction_type = $deduction_type;
					$installments[$index]->deduction_amount = $deduction_amount;
					$total_amount = intval($ele->feeamount);
					$ele->paid_amount = intval($ele->feeamount) - intval($deduction_amount);
					$ele->payment_status = 'yes';
					$ele->paid_date = date('d-m-Y H:i:s', strtotime($this->nepali_current_date));
				} else {
					$installments[$index]->deduction_type = NULL;
					$installments[$index]->deduction_amount = NULL;
				}
			}

			$student_transac['payment_details'] = json_encode($installments);
			$student_transac['payment_method'] = $payment_type_received;
			$student_transac['modified'] = date('d-m-Y H:i:s', strtotime($this->nepali_current_date));

			$update_query = $this->Admin_model->update_table($student_transaction_id, $student_transac, 'students_online_payments');
		}
		// dd($student_transac);
		if ($update_query) {

			$studentappId = $this->db->get_where('students', array('id' => $student_transac['student_id']))->row()->studentId;

			$course_fee_id_student = $student_transac['course_fee_id'];
			$feeType_where = 'select ft.feetype_name from fee_types ft inner join course_fees cf on cf.fees_type = ft.id WHERE cf.id = ' . $course_fee_id_student;
			$fees_type = $this->Admin_model->get_table_info_row('course_fees', '', $feeType_where);
			$a = mt_rand(100000, 999999);
			$transData['studentId'] = (!empty($studentappId)) ? $studentappId : $application_id;
			$transData['payment_for'] = $fees_type['feetype_name'];
			$transData['txn_id'] = $a . $studentappId;
			$transData['payment_amt'] = $total_amount;
			$transData['currency_code'] = $school_info['currency'];
			$transData['status'] = 'Completed';
			$transData['payment_date'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date));
			$transData['payment_recived_id'] = $this->session->userdata('admin_name');
			$transData['payment_method'] = $student_transac['payment_method'];
			$transData['bank_transaction_id'] = $bank_transaction_id;
			$transData['course_fee_id'] = $course_fee_id_student;
			// dd($transData);
			$rst = $this->Admin_model->storefeeTransaction($transData);

			$this->session->set_flashdata('success', 'Fees has been paid successfully');
			redirect(base_url() . 'admin/view-student-payments/' . $student_transac['student_id']);
		} else {
			$this->session->set_flashdata('failed', 'Oops! Fees could not be paid successfully. Please try again');
			redirect(base_url() . 'admin/view-student-payments/' . $student_transac['student_id']);
		}
	}

	public function ajax_get_fee_installments()
	{

		$course_fee_id = $this->input->post('course_fee_id');
		$installment_key = $this->input->post('installment_type');
		$student_id = $this->input->post('student_id');
		$this->load->model('Student_model');
		$sql_item_name = "Select f.feetype_name from fee_types f inner join course_fees cf on cf.fees_type = f.id WHERE cf.id = $course_fee_id";
		$fee_type_col = $this->Student_model->get_general_row_details('fee_types', '', $sql_item_name);

		$fee_type_name = $fee_type_col['feetype_name'];

		$whereClause = "Select cf.id,cf.amount, i.id as installment_id, i.due_amount_date from course_fees cf inner join installment i on cf.id = i.course_fee_id WHERE cf.id = '$course_fee_id'";

		$selected_installment = $query = $this->Student_model->get_general_row_details('course_fees', '', $whereClause);

		if (!empty($query)) {

			// decoding due_amount_date from installments
			$selected_installment['due_amount_date'] = (array)json_decode($query['due_amount_date']);
			$first_due_amount = '';
			$s_no_new = '';
			$signal = true;

			// filtering the array with user selected option with $installment_key
			foreach ($selected_installment['due_amount_date'] as $key => $value) {
				if ($key != $installment_key) {
					unset($selected_installment['due_amount_date'][$key]);
				} else {
					foreach ($value as $index => $ele) {
						$due_date = date('Y-m-d', strtotime($ele->due_date));
						$current_date = date('Y-m-d', strtotime($this->nepali_current_date));
						$selected_installment['due_amount_date'][$key][$index]->payment_status = 'no';
					}
				}
			}

			// test_view_array($decoded);

			$data['installment'] = $selected_installment;

			// Re arranging keys of $data['installment']['due_amount_date'] below
			$data['installment']['due_amount_date'] = array_values($data['installment']['due_amount_date']);

			$jsonString = json_encode($data['installment']['due_amount_date']);
			$jsonString = str_replace('"', "'", $jsonString);
			$html = '';
			}
			echo $html;
		} else {
			echo 'failed';
		}
	}

	public function ajax_pay_table_fees()
	{
		if (count($_POST) == 0) {
			echo false;
			$this->session->set_flashdata('failed', 'Oops! Fees could not be paid successfully. Please try again');
			exit;
		}

		$table_data = $this->input->post('feeData');
		$school_info = $this->Admin_model->get_logo_from_setting();
		$table_data = json_decode($table_data);

		// Yet to be set
		$payment_type = isset($_POST['payment_type']) ? $this->input->post('payment_type') : 'cash';
		$bank_transaction_id = isset($_POST['bank_transaction_id']) ? $this->input->post('bank_transaction_id') : NULL;

		$student_id = $this->input->post('student_id');
		$student_app_id = '';
		$student_details = $this->db->get_where('students', array('id' => $student_id))->row_array();
		if (!empty($student_details)) {
			$student_app_id = $student_details['studentId'] ? $student_details['studentId'] : '';
		}
		// Yet to be set

		$transactions_to_be_inserted = [];
		$sop_to_be_inserted = [];
		$sop_to_be_updated = [];
		$check_data = '';


		$trans_invoice_no = (!empty($school_info['invoice_sno']) && $school_info['invoice_sno'] > 0) ? $school_info['invoice_sno'] : '1000';
		// $invoice_result=$this->db->query("SELECT invoice_no FROM student_fee_online_transactions ORDER BY id DESC LIMIT 1")->row_array();
		// if($invoice_result['invoice_no'] != '' && $invoice_result['invoice_no'] != NULL){
		// 	$trans_invoice_no=$invoice_result['invoice_no'] +1;
		// }
		// else {
		// 	$trans_invoice_no=+1;
		// }

		$total_paid_amount = 0;

		// Table Data Loop Starts
		foreach ($table_data as $key => $value) {

			$courseFeeId = isset($value->courseFeeId) ? $value->courseFeeId : $value->courseFeeId;

			// dd($value);

			$feeType_query = "Select ft.feetype_name,cf.due_date from fee_types ft INNER JOIN course_fees cf on cf.fees_type = ft.id WHERE cf.id = $courseFeeId";

			$fee_details = $this->Admin_model->get_table_info_row('course_fees', '', $feeType_query);

			$total_amount = (int)$value->fee_total_amount > 0 ? (int)$value->fee_total_amount : 0;
			$payable_amount =  isset($value->payable_amount) ? ((int)$value->payable_amount > 0 ? (int)$value->payable_amount : 0) : ((int)$value->feePayableAmt > 0 ? (int)$value->feePayableAmt : 0);
			$deduction_amount = (int)$value->deduction_amount > 0 ? (int)$value->deduction_amount : 0;
			$fine_amount = (int)$value->fine_amount > 0 ? (int)$value->fine_amount : 0;
			$paid_amount = ($payable_amount + $fine_amount) - $deduction_amount;
			$deduction_type = $value->deduction_type ? $value->deduction_type : '';

			$check_query = "Select * from students_online_payments WHERE ( student_id = $student_id AND course_fee_id = $courseFeeId ) AND fee_completed = 'no'";

			$check_data = $this->Admin_model->get_table_info('students_online_payments', '', $check_query);
			$install_sno = '';
			// dd($check_data);


			if (empty($check_data)) {

				$i_pending_amount = $total_amount - $payable_amount;

				$details = array();
				$insert_data['student_id'] = $student_id;
				$insert_data['course_fee_id'] = $courseFeeId;
				$insert_data['payment_method'] = $payment_type;
				$insert_data['fine_amount'] = $fine_amount;
				$insert_data['deducted_amount'] = $deduction_amount;
				$insert_data['pending_amount'] = $i_pending_amount;
				$insert_data['paid_amount'] = $paid_amount;
				$insert_data['created'] = $this->nepali_current_date;
				$insert_data['modified'] = $this->nepali_current_date;
				$insert_data['fee_completed'] = $i_pending_amount == 0 || $i_pending_amount < 0 ? 'yes' : 'no';
				$install_sno = 1;

				$details[] = (object)array(
					'install_sno' => 1,
					'payment_status' => 'yes',
					'payable_amount' => $payable_amount,
					'paid_amount' => $paid_amount,
					'paid_date' => date('d-m-Y', strtotime($this->nepali_current_date)),
					'total_amount' => $total_amount,
					'pending_amount' => $total_amount - $payable_amount,
					'due_date' => $fee_details['due_date'],
					'deduction_type' => $value->deduction_type,
					'deduction_amount' => $value->deduction_amount,
					'fine_amount' => $fine_amount,
					'payment_via' => $payment_type,
					'updated_by' => $_SESSION['admin_id'] . ' - ' . $_SESSION['admin_name'] . ' - ' . $_SESSION['admin_email']
				);

				$insert_data['payment_details'] = json_encode($details);

				$sop_to_be_inserted[] = $insert_data;
			} else {
				// dd($check_data);
				foreach ($check_data as $index => $ele) {

					$installments = json_decode($ele['payment_details']);
					$key_count = count((array)$installments);
					$install_sno = $key_count + 1;
					$installments[] = (object)array(
						'install_sno' => $key_count + 1,
						'payment_status' => 'yes',
						'payable_amount' => $payable_amount,
						'paid_amount' => $paid_amount,
						'paid_date' => date('d-m-Y', strtotime($this->nepali_current_date)),
						'total_amount' => $total_amount,
						'due_date' => $fee_details['due_date'],
						'pending_amount' => $ele['pending_amount'] - $payable_amount,
						'deduction_type' => $value->deduction_type,
						'deduction_amount' => $value->deduction_amount,
						'fine_amount' => $fine_amount,
						'payment_via' => $payment_type,
						'updated_by' => $_SESSION['admin_id'] . ' - ' . $_SESSION['admin_name'] . ' - ' . $_SESSION['admin_email']
					);

					$u_pending_amount = (int)$ele['pending_amount'] - $payable_amount;

					$sop_to_be_updated[] = array(
						'id' => $ele['id'],
						'payment_details' => json_encode($installments),
						'paid_amount' => (int)$ele['paid_amount'] + $paid_amount,
						'deducted_amount' => (int)$ele['deducted_amount'] + $deduction_amount,
						'pending_amount' => $u_pending_amount,
						'fine_amount' => (int)$ele['fine_amount'] + $fine_amount,
						'fee_completed' => $u_pending_amount == 0 || $u_pending_amount < 0 ? 'yes' : 'no',
						'modified' => $this->nepali_current_date
					);
				}
			}


			if ($fee_details['feetype_name'] == 'Transport Fee') {
				$BTSdb = $this->load->database('erisnClassroom_bts', TRUE);
				$query = $BTSdb->query("UPDATE bt_students_bus_route_details SET is_active='YES' WHERE student_id= '" . $student_app_id . "' order by id DESC limit 1");
			}

			$a = mt_rand(100000, 999999);
			$transData['studentId'] = $student_app_id;
			$transData['payment_for'] = $fee_details['feetype_name'];
			$transData['txn_id'] = $a . $student_app_id;
			$transData['invoice_no'] = $trans_invoice_no;
			$transData['payment_amt'] =  isset($value->payable_amount) ? $value->payable_amount : $value->feePayableAmt;
			$transData['currency_code'] = $school_info['currency'];
			$transData['status'] = 'Completed';
			$transData['deduction_type'] = $deduction_type;
			$transData['deduction_amount'] = $value->deduction_amount;
			$transData['payment_date'] = $this->nepali_current_date;
			$transData['payment_recived_id'] = $this->session->userdata('admin_name');
			$transData['payment_method'] = $payment_type;
			$transData['fine_amount'] = $fine_amount;
			$transData['bank_transaction_id'] = $bank_transaction_id;
			$transData['course_fee_id'] = $courseFeeId;
			$transData['install_sno'] = $install_sno;
			$transData['created'] = $this->nepali_current_date;
			$transData['modified'] = $this->nepali_current_date;
			$transactions_to_be_inserted[] = $transData;

			$total_paid_amount = $total_paid_amount + $transData['payment_amt'];
		} // Table Data Loop Ends


		if (!empty($sop_to_be_inserted)) {
			$insert_transactions = $this->db->insert_batch('students_online_payments', $sop_to_be_inserted);
		}

		if (!empty($sop_to_be_updated)) {
			$update_transactions = $this->db->update_batch('students_online_payments', $sop_to_be_updated, 'id');
		}

		if (!empty($transactions_to_be_inserted)) {
			$cf = $this->Admin_model->get_query_row("SELECT cf.*, ft.feetype_name FROM course_fees cf JOIN fee_types ft ON ft.id = cf.fees_type WHERE cf.id = $courseFeeId");
			$scholarship = $this->Admin_model->get_query_row("SELECT ss.*, st.scholarshiptype_name FROM student_scholarship ss JOIN scholarship_types st ON st.id = ss.scholarship_type WHERE ss.student_id = $student_id AND ss.course_fee_id = $courseFeeId");

			// dd($scholarship);
			$insert_transactions = $this->db->insert_batch('student_fee_online_transactions', $transactions_to_be_inserted);

			if ($insert_transactions) {
				$this->db->where(array('id' => $school_info['id']));
				$this->db->update('school_settings', array('invoice_sno' => (int)$trans_invoice_no + 1));
				$this->accounting->receiptVoucherEntry($student_id, $student_app_id, $cf['batch_id'], $cf['course_id'], $total_paid_amount);
				$this->session->set_flashdata('success', 'Fees has been paid successfully');
			} else {
				$this->session->set_flashdata('failed', 'Fees could not be paid successfully, Please try again');
			}
		}
	}
	// Paying Student offline fees end - Afraskhan 

	//shankar code start here
	public function studentChangePassword()
	{
		if ($_POST) {
			$data = array(
				'password' => md5($_POST['password']),
				'modified' => $this->nepali_current_date
			);
			$this->db->where('id', $_POST['student_id']);
			$this->db->update('students', $data);
			$this->db->trans_complete();
			if ($this->db->trans_status() === FALSE) {
				$this->session->set_flashdata('danger', str_replace('%s', 'Password', THE_ADD_ERROR_MSG));
			} else {
				$this->session->set_flashdata('success', str_replace('%s', 'Password', THE_UPDATE_SUCCESS_MSG));
			}

			redirect(base_url() . 'admin/view_student/' . $_POST['student_id']);
		}
	}

	public function suspend_Student()
	{
		if ($_POST) {
			$this->db->where('id', $_POST['student_id']);
			if ($_POST['status']) {
				$this->db->update('students', array('is_active' => 'no', 'suspend_reason' => $_POST['reason'], 'modified' => date('Y-m-d H:i:s')));
			} else {
				$this->db->update('students', array('is_active' => 'yes', 'modified' => date('Y-m-d H:i:s')));
			}

			$updated_status = $this->db->affected_rows();
			if ($updated_status) {
				if ($_POST['status']) {
					$this->session->set_flashdata('success_msg', 'Student Disabled Successfully');
				} else {
					$this->session->set_flashdata('success_msg', 'Student Enabled Successfully');
					redirect(base_url() . 'admin/enable-student');
				}
			} else {
				$this->session->set_flashdata('error_msg', 'Something Went Wrong ..... !!');
			}

			redirect(base_url() . 'admin/student');
		}
	}

	public function student_suspend_list()
	{
		if (isset($_SESSION['admin_id'])) {
			$cid = '';
			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();

			if ($this->input->post('filterSubmit') == "Filter") {

				$this->form_validation->set_rules('filter-Sdate', 'Start Date', 'required');
				$this->form_validation->set_rules('filter-course', 'Course', 'required');
				$this->form_validation->set_rules('filter-Edate', 'End Date', 'required');

				$course_id = $_POST['filter-course'] ? $_POST['filter-course'] : 0;
				$e_date = $_POST['filter-Edate'] ? $_POST['filter-Edate'] : 0;
				$s_date = $_POST['filter-Sdate'] ? $_POST['filter-Sdate'] : 0;

				$data['courseId'] = $course_id;
				$data['sdate'] = $s_date;
				$data['edate'] = $e_date;
				if (!$this->form_validation->run() == FALSE) {
					$data['students'] = $this->Admin_model->get_students_suspend($s_date, $e_date, $course_id);
				} else {
					$data['students'] = $this->Admin_model->get_students_suspend();
				}
			} else {
				$data['students'] = $this->Admin_model->get_students_suspend();
			}


			$data['course'] = $this->db->query("select * from course WHERE is_active='yes'")->result_array();
			$data['batch'] = $this->Admin_model->get_batch();

			$this->load->view('admin/header', $data);
			$this->load->view('admin/supended-student-list', $data);
			$this->load->view('admin/footer');
		}
	}

	//application reupload images by shankar

	public function application_documents_reupload()
	{
		$id = $this->input->post('appid');

		$this->load->helper('url');
		$this->load->helper(array('form', 'url'));

		$config['upload_path'] = 'assets_student/application/';
		$config['allowed_types'] = 'gif|jpg|png';
		$config['file_name'] = uniqid('img', false);

		$this->load->library('upload', $config);

		$this->upload->initialize($config);

		$data['currentURL'] = current_url();

		$data['id'] = $id;

		if ($_FILES['photo']['size'] != 0) {

			if (!$this->upload->do_upload('photo')) {
				$data['photo'] = "";
			} else {
				$photo = array('upload_data' => $this->upload->data());
				$data['photo'] = $photo['upload_data']['file_name'];
			}
		}

		if ($_FILES['school']['size'] != 0) {
			if (!$this->upload->do_upload('school')) {
				$data['school_certificate'] = "";
			} else {
				$school = array('upload_data' => $this->upload->data());
				$data['school_certificate'] = $school['upload_data']['file_name'];
			}
		}
		if ($_FILES['exam']['size'] != 0) {
			if (!$this->upload->do_upload('exam')) {
				$data['exam_result'] = "";
			} else {
				$exam = array('upload_data' => $this->upload->data());
				$data['exam_result'] = $exam['upload_data']['file_name'];
			}
		}
		if ($_FILES['medical']['size'] != 0) {
			if (!$this->upload->do_upload('medical')) {
				$data['medical_cerificate'] = "";
			} else {
				$medical = array('upload_data' => $this->upload->data());
				$data['medical_cerificate'] = $medical['upload_data']['file_name'];
			}
		}

		$app_new_id = $this->Admin_model->application_update_studentsdoc($data);

		if ($app_new_id)
			$this->session->set_flashdata('success', 'Image Updated Successfully.....!!');
		else
			$this->session->set_flashdata('danger', 'Something Went Wrong .....');
		redirect('/admin/view_applicant/' . $data['id']);
	}

	public function get_sectionbycourse()
	{
		$courseId = $_REQUEST['course_id'];
		$batchId = $_REQUEST['batch_id'];
		$sql = "SELECT s.id as section_id,s.section_name FROM course_sections cs JOIN section s ON s.id=cs.section_id WHERE cs.course_id='$courseId' ORDER BY s.id DESC";
		// $sections=$this->Admin_model->get_query_result($sql);
		// echo json_encode($sections);
		$section_list = $this->Admin_model->get_query_result($sql);
		$sectionsData = array();

		foreach ($section_list as $sec_value) {
			$sectionIDD = $sec_value['section_id'];
			$sec_sql = "SELECT sec.id as section_id,sec.section_name FROM classroom cl JOIN section sec ON sec.id=cl.section_id WHERE cl.section_id=$sectionIDD AND cl.course_id='$courseId'";
			$result = $this->Admin_model->get_query_row($sec_sql);
			if (!empty($result))
				$sectionsData[] = $result;
		}
		$data['sections'] = $sectionsData;
		$today = date('Y-m-d', strtotime($this->nepali_current_date));
		$feesType = 1; // application Fee 
		$sql1 = "SELECT * FROM `course_fees` WHERE batch_id=$batchId AND course_id=$courseId AND fees_type=$feesType ";


		// $sql1 = "SELECT * FROM `course_fees` WHERE batch_id=$batchId AND course_id=$courseId AND fees_type=$feesType AND DATE(due_date) >= DATE('$today')";

		$result = $this->Admin_model->get_query_row($sql1);
		$data['application_fee'] = ($result != '') ? json_encode($result) : 0;

		echo json_encode($data);
	}

	public function get_section_by_course()
	{
		$courseId = $_REQUEST['course_id'];
		$sql = "SELECT s.id as section_id,s.section_name FROM course_sections cs JOIN section s ON s.id=cs.section_id WHERE cs.course_id='$courseId' ORDER BY s.id DESC";
		$section_list = $this->Admin_model->get_query_result($sql);
		$data['sections'] = $section_list;
		echo json_encode($data);
	}

	public function checknamewithId()
	{
		$id = $_POST['id'];
		$namevalue = $_POST['value'];
		$table = $_POST['tablename'];
		$dbcolumn = $_POST['column'];

		$result = $this->Admin_model->check_value_exists($table, array($dbcolumn => $namevalue), $id);
		if ($result)
			echo 'success';
		else
			echo 'failed';
	}


	// to get application fee by shivakumar start
	public function get_batch_course()
	{
		$batchId = $_REQUEST['batch_id'];
		$today_datetime = DATE('Y-m-d', strtotime($this->nepali_current_date));
		$feesType = 1;
		$sql = "SELECT DISTINCT cf.course_id,c.course_name,c.id FROM course_fees  cf JOIN course c ON c.id=cf.course_id WHERE cf.batch_id=$batchId AND cf.fees_type=$feesType";

		// $sql = "SELECT * FROM `course_fees` WHERE batch_id=$batchId AND  AND due_date >= DATE('$today_datetime')";
		$result = $this->Admin_model->get_query_result($sql);
		echo $rst = ($result != '') ? json_encode($result) : 0;
	}
	// to get application fee by shivakumar End

	public function ajax_check_if_exists()
	{
		$table = $this->input->post('table');
		$column = $this->input->post('column');
		$value = $this->input->post('value');
		$required = isset($_POST['required']) ? $this->input->post('required') : null;
		$where[$column] = $value;
		$get_result = $this->Admin_model->get_table_info_row($table, $where);

		if (empty($get_result)) {
			echo 'failed';
		} else {
			if ($required) {
				echo $get_result[$required];
			} else {
				echo 'success';
			}
		}
	}

	public function downloadAllInvoice()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/invoiceallpdf.php'))
			show_404();

		if (count($_REQUEST['inoviceids']) > 0) {
			$invoiceids = $_REQUEST['inoviceids'];
			$student_id = $_REQUEST['student_id'];

			// print_r(count());




			$invoiceData = array();

			$all_invoice_ids = [];
			$invoiceData = [];

			foreach ($invoiceids as $i_k => $i_val) {
				// print_r($i_value);

				$i_array = explode(',', $i_val);


				foreach ($i_array as $i_key => $i_value) {
					// print_r($i_value);

					array_push($all_invoice_ids, (int)$i_value);
				}
			}

			sort($all_invoice_ids);



			foreach ($all_invoice_ids as $ai_key => $ai_value) {

				// foreach ($invoiceArray as $i_key => $i_value) {
				// }
				$i_data = $this->db->query("SELECT student_fee_online_transactions.*, course_fees.fee_values,course_fees.batch_id FROM student_fee_online_transactions, course_fees WHERE student_fee_online_transactions.id='$ai_value' and student_fee_online_transactions.course_fee_id = course_fees.id ")->row_array();
				$this->db->query('update student_fee_online_transactions set bill_print_count = bill_print_count + 1 where id =' . $ai_value);

				array_push($invoiceData, $i_data);
			}
			// foreach ($invoiceids as $i_value) {
			// 	$this->db->where('id', $i_value);
			// 	$this->db->set('bill_print_count', 'bill_print_count+1', FALSE);
			// 	$update = $this->db->update('student_fee_online_transactions');

			// 	if ($update) {
			// 		$i_data = $this->db->query("SELECT student_fee_online_transactions.*, course_fees.fee_values FROM student_fee_online_transactions, course_fees WHERE student_fee_online_transactions.id='$i_value' and student_fee_online_transactions.course_fee_id = course_fees.id ")->row_array();
			// 		array_push($invoiceData, $i_data);
			// 	}
			// }

			// dd($invoiceData);
			$feeBatchId = $invoiceData[0]['batch_id'];
			$data['invoicelist'] = $invoiceData;

			if ($student_id != 0) {
				$studentdata = $this->db->query("SELECT s.name as studentname,b.b_name as batch_name, s.email, s.studentId,s.id,cl.course_id,cl.section_id,s.parent_pan, cl.classroom_name, cl.id as classroom_id  
				FROM students s 
				JOIN student_batch sb ON sb.student_id = s.id AND sb.batch_id = $feeBatchId
				JOIN classroom cl ON cl.id=sb.classroom_id 
				JOIN batch b ON b.id=$feeBatchId WHERE s.id=$student_id order by sb.id desc")->row_array();

				// dd($studentdata);
				if (count($studentdata) > 0)
					$data['studentinfo'] = $studentdata;
				else
					$data['studentinfo'] = 0;
			} else {
				$data['studentinfo'] = 0;
			}

			$data['invoiceids'] =  $invoiceids;
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			$data['schoolinfo']['tdt'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date));
			$data['nDate'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date));

			$this->load->view('admin/invoiceallpdf', $data);
		}
	}

	public function ajax_get_transport_routes()
	{


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

		$transport_db = $this->load->database('erisnClassroom_bts', TRUE);
		$batch_routes = $transport_db->query('SELECT * from bt_batch_routes where batch_id = ' . $batch_id)->row_array();

		if (empty($batch_routes)) {
			echo false;
			exit;
		} else {

			$route_ids = explode(',', $batch_routes['route_ids']);
			$whereClause = '';
			foreach ($route_ids as $key => $value) {
				if ($key == 0) {
					$whereClause .= "id = '$value'";
				} else {
					$whereClause .= " or id = '$value'";
				}
			}


			$routes = $transport_db->query('SELECT * from bt_routes where ' . $whereClause)->result_array();

			$select_plan = '';
			if (isset($_POST['selected_plan'])) {
				$select_plan = $this->input->post('selected_plan');
			}

			$html = '';
			if ($select_plan != '' && $select_plan == $name) {
				$html .= '';
			} else {
				$html .= '';
			}

			echo $html;
		}
	}


	public function ajax_get_transport_routes_new()
	{


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

		$transport_db = $this->load->database('erisnClassroom_bts', TRUE);
		$batch_routes = $transport_db->query('SELECT * from bt_batch_routes where batch_id = ' . $batch_id)->row_array();

		if (empty($batch_routes)) {
			echo false;
			exit;
		} else {

			$route_ids = explode(',', $batch_routes['route_ids']);
			$whereClause = '';
			foreach ($route_ids as $key => $value) {
				if ($key == 0) {
					$whereClause .= "id = '$value'";
				} else {
					$whereClause .= " or id = '$value'";
				}
			}


			$routes = $transport_db->query('SELECT * from bt_routes where ' . $whereClause)->result_array();

			$select_plan = '';
			if (isset($_POST['selected_plan'])) {
				$select_plan = $this->input->post('selected_plan');
			}

			$html = ' 
'; if ($select_plan != '' && $select_plan == $name) { $html .= ''; } else { $html .= ''; } echo $html; } } public function manage_installments_add($cf_id) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/manage_installments_add.php')) show_404(); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $sql = "Select cf.id,cf.amount,b.b_name,c.course_name,cf.due_date,cf.batch_id,cf.course_id,ft.feetype_name,cf.hostel_plan_id,cf.route_id,ft.id as feetype_id from course_fees cf INNER JOIN batch b on b.id = cf.batch_id INNER JOIN course c ON c.id = cf.course_id INNER JOIN fee_types ft on ft.id = cf.fees_type WHERE cf.id = $cf_id "; $data['course_fee'] = $course_fee = $this->Admin_model->get_table_info_row('course_fees', '', $sql); $data['cf_id'] = $cf_id; if (empty($course_fee)) { $this->session->set_flashdata('failed', 'There is no fees with selected id'); redirect(base_url() . 'admin/fee-course'); } $condition = ''; if ($course_fee['feetype_id'] == '3') { $condition = " AND s.hostel_plan_id = $course_fee[hostel_plan_id]"; } if ($course_fee['feetype_id'] == '4') { $condition = " AND s.bus_routeid = $course_fee[route_id]"; } // Unassigned Installments Table $students_sql = "select s.id,s.studentId, s.name, s.email, s.mobile, se.section_name, IF((SELECT COUNT(*) from fee_assigned_students WHERE course_fee_id = $cf_id AND student_id = s.id) > 0, 'YES', 'NO') as assigned from students s INNER JOIN student_batch sb on s.id = sb.student_id AND s.batch_id = sb.batch_id INNER JOIN classroom c ON c.id = sb.classroom_id INNER JOIN section se ON c.section_id = se.id WHERE s.batch_id = $course_fee[batch_id] AND s.course = $course_fee[course_id] AND s.id NOT IN (SELECT student_id from students_online_payments WHERE student_id = s.id AND course_fee_id = $course_fee[id]) $condition AND sb.created = (SELECT MAX(created) from student_batch sb2 where sb.student_id = sb2.student_id) ORDER BY s.id DESC"; // exit; $data['unassigned_students'] = $student_info = $this->Admin_model->get_table_info('students', '', $students_sql); // dd($data['unassigned_students']); $data['payment_types'] = $this->Admin_model->get_table_info('payment_types', '', '', 'ASC'); // dd($student_info); $this->load->view('admin/header', $data); $this->load->view('admin/manage_installments_add'); $this->load->view('admin/footer'); } public function add_new_installments_revised_old_afras() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $_POST['table_rows'] = json_decode($_POST['table_rows']); $cf_id = $this->input->post('course_fee_id'); // dd($_POST); if (empty($_POST['table_rows'])) { // $delQryHere=$this->db->query("DELETE FROM fee_assigned_students WHERE course_fee_id=$cf_id AND student_id NOT IN(SELECT SOP.student_id FROM students_online_payments SOP INNER JOIN fee_assigned_students F ON F.student_id = SOP.student_id AND SOP.course_fee_id=$cf_id)"); $del['course_fee_id'] = $cf_id; $delete_db_list = $this->Admin_model->delete_row('fee_assigned_students', $del); $this->session->set_flashdata('success', 'Students have been removed from fees successfully'); redirect(base_url() . 'admin/fee-course'); } // Step 1 : Getting Students List $where = ''; foreach ($_POST['table_rows'] as $key => $value) { if ($key == 0) { $where .= "studentId = '$value'"; } else { $where .= " or studentId = '$value'"; } } $db_sql = "Select student_id,course_fee_id from fee_assigned_students WHERE course_fee_id = $cf_id"; $db_list = $this->Admin_model->get_table_info('fee_assigned_students', '', $db_sql); if (!empty($db_list)) { $del['course_fee_id'] = $cf_id; $delete_db_list = $this->Admin_model->delete_row('fee_assigned_students', $del); } $view_sql = "Select id as student_id,$cf_id as course_fee_id from students where $where"; $view_list = $this->Admin_model->get_table_info('students', '', $view_sql); $insert_query = $this->db->insert_batch('fee_assigned_students', $view_list); if ($insert_query) { $this->session->set_flashdata('success', 'Fee has been assigned to student successfully'); redirect(base_url() . 'admin/fee-course'); } else { $this->session->set_flashdata('failed', 'Fee could not be assigned to students! Please try again later.'); redirect(base_url() . 'admin/fee-course'); } } // fees assigned by shivu start from here public function add_new_installments_revised() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $assigned_arr = array(); $unassigned_arr = array(); $check_already = array(); $insert_data = array(); $cf_id = $this->input->post('course_fee_id'); $student_list = $_POST['students_input']; if (!empty($_POST['students_input'])) { foreach ($student_list as $k => $svalue) { if ($svalue == 1) { $sql = "SELECT cf.fee_values,fas.id as fee_assigned_id FROM fee_assigned_students fas JOIN course_fees cf ON cf.id=fas.course_fee_id WHERE fas.student_id=$k ANd fas.course_fee_id= $cf_id "; $check_assigned = $this->Admin_model->get_query_row($sql); if ($check_assigned != '') { $check_already[] = $k; } else { $insert_data = array('student_id' => $k, 'course_fee_id' => $cf_id); $insert_rst = $this->db->insert('fee_assigned_students', $insert_data); if ($insert_rst == TRUE) array_push($assigned_arr, $k); } } else if ($svalue == 0) { $coondition_data = array( 'student_id' => $k, 'course_fee_id' => $cf_id ); $this->db->where($coondition_data); $unselected_data = $this->db->delete('fee_assigned_students'); if ($unselected_data == TRUE) array_push($unassigned_arr, $k); } } if (count($assigned_arr) > 0 && count($unassigned_arr) > 0) { $this->session->set_flashdata('success', 'Fees has bee updated successfully'); } if (count($assigned_arr) > 0) $this->session->set_flashdata('success', 'Fees has been assigned successfully'); if (count($unassigned_arr) > 0) $this->session->set_flashdata('success', 'Fees has been assigned successfully'); } else { $this->session->set_flashdata('failed', 'No Changes'); } redirect(base_url() . 'admin/manage-installments/' . $cf_id); } // fees assigned by shivu end here // Transport module start from here // By: shivu public function assign_routes_students() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/asign-routes.php')) show_404(); $BTSdb = $this->load->database('erisnClassroom_bts', TRUE); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['title'] = "Assign Routes"; $result = array(); $classroomId = ''; if ((isset($_POST['filterSubmit']) && !empty($_POST['filterSubmit'])) == 'Filter') { $this->form_validation->set_rules('search_batch', 'Batch', 'required'); $batchId = (!empty($_POST['search_batch'])) ? $_POST['search_batch'] : ''; $classroomId = (!empty($_POST['search_classroom'])) ? $_POST['search_classroom'] : ''; if (!$this->form_validation->run() == FALSE) { $where = ''; $where .= "WHERE s.is_active='yes'"; if ($batchId != '') $where .= ' AND sb.batch_id=' . $batchId; // if($classroomId != '') // $where .= ' AND sb.classroom_id='.$classroomId; if ($classroomId != '') { $arr = implode(',', $classroomId); $where .= ' AND cl.course_id=s.course AND sb.classroom_id IN (' . $arr . ')'; } $sql = "SELECT sb.batch_id,b.b_name as batch_name,sb.classroom_id,cl.classroom_name,s.* FROM students s JOIN student_batch sb ON s.id=sb.student_id JOIN classroom cl ON cl.id=sb.classroom_id JOIN batch b ON b.id=sb.batch_id $where ORDER BY s.bus_facility ASC"; $result = $this->db->query("SELECT sb.batch_id,b.b_name as batch_name,sb.classroom_id,cl.classroom_name,s.* FROM students s JOIN student_batch sb ON s.id=sb.student_id JOIN classroom cl ON cl.id=sb.classroom_id JOIN batch b ON b.id=sb.batch_id $where ORDER BY s.bus_facility ASC")->result_array(); foreach ($result as $stdKey => $student) { $studentRouteAssign = $BTSdb->query('SELECT sbrd.id,sbrd.batch_id,sbrd.route_id,sbrd.pick_up_id,sbrd.drop_id,sbrd.one_way,sbrd.is_active,r.route_name, rd.place_name as pick_up_location FROM bt_students_bus_route_details sbrd JOIN bt_routes r ON r.id = sbrd.route_id JOIN bt_routes_details rd ON rd.id = sbrd.pick_up_id WHERE sbrd.batch_id=' . $batchId . ' AND sbrd.student_id = ' . $student['id'])->row_array(); $result[$stdKey]['assign_route'] = $studentRouteAssign; } // dd($result); } } $data['search_batch_id'] = (isset($batchId) && $batchId != '') ? $batchId : ''; $data['search_classroom_id'] = (isset($classroomId) && $classroomId != '') ? $classroomId : ''; $data['studentlist'] = (count($result) > 0) ? $result : 0; // dd($data['studentlist']); $data['classrooms'] = $this->db->query("select * from classroom WHERE is_active='yes'")->result_array(); $data['batchs'] = $this->Admin_model->get_batch(); $this->load->view('admin/header', $data); $this->load->view('admin/asign-routes.php', $data); $this->load->view('admin/footer'); } function getrouteDetails() { $batchid = $_REQUEST['batch_id']; $student_id = $_REQUEST['student_id']; $student = $this->db->get_where('students', array('id' => $student_id))->row_array(); // dd($student); $course_id = (isset($student['course']) && !empty($student['course'])) ? $student['course'] : 0; $student_route_id = (isset($student['bus_routeid']) && !empty($student['bus_routeid'])) ? $student['bus_routeid'] : 0; $fees_type = 4; // Fee types table (Transport Fee) if ($student_route_id != 0 && $course_id != 0) $studentCourseFeeId = $this->db->query("SELECT id as route_course_fee_id,amount FROM course_fees WHERE batch_id=$batchid AND course_id=$course_id AND fees_type=$fees_type AND route_id=$student_route_id")->row()->route_course_fee_id; else $studentCourseFeeId = 0; $BTSdb = $this->load->database('erisnClassroom_bts', TRUE); $data = array(); $routelist = array(); $stoplist = array(); if ($batchid != '') { $routes = $BTSdb->query('SELECT id,batch_id,route_ids FROM bt_batch_routes WHERE batch_id=' . $batchid)->row_array(); $studentAssignedRoute = $BTSdb->query('SELECT * FROM bt_students_bus_route_details WHERE batch_id=' . $batchid . ' AND student_id=' . $student_id)->row_array(); if ($routes != '') { $myArray = explode(',', $routes['route_ids']); foreach ($myArray as $route_id) { $routedata = $BTSdb->query("SELECT * FROM `bt_routes` WHERE id=" . $route_id)->row_array(); $stopdata = $BTSdb->query("SELECT id as stops_id, place_name FROM `bt_routes_details` WHERE route_id=" . $route_id . " order by route_order ASC")->result_array(); $routeprice = $this->db->query("SELECT id as route_course_fee_id,amount FROM course_fees WHERE batch_id=$batchid AND course_id=$course_id AND fees_type=$fees_type AND route_id=$route_id")->row_array(); $route_price = (isset($routeprice['amount']) && !empty($routeprice['amount'])) ? $routeprice['amount'] : 0; $routelist[] = array( 'route_id' => $routedata['id'], 'route_name' => $routedata['route_name'], 'route_fee' => ($route_price != 0) ? $route_price : 0 ); $stoplist[$routedata['id']] = $stopdata; } // dd($routeprice); } } // dd($stoplist); // payment paid or not checking here $route_course_fee_id = (isset($routeprice['route_course_fee_id']) && !empty($routeprice['route_course_fee_id'])) ? $routeprice['route_course_fee_id'] : 0; $paymentStatus = false; if ($studentCourseFeeId != 0) { $student_installment = $this->db->get_where('students_online_payments', array('student_id' => $student_id, 'course_fee_id' => $studentCourseFeeId))->row_array(); if (!empty($student_installment)) { $installmentArray = json_decode($student_installment['payment_details'], true); // dd($installmentArray); foreach ($installmentArray as $payment_data) { if ($payment_data['payment_status'] == 'yes') { $paymentStatus = true; break; } } } } $data['payment_status'] = $paymentStatus; $data['route_course_fee_id'] = $studentCourseFeeId; $data['student_info'] = $student; $data['route_data'] = $routelist; $data['batch_name'] = $this->db->get_where('batch', array('id' => $batchid))->row()->b_name; $data['student_route_id'] = $student_route_id; $data['student_assigned_route'] = $studentAssignedRoute; $data['stop_list'] = $stoplist; $page = $this->load->view('admin/routedata', $data, TRUE); echo $page; } public function routeAssignToStudent() { $BTSdb = $this->load->database('erisnClassroom_bts', TRUE); $studentId = $_REQUEST['student_id']; $routeId = $_REQUEST['route_id']; $pick_id = $_REQUEST['stop_id']; $batch_id = $_REQUEST['batch_id']; $is_one_way = $_REQUEST['is_one_way']; // var_dump($is_one_way); // $oneway = $is_one_way ? 'yes' : 'no'; $result = $this->db->query("UPDATE students SET bus_routeid=$routeId,bus_facility='yes',route_stop_id=$pick_id WHERE id=$studentId"); // bus tracking $query1 = $BTSdb->query('SELECT * from bt_students_bus_route_details WHERE student_id=' . $studentId . ' and batch_id =' . $batch_id . ' order by id DESC')->row_array(); $data = array('student_id' => $studentId, 'route_id' => $routeId, 'pick_up_id' => $pick_id, 'drop_id' => $pick_id, 'is_active' => 'No', 'batch_id' => $batch_id, 'one_way' => $is_one_way); if (!empty($query1)) { $upQuery = $BTSdb->query("UPDATE bt_students_bus_route_details SET is_active='yes', one_way='" . $is_one_way . "' , route_id='" . $routeId . "' , pick_up_id='" . $pick_id . "' , drop_id='" . $pick_id . "' WHERE student_id=" . $query1['student_id']); // if ($query1['route_id'] == $routeId) { // // if ($query1['pick_up_id'] == $pick_id) { // // } else { // // $upQuery = $BTSdb->query("UPDATE bt_students_bus_route_details SET is_active='No' WHERE student_id=" . $query1['student_id']); // // if ($upQuery) { // // $upQuery1 = $BTSdb->query("UPDATE bt_students_bus_route_details SET pick_up_id = " . $pick_id . " , drop_id =" . $pick_id . " WHERE student_id=" . $query1['student_id'] . " and batch_id =" . $batch_id); // // } // // } // echo (""); // // debug_to_console("UPDATE bt_students_bus_route_details SET route_id = " . $routeId . " , pick_up_id = " . $pick_id . " , one_way = " . $oneway . " , drop_id = 0 WHERE student_id=" . $studentId . " and batch_id =" . $batch_id); // $upQuery1 = $BTSdb->query("UPDATE bt_students_bus_route_details SET route_id = " . $routeId . " , pick_up_id = " . $pick_id . " , one_way = " . $oneway . " , drop_id = 0 WHERE student_id=" . $studentId . " and batch_id =" . $batch_id); // } // // if ($query1['route_id'] == $routeId) { // // if ($query1['pick_up_id'] == $pick_id) { // // echo ""; // // } else { // // echo ""; // // $upQuery = $BTSdb->query("UPDATE bt_students_bus_route_details SET is_active='No' WHERE student_id=" . $query1['student_id']); // // echo ""; // // if ($upQuery) { // // $upQuery1 = $BTSdb->query("UPDATE bt_students_bus_route_details SET pick_up_id = " . $pick_id . " , drop_id =" . $pick_id . " WHERE student_id=" . $query1['student_id'] . " and batch_id =" . $batch_id); // // } // // } // // } } else { $insertQuery = $BTSdb->insert('bt_students_bus_route_details', $data); } echo ($result) ? 1 : 0; } public function routeUnAssignToStudent() { $BTSdb = $this->load->database('erisnClassroom_bts', TRUE); $studentId = $_REQUEST['student_id']; $routeId = $_REQUEST['route_id']; $pick_id = $_REQUEST['stop_id']; $batch_id = $_REQUEST['batch_id']; $is_one_way = $_REQUEST['is_one_way']; $course_id = $_REQUEST['s_course']; // print_r($_REQUEST); $std_routes = $BTSdb->query("SELECT * FROM bt_students_bus_route_details WHERE student_id = $studentId")->result_array(); // $oneway = $is_one_way ? 'yes' : 'no'; $query = "SELECT cf.id as course_fee_id,cf.fee_values as fee_name , IF(ss.id is null,0,ss.id) as scholarship_id, IF(sop.id is null,0,sop.id) as sop_id, IF(fas.id is null,0,fas.id) as fas_id FROM course_fees cf LEFT JOIN students_online_payments sop on cf.id = sop.course_fee_id AND sop.student_id = $studentId LEFT JOIN student_scholarship ss on cf.id = ss.course_fee_id AND ss.student_id = $studentId LEFT JOIN fee_assigned_students fas on fas.course_fee_id = cf.id AND fas.student_id = $studentId WHERE cf.route_id = $routeId AND cf.batch_id = $batch_id AND cf.course_id = $course_id"; $std_transport_fees = $this->db->query($query)->result_array(); foreach ($std_transport_fees as $f_key => $transport_fee) { if ($transport_fee['sop_id'] == 0) { if ($transport_fee['scholarship_id'] > 0) { $this->db->where('id', $transport_fee['scholarship_id']); $this->db->delete('student_scholarship'); } if ($transport_fee['fas_id'] > 0) { $this->db->where('id', $transport_fee['fas_id']); $this->db->delete('fee_assigned_students'); } } } foreach ($std_routes as $r_key => $std_route) { $BTSdb->where('id', $std_route['id']); $BTSdb->delete('bt_students_bus_route_details'); } $up_data['bus_facility'] = 'no'; $up_data['bus_routeid'] = 0; $up_data['route_stop_id'] = 0; $this->db->where('id', $studentId); $result = $this->db->update('students', $up_data); echo ($result) ? 1 : 0; } // Transport module End here // By: shivu // Hostel facility module start from here // By: shivu public function students_assign_to_hostel() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/asign-to-hostel.php')) show_404(); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['title'] = "Hostel Facility"; $result = array(); if ((isset($_POST['filterSubmit']) && !empty($_POST['filterSubmit'])) == 'Filter') { $this->form_validation->set_rules('search_batch', 'Batch', 'required'); $batchId = (!empty($_POST['search_batch'])) ? $_POST['search_batch'] : ''; $classroomId = (!empty($_POST['search_classroom'])) ? $_POST['search_classroom'] : ''; if (!$this->form_validation->run() == FALSE) { $where = ''; $where .= "WHERE s.is_active='yes'"; if ($batchId != '') $where .= ' AND s.batch_id=' . $batchId; if ($classroomId != '') $where .= ' AND sb.classroom_id=' . $classroomId; $result = $this->db->query("SELECT sb.batch_id,b.b_name as batch_name,sb.classroom_id,cl.classroom_name,s.* FROM students s JOIN student_batch sb ON s.id=sb.student_id JOIN classroom cl ON cl.id=sb.classroom_id JOIN batch b ON b.id=sb.batch_id $where")->result_array(); } } $data['search_batch_id'] = (isset($batchId) && $batchId != '') ? $batchId : ''; $data['search_classroom_id'] = (isset($classroomId) && $classroomId != '') ? $classroomId : ''; $data['studentlist'] = (count($result) > 0) ? $result : 0; // dd($data['studentlist']); $data['classrooms'] = $this->db->query("select * from classroom WHERE is_active='yes'")->result_array(); $data['batchs'] = $this->Admin_model->get_batch(); $this->load->view('admin/header', $data); $this->load->view('admin/asign-to-hostel.php', $data); $this->load->view('admin/footer'); } function gethostelDetails() { $batchid = $_REQUEST['batch_id']; $student_id = $_REQUEST['student_id']; $student = $this->db->get_where('students', array('id' => $student_id))->row_array(); $course_id = (isset($student['course']) && !empty($student['course'])) ? $student['course'] : 0; $student_hostelplan_id = (isset($student['hostel_plan_id']) && !empty($student['hostel_plan_id'])) ? $student['hostel_plan_id'] : 0; $fees_type_id = 3; // Fee types table (Hostel Fee) if ($student_hostelplan_id != 0 && $course_id != 0) $studentCourseFeeId = $this->db->query("SELECT id as route_course_fee_id,amount FROM course_fees WHERE batch_id=$batchid AND course_id=$course_id AND fees_type=$fees_type_id AND hostel_plan_id=$student_hostelplan_id")->row()->route_course_fee_id; else $studentCourseFeeId = 0; // $hostelplanprice=array(); $data = array(); $hostelplanlist = array(); if ($batchid != '') { $hostel_plans = $this->db->query('SELECT id,plan_name FROM hostel_plans')->result_array(); if ($hostel_plans != '') { foreach ($hostel_plans as $plan) { $hostelPlanId = $plan['id']; $hostelplanprice = $this->db->query("SELECT id as hostel_course_fee_id, amount FROM course_fees WHERE batch_id=$batchid AND course_id=$course_id AND fees_type=$fees_type_id AND hostel_plan_id=$hostelPlanId")->row_array(); $plan_price = (isset($hostelplanprice['amount']) && !empty($hostelplanprice['amount'])) ? $hostelplanprice['amount'] : 0; $hostelplanlist[] = array( 'hostel_plan_id' => $plan['id'], 'hostel_plan_name' => $plan['plan_name'], 'hostel_fee' => ($plan_price != 0) ? $plan_price : 0 ); } } } // $hostel_course_fee_id=(isset($hostelplanprice['hostel_course_fee_id']) && !empty($hostelplanprice['hostel_course_fee_id'])) ? $hostelplanprice['hostel_course_fee_id'] :0; $paymentStatus = false; if ($studentCourseFeeId != 0) { $student_installment = $this->db->get_where('students_online_payments', array('student_id' => $student_id, 'course_fee_id' => $studentCourseFeeId))->row_array(); if (!empty($student_installment)) { $installmentArray = json_decode($student_installment['payment_details'], true); foreach ($installmentArray as $payment_data) { if ($payment_data['payment_status'] == 'yes') { $paymentStatus = true; break; } } } } $data['payment_status'] = $paymentStatus; $data['hostel_course_fee_id'] = $studentCourseFeeId; $data['student_info'] = $student; $data['hostelplan_data'] = $hostelplanlist; $data['batch_name'] = $this->db->get_where('batch', array('id' => $batchid))->row()->b_name; $data['student_hostel_plan_id'] = (isset($student['hostel_plan_id']) && !empty($student['hostel_plan_id'])) ? $student['hostel_plan_id'] : 0; $page = $this->load->view('admin/hosteldata_modal', $data, TRUE); echo $page; } public function hostelAssignToStudent() { $studentId = $_REQUEST['student_id']; $hostelId = $_REQUEST['hostel_plan_id']; $result = $this->db->query("UPDATE students SET hostel_plan_id=$hostelId,hostel='yes' WHERE id=$studentId"); echo ($result) ? 1 : 0; } // Hostel facility module End here // By: shivu // shankar code for promote student 12-04-22 public function promote_student() { if ((isset($_POST['student_id_list']) && !empty($student_id_list)) || (isset($_POST['select-batch']) && !empty($_POST['select-batch'])) || (isset($_POST['select-course']) && isset($_POST['select-course'])) || (isset($_POST['select-section']) && isset($_POST['select-section']))) { $save_array = []; foreach ($_POST['student_id_list'] as $key => $value) { //adding student id into student batch $get_classroom_id = $this->db->query('select id from classroom where course_id =' . $_POST['select-course'] . ' AND section_id =' . $_POST['select-section'])->row_array(); $roll_no = $this->db->query('select roll_no from student_batch where batch_id=' . $_POST['select-batch'] . ' and classroom_id =' . $get_classroom_id['id'] . ' and is_active ="yes" order by roll_no DESC')->row_array(); $save = array( 'student_id' => $value, 'batch_id' => $_POST['select-batch'], 'classroom_id' => $get_classroom_id['id'], 'roll_no' => (!empty($roll_no)) ? $roll_no['roll_no'] + 1 : 1, 'created' => $this->nepali_current_date ); $this->db->insert('student_batch', $save); $insert_id = $this->db->insert_id(); if ($insert_id) { $upDate_student = array( 'batch_id' => $_POST['select-batch'], 'course' => $_POST['select-course'], 'modified' => $this->nepali_current_date ); // $this->db->where('id', $value); $this->db->update('students', $upDate_student, "id =$value"); if ($this->db->trans_status() === FALSE) { } else { $save_array[] = $insert_id; } } } if (!empty($save_array)) { $data = urlsafe_b64encode(json_encode($save_array)); // dd($data); redirect(base_url() . 'admin/promosion-view-show/' . $data); } else { $this->session->set_flashdata('failed', 'Something Went Wrong !! Data not Added'); redirect(base_url() . 'admin/studentPromosionView'); } } else { $this->session->set_flashdata('failed', 'Data not Added'); redirect(base_url() . 'admin/studentPromosionView'); } } public function promosion_view_show($content) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['courseId'] = ''; $data['sectionId'] = ''; $data['course'] = $this->db->query("select * from course WHERE is_active='yes'")->result_array(); $data['batch'] = $this->Admin_model->get_batch(); $student_data = array(); $sb_id = json_decode(urlsafe_b64decode($content)); foreach ($sb_id as $key => $value) { $students = $this->db->query('select s.name as student_name, s.studentId , b.b_from, b.b_end, sc.section_name, co.course_name from student_batch sb, students s, classroom c, batch b, section sc , course co where sb.id =' . $value . ' AND s.id = sb.student_id AND sb.batch_id = b.id AND c.id = sb.classroom_id AND c.course_id = co.id AND c.section_id = sc.id')->row_array(); if (!empty($students)) { array_push($student_data, array( 'student_name' => $students['student_name'], 'student_id' => $students['studentId'], 'course_name' => $students['course_name'], 'section_name' => $students['section_name'], 'batch_name' => batchdateFormatTo($students['b_from'], $students['b_end']), 'sb_id' => $value )); } } $data['promoted_students'] = $student_data; if (empty($student_data)) { $this->session->set_flashdata('failed', 'Something Went Wrong... No Data Found'); redirect(base_url() . 'admin/studentPromosionView'); } $this->load->view('admin/header', $data); $this->load->view('admin/promosion-view'); $this->load->view('admin/footer'); } public function deltePromotedStudentByBatch() { $id = $_POST['id']; $student_id = $this->db->query('select student_id from student_batch where id =' . $id)->row_array(); if (!empty($student_id)) { $delete = $this->db->delete('student_batch', array('id' => $id)); if ($delete) { //get last data of student batch using student id $get_data = $this->db->query('select sb.batch_id, co.id as course_id from student_batch sb,classroom c, course co where student_id=' . $student_id['student_id'] . ' AND c.id = sb.classroom_id AND c.course_id = co.id order by sb.id DESC')->row_array(); if (!empty($get_data)) { $upDate_student = array( 'batch_id' => $get_data['batch_id'], 'course' => $get_data['course_id'] ); // $this->db->where('id', $value); $this->db->update('students', $upDate_student, array('id' => $student_id['student_id'])); if ($this->db->trans_status() === FALSE) { echo 'failed'; } else { echo 'success'; } } else { echo 'failed'; } } } else { echo 'failed'; } } public function get_sections_from_course_id($c_id) { $result = $this->Admin_model->get_sections_from_course_id($c_id); // echo json_encode($result); echo json_encode($result); } public function getTeacherByClassroomSubject() { $subjectid = $_REQUEST['subjectid']; $classroomid = $_REQUEST['classroomid']; $rst = $this->db->query("SELECT * FROM classroom_teacher_subject WHERE classroom_id=$classroomid AND subject_id=$subjectid")->row_array(); if (!empty($rst)) echo json_encode($rst); else echo 0; } public function printcount_increment() { $invoiceIds = $_REQUEST['inoviceids']; // $invoiceArray = json_decode($invoiceIds); // foreach ($invoiceArray as $i_key => $i_value) { // $this->db->query('update student_fee_online_transactions set bill_print_count = bill_print_count + 1 where id =' . $i_value); // } $this->db->query('update student_fee_online_transactions set bill_print_count = bill_print_count + 1 where id =' . $invoiceIds); return true; } public function addExpeses($checker) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $data['currentURL'] = current_url(); //get logo $data['expenses_types'] = $this->db->query('select id as expenseId, name as expenseTitle from expense_types')->result_array(); $data['expenses_data'] = ''; if ($checker > 0) { $data['title'] = 'Update Expenses'; $data['checker'] = $checker; $data['expenses_data'] = $this->db->query('select * from expenses where id=' . $checker)->row_array(); } else { $data['checker'] = 0; $data['title'] = 'Add Expenses'; } if (count($_POST) > 0) { if ($_POST['expenses_id'] == 0) { if (!empty($_FILES['file_expenses']['name'])) { $filename = $_FILES['file_expenses']['name']; if (!is_dir('expenses_images')) { mkdir('./expenses_images', 0777, true); } $location = "expenses_images/" . $filename; $imageFileType = pathinfo($location, PATHINFO_EXTENSION); $imageFileType = strtolower($imageFileType); /* Valid extensions */ $valid_extensions = array("jpg", "jpeg", "png"); $response = 0; /* Check file extension */ if (in_array(strtolower($imageFileType), $valid_extensions)) { /* Upload file */ if (move_uploaded_file($_FILES['file_expenses']['tmp_name'], $location)) { $response = $location; } } } $profile_image = ''; $expense_s_type = ''; $expense_s_type_computer = ''; $expense_s_type_vehicle = ''; if (isset($_FILES['file_expenses']['name'])) { $profile_image = $response; } if (isset($_POST['expense_sub_type_computer'])) { $expense_s_type_computer = $_POST['expense_sub_type_computer']; } if (isset($_POST['expense_sub_type_vehicle'])) { $expense_s_type_vehicle = $_POST['expense_sub_type_vehicle']; } if ($expense_s_type_computer != '') { $expense_s_type = $expense_s_type_computer; } else if ($expense_s_type_vehicle != '') { $expense_s_type = $expense_s_type_vehicle; } // var_dump($_POST); $data_array = array( 'title' => $_POST['formTitle'], 'expense_type' => $_POST['expense_type'], 'expense_s_type' => $expense_s_type, 'quantity' => $_POST['formQuantity'], 'amount' => $_POST['formAmount'], 'total_amount' => $_POST['totalAmountPaid'], 'paid_date' => $_POST['formPaidDate'], 'file_path' => $profile_image, 'description' => $_POST['description'], 'created' => $this->nepali_current_date ); // print_r($data_array); $this->db->insert('expenses', $data_array); $result_id = $this->db->insert_id(); if ($result_id) { $this->session->set_flashdata('success', str_replace('%s', 'New Expenses', THE_ADD_SUCCESS_MSG)); redirect(base_url() . 'admin/addExpeses/0'); } else { $this->session->set_flashdata('failed', 'Something Went Wrong ... Try again in sometime ....!!'); redirect(base_url() . 'admin/addExpeses/0'); } } else { if (!empty($_FILES['file_expenses']['name'])) { $filename = $_FILES['file_expenses']['name']; if (!is_dir('expenses_images')) { mkdir('./expenses_images', 0777, true); } $location = "expenses_images/" . $filename; $imageFileType = pathinfo($location, PATHINFO_EXTENSION); $imageFileType = strtolower($imageFileType); /* Valid extensions */ $valid_extensions = array("jpg", "jpeg", "png"); $response = 0; /* Check file extension */ $expenses_pic_prev = $this->db->get_where('expenses', array('id' => $_POST['expenses_id']))->row()->file_path; if (in_array(strtolower($imageFileType), $valid_extensions)) { /* Upload file */ if (move_uploaded_file($_FILES['file_expenses']['tmp_name'], $location)) { unlink($expenses_pic_prev); $response = $location; } } } $profile_image = ''; $data_array = array( 'title' => $_POST['formTitle'], 'quantity' => $_POST['formQuantity'], 'amount' => $_POST['formAmount'], 'total_amount' => $_POST['totalAmountPaid'], 'paid_date' => $_POST['formPaidDate'], 'description' => $_POST['description'], 'created' => $this->nepali_current_date ); if (isset($_FILES['file_expenses']['name']) && !empty($_FILES['file_expenses']['name'])) { $data_array['file_path'] = $response; } $this->db->where('id', $_POST['expenses_id']); $this->db->update('expenses', $data_array); $updated_status = $this->db->affected_rows(); if ($updated_status) { $this->session->set_flashdata('success', str_replace('%s', 'Expenses', THE_UPDATE_SUCCESS_MSG)); redirect(base_url() . 'admin/addExpeses/' . $_POST['expenses_id']); } else { $this->session->set_flashdata('failed', str_replace('%s', 'Expenses', THE_UPDATE_FAILED_MSG)); redirect(base_url() . 'admin/addExpeses/' . $_POST['expenses_id']); } } } $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $this->load->view('admin/header', $data); $this->load->view('admin/add-expenses'); $this->load->view('admin/footer'); } public function listExpeses() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); $data['currentURL'] = current_url(); if ($this->input->post('filterSubmit') == "Filter") { // $this->form_validation->set_rules('filter-course', 'Course', 'required'); $s_expense_type = $_POST['filter-expense-type']; $s_date = (isset($_POST['filter-Sdate']) && !empty($_POST['filter-Sdate'])) ? $_POST['filter-Sdate'] : ''; if (empty($s_date)) { // echo 'Empty'; $e_date = (isset($_POST['filter-Edate']) && !empty($_POST['filter-Edate'])) ? $_POST['filter-Edate'] : ''; } else { // echo 'Npt Empty'; $e_date = (isset($_POST['filter-Edate']) && !empty($_POST['filter-Edate'])) ? $_POST['filter-Edate'] : date('Y-m-d', strtotime($this->nepali_current_date)); } // var_dump($e_date); // dd($s_date); // $s_date = (isset($_POST['by_start_paid_date']) && !empty($_POST['by_start_paid_date'])) ? $_POST['by_start_paid_date'] : date('Y-m-01', strtotime($this->nepali_current_date)); // $e_date = (isset($_POST['by_end_paid_date']) && !empty($_POST['by_end_paid_date'])) ? $_POST['by_end_paid_date'] : date('Y-m-t', strtotime($this->nepali_current_date)); $data['sdate'] = $s_date; $data['edate'] = $e_date; $where = ''; if ($s_date != '' && $s_date != '') $where = "WHERE date(paid_date) BETWEEN '$s_date' AND '$e_date'"; else { if ($s_date != '') { $where = "WHERE date(paid_date) BETWEEN '$s_date'"; } else if ($e_date != '') $where = "WHERE date(paid_date) <= '$e_date'"; } if (trim($s_expense_type) != '') { if (trim($where) != '') { $where = "$where AND expense_type = $s_expense_type"; } else { $where = "WHERE expense_type = $s_expense_type"; } } $Sqlquery = "SELECT * FROM `expenses` $where ORDER BY paid_date DESC"; $data['expenses_data'] = $this->Admin_model->get_query_result($Sqlquery); } else { // $data['students'] = $this->Admin_model->get_students(); $data['expenses_data'] = $this->db->query('select * from expenses order BY paid_date DESC')->result_array(); } $data['expenses_types'] = $this->db->query('select id as expenseId, name as expenseTitle from expense_types')->result_array(); $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $this->load->view('admin/header', $data); $this->load->view('admin/list-expenses'); $this->load->view('admin/footer'); } public function delete_expenses($id) { $sql = $this->Admin_model->delete_expenses($id); if ($sql) { $this->session->set_flashdata('success', 'Expenses has been successfully deleted'); redirect(base_url() . 'admin/listExpeses'); } else { $this->session->set_flashdata('danger', 'Expenses could not been deleted, Please try again!'); redirect(base_url() . 'admin/listExpeses'); } } public function rollNumberChange($classroomId) { $data['encrepted_clas'] = $classroomId; $classroom_id = (int)str_replace("-qqcksbvlwierhwjerw", '', urlsafe_b64decode($classroomId)); $check_classroom_id = $this->db->query('select * from classroom where id =' . $classroom_id)->row_array(); $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $data['title'] = "Student List of " . $check_classroom_id['classroom_name']; $data['classroomid'] = $check_classroom_id['id']; //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); $cls_id = $check_classroom_id['id']; // $query = "SELECT sb.id as stud_batch_id, sb.roll_no, sb.batch_id,sb.classroom_id,s.* FROM student_batch sb LEFT JOIN students s ON sb.student_id=s.id AND sb.batch_id = " . $data['school_info']['batch_id'] . " WHERE sb.classroom_id=$cls_id"; $query = "SELECT sb.id as stud_batch_id, sb.roll_no, sb.batch_id as student_batch, sb.classroom_id, s.* FROM student_batch sb LEFT JOIN students s ON sb.student_id=s.id WHERE sb.batch_id = " . $data['school_info']['batch_id'] . " AND sb.classroom_id=$cls_id ORDER BY sb.roll_no"; $data['student_list'] = $this->Admin_model->get_query_result($query); // echo $query; // dd($data['student_list']); if ($_POST) { $checker = 0; $roll_numbers = explode(",", $_POST['roll_numbers']); $batch_ids = explode(",", $_POST['batch_ids']); // dd($_POST); foreach ($roll_numbers as $key => $value) { $this->db->set('roll_no', $value); $this->db->where('id', $batch_ids[$key]); $update = $this->db->update('student_batch'); if ($update) { $checker = 1; } } if ($checker > 0) $this->session->set_flashdata('success_msg', 'Roll Number Updated Successfully'); else $this->session->set_flashdata('error_msg', 'Something Went Wrong...Plese try again...!!'); redirect(base_url() . 'admin/roll-change/' . $classroomId); } $this->load->view('admin/header', $data); $this->load->view('admin/assign_rollNumber'); $this->load->view('admin/footer'); } // New Inovice public function newinvoice($studID, $txn_ID, $count, $invoiceList) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/invoice.php')) show_404(); $data['currentURL'] = current_url(); $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $data['menulist'] = $this->Admin_model->get_adminMenu(); $studentID = urlsafe_b64decode($studID); $txnID = urlsafe_b64decode($txn_ID); $counter = urlsafe_b64decode($count); $invoiceList = urlsafe_b64decode($invoiceList); if ($counter > 1) $data['back_url'] = 'admin/student_fee_course/' . $counter; else $data['back_url'] = 'admin/reports'; if ($studentID != '' && $txnID != '') { $student_ID = $this->db->get_where('students', array('studentId' => $studentID))->row(); if ($student_ID != '') { $sql1 = "SELECT sfot.*,course_fees.fee_values,s.course as courseID,s.name,s.studentId,b.b_from,b.b_name as batch_name,b.b_end,sb.batch_id,cl.course_id,cl.section_id,s.parent_pan FROM student_fee_online_transactions sfot LEFT JOIN students s ON sfot.studentId=s.studentId LEFT JOIN student_batch sb ON s.id=sb.student_id AND s.batch_id = sb.batch_id LEFT JOIN classroom cl ON cl.id=sb.classroom_id LEFT JOIN batch b ON sb.batch_id=b.id INNER JOIN course_fees ON sfot.course_fee_id = course_fees.id WHERE sfot.studentId='$studentID' AND sfot.invoice_no='$txnID' order by sb.id desc"; $payment_datalist = $this->Admin_model->get_query_result($sql1); foreach ($payment_datalist as $payment_data) { $student_data[] = array( 'student_fee_online_transactions_id' => $payment_data['id'], // 'studentId' => $payment_data['studentId'], 'payment_for' => $payment_data['fee_values'] . '(' . $payment_data['payment_for'] . ')', 'txn_id' => $payment_data['txn_id'], 'payment_amt' => $payment_data['payment_amt'], 'paid_date' => $payment_data['payment_date'], // 'studentname' => $payment_data['name'], // 'batch_name' => $payment_data['batch_name'], // 'batch_from' => $payment_data['b_from'], // 'batch_end' => $payment_data['b_end'], // 'course_id' => (isset($payment_data['course_id']) && !empty($payment_data['course_id'])) ? $payment_data['course_id'] : $payment_data['courseID'], 'received_by' => $payment_data['payment_recived_id'], 'payment_method' => $payment_data['payment_method'], 'fine_amount' => $payment_data['fine_amount'], 'tdt' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date)), 'deduction_type' => $payment_data['deduction_type'], 'deduction_amount' => $payment_data['deduction_amount'], // 'section_id' => $payment_data['section_id'], 'bill_print_count' => $payment_data['bill_print_count'], 'course_fee_id' => $payment_data['course_fee_id'], 'install_sno' => $payment_data['install_sno'], 'parent_pan' => (isset($payment_data['parent_pan']) && !empty($payment_data['parent_pan'])) ? $payment_data['parent_pan'] : '', 'invoice_no' => (isset($payment_data['invoice_no']) && !empty($payment_data['invoice_no'])) ? $payment_data['invoice_no'] : '' ); } $data['invoice_data'] = $student_data; dd($data['invoice_data']); } else { $sql2 = "SELECT soft.*,course_fees.fee_values,a.name,a.course,b.b_name as batch_name,b.b_from,b.b_end FROM student_fee_online_transactions soft LEFT JOIN applications a ON a.applicationid=soft.studentId LEFT JOIN batch b ON b.id=a.batch_id LEFT JOIN course_fees ON soft.course_fee_id = course_fees.id WHERE soft.studentId='$studentID' AND soft.invoice_no='$txnID' order by soft.id desc"; $paymentdata = $this->Admin_model->get_query_result($sql2); // dd($sql2); if (count($paymentdata) > 0) { $application_data = array( 'student_fee_online_transactions_id' => $paymentdata['id'], 'studentId' => $paymentdata['studentId'], 'payment_for' => $paymentdata['fee_values'] . '(' . $paymentdata['payment_for'] . ')', 'txn_id' => $paymentdata['txn_id'], 'payment_amt' => $paymentdata['payment_amt'], 'paid_date' => $paymentdata['payment_date'], 'studentname' => $paymentdata['name'], 'batch_name' => $paymentdata['batch_name'], 'batch_from' => $paymentdata['b_from'], 'batch_end' => $paymentdata['b_end'], 'course_id' => $paymentdata['course'], 'received_by' => $paymentdata['payment_recived_id'], 'payment_method' => $paymentdata['payment_method'], 'fine_amount' => $paymentdata['fine_amount'], 'tdt' => date('Y-m-d H:i:s', strtotime($this->nepali_current_date)), 'deduction_type' => $paymentdata['deduction_type'], 'deduction_amount' => $paymentdata['deduction_amount'], 'section_id' => 0, 'bill_print_count' => $paymentdata['bill_print_count'], 'course_fee_id' => $paymentdata['course_fee_id'], 'install_sno' => $paymentdata['install_sno'], 'parent_pan' => '', 'invoice_no' => (isset($paymentdata['invoice_no']) && !empty($paymentdata['invoice_no'])) ? $paymentdata['invoice_no'] : '' ); $data['invoice_data'] = $application_data; } } } // dd($data['invoice_data']); $this->load->view('admin/header', $data); $this->load->view('admin/invoice', $data); $this->load->view('admin/footer'); } /*START : Coding done by assign_all_fees_atonce -----------------------------------------*/ function assign_all_fees_atonce() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/assign-all-fees-atonce.php')) show_404(); $theStudents = array(); $theFees = array(); $theBatchId = ''; $feestype = array(); $studntinfo = []; $studntinfo1 = []; $studntRouteInfo = []; $studntRouteInfo1 = []; $sectionId = ''; $courseId = ''; $filterRouteId = ''; $dateFrom = ''; $feestypes = []; $data['currentURL'] = current_url(); $data['logo'] = $this->Admin_model->get_logo(); $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['title'] = "Assign Fees"; $data['courses'] = $this->Admin_model->get_courses(); //echo '
'; print_r($data['courses']);exit;
		$school_info = $this->Admin_model->get_logo_from_setting();
		$data['school_info'] = $school_info;
		if (isset($school_info['batch_id']))
			$theBatchId = (!empty($school_info['batch_id'])) ? $school_info['batch_id'] : 0;
		if ($this->input->post('filterSubmit') == "Filter") {
			$condtion = '';

			// $this->form_validation->set_rules('filter-course', 'Course', 'required');
			$courseId = (isset($_POST['filter-course']) && !empty($_POST['filter-course'])) ? $_POST['filter-course'] : '';
			$sectionId = (isset($_POST['filter-section']) && !empty($_POST['filter-section'])) ? $_POST['filter-section'] : '';
			$feestypes = (isset($_POST['filter-fees_type']) && !empty($_POST['filter-fees_type'])) ? $_POST['filter-fees_type'] : '';
			$dateFrom = (isset($_POST['date_from']) && !empty($_POST['date_from'])) ? $_POST['date_from'] : '';
			$filterRouteId = (isset($_POST['filter-route-id']) && !empty($_POST['filter-route-id'])) ? $_POST['filter-route-id'] : '';


			// dd($feestypes);

			if ($courseId != '')
				$condtion .= " AND cf.course_id='$courseId'";

			if ($feestypes != '') {
				$arr = implode(',', $feestypes);
				$condtion .= " AND cf.fees_type in ($arr)";
			}

			if ($filterRouteId != '')
				$condtion .= " AND cf.route_id = '$filterRouteId'";

			if ($dateFrom != '')
				$condtion .= " AND cf.created >= '$dateFrom'";

			if ($theBatchId != 0) {
				$sql = "SELECT cf.id as course_fee_id,cf.batch_id,cf.course_id,ft.id,ft.feetype_name,cf.fees_name,cf.amount,cf.due_date,cf.grouped,cf.fee_values FROM course_fees cf JOIN fee_types ft ON cf.fees_type=ft.id WHERE cf.batch_id='$theBatchId' $condtion ";

				$result = $this->Admin_model->get_query_result($sql);
				$q = '';
				if ($courseId != '')
					$q .= " AND s.course=$courseId";
				if ($sectionId != '')
					$q .= " AND cl.section_id=$sectionId";

				if ($filterRouteId != '')
					$q .= " AND s.bus_routeid=$filterRouteId";
				// if($date_from != '')
				// 	$q.=" AND DATE(cf.created) <= $dateFrom";

				//$sql2="SELECT s.id as student_id,s.studentId,s.name,s.course,s.batch_id,cl.section_id,se.section_name FROM students s 
				//	JOIN student_batch sb ON sb.student_id=s.id AND sb.batch_id=s.batch_id 
				//	JOIN classroom cl ON cl.id = sb.classroom_id JOIN section se ON se.id=cl.section_id WHERE sb.batch_id='$theBatchId' $q";
				$sql2 = "SELECT s.id as student_id,s.studentId,s.name,s.course,s.batch_id,cl.section_id,se.section_name, sb.roll_no FROM students s JOIN student_batch sb ON s.id=sb.student_id AND sb.batch_id = $theBatchId JOIN classroom cl ON cl.id = sb.classroom_id AND s.course=cl.course_id JOIN section se ON cl.section_id=se.id WHERE sb.batch_id= $theBatchId $q ORDER BY sb.roll_no";
				// exit;
				$result2 = $this->Admin_model->get_query_result($sql2);



				if (count($result) > 0) {
					foreach ($result as $value) {
						$feestype[] = array(
							'feecourse_id' => $value['course_fee_id'],
							'fee_name' => $value['fee_values'],
							'course_fee_id' => $value['course_fee_id'],
							'fee_amount' => $value['amount']
						);
					}
					if (count($result2) > 0) {
						// dd($result2);
						$BTSdb = $this->load->database('erisnClassroom_bts', TRUE);

						// $studentId = $_REQUEST['student_id'];
						// $routeId = $_REQUEST['route_id'];
						// $pick_id = $_REQUEST['stop_id'];
						// $batch_id = $_REQUEST['batch_id'];
						// $is_one_way = $_REQUEST['is_one_way'];

						// var_dump($is_one_way);

						// $oneway = $is_one_way ? 'yes' : 'no';

						// $result = $this->db->query("UPDATE students SET bus_routeid=$routeId,bus_facility='yes',route_stop_id=$pick_id WHERE id=$studentId");

						// $query1 = $BTSdb->query('SELECT * from bt_students_bus_route_details WHERE student_id=' . $studentId . '  and batch_id =' . $theBatchId . ' order by id DESC')->row_array();

						foreach ($result2 as $key1 => $std_value) {
							// $std_id = $std_value['student_id'];
							foreach ($result as $key2 => $value) {
								$rst = $this->db->get_where('fee_assigned_students', array('student_id' => $std_value['student_id'], 'course_fee_id' => $value['course_fee_id']))->row_array();
								$feetypevalue = ($rst != '') ? 1 : 0;
								$studntinfo1[$key2] = array('course_fee_id' => $value['course_fee_id'], 'status' => $feetypevalue);
							}
							$studntinfo[$key1] = array(
								'student_id' => $result2[$key1]['student_id'],
								'student_name' => $result2[$key1]['name'],
								'studentId' => $result2[$key1]['studentId'],
								'roll_no' => $result2[$key1]['roll_no'],
								'fees_data' => $studntinfo1
							);

							if ($filterRouteId != '') {

								$query1 = $BTSdb->query('SELECT * from bt_students_bus_route_details WHERE student_id=' . $result2[$key1]['student_id'] . '  and batch_id =' . $theBatchId . '  and route_id =' . $filterRouteId . ' order by id DESC')->row_array();

								// $studntRouteInfo[$key];

								$studntinfo[$key1]['route_details'] = isset($query1) && count($query1) != 0 ? $query1 : null;
							}
							// array_push();

						}
					}
					$theStudents['student_info'] = $studntinfo;
					// echo '
';
					// var_dump($studntinfo);
					$theStudents['student_route_details'] = $studntinfo;
					// $data['fees_type_names']=$feestype;
				}
			}
		}
		// dd($data['fees_type_names']);
		$feestypelist = $this->Admin_model->get_fees_type();
		if ($filterRouteId != '') {
			$data['routes'] = $this->Admin_model->get_currentbatch_routes();
			$data['filter_route_id'] = $filterRouteId;
		}
		$data['section'] = $sectionId;
		$data['feestypes'] = $feestypes;
		$data['course'] = $courseId;
		$data['start_date'] = (!empty($dateFrom)) ? $dateFrom : '';
		$data['fees_type'] = $feestypelist;
		$data['fees_type_names'] = $feestype;
		$data['theFees'] = $theFees;
		$data['theBatchId'] = $theBatchId;
		$data['theStudents'] = $theStudents;

		$this->load->view('admin/header', $data);
		$this->load->view('admin/assign-all-fees-atonce', $data);
		$this->load->view('admin/footer');
	}

	function assigntostudents()
	{
		//  dd($_POST);
		$fees_typelist = $this->input->post('feestype');
		$modified_students = $this->input->post('students');
		if (!empty($modified_students)) {
			$student_fees = $this->input->post('row');
			$oneWay = $this->input->post('one_way');
			$modified = array();
			$assigned_arr = array();
			$unassigned_arr = array();
			$check_already = array();
			// echo '
';
			// print_r($student_fees);
			// print_r($oneWay);
			foreach ($student_fees as $key => $std_value) {
				if (in_array($key, $modified_students)) {


					// echo '

Is Half Fee ' . $oneWay[$key] . '

Fee Data = ' . $std_value . ' Student Id = ' . $key . '
'; $modified[] = array( 'student_id' => $key, 'fees_data' => $std_value, 'is_half_fee' => $oneWay[$key] ); } } if (count($modified) > 0) { foreach ($modified as $feekey => $value) { $studentId = $value['student_id']; // echo '
';
					// var_dump($value);
					foreach ($value['fees_data'] as $course_fee_id => $fe_value) {
						$cf = $this->Admin_model->get_query_row("SELECT cf.*, ft.feetype_name FROM course_fees cf JOIN fee_types ft ON ft.id = cf.fees_type WHERE cf.id = $course_fee_id");

						if ($fe_value == 'on') {
							$insert_data = array(
								'student_id' => $studentId,
								'course_fee_id' => $course_fee_id,
								'is_half_fee' => $value['is_half_fee'][$course_fee_id]
							);
							// checking start HERE 
							$sql = "SELECT cf.fee_values,fas.id as fee_assigned_id FROM fee_assigned_students fas JOIN course_fees cf ON cf.id=fas.course_fee_id WHERE fas.student_id=$studentId ANd fas.course_fee_id=$course_fee_id ";
							$check_assigned = $this->Admin_model->get_query_row($sql);
							if ($check_assigned != '') {
								$check_already[] = $check_assigned['fee_values'];
							} else {

								$std = $this->Admin_model->get_query_row("SELECT * FROM students WHERE id = $studentId");
								$scholarship = $this->Admin_model->get_query_row("SELECT ss.*, st.scholarshiptype_name FROM student_scholarship ss JOIN scholarship_types st ON st.id = ss.scholarship_type WHERE ss.student_id = $studentId AND ss.course_fee_id = $course_fee_id");

								// dd($scholarship);
								$this->accounting->voucherEntry($studentId, $std['studentId'], $cf, $scholarship, 'Journal');

								// dd($insert_data);

								$result = $this->db->insert('fee_assigned_students', $insert_data);
								if ($result == TRUE)
									array_push($assigned_arr, $course_fee_id);
							}
							// Checking End Here 

						} else if ($fe_value == 'off') {
							$coondition_data = array(
								'student_id' => $studentId,
								'course_fee_id' => $course_fee_id,
								'is_half_fee' => $value['is_half_fee'][$course_fee_id]
							);
							$this->db->where($coondition_data);
							$unselected_data = $this->db->delete('fee_assigned_students');
							if ($unselected_data == TRUE) {
								$this->accounting->reversalVoucherEntry($studentId, $cf);
								array_push($unassigned_arr, $course_fee_id);
							}
						}
					}
				}
				if (count($assigned_arr) > 0 && count($unassigned_arr) > 0) {
					$this->session->set_flashdata('success', "Fees has been assigned to Students Successfully");
				} else if (count($assigned_arr) > 0 && count($unassigned_arr) == 0) {
					$this->session->set_flashdata('success', "Fees has been assigned Successfully");
				} else if (count($assigned_arr) == 0 && count($unassigned_arr) > 0) {
					$this->session->set_flashdata('success', "Fees has been unassigned Successfully");
				}
			} else {
				$this->session->set_flashdata('error', "No Changes");
			}
		} else {
			$this->session->set_flashdata('error', "No Changes");
		}
		redirect(base_url() . 'admin/assign-all-fees');
	}
	/*END Of : Coding done by Shivakumar -----------------------------------------*/

	// New Student module - start from Here
	// Developer: Shivakumar
	// Date: 03-06-2022
	public function newstudentview()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/addnewstudent.php'))
			show_404();
		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$data['title'] = "Student Admission";
		$data['courses'] = $this->Admin_model->get_courses();
		$data['batch'] = $this->Admin_model->get_batch();

		$CI = &get_instance();
		$mainList = $CI->load->database('schoolSetting', TRUE);

		$data['provinces'] = $mainList->query("SELECT * FROM provinces")->result_array();


		$this->load->view('admin/header', $data);
		$this->load->view('admin/addnewstudent', $data);
		$this->load->view('admin/footer');
	}

	public function addnewstudent()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (count($_POST) > 0) {

			$config['upload_path'] = 'assets_student/application/';
			$config['allowed_types'] = 'gif|jpg|png|jpeg';
			$this->load->library('upload', $config);
			$this->upload->initialize($config);
			$data['currentURL'] = current_url();
			$data['sinfo'] = $_POST;

			$school_info = $this->Admin_model->get_logo_from_setting();
			$photo = array('upload_data' => $this->upload->data());

			if (!$this->upload->do_upload('photo')) {
				$data['photo'] = "No-Image.jpg";
			} else {
				$photo = array('upload_data' => $this->upload->data());

				$data['photo'] = $photo['upload_data']['file_name'];
			}
			if (!$this->upload->do_upload('school')) {
				$data['school'] = "No-Image.jpg";
			} else {
				$school = array('upload_data' => $this->upload->data());
				$data['school'] = $school['upload_data']['file_name'];
			}

			if (!$this->upload->do_upload('exam')) {
				$data['exam'] = "No-Image.jpg";
			} else {
				$exam = array('upload_data' => $this->upload->data());
				$data['exam'] = $exam['upload_data']['file_name'];
			}

			if (!$this->upload->do_upload('medical')) {
				$data['medical'] = "No-Image.jpg";
			} else {
				$medical = array('upload_data' => $this->upload->data());
				$data['medical'] = $medical['upload_data']['file_name'];
			}

			$data['sameAsPermanentAddress'] = $_POST['same_as_per_add'];
			// if(isset($_POST['sibling']) && $_POST['sibling'] == 'yes') {
			// 	$parentId = $_POST['sibling_parent_id'];
			// 	$inserted_student=$this->Admin_model->addNewStudent($data,$parentId);
			// 	if($inserted_student > 0){
			// 		$this->session->set_flashdata('success', str_replace('%s', 'Student', THE_ADD_SUCCESS_MSG));
			// 	}
			// 	else {
			// 		$this->session->set_flashdata('error', str_replace('%s', 'Student', THE_INSERT_FAILED_MSG));			
			// 	}
			// } else {
			$inserted_student = $this->Admin_model->addNewStudent($data);
			if ($inserted_student === -1) {
				$this->session->set_flashdata('error', "Student Email or Mobile number Already Exists");
			} else if ($inserted_student > 0) {
				$this->session->set_flashdata('success', str_replace('%s', 'Student', THE_ADD_SUCCESS_MSG));
			} else {
				$this->session->set_flashdata('error', str_replace('%s', 'Student', THE_INSERT_FAILED_MSG));
			}
			// }


			redirect(base_url() . 'admin/add-student');

			// $this->Admin_model->add_applicationinfo($data);

		}
	}




	// New Student module - End Here

	public function get_routes_by_batch_course()
	{
		$BTSdb = $this->load->database('erisnClassroom_bts', TRUE);
		$school_info = $this->Admin_model->get_logo_from_setting();
		$batch_id = (isset($school_info['batch_id']) && !empty($school_info['batch_id'])) ? $school_info['batch_id'] : 0;
		$route_data = array();
		//   $fee_type_id=($_POST['fee_type_id'] !='') ? $_POST['fee_type_id'] : 0;
		$result = $BTSdb->query('select * FROM bt_batch_routes WHERE batch_id=' . $batch_id)->row_array();
		if ($result != '') {
			$route_ids = explode(',', $result['route_ids']);
			if (count($route_ids) > 0) {
				foreach ($route_ids as $value) {
					$value = (!empty($value)) ? $value : 0;
					$rst = $BTSdb->query('SELECT * FROM `bt_routes` WHERE id=' . $value)->row_array();
					$route_data[] = array(
						'id' => $rst['id'],
						'route_name' => $rst['route_name']
					);
				}
				$data['routes'] = $route_data;
			} else {
				$data['routes'] = '';
			}
		} else
			$data['routes'] = '';

		echo json_encode($data);
	}



	function check_route_fees()
	{
		$batch_id = (isset($_POST['batch_id']) && !empty($_POST['batch_id'])) ? $_POST['batch_id'] : 0;
		$feetype_id = (isset($_POST['feetype_id']) && !empty($_POST['feetype_id'])) ? $_POST['feetype_id'] : 0;
		$course_ids = (isset($_POST['course_ids']) && !empty($_POST['course_ids'])) ? $_POST['course_ids'] : 0;
		$route_id = (isset($_POST['route_id']) && !empty($_POST['route_id'])) ? $_POST['route_id'] : 0;
		$course_arr = implode(',', $course_ids);
		// $condtion.=" AND cf.fees_type in ($arr)";
		// echo 'SELECT * FROM `course_fees` WHERE batch_id='.$batch_id.' AND fees_type='.$feetype_id.' AND course_id IN ('.$course_arr.') AND route_id='.$route_id;

		$exitsfee = $this->db->query('SELECT cf.*,c.course_name FROM course_fees cf JOIN course c ON c.id=cf.course_id WHERE cf.batch_id=' . $batch_id . ' AND cf.fees_type=' . $feetype_id . ' AND cf.course_id IN (' . $course_arr . ') AND cf.route_id=' . $route_id)->result_array();

		echo (count($exitsfee) > 0) ? json_encode($exitsfee) : 0;
	}

	function report_recent_transactions()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/report_recent_transactions.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$studentInfo = array();

		if ($this->input->post('filtersubmit') == "filter") {
			$feestype  = (isset($_POST['by_feetype']) && !empty($_POST['by_feetype'])) ? $_POST['by_feetype'] : '';
			$courseId    = (isset($_POST['by_course_id']) && !empty($_POST['by_course_id'])) ? $_POST['by_course_id'] : 0;
			$startDate = (isset($_POST['by_start_paid_date']) && !empty($_POST['by_start_paid_date'])) ? $_POST['by_start_paid_date'] : date('Y-m-01', strtotime($this->nepali_current_date));
			$endDate   = (isset($_POST['by_end_paid_date']) && !empty($_POST['by_end_paid_date'])) ? $_POST['by_end_paid_date'] : date('Y-m-t', strtotime($this->nepali_current_date));
			$where = '';
			if ($feestype != '')
				$where = "WHERE payment_for LIKE '%$feestype%'";
			// else if ($startDate != '')
			// 	$where = "WHERE date(payment_date) = '$startDate'";
			// else if ($endDate != '')
			// 	$where = "WHERE date(payment_date) = '$endDate'";
			else if ($startDate != '' && $endDate != '')
				$where = "WHERE date(payment_date) BETWEEN '$startDate' AND '$endDate'";
			else if ($feestype != '' && $startDate != '')
				$where = "WHERE payment_for LIKE '%$feestype%' AND date(payment_date) = '$startDate'";
			else if ($feestype != '' && $startDate != '' && $endDate != '')
				$where = "WHERE payment_for LIKE '%$feestype%' AND Date(payment_date) BETWEEN '$startDate' AND '$endDate'";

			$Sqlquery = "SELECT * FROM `student_fee_online_transactions` $where ORDER BY id DESC";

			$fees_transactins = $this->Admin_model->get_query_result($Sqlquery);

			foreach ($fees_transactins as $ft_value) {
				$studentId = (isset($ft_value['studentId']) && !empty($ft_value['studentId'])) ? $ft_value['studentId'] : 0;
				if ($courseId != 0) {
					$student_where = array('applicationid' => $studentId, 'course' => $courseId);
				} else {
					$student_where = array('applicationid' => $studentId);
				}
				$student = $this->db->get_where('applications', $student_where)->row_array();
				$studentDetails = (isset($student) && !empty($student)) ? $student : 0;
				if ($studentDetails == 0) {
					if ($courseId != 0) {
						$Studentwhere = array('studentId' => trim($studentId), 'course' => $courseId);
					} else {
						$Studentwhere = array('studentId' => $studentId);
					}
					$studentDetails = $this->db->get_where('students', $Studentwhere)->row_array();
				}
				if ($studentDetails != '') {
					$student_data = array(
						'studentId' => $studentId,
						'stud_id' => $studentId,
						'name' => $studentDetails['name'],
						'course' => $studentDetails['course'],
						'payment_for' => $ft_value['payment_for'],
						'payment_amt' => $ft_value['payment_amt'],
						'txn_id' => $ft_value['txn_id'],
						'invoice_no' => $ft_value['invoice_no'],
						'payment_date' => $ft_value['payment_date'],
						'status' => $ft_value['status'],
						'deduction_type' => $ft_value['deduction_type'],
						'deduction_amount' => $ft_value['deduction_amount'],
						'fine_amount' => $ft_value['fine_amount'],
						'course_fee_id' => (isset($ft_value['course_fee_id']) && ($ft_value['course_fee_id'] != 0)) ? $ft_value['course_fee_id'] : 0
					);
					$studentInfo[] = $student_data;
				}
			}
			$data['search_course_id'] = $courseId;
			$data['search_feetype'] = $feestype;
			$data['search_start_paid_date'] = $startDate;
			$data['search_end_paid_date'] = $endDate;
		} else {
			$Sqlquery = "SELECT * FROM `student_fee_online_transactions` ORDER BY id DESC LIMIT 100";
			$fees_transactins = $this->Admin_model->get_query_result($Sqlquery);
			foreach ($fees_transactins as $ft_value) {
				$studentId = $ft_value['studentId'];
				$student = $this->db->get_where('applications', array('applicationid' => $studentId))->row_array();
				$studentDetails = (isset($student) && !empty($student)) ? $student : 0;
				if ($studentDetails == 0) {
					$studentDetails = $this->db->get_where('students', array('studentId' => $studentId))->row_array();
				}
				if ($studentDetails != '') {
					$student_data = array(
						'studentId' => $studentId,
						'stud_id' => $studentDetails['id'],
						'name' => $studentDetails['name'],
						'course' => $studentDetails['course'],
						'payment_for' => $ft_value['payment_for'],
						'payment_amt' => $ft_value['payment_amt'],
						'txn_id' => $ft_value['txn_id'],
						'invoice_no' => $ft_value['invoice_no'],
						'payment_date' => $ft_value['payment_date'],
						'status' => $ft_value['status'],
						'deduction_type' => $ft_value['deduction_type'],
						'deduction_amount' => $ft_value['deduction_amount'],
						'fine_amount' => $ft_value['fine_amount'],
						'course_fee_id' => (isset($ft_value['course_fee_id']) && ($ft_value['course_fee_id'] != 0)) ? $ft_value['course_fee_id'] : 0
					);
					$studentInfo[] = $student_data;
				}
			}
		}
		$data['student_fees'] = $studentInfo;


		// $data['current_report_data'] = $fee_type_data;
		$data['course_list'] = $this->db->query("select * from course WHERE is_active='yes'")->result_array();
		$data['feetype_list'] = $this->db->query("select * from fee_types WHERE is_active='yes'")->result_array();
		$this->load->view('admin/header', $data);
		$this->load->view('admin/report_recent_transactions', $data);
		$this->load->view('admin/footer');
	}

	function report_overview()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/report_overview.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$fee_type_data = array();

		$start_date = date('Y-m-01', strtotime($this->nepali_current_date));
		$current_date = date('Y-m-t', strtotime($this->nepali_current_date));
		$sqlQuery1 = "SELECT id as feetype_id,feetype_name,icon FROM fee_types WHERE is_active='yes'";
		$feetypelist = $this->Admin_model->get_query_result($sqlQuery1);

		if (isset($feetypelist) && !empty($feetypelist)) {
			foreach ($feetypelist as $ftype) {
				if ($ftype['feetype_id'] == 1) {
					$appication_totalamt = $this->Admin_model->get_currentmonthfee($start_date, $current_date, $ftype['feetype_name'], 'student_fee_online_transactions');
					$fee_type_data[] = array(
						'feetype_id' => $ftype['feetype_id'],
						'feetype_name' => $ftype['feetype_name'],
						'feetype_icon' => $ftype['icon'],
						'feetype_total' => 0,
						'feetype_due_amt' => 0,
						'feetype_paid_amount' => (isset($appication_totalamt) && !empty($appication_totalamt)) ? $appication_totalamt : 0
					);
				} else {
					$result = $this->Admin_model->currentMonth_fee($start_date, $current_date, $ftype['feetype_id']);
					$fee_type_data[] = array(
						'feetype_id' => $ftype['feetype_id'],
						'feetype_name' => $ftype['feetype_name'],
						'feetype_icon' => $ftype['icon'],
						'feetype_total' => (isset($result['total_course_fee']) && !empty($result['total_course_fee'])) ? $result['total_course_fee'] : 0,
						'feetype_due_amt' => (isset($result['pending_fee']) && !empty($result['pending_fee'])) ? $result['pending_fee'] : 0,
						'feetype_paid_amount' => (isset($result['paid_amount']) && !empty($result['paid_amount'])) ? $result['paid_amount'] : 0
					);
				}
			}
		}

		$data['current_report_data'] = $fee_type_data;
		// $data['course_list'] = $this->db->query("select * from course WHERE is_active='yes'")->result_array();
		// $data['feetype_list'] = $this->db->query("select * from fee_types WHERE is_active='yes'")->result_array();
		$this->load->view('admin/header', $data);
		$this->load->view('admin/report_overview', $data);
		$this->load->view('admin/footer');
	}


	// get report by by date
	public function getreportBydate()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/annual_report.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();


		$batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes'));
		$data['batches'] = $batches;
		$courses = $this->Admin_model->get_table_info('course', '', '', 'ASC');
		$data['course'] = $courses;
		$fees_types_list = $this->Admin_model->get_fees_type();
		$feeTypeWhere = " WHERE id > 0 ";

		if (isset($_POST['filtersubmit']) && ($_POST['filtersubmit'] == 'Filter')) {
			$f_batch  = (isset($_POST['f_batch']) && !empty($_POST['f_batch'])) ? $_POST['f_batch'] : '';
			$f_feetype  = (isset($_POST['f_feetype']) && !empty($_POST['f_feetype'])) ? $_POST['f_feetype'] : '';
			$f_course  = (isset($_POST['f_course']) && !empty($_POST['f_course'])) ? $_POST['f_course'] : '';
			$f_section = (isset($_POST['f_section']) && !empty($_POST['f_section'])) ? $_POST['f_section'] : '';
			$startDate = (isset($_POST['f_start_paid_date']) && !empty($_POST['f_start_paid_date'])) ? $_POST['f_start_paid_date'] : ''; //date('Y-m-01', strtotime($this->nepali_current_date))
			$endDate   = (isset($_POST['f_end_paid_date']) && !empty($_POST['f_end_paid_date'])) ? $_POST['f_end_paid_date'] : ''; //date('Y-m-t', strtotime($this->nepali_current_date))

			$condtion = '';
			$q = '';
			$result = array();
			$arr_sections = '';
			$arr_feetype = '';
			$studentlist = array();


			if ($f_course != '') {
				$sql = "SELECT s.id as section_id,s.section_name FROM course_sections cs JOIN section s ON s.id=cs.section_id WHERE cs.course_id='$f_course' ORDER BY s.id DESC";
				$section_list = $this->Admin_model->get_query_result($sql);
				$data['sections'] = $section_list;

				$condtion .= " AND cf.course_id='$f_course'";
				$q .= " AND s.course=$f_course";
			}
			if ($f_section != '') {
				$arr_sections = implode(',', $f_section);
				$q .= " AND cl.section_id in ($arr_sections)";
			}



			if ($f_feetype != '') {
				$arr_feetype = implode(',', $f_feetype);
				$condtion .= " AND cf.fees_type in ($arr_feetype)";
				$feeTypeWhere .= " AND id IN (" . $arr_feetype . ")";
			}

			$feeTypeQuery = "SELECT id,feetype_name FROM fee_types " . $feeTypeWhere . " AND is_active = 'yes' ORDER BY feetype_name";
			$selectedFeeTypeList = $this->Admin_model->get_query_result($feeTypeQuery);

			// dd($selectedFeeTypeList);

			$reqFTarr = array();
			$theReqFTidsHere = $this->Admin_model->get_query_row("SELECT GROUP_CONCAT(id SEPARATOR ',') AS r_f_t_ids FROM fee_types WHERE is_active = 'yes'");

			if ($arr_feetype != '')
				$theReqFTidsHere = $this->Admin_model->get_query_row("SELECT GROUP_CONCAT(id SEPARATOR ',') AS r_f_t_ids FROM fee_types WHERE id IN (" . $arr_feetype . ") AND is_active = 'yes'");
			// dd($theReqFTidsHere);
			if ($theReqFTidsHere['r_f_t_ids'] != '')
				$reqFTarr = explode(',', $theReqFTidsHere['r_f_t_ids']);
			// echo '
'; print_r($reqFTarr)."top";

			// dd($reqFTarr);

			if ($f_batch != '') {
				$sql2 = "SELECT s.id as student_id,s.studentId,s.name,s.course,s.batch_id,cl.section_id,sb.roll_no,c.course_name,se.section_name, 
						GROUP_CONCAT(fas.course_fee_id SEPARATOR ',') AS c_f_ids
						FROM students s 
						JOIN student_batch sb ON sb.student_id=s.id AND sb.batch_id=$f_batch
						JOIN classroom cl ON cl.id = sb.classroom_id AND s.course=cl.course_id 
						JOIN section se ON cl.section_id=se.id
						JOIN course c ON c.id=cl.course_id 
						JOIN fee_assigned_students fas ON fas.student_id=s.id 
						JOIN course_fees cf ON cf.id=fas.course_fee_id
						WHERE sb.batch_id= $f_batch AND cf.batch_id=$f_batch $q GROUP By s.id ORDER BY sb.roll_no ASC";

				$studentlist = $this->Admin_model->get_query_result($sql2);
				// echo $sql2;
				$sopq = '';
				if ($startDate != '' && $endDate != '')
					$sopq .= " AND DATE(sop.modified) BETWEEN '$startDate' AND '$endDate'";
				else if ($startDate != '')
					$sopq .= " AND DATE(sop.modified) >= '$startDate' ";
				else if ($endDate != '')
					$sopq .= " AND DATE(sop.modified) <= '$endDate' ";
				// print_r($sopq);
				if (!empty($studentlist)) {
					$theSno = 0;


					foreach ($studentlist as $std_key => $std_val) {
						$paidAmountArray = array();
						$pendingAmountArray = array();
						$deductedAmountArray = array();
						$fineAmountArray = array();
						$feeAmountArray = array();
						$feeTypeArray = array();
						$assignedFeesArray = explode(',', $std_val['c_f_ids']);
						foreach ($assignedFeesArray as $assignedFee_key => $assignedFeesVal) {
							$sopQuery = "SELECT sop.id, sop.student_id, sop.course_fee_id,sop.fee_completed, sop.paid_amount, sop.pending_amount, sop.deducted_amount, sop.fine_amount 
								FROM students_online_payments sop WHERE sop.student_id =" . $std_val['student_id'] . " AND sop.course_fee_id = $assignedFeesVal $sopq";
							$assignedFeeDetails = $this->Admin_model->get_query_row($sopQuery);
							$cfDetQuery = "SELECT cf.id AS cfid, cf.fees_type, ft.id, ft.feetype_name,cf.amount,cf.fee_values FROM course_fees AS cf, fee_types AS ft WHERE cf.id=" . $assignedFeesVal;
							// echo '
';
							// print_r($sopQuery);
							$courseFee = $this->Admin_model->get_query_row($cfDetQuery);
							// echo '================================> ' . $assignedFeesVal;
							// print_r($courseFee);
							// if ($std_key == 21) {
							// echo '
';
							// print_r($assignedFeeDetails);
							// }

							if (!empty($courseFee)) {
								if (empty($assignedFeeDetails)) {

									$scholarshipDetailQuery = "SELECT * from student_scholarship WHERE student_id = " . $std_val['student_id'] . " AND course_fee_id = $assignedFeesVal";
									$scholarshipDetail = $this->Admin_model->get_query_row($scholarshipDetailQuery);

									// print_r($assignedFeeDetails);

									if (!empty($scholarshipDetail)) {
										// array_push($paidAmountArray, 0);
										array_push($pendingAmountArray, $courseFee['amount'] - $scholarshipDetail['scholarship_amount']);
										array_push($feeAmountArray, $courseFee['amount'] - $scholarshipDetail['scholarship_amount']);
									} else {
										array_push($feeAmountArray, $courseFee['amount']);
										array_push($pendingAmountArray, $courseFee['amount']);
									}
									array_push($paidAmountArray, 0);
									array_push($deductedAmountArray, 0);
									array_push($fineAmountArray, 0);
								} else {

									if ($assignedFeeDetails['fee_completed'] == 'yes') {
										array_push($feeAmountArray, $assignedFeeDetails['paid_amount']);
									} else {
										array_push($feeAmountArray, $assignedFeeDetails['paid_amount'] + $assignedFeeDetails['pending_amount']);
									}

									// array_push($feeAmountArray, $courseFee['amount']);
									array_push($paidAmountArray, $assignedFeeDetails['paid_amount']);
									array_push($pendingAmountArray, $assignedFeeDetails['pending_amount']);
									array_push($deductedAmountArray, $assignedFeeDetails['deducted_amount']);
									array_push($fineAmountArray, $assignedFeeDetails['fine_amount']);
									//
								}

								array_push($feeTypeArray, $courseFee['fees_type']);
							} else {
								array_push($feeAmountArray, 0);
								array_push($paidAmountArray, 0);
								array_push($pendingAmountArray, 0);
								array_push($deductedAmountArray, 0);
								array_push($fineAmountArray, 0);
								array_push($feeTypeArray, 0);
							}
						}
						// echo '
';
						// print_r($feeTypeArray);
						$studentlist[$std_key]['fee_amt'] = implode(',', $feeAmountArray);
						$studentlist[$std_key]['paid_amt'] = implode(',', $paidAmountArray);
						$studentlist[$std_key]['pending_amt'] = implode(',', $pendingAmountArray);
						$studentlist[$std_key]['deducted_amt'] = implode(',', $deductedAmountArray);
						$studentlist[$std_key]['fine_amt'] = implode(',', $fineAmountArray);
						$studentlist[$std_key]['fee_type'] = implode(',', $feeTypeArray);

						$studentlist[$std_key]['c_fee_amt'] = count($feeAmountArray);
						$studentlist[$std_key]['c_paid_amt'] = count($paidAmountArray);
						$studentlist[$std_key]['c_pending_amt'] = count($pendingAmountArray);
						$studentlist[$std_key]['c_deducted_amt'] = count($deductedAmountArray);
						$studentlist[$std_key]['c_fine_amt'] = count($fineAmountArray);
						$studentlist[$std_key]['c_fee_type'] = count($feeTypeArray);
						$studentlist[$std_key]['reqFTarr'] = $theReqFTidsHere['r_f_t_ids'];
					}

					foreach ($studentlist as $s_key => $s_val) {
						$studentlist[$s_key]['sno'] = ++$theSno;
						$sub_arr = array();
						$c_f_ids_arr = explode(',', $s_val['c_f_ids']);
						$paid_amt_arr = explode(',', $s_val['paid_amt']);
						$pending_amt_arr = explode(',', $s_val['pending_amt']);
						$diduction_amt_arr = explode(',', $s_val['deducted_amt']);
						$fine_amt_arr = explode(',', $s_val['fine_amt']);
						$fee_amt_arr = explode(',', $s_val['fee_amt']);

						$fee_type_arr = explode(',', $s_val['fee_type']);

						foreach ($selectedFeeTypeList as $ftkey => $ftval) {

							if (in_array($ftval['id'], $fee_type_arr)) {
								$total_fee_amount = 0;
								$total_paid_amt = 0;
								$total_pending_amt = 0;
								$total_diduction_amt = 0;
								$total_fine_amt = 0;

								$total_amt_array = array();

								foreach ($fee_type_arr as $ft_key => $ft_value) {
									if ($ft_value == $ftval['id']) {
										$total_fee_amount = $total_fee_amount + $fee_amt_arr[$ft_key];
										array_push($total_amt_array, $fee_amt_arr[$ft_key]);
										$total_paid_amt = $total_paid_amt + $paid_amt_arr[$ft_key];
										$total_pending_amt = $total_pending_amt + $pending_amt_arr[$ft_key];
										$total_diduction_amt = $total_diduction_amt + $diduction_amt_arr[$ft_key];
										$total_fine_amt = $total_fine_amt + $fine_amt_arr[$ft_key];
									}
								}

								$studentlist[$s_key][$ftval['feetype_name']]['total_amt'] = $total_fee_amount;
								$studentlist[$s_key][$ftval['feetype_name']]['total_amt_array'] = $total_amt_array;
								$studentlist[$s_key][$ftval['feetype_name']]['paid_amt'] = $total_paid_amt;
								$studentlist[$s_key][$ftval['feetype_name']]['pending_amt'] = $total_pending_amt;
								$studentlist[$s_key][$ftval['feetype_name']]['diduction_amt'] = $total_diduction_amt;
								$studentlist[$s_key][$ftval['feetype_name']]['fine_amt'] = $total_fine_amt;
							} else {
								$studentlist[$s_key][$ftval['feetype_name']]['total_amt'] = 0;
								$studentlist[$s_key][$ftval['feetype_name']]['paid_amt'] = 0;
								$studentlist[$s_key][$ftval['feetype_name']]['pending_amt'] = 0;
								$studentlist[$s_key][$ftval['feetype_name']]['diduction_amt'] = 0;
								$studentlist[$s_key][$ftval['feetype_name']]['fine_amt'] = 0;
							}
						}
					}
				}
				// dd($studentlist);
			}
			$data['search_batch'] = $f_batch;
			$data['search_course_id'] = $f_course;
			$data['search_section'] = $f_section;
			$data['search_feetype'] = $f_feetype;
			$data['selected_fee_types'] = $selectedFeeTypeList;
			$data['search_start_paid_date'] = $startDate;
			$data['search_end_paid_date'] = $endDate;
			$data['studentlist'] = $studentlist;
		}
		$data['fees_types'] = $fees_types_list;
		$data['today_date'] = $this->nepali_current_date;
		$this->load->view('admin/header', $data);
		$this->load->view('admin/annual_report', $data);
		$this->load->view('admin/footer');
	}

	public function getAnnualReportDetails()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/annual_report_details.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();


		$batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes'));
		$data['batches'] = $batches;
		$courses = $this->Admin_model->get_table_info('course', '', '', 'ASC');
		$data['course'] = $courses;
		$fees_types_list = $this->Admin_model->get_fees_type();
		$feeTypeWhere = " WHERE id > 0 ";

		if (isset($_POST['filtersubmit']) && ($_POST['filtersubmit'] == 'Filter')) {
			$f_batch  = (isset($_POST['f_batch']) && !empty($_POST['f_batch'])) ? $_POST['f_batch'] : '';
			$f_feetype  = (isset($_POST['f_feetype']) && !empty($_POST['f_feetype'])) ? $_POST['f_feetype'] : '';
			$f_course  = (isset($_POST['f_course']) && !empty($_POST['f_course'])) ? $_POST['f_course'] : '';
			$f_section = (isset($_POST['f_section']) && !empty($_POST['f_section'])) ? $_POST['f_section'] : '';
			$startDate = (isset($_POST['f_start_paid_date']) && !empty($_POST['f_start_paid_date'])) ? $_POST['f_start_paid_date'] : ''; //date('Y-m-01', strtotime($this->nepali_current_date))
			$endDate   = (isset($_POST['f_end_paid_date']) && !empty($_POST['f_end_paid_date'])) ? $_POST['f_end_paid_date'] : ''; //date('Y-m-t', strtotime($this->nepali_current_date))

			$condtion = '';
			$q = '';
			$result = array();
			$arr_sections = '';
			$arr_feetype = '';
			$studentlist = array();


			if ($f_course != '') {
				$sql = "SELECT s.id as section_id,s.section_name FROM course_sections cs JOIN section s ON s.id=cs.section_id WHERE cs.course_id='$f_course' ORDER BY s.id DESC";
				$section_list = $this->Admin_model->get_query_result($sql);
				$data['sections'] = $section_list;

				$condtion .= " AND cf.course_id='$f_course'";
				$q .= " AND s.course=$f_course";
			}
			if ($f_section != '') {
				$arr_sections = implode(',', $f_section);
				$q .= " AND cl.section_id in ($arr_sections)";
			}
			$sopq = '';
			if ($startDate != '' && $endDate != '')
				$sopq .= " AND DATE(sop.modified) BETWEEN '$startDate' AND '$endDate'";
			else if ($startDate != '')
				$sopq .= " AND DATE(sop.modified) >= '$startDate' ";
			else if ($endDate != '')
				$sopq .= " AND DATE(sop.modified) <= '$endDate' ";

			// if ($f_feetype != '') {
			// 	// $arr_feetype = implode(',', $f_feetype);
			// 	$condtion .= " AND cf.fees_type = $f_feetype";
			// 	$feeTypeWhere .= " AND id = $f_feetype";
			// }
			if ($f_feetype != '') {
				$arr_feetype = implode(',', $f_feetype);
				$condtion .= " AND cf.fees_type in ($arr_feetype)";
				$feeTypeWhere .= " AND id IN (" . $arr_feetype . ")";
			}

			$feeTypeQuery = "SELECT id,feetype_name FROM fee_types" . $feeTypeWhere;
			$selectedFeeTypeList = $this->Admin_model->get_query_result($feeTypeQuery);
			$reqFTarr = array();
			$theReqFTidsHere = $this->Admin_model->get_query_row("SELECT GROUP_CONCAT(id SEPARATOR ',') AS r_f_t_ids FROM fee_types ");

			if ($arr_feetype != '')
				$theReqFTidsHere = $this->Admin_model->get_query_row("SELECT GROUP_CONCAT(id SEPARATOR ',') AS r_f_t_ids FROM fee_types WHERE id IN (" . $arr_feetype . ")");

			if ($theReqFTidsHere['r_f_t_ids'] != '')
				$reqFTarr = explode(',', $theReqFTidsHere['r_f_t_ids']);

			if ($f_batch != '') {

				$feeListsQuery = "SELECT id, batch_id, course_id, fees_type, fee_values, amount, fees_name, created FROM course_fees WHERE batch_id = $f_batch AND course_id = $f_course AND fees_type IN (" . $arr_feetype . ")";
				$selectedFeeList = $this->Admin_model->get_query_result($feeListsQuery);

				$sql2 = "SELECT s.id as student_id,s.studentId,s.name,s.course,s.batch_id,cl.section_id,sb.roll_no,c.course_name,se.section_name, 
						GROUP_CONCAT(fas.course_fee_id SEPARATOR ',') AS c_f_ids
						FROM students s 
						JOIN student_batch sb ON sb.student_id=s.id AND s.batch_id=sb.batch_id 
						JOIN classroom cl ON cl.id = sb.classroom_id AND s.course=cl.course_id 
						JOIN section se ON cl.section_id=se.id
						JOIN course c ON c.id=cl.course_id 
						JOIN fee_assigned_students fas ON fas.student_id=s.id 
						WHERE s.batch_id= $f_batch $q GROUP By s.id ORDER BY se.section_name, sb.roll_no ASC";
				// $sql2 = "SELECT s.id as student_id,s.studentId,s.name,s.course,s.batch_id,cl.section_id,sb.roll_no,c.course_name,se.section_name ,
				// 		GROUP_CONCAT(sop.course_fee_id SEPARATOR ',') AS c_f_ids, 
				// 		GROUP_CONCAT(sop.paid_amount SEPARATOR ',') AS paid_amt ,
				// 		GROUP_CONCAT(sop.pending_amount SEPARATOR ',') AS pending_amt,
				// 		GROUP_CONCAT(sop.deducted_amount SEPARATOR ',') AS deducted_amt,
				// 		GROUP_CONCAT(sop.fine_amount SEPARATOR ',') AS fine_amt
				// 		FROM students s 
				// 		JOIN student_batch sb ON sb.student_id=s.id AND s.batch_id=sb.batch_id 
				// 		JOIN classroom cl ON cl.id = sb.classroom_id AND s.course=cl.course_id 
				// 		JOIN section se ON cl.section_id=se.id 
				// 		JOIN course c ON c.id=cl.course_id 
				// 		JOIN students_online_payments sop ON sop.student_id=s.id 
				// 		WHERE s.batch_id= $f_batch $q GROUP By s.id ORDER BY student_id ASC";

				$studentlist = $this->Admin_model->get_query_result($sql2);
				if (!empty($studentlist)) {
					$theSno = 0;
					foreach ($studentlist as $std_key => $std_val) {
						$paidAmountArray = array();
						$pendingAmountArray = array();
						$deductedAmountArray = array();
						$fineAmountArray = array();
						$feeAmountArray = array();
						$feeTypeArray = array();
						$assignedFeesArray = explode(',', $std_val['c_f_ids']);
						foreach ($assignedFeesArray as $assignedFee_key => $assignedFeesVal) {
							$sopQuery = "SELECT sop.id, sop.student_id, sop.course_fee_id,sop.fee_completed, sop.paid_amount, sop.pending_amount, sop.deducted_amount, sop.fine_amount 
								FROM students_online_payments sop WHERE sop.student_id =" . $std_val['student_id'] . " AND sop.course_fee_id = $assignedFeesVal $sopq";
							$assignedFeeDetails = $this->Admin_model->get_query_row($sopQuery);
							$cfDetQuery = "SELECT cf.id AS cfid, cf.fees_type, ft.id, ft.feetype_name,cf.amount,cf.fee_values FROM course_fees AS cf, fee_types AS ft WHERE cf.id=" . $assignedFeesVal;
							// echo '
';
							// print_r($sopQuery);
							$courseFee = $this->Admin_model->get_query_row($cfDetQuery);
							// if ($std_key == 21) {
							// 	echo '
';
							// 	print_r($assignedFeeDetails);
							// }

							if (!empty($courseFee)) {
								if (empty($assignedFeeDetails)) {

									$scholarshipDetailQuery = "SELECT * from student_scholarship WHERE student_id = " . $std_val['student_id'] . " AND course_fee_id = $assignedFeesVal";
									$scholarshipDetail = $this->Admin_model->get_query_row($scholarshipDetailQuery);

									// print_r($assignedFeeDetails);

									if (!empty($scholarshipDetail)) {
										// array_push($paidAmountArray, 0);
										array_push($pendingAmountArray, $courseFee['amount'] - $scholarshipDetail['scholarship_amount']);
										array_push($feeAmountArray, $courseFee['amount'] - $scholarshipDetail['scholarship_amount']);
									} else {
										array_push($feeAmountArray, $courseFee['amount']);
										array_push($pendingAmountArray, $courseFee['amount']);
									}
									array_push($paidAmountArray, 0);
									array_push($deductedAmountArray, 0);
									array_push($fineAmountArray, 0);
								} else {

									if ($assignedFeeDetails['fee_completed'] == 'yes') {
										array_push($feeAmountArray, $assignedFeeDetails['paid_amount']);
									} else {
										array_push($feeAmountArray, $assignedFeeDetails['paid_amount'] + $assignedFeeDetails['pending_amount']);
									}

									// array_push($feeAmountArray, $courseFee['amount']);
									array_push($paidAmountArray, $assignedFeeDetails['paid_amount']);
									array_push($pendingAmountArray, $assignedFeeDetails['pending_amount']);
									array_push($deductedAmountArray, $assignedFeeDetails['deducted_amount']);
									array_push($fineAmountArray, $assignedFeeDetails['fine_amount']);
									//
								}

								array_push($feeTypeArray, $courseFee['fees_type']);
							} else {
								array_push($feeAmountArray, 0);
								array_push($paidAmountArray, 0);
								array_push($pendingAmountArray, 0);
								array_push($deductedAmountArray, 0);
								array_push($fineAmountArray, 0);
								array_push($feeTypeArray, 0);
							}
						}
						// echo '
';
						// print_r($feeTypeArray);
						$studentlist[$std_key]['fee_amt'] = implode(',', $feeAmountArray);
						$studentlist[$std_key]['paid_amt'] = implode(',', $paidAmountArray);
						$studentlist[$std_key]['pending_amt'] = implode(',', $pendingAmountArray);
						$studentlist[$std_key]['deducted_amt'] = implode(',', $deductedAmountArray);
						$studentlist[$std_key]['fine_amt'] = implode(',', $fineAmountArray);
						$studentlist[$std_key]['fee_type'] = implode(',', $feeTypeArray);

						$studentlist[$std_key]['c_fee_amt'] = count($feeAmountArray);
						$studentlist[$std_key]['c_paid_amt'] = count($paidAmountArray);
						$studentlist[$std_key]['c_pending_amt'] = count($pendingAmountArray);
						$studentlist[$std_key]['c_deducted_amt'] = count($deductedAmountArray);
						$studentlist[$std_key]['c_fine_amt'] = count($fineAmountArray);
						$studentlist[$std_key]['c_fee_type'] = count($feeTypeArray);
						$studentlist[$std_key]['reqFTarr'] = $theReqFTidsHere['r_f_t_ids'];

						foreach ($selectedFeeList as $sf_key => $sf_val) {
							$feeDetailQuery = "SELECT sop.id, sop.student_id, sop.course_fee_id, sop.paid_amount, sop.fine_amount, sop.deducted_amount, sop.pending_amount, sop.fee_completed, cf.amount, cf.fee_values, cf.amount
							FROM students_online_payments sop JOIN course_fees cf ON sop.course_fee_id=cf.id WHERE sop.student_id=" . $std_val['student_id'] . " AND sop.course_fee_id =" . $sf_val['id'];


							$feeDetail = $this->db->query($feeDetailQuery)->row_array();

							if (!empty($feeDetail)) {
								$studentlist[$std_key]['fees'][$sf_val['id']] = $feeDetail;
								$scholarshipDetailQuery = "SELECT * from student_scholarship WHERE student_id = " . $std_val['student_id'] . " AND course_fee_id = " . $feeDetail['course_fee_id'];



								$scholarshipDetail = $this->Admin_model->get_query_row($scholarshipDetailQuery);
								// if ($std_key == 16) {
								// 	print_r($scholarshipDetail);
								// }
								if (!empty($scholarshipDetail)) {
									$studentlist[$std_key]['fees'][$sf_val['id']]['amount'] = $studentlist[$std_key]['fees'][$sf_val['id']]['amount'] - $scholarshipDetail['scholarship_amount'];
								}
							} else {
								$stdAssignedFeelQuery =  "SELECT fas.id, fas.course_fee_id
													FROM fee_assigned_students fas WHERE fas.student_id=" . $std_val['student_id'] . " AND fas.course_fee_id =" . $sf_val['id'];

								$stdAssignedFee =
									$this->db->query($stdAssignedFeelQuery)->row_array();

								// var_dump($stdAssignedFee);
								if (!empty($stdAssignedFee)) {

									$cfDetQuery = "SELECT cf.id AS cfid, cf.fees_type, ft.id, ft.feetype_name,cf.amount,cf.fee_values
													FROM course_fees AS cf, fee_types AS ft WHERE cf.id=" . $stdAssignedFee['course_fee_id'];

									$courseFee = $this->Admin_model->get_query_row($cfDetQuery);

									// echo $courseFee['cfid'];
									$scholarshipDetailQuery = "SELECT * from student_scholarship WHERE student_id = " . $std_val['student_id'] . " AND course_fee_id = " . $courseFee['cfid'];
									$scholarshipDetail = $this->Admin_model->get_query_row($scholarshipDetailQuery);
									// if ($std_key == 16) {
									// 	echo '
 ----------------------------------------------------------->';
									// 	print_r($scholarshipDetailQuery);
									// }
									$feeAmount = $courseFee['amount'];
									$pendingAmount = $courseFee['amount'];

									if (!empty($scholarshipDetail)) {
										$feeAmount = $courseFee['amount'] - $scholarshipDetail['scholarship_amount'];
										$pendingAmount = $courseFee['amount'] - $scholarshipDetail['scholarship_amount'];
									}


									$studentlist[$std_key]['fees'][$sf_val['id']]['id'] = 0;
									$studentlist[$std_key]['fees'][$sf_val['id']]['student_id'] =  $std_val['student_id'];
									$studentlist[$std_key]['fees'][$sf_val['id']]['course_fee_id'] = $stdAssignedFee['course_fee_id'];
									$studentlist[$std_key]['fees'][$sf_val['id']]['paid_amount'] = 0;
									$studentlist[$std_key]['fees'][$sf_val['id']]['fine_amount'] = 0;
									$studentlist[$std_key]['fees'][$sf_val['id']]['deducted_amount'] = 0;
									$studentlist[$std_key]['fees'][$sf_val['id']]['pending_amount'] = $pendingAmount;
									$studentlist[$std_key]['fees'][$sf_val['id']]['amount'] = $feeAmount;
									$studentlist[$std_key]['fees'][$sf_val['id']]['fee_completed'] = 'no';
									$studentlist[$std_key]['fees'][$sf_val['id']]['fee_values'] = $courseFee['fee_values'];
								} else {
									$studentlist[$std_key]['fees'][$sf_val['id']] = null;
								}
							}
						}
					}
				}
			}

			// dd($studentlist);


			$data['search_batch'] = $f_batch;
			$data['search_course_id'] = $f_course;
			$data['search_section'] = $f_section;
			$data['search_feetype'] = $f_feetype;
			$data['selected_fee_types'] = $selectedFeeTypeList;
			$data['search_start_paid_date'] = $startDate;
			$data['search_end_paid_date'] = $endDate;
			$data['selected_fee_list'] = $selectedFeeList;
			$data['studentlist'] = $studentlist;
		}
		$data['report_date'] = date('Y-m-d', strtotime($this->nepali_current_date));
		$data['fees_types'] = $fees_types_list;
		$data['today_date'] = $this->nepali_current_date;
		$this->load->view('admin/header', $data);
		$this->load->view('admin/annual_report_details', $data);
		$this->load->view('admin/footer');
	}


	public function invoice_reports()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/invoice-reports.php'))
			show_404();

		$theResults = array();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$feeTypeWhere = " WHERE id > 0 ";
		$theMainWhere = " WHERE cr.course_id = s.course ";
		if (count($_POST) > 0) {
			//echo '
'; print_r($_POST);
			if (isset($_POST['filter_fee_types']) && !empty($_POST['filter_fee_types']))
				$feeTypeWhere .= " AND id IN(" . implode(",", $_POST['filter_fee_types']) . ")";

			if (isset($_POST['select_particular']) && $_POST['select_particular'] == 'today')
				$theMainWhere .= " AND DATE(sfop.payment_date) ='" . date('Y-m-d', strtotime($this->nepali_current_date)) . "'";
			else if (isset($_POST['select_particular']) && $_POST['select_particular'] == 'select_date_range') {
				if (isset($_POST['filter_from_date']) && $_POST['filter_from_date'] != '')
					$theMainWhere .= " AND DATE(sfop.payment_date) >='" . $_POST['filter_from_date'] . "'";

				if (isset($_POST['filter_to_date']) && $_POST['filter_to_date'] != '')
					$theMainWhere .= " AND DATE(sfop.payment_date) <='" . $_POST['filter_to_date'] . "'";
			}
		}

		$feeTypeQuery = "SELECT id,feetype_name FROM fee_types" . $feeTypeWhere . " AND is_active = 'yes' ORDER BY feetype_name ASC";
		$selectedFeeTypeList = $this->Admin_model->get_query_result($feeTypeQuery);

		$reqFTarr = array();
		$theReqFTidsHere = $this->Admin_model->get_query_row("SELECT GROUP_CONCAT(id SEPARATOR ',') AS r_f_t_ids FROM fee_types" . $feeTypeWhere);
		if ($theReqFTidsHere['r_f_t_ids'] != '')
			$reqFTarr = explode(',', $theReqFTidsHere['r_f_t_ids']);

		$theMainSql = "SELECT sfop.id, sfop.studentId, sfop.invoice_no, sfop.payment_date, sfop.deduction_amount,
            GROUP_CONCAT(sfop.course_fee_id SEPARATOR ',') AS c_f_ids,
            GROUP_CONCAT(sfop.payment_amt SEPARATOR ',') AS pay_amt,
			GROUP_CONCAT(sfop.deduction_amount SEPARATOR ',') AS deduction_amt,
			GROUP_CONCAT(sfop.fine_amount SEPARATOR ',') AS fine_amt,
            s.id AS std_id, s.name AS std_name, s.course AS std_course, s.batch_id AS std_batch_id, 
            sb.roll_no, sb.classroom_id,
            cr.course_id AS cr_course_id, cr.section_id AS cr_sec_id, cr.classroom_name 
            FROM student_fee_online_transactions AS sfop 
            LEFT JOIN students AS s ON s.studentId = sfop.studentId 
            LEFT JOIN student_batch AS sb ON s.id = sb.student_id AND s.batch_id=sb.batch_id 
            LEFT JOIN classroom as cr ON sb.classroom_id = cr.id AND s.course=cr.course_id
            $theMainWhere
            GROUP By sfop.invoice_no
            ORDER BY sfop.id  ASC";
		//echo $theMainWhere.'
'.$theMainSql;exit; if (!empty($selectedFeeTypeList) && count($_POST) > 0) $theResults = $this->Admin_model->get_query_result($theMainSql); if (!empty($theResults)) { $theSno = 0; foreach ($theResults as $key => $value) { $theResults[$key]['sno'] = ++$theSno; $xxx = array(); $cfAmtArr = explode(',', $value['pay_amt']); $cfidsArr = explode(',', $value['c_f_ids']); if (!empty($cfidsArr)) { foreach ($cfidsArr as $tk => $tv) { $cfDetQuery = "SELECT cf.id AS cfid, cf.fees_type, ft.id, ft.feetype_name FROM course_fees AS cf, fee_types AS ft WHERE cf.id=" . $tv . " AND cf.fees_type=ft.id"; $cfDetails = $this->Admin_model->get_query_result($cfDetQuery); if (isset($cfDetails[0]['feetype_name']) && $cfDetails[0]['feetype_name'] != '' && in_array($cfDetails[0]['id'], $reqFTarr)) { if (!isset($xxx[$key][$cfDetails[0]['feetype_name']])) $xxx[$key][$cfDetails[0]['feetype_name']] = $cfAmtArr[$tk]; else $xxx[$key][$cfDetails[0]['feetype_name']] = ($xxx[$key][$cfDetails[0]['feetype_name']] + $cfAmtArr[$tk]); } } } foreach ($selectedFeeTypeList as $ftkey => $ftval) { if (!isset($xxx[$key][$ftval['feetype_name']])) $theResults[$key][$ftval['feetype_name']] = 0; else $theResults[$key][$ftval['feetype_name']] = $xxx[$key][$ftval['feetype_name']]; } } } //echo '
';print_r($feeTypeList);
		//echo '
';print_r($theResults);
		//exit;

		//$data['fee_types_list'] = $feeTypeList;
		$data['all_fee_types'] = $this->Admin_model->get_query_result("SELECT id,feetype_name FROM fee_types");
		$data['selected_fee_types'] = $selectedFeeTypeList;
		$data['the_results'] = $theResults;

		$this->load->view('admin/header', $data);
		$this->load->view('admin/invoice-reports', $data);
		$this->load->view('admin/footer');
	}

	public function invoice_fee_reports()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/invoice-fee-reports.php'))
			show_404();

		$theResults = array();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$feeTypeWhere = " WHERE id > 0 ";
		$theMainWhere = " WHERE cr.course_id = s.course";
		// $theMainWhere = "";
		if (count($_POST) > 0) {
			//echo '
'; print_r($_POST);
			if (isset($_POST['filter_fee_types']) && !empty($_POST['filter_fee_types']))
				$feeTypeWhere .= " AND id IN(" . implode(",", $_POST['filter_fee_types']) . ")";

			if (isset($_POST['select_particular']) && $_POST['select_particular'] == 'today')
				$theMainWhere .= " AND DATE(sfop.payment_date) ='" . date('Y-m-d', strtotime($this->nepali_current_date)) . "'";
			else if (isset($_POST['select_particular']) && $_POST['select_particular'] == 'select_date_range') {
				if (isset($_POST['filter_from_date']) && $_POST['filter_from_date'] != '')
					$theMainWhere .= " AND DATE(sfop.payment_date) >='" . $_POST['filter_from_date'] . "'";

				if (isset($_POST['filter_to_date']) && $_POST['filter_to_date'] != '')
					$theMainWhere .= " AND DATE(sfop.payment_date) <='" . $_POST['filter_to_date'] . "'";
			}
		}

		$feeTypeQuery = "SELECT id,feetype_name FROM fee_types" . $feeTypeWhere . " AND is_active = 'yes' ORDER BY feetype_name ASC";
		$selectedFeeTypeList = $this->Admin_model->get_query_result($feeTypeQuery);

		$reqFTarr = array();
		$theReqFTidsHere = $this->Admin_model->get_query_row("SELECT GROUP_CONCAT(id SEPARATOR ',') AS r_f_t_ids FROM fee_types" . $feeTypeWhere);
		if ($theReqFTidsHere['r_f_t_ids'] != '')
			$reqFTarr = explode(',', $theReqFTidsHere['r_f_t_ids']);

		$theMainSql = "SELECT sfop.id, sfop.studentId, sfop.invoice_no, sfop.payment_date, sfop.deduction_amount,
						GROUP_CONCAT(sfop.course_fee_id SEPARATOR ',') AS c_f_ids,
						GROUP_CONCAT(sfop.payment_amt SEPARATOR ',') AS pay_amt,
						GROUP_CONCAT(sfop.deduction_amount SEPARATOR ',') AS deduction_amt,
						GROUP_CONCAT(sfop.fine_amount SEPARATOR ',') AS fine_amt,
						s.id AS std_id, s.name AS std_name, s.course AS std_course, s.batch_id AS std_batch_id, 
						sb.roll_no, sb.classroom_id,
						cr.course_id AS cr_course_id, cr.section_id AS cr_sec_id, cr.classroom_name 
						FROM student_fee_online_transactions AS sfop 
						LEFT JOIN students AS s ON s.studentId = sfop.studentId 
            			LEFT JOIN student_batch AS sb ON s.id = sb.student_id AND s.batch_id=sb.batch_id 
            			LEFT JOIN classroom as cr ON sb.classroom_id = cr.id AND s.course=cr.course_id
						$theMainWhere  
						GROUP By sfop.invoice_no
            			ORDER BY sfop.id  ASC";

		if (!empty($selectedFeeTypeList) && count($_POST) > 0)
			$theResults = $this->Admin_model->get_query_result($theMainSql);

		// dd($theResults);

		$finalResult = array();
		if (!empty($theResults)) {
			$theSno = 0;
			foreach ($theResults as $key => $value) {
				$theResults[$key]['sno'] = ++$theSno;
				$selectedFee = array();
				$cfAmtArr = explode(',', $value['pay_amt']);
				$cfidsArr = explode(',', $value['c_f_ids']);
				if (!empty($cfidsArr)) {
					foreach ($cfidsArr as $tk => $tv) {
						$cfDetQuery = "SELECT cf.id AS cfid, cf.fees_type, ft.id, ft.feetype_name FROM course_fees AS cf, fee_types AS ft WHERE cf.id=" . $tv . " AND cf.fees_type=ft.id";
						$cfDetails = $this->Admin_model->get_query_result($cfDetQuery);

						if (isset($cfDetails[0]['feetype_name']) && $cfDetails[0]['feetype_name'] != '' && in_array($cfDetails[0]['id'], $reqFTarr)) {
							if (!isset($selectedFee[$key][$cfDetails[0]['feetype_name']]))
								$selectedFee[$key][$cfDetails[0]['feetype_name']] = $cfAmtArr[$tk];
							else
								$selectedFee[$key][$cfDetails[0]['feetype_name']] = ($selectedFee[$key][$cfDetails[0]['feetype_name']] + $cfAmtArr[$tk]);
						}
					}
				}

				foreach ($selectedFeeTypeList as $ftkey => $ftval) {
					if (!isset($selectedFee[$key][$ftval['feetype_name']])) {
						$theResults[$key][$ftval['feetype_name']] = 0;
						// array_push($finalResult, $theResults[$key]);
					} else {
						$theResults[$key][$ftval['feetype_name']] = $selectedFee[$key][$ftval['feetype_name']];

						// echo $selectedFee[$key][$ftval['feetype_name']] .'=================>'.$ftval['feetype_name'] .'
'; // echo '
';

						// if(isset)

						array_push($finalResult, $theResults[$key]);

						// print_r($theResults[$key]);
					}
				}
			}
		}

		// dd(($theResults));

		//echo '
';print_r($feeTypeList);
		//echo '
';print_r($theResults);
		//exit;

		//$data['fee_types_list'] = $feeTypeList;
		$data['all_fee_types'] = $this->Admin_model->get_query_result("SELECT id,feetype_name FROM fee_types");
		$data['selected_fee_types'] = $selectedFeeTypeList;
		$data['the_results'] = $finalResult;

		$this->load->view('admin/header', $data);
		$this->load->view('admin/invoice-fee-reports', $data);
		$this->load->view('admin/footer');
	}


	public function fee_revert_reports()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/fee-revert-reports.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		//echo '
'; print_r($data['school_info']);exit;
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$theResults = array();
		$feeTypeWhere = " WHERE id > 0 ";
		$theMainWhere = " WHERE fr.id > 0 ";
		$courseSelected = '';
		if (count($_POST) > 0) {
			//echo '
'; print_r($_POST);exit;
			if (isset($_POST['filter_fee_types']) && !empty($_POST['filter_fee_types']))
				$feeTypeWhere .= " AND id IN(" . implode(",", $_POST['filter_fee_types']) . ")";

			if (isset($_POST['filter_course']) && !empty($_POST['filter_course']))
				$courseSelected .= " AND s.course IN(" . implode(",", $_POST['filter_course']) . ")";

			if (isset($_POST['select_particular']) && $_POST['select_particular'] == 'today')
				$theMainWhere .= " AND DATE(fr.c_date) ='" . date('Y-m-d', strtotime($this->nepali_current_date)) . "'";
			else if (isset($_POST['select_particular']) && $_POST['select_particular'] == 'select_date_range') {
				if (isset($_POST['filter_from_date']) && $_POST['filter_from_date'] != '')
					$theMainWhere .= " AND DATE(fr.c_date) >='" . $_POST['filter_from_date'] . "'";

				if (isset($_POST['filter_to_date']) && $_POST['filter_to_date'] != '')
					$theMainWhere .= " AND DATE(fr.c_date) <='" . $_POST['filter_to_date'] . "'";
			}
		}

		$theReqFTidsHere = $this->Admin_model->get_query_row("SELECT GROUP_CONCAT(id SEPARATOR ',') AS r_f_t_ids FROM fee_types" . $feeTypeWhere);
		if ($theReqFTidsHere['r_f_t_ids'] != '')
			$selectedFeeTypes = $theReqFTidsHere['r_f_t_ids'];

		$theMainSql = "SELECT fr.id, fr.studentId, fr.invoice_no, fr.payment_amt, fr.c_date, fr.done_by, fr.course_fee_id,  
			cf.id AS cf_id, cf.fee_values AS fee_name, cf.fees_type, feet.feetype_name,  
			s.id AS std_id, s.name AS std_name, s.course AS std_course_id, c.course_name 
			FROM student_fee_reverts AS fr 
			JOIN course_fees AS cf ON fr.course_fee_id = cf.id AND cf.fees_type IN($selectedFeeTypes) 
			JOIN fee_types AS feet on cf.fees_type=feet.id 
			JOIN students AS s ON fr.studentId=s.studentId $courseSelected
			JOIN course AS c ON s.course=c.id 
			$theMainWhere 
			ORDER BY fr.c_date DESC";

		if (count($_POST) > 0)
			$theResults = $this->Admin_model->get_query_result($theMainSql);

		$data['course_list'] = $this->db->query("select id,course_name from course WHERE is_active='yes'")->result_array();
		$data['all_fee_types'] = $this->Admin_model->get_query_result("SELECT id,feetype_name FROM fee_types");
		$data['the_results'] = $theResults;

		$this->load->view('admin/header', $data);
		$this->load->view('admin/fee-revert-reports', $data);
		$this->load->view('admin/footer');
	}


	public function due_fee_reports()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/due_fee_report.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$startDate = '';
		$endDate = '';
		$condition = '';
		$studentlist = array();
		$selectedFeeTypes = array();
		$batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes'));
		$data['batches'] = $batches;
		$courses = $this->Admin_model->get_table_info('course', '', '', 'ASC');
		$data['course'] = $courses;
		$fees_types_list = $this->Admin_model->get_fees_type();
		// dd($fees_types_list);
		$data['fees_types'] = $fees_types_list;
		$ft_where = " ";
		if (count($_POST)) {
			$se_batch = (isset($_POST['f_batch']) && !empty($_POST['f_batch'])) ? $_POST['f_batch'] : '';
			$se_course = (isset($_POST['f_course']) && !empty($_POST['f_course'])) ? $_POST['f_course'] : '';
			$se_section = (isset($_POST['f_section']) && !empty($_POST['f_section'])) ? $_POST['f_section'] : '';
			$se_payment_status = (isset($_POST['payment_status']) && !empty($_POST['payment_status'])) ? $_POST['payment_status'] : '';
			$search_feetypes = (isset($_POST['f_feetype']) && !empty($_POST['f_feetype'])) ? $_POST['f_feetype'] : '';
			if ($search_feetypes != '') {
				$ft_where = " AND id IN (" . implode(',', $search_feetypes) . ")";
			}

			$selectedFeeTypes = $this->db->query("SELECT * FROM fee_types WHERE id > 0" . $ft_where)->result_array();

			if ($se_course != '')
				$condition .= " AND cl.course_id=$se_course";

			if ($se_section != '')
				$condition .= " AND cl.section_id IN (" . implode(',', $se_section) . ")";



			$startDate = (isset($_POST['f_start_paid_date']) && !empty($_POST['f_start_paid_date'])) ? $_POST['f_start_paid_date'] : '';
			$endDate   = (isset($_POST['f_end_paid_date']) && !empty($_POST['f_end_paid_date'])) ? $_POST['f_end_paid_date'] : '';

			$studentlist = $this->db->query("SELECT s.*,c.course_name,se.section_name,sb.roll_no FROM students s JOIN student_batch sb ON s.id=sb.student_id JOIN classroom cl ON cl.id=sb.classroom_id JOIN course c ON c.id=cl.course_id JOIN section se ON se.id=cl.section_id WHERE sb.batch_id=$se_batch $condition")->result_array();
			$batch_course_fees = $this->db->query("SELECT GROUP_CONCAT(id) as cf_ids FROM course_fees WHERE batch_id=$se_batch AND course_id=$se_course")->row_array();

			if ($batch_course_fees != '')
				$condition .= " AND cf.id IN (" . $batch_course_fees['cf_ids'] . ")";

			$selected_ft_ids = $this->db->query("SELECT GROUP_CONCAT(id) as selected_ft_ids FROM fee_types WHERE id > 0 " . $ft_where)->row_array();
			if ($selected_ft_ids != '')
				$condition1 = "  AND cf.fees_type IN (" . $selected_ft_ids['selected_ft_ids'] . ")";

			// $studentlist=$this->db->query("SELECT s.*,c.course_name,se.section_name, GROUP_CONCAT(cf.id) AS assigned_cf_ids FROM students s JOIN student_batch sb ON s.id=sb.student_id JOIN classroom cl ON cl.id=sb.classroom_id JOIN course c ON c.id=cl.course_id JOIN section se ON se.id=cl.section_id LEFT JOIN fee_assigned_students fas ON fas.student_id=s.id
			// 								JOIN course_fees cf ON cf.id=fas.course_fee_id WHERE sb.batch_id=$se_batch $condition GROUP By s.id")->result_array();
			if (count($studentlist) > 0) {
				$theSno = 0;
				foreach ($studentlist as $skey => $student) {
					$studentlist[$skey]['sno'] = ++$theSno;
					$sub_arr = array();
					$payDetail = $this->Admin_model->getFeesBy_status_feetypes($se_batch, $se_course, $student['id'], $se_payment_status, $selected_ft_ids, $startDate, $endDate);
					// echo "
";
					// print_r($payDetail);

					$selected_ft_ids_arr_values = explode(',', $selected_ft_ids['selected_ft_ids']);
					$selected_ft_ids_arr = $this->db->query("SELECT id as ft_id,feetype_name FROM fee_types WHERE id > 0 " . $ft_where)->result_array();
					// echo "
";
					// print_r($selected_ft_ids_arr_values);
					foreach ($payDetail as $pdkey => $fe_value) {

						if (in_array($fe_value['fees_type'], $selected_ft_ids_arr_values)) {

							if (isset($sub_arr[$skey][$fe_value['fees_type']])) {
								$sub_arr[$skey][$fe_value['fees_type']]['total_assigned_amount'] += (int)$fe_value['cf_total_amount'];
								$sub_arr[$skey][$fe_value['fees_type']]['total_paid_amount'] += (int)$fe_value['total_paid_amount'];
								$sub_arr[$skey][$fe_value['fees_type']]['total_fine_amount'] += (int)$fe_value['total_fine_amount'];
								$sub_arr[$skey][$fe_value['fees_type']]['total_diduction_amount'] += (int)$fe_value['total_deduction_amount'];
								$sub_arr[$skey][$fe_value['fees_type']]['total_pending_amount'] += (int)$fe_value['total_pending_amount'];
							} else {
								$sub_arr[$skey][$fe_value['fees_type']]['total_assigned_amount'] = (int)$fe_value['cf_total_amount'];
								$sub_arr[$skey][$fe_value['fees_type']]['total_paid_amount'] = (int)$fe_value['total_paid_amount'];
								$sub_arr[$skey][$fe_value['fees_type']]['total_fine_amount'] = (int)$fe_value['total_fine_amount'];
								$sub_arr[$skey][$fe_value['fees_type']]['total_diduction_amount'] = (int)$fe_value['total_deduction_amount'];
								$sub_arr[$skey][$fe_value['fees_type']]['total_pending_amount'] = (int)$fe_value['total_pending_amount'];
							}
						}
					}
					foreach ($selected_ft_ids_arr as $ftkey => $ftval) {

						if (!isset($sub_arr[$skey][$ftval['ft_id']])) {
							$studentlist[$skey][$ftval['ft_id']]['total_assigned_amount'] = 0;
							$studentlist[$skey][$ftval['ft_id']]['total_paid_amount'] = 0;
							$studentlist[$skey][$ftval['ft_id']]['total_fine_amount'] = 0;
							$studentlist[$skey][$ftval['ft_id']]['total_diduction_amount'] = 0;
							$studentlist[$skey][$ftval['ft_id']]['total_pending_amount'] = 0;
						} else {
							$studentlist[$skey][$ftval['ft_id']]['total_assigned_amount'] = $sub_arr[$skey][$ftval['ft_id']]['total_assigned_amount'];
							$studentlist[$skey][$ftval['ft_id']]['total_paid_amount'] = $sub_arr[$skey][$ftval['ft_id']]['total_paid_amount'];
							$studentlist[$skey][$ftval['ft_id']]['total_fine_amount'] = $sub_arr[$skey][$ftval['ft_id']]['total_fine_amount'];
							$studentlist[$skey][$ftval['ft_id']]['total_diduction_amount'] = $sub_arr[$skey][$ftval['ft_id']]['total_diduction_amount'];
							$studentlist[$skey][$ftval['ft_id']]['total_pending_amount'] = $sub_arr[$skey][$ftval['ft_id']]['total_pending_amount'];
						}
					}
				}

				// dd($studentlist);
				// exit;




			}
		}
		$data['selected_feetype'] = $selectedFeeTypes;
		$data['search_start_paid_date'] = $startDate;
		$data['search_end_paid_date'] = $endDate;
		$data['students'] = $studentlist;

		$this->load->view('admin/header', $data);
		$this->load->view('admin/due_fee_report', $data);
		$this->load->view('admin/footer');
	}


	function total_due_report()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/total_due_report.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes'));
		$data['batches'] = $batches;
		$courses = $this->Admin_model->get_table_info('course', '', '', 'ASC');
		$data['course'] = $courses;
		$condition = '';
		$student_fee = array();
		if (isset($_POST['send_alert']) && ($_POST['send_alert'] == 'Send Alert')) {
			print_r($_POST);
		} else {
			if (count($_POST)) {
				$se_batch = (isset($_POST['f_batch']) && !empty($_POST['f_batch'])) ? $_POST['f_batch'] : '';
				$se_course = (isset($_POST['f_course']) && !empty($_POST['f_course'])) ? $_POST['f_course'] : '';
				$se_section = (isset($_POST['f_section']) && !empty($_POST['f_section'])) ? $_POST['f_section'] : '';

				if ($se_course != '')
					$condition .= " AND cl.course_id=$se_course";

				if ($se_section != '')
					$condition .= " AND cl.section_id IN (" . implode(',', $se_section) . ")";

				$studentlist = $this->db->query("SELECT s.id as student_id,s.name,s.course,s.batch_id,s.email,s.studentId,s.mobile,s.emergency_contact_name,s.emergency_contact_number,c.course_name,se.section_name,sb.roll_no FROM students s JOIN student_batch sb ON s.id=sb.student_id JOIN classroom cl ON cl.id=sb.classroom_id JOIN course c ON c.id=cl.course_id JOIN section se ON se.id=cl.section_id WHERE sb.batch_id=$se_batch $condition ORDER BY se.section_name, sb.roll_no")->result_array();
				if (count($studentlist) > 0) {

					foreach ($studentlist as $s_key => $student) {
						$total_amount = 0;
						$total_paid_amount = 0;
						$total_pending_amount = 0;
						$stud_id = $student['student_id'];
						$fee_query = "SELECT cf.id as coursefee_id,cf.fees_type,cf.amount as cf_total_amount,fas.id,ft.feetype_name,ft.id,
										IF(sop.id is null,0,sop.id) as sop_id,
										IF(sop.paid_amount is null,0,sop.paid_amount) as paid_amount,
										IF(sop.fine_amount is null,0,sop.fine_amount) as fine_amount,
										IF(sop.deducted_amount is null,0,sop.deducted_amount) as deducted_amount,
										IF(sop.pending_amount is null,cf.amount,sop.pending_amount) as pending_amount 
										FROM course_fees cf 
										JOIN fee_assigned_students fas ON fas.course_fee_id=cf.id AND fas.student_id=$stud_id 
										JOIN fee_types ft on ft.id = cf.fees_type 
										LEFT JOIN students_online_payments sop on cf.id = sop.course_fee_id AND sop.student_id = " . $stud_id . " WHERE batch_id =  $se_batch ";
						$fees_rst = $this->db->query($fee_query)->result_array();


						foreach ($fees_rst as $f_val) {
							$scholarshipDetailQuery = "SELECT * from student_scholarship WHERE student_id = " . $student['student_id'] . " AND course_fee_id = " . $f_val['coursefee_id'] . "";
							$scholarshipDetail = $this->Admin_model->get_query_row($scholarshipDetailQuery);

							$feeAmount = $f_val['cf_total_amount'];
							$paidAmount = $f_val['paid_amount'];
							$pendingAmount = $f_val['pending_amount'];

							if (!empty($scholarshipDetail)) {
								$feeAmount = $feeAmount - $scholarshipDetail['scholarship_amount'];
								$pendingAmount = $feeAmount - $scholarshipDetail['scholarship_amount'];
							} else {
							}

							$total_amount += $feeAmount;
							$total_paid_amount += $paidAmount;
							$total_pending_amount += $pendingAmount;
						}
						$student_fee[] = array(
							'student_id' => $student['student_id'],
							'student_name' => $student['name'],
							'roll_no' => $student['roll_no'],
							'studentId' => $student['studentId'],
							'course_name' => $student['course_name'],
							'section_name' => $student['section_name'],
							'emergency_contact_name' => $student['emergency_contact_name'],
							'emergency_contact_number' => $student['emergency_contact_number'],
							'total_assigned_amount' => $total_amount,
							'total_paid_amount' => $total_paid_amount,
							'total_pending_amount' => $total_amount - $total_paid_amount

						);
					}
				}
			}
			$data['student_fees'] = $student_fee;
			$data['today_date'] = $this->nepali_current_date;
			$this->load->view('admin/header', $data);
			$this->load->view('admin/total_due_report', $data);
			$this->load->view('admin/footer');
		}
	}

	// Developer: Shivakumar
	// Date: 03-06-2022
	public function assign_additional_subjects_to_students()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/assign-addi-sub-to-students.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$currentBatch = 0;
		if (isset($data['school_info']['batch_id']) && $data['school_info']['batch_id'] != '')
			$currentBatch = $data['school_info']['batch_id'];

		$theResults = array();
		$theOptSubs = array();

		if (count($_POST) > 0) {
			if ($_POST['clicked_on'] == 'UpdateData') {
				if (isset($_POST['student']) && !empty($_POST['student'])) { //echo '
'; print_r($_POST['student']);
					foreach ($_POST['student'] as $sid => $sosArr) {
						//echo '
'; print_r($sosArr);
						$theUpdateData = '';
						foreach ($sosArr as $osId => $flag) {
							if ($flag == 'yes') {
								if ($theUpdateData == '')
									$theUpdateData = $osId;
								else
									$theUpdateData .= ',' . $osId;
							}
						}
						//echo $sid.' == '.$theUpdateData.'
'; $this->db->query("DELETE FROM student_additional_subjects WHERE student_id=" . $sid . " AND course_id=" . $_POST['filter_by_course'] . " AND batch_id=" . $_POST['filter_by_batch']); if ($theUpdateData != '') { $udata['batch_id'] = $_POST['filter_by_batch']; $udata['course_id'] = $_POST['filter_by_course']; $udata['student_id'] = $sid; $udata['subjects_list'] = $theUpdateData; $udata['created_on'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date)); $udata['created_by'] = $_SESSION['admin_name']; $this->db->insert('student_additional_subjects', $udata); } /*$getPrevRecds = $this->db->query("SELECT id FROM student_additional_subjects WHERE student_id=".$sid." AND course_id=".$_POST['filter_by_course']." AND batch_id=".$_POST['filter_by_batch'])->result_array(); if(!empty($getPrevRecds)) { if($theUpdateData==''){ $this->db->query("DELETE FROM student_additional_subjects WHERE id=".$getPrevRecds[0]['id']); } else { $udata['subjects_list'] = $theUpdateData; $udata['modified_on'] = date('Y-m-d H:i:s',strtotime($this->nepali_current_date)); $udata['modified_by'] = $_SESSION['admin_name']; $this->db->where(array('id'=>$getPrevRecds[0]['id'])); $this->db->update('student_additional_subjects', $udata); } } else { if($theUpdateData!='') { $udata['batch_id'] = $_POST['filter_by_batch']; $udata['course_id'] = $_POST['filter_by_course']; $udata['student_id'] = $sid; $udata['subjects_list'] = $theUpdateData; $udata['created_on'] = date('Y-m-d H:i:s',strtotime($this->nepali_current_date)); $udata['created_by'] = $_SESSION['admin_name']; $this->db->insert('student_additional_subjects', $udata); } }*/ } //exit; $this->session->set_flashdata('success', "The details have been updated successfully."); } } $whereCond = " WHERE S.id > 0 AND SB.batch_id=" . $_POST['filter_by_batch'] . " AND CR.course_id=" . $_POST['filter_by_course']; $orderBy = " ORDER BY S.name ASC "; if ($currentBatch == $_POST['filter_by_batch'] && isset($_POST['filter_by_section']) && !empty($_POST['filter_by_section'])) $whereCond .= " AND CR.section_id IN(" . implode(",", $_POST['filter_by_section']) . ")"; $theSql = "SELECT S.id,S.name,S.studentId, SB.roll_no,SB.classroom_id, CR.course_id,CR.section_id FROM students AS S JOIN student_batch AS SB on SB.student_id = S.id JOIN classroom AS CR ON SB.classroom_id = CR.id " . $whereCond . $orderBy; $theResults = $this->Admin_model->get_query_result($theSql); if (!empty($theResults)) { foreach ($theResults as $key => $sutd) { $stdOptSubjects = $this->db->query("SELECT subjects_list FROM student_additional_subjects WHERE student_id=" . $sutd['id'] . " AND course_id=" . $_POST['filter_by_course'] . " AND batch_id=" . $_POST['filter_by_batch'])->result_array(); if (!empty($stdOptSubjects)) { $theResults[$key]['the_add_subjects'] = $stdOptSubjects[0]['subjects_list']; $getOSdets = $this->db->query("SELECT GROUP_CONCAT(subject_name) AS sub_names_here FROM subject WHERE id IN(" . $stdOptSubjects[0]['subjects_list'] . ")")->result_array(); $theResults[$key]['the_add_subject_details'] = ''; if (isset($getOSdets[0]['sub_names_here'])) $theResults[$key]['the_add_subject_details'] = $theResults[$key]['the_add_subject_details']; } else { $theResults[$key]['the_add_subjects'] = ''; $theResults[$key]['the_add_subject_details'] = ''; } } } $courseSubjects = $this->db->query("SELECT GROUP_CONCAT(subject_id) AS c_s_ids FROM course_subjects WHERE course_id=" . $_POST['filter_by_course'])->result_array(); if (isset($courseSubjects[0]['c_s_ids']) && $courseSubjects[0]['c_s_ids'] != '') { $csIdsArr = explode(',', $courseSubjects[0]['c_s_ids']); $s = 0; foreach ($csIdsArr as $key => $subId) { $subDetails = $this->db->query("SELECT id,subject_name FROM subject WHERE id=$subId AND is_additional='Yes' AND is_active='yes'")->result_array(); if (!empty($subDetails)) { $theOptSubs[$s]['id'] = $subDetails[0]['id']; $theOptSubs[$s]['sub_name'] = $subDetails[0]['subject_name']; $s++; } } } } $data['course'] = $this->db->query("select * from course WHERE is_active='yes'")->result_array(); $data['batch'] = $this->Admin_model->get_batches(); $data['currentBatch'] = $currentBatch; $data['theResults'] = $theResults; $data['theOptSubs'] = $theOptSubs; $this->load->view('admin/header', $data); $this->load->view('admin/assign-addi-sub-to-students', $data); $this->load->view('admin/footer'); } public function assign_optional_subjects_to_students() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/assign-opt-sub-to-students.php')) show_404(); $data['currentURL'] = current_url(); $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $data['menulist'] = $this->Admin_model->get_adminMenu(); $currentBatch = 0; if (isset($data['school_info']['batch_id']) && $data['school_info']['batch_id'] != '') $currentBatch = $data['school_info']['batch_id']; $theResults = array(); $theOptSubs = array(); if (count($_POST) > 0) { if ($_POST['clicked_on'] == 'UpdateData') { //echo '
'; print_r($_POST);
				if (isset($_POST['student']) && !empty($_POST['student'])) {
					foreach ($_POST['student'] as $sid => $sosArr) {
						$theUpdateData = '';
						foreach ($sosArr as $osId => $flag) {
							if ($flag == 'yes') {
								if ($theUpdateData == '')
									$theUpdateData = $osId;
								else
									$theUpdateData .= ',' . $osId;
							}
						}
						//echo $sid.' == '.$theUpdateData.'
'; $this->db->query("DELETE FROM student_optional_subjects WHERE student_id=" . $sid . " AND course_id=" . $_POST['filter_by_course'] . " AND batch_id=" . $_POST['filter_by_batch']); if ($theUpdateData != '') { $udata['batch_id'] = $_POST['filter_by_batch']; $udata['course_id'] = $_POST['filter_by_course']; $udata['student_id'] = $sid; $udata['subjects_list'] = $theUpdateData; $udata['created_on'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date)); $udata['created_by'] = $_SESSION['admin_name']; $this->db->insert('student_optional_subjects', $udata); } /*$getPrevRecds = $this->db->query("SELECT id FROM student_optional_subjects WHERE student_id=".$sid." AND course_id=".$_POST['filter_by_course']." AND batch_id=".$_POST['filter_by_batch'])->result_array(); if(!empty($getPrevRecds)) { if($theUpdateData=='') $this->db->query("DELETE FROM student_optional_subjects WHERE id=".$getPrevRecds[0]['id']); else { $udata['subjects_list'] = $theUpdateData; $udata['modified_on'] = date('Y-m-d H:i:s',strtotime($this->nepali_current_date)); $udata['modified_by'] = $_SESSION['admin_name']; $this->db->where(array('id'=>$getPrevRecds[0]['id'])); $this->db->update('student_optional_subjects', $udata); } } else { if($theUpdateData!='') { $udata['batch_id'] = $_POST['filter_by_batch']; $udata['course_id'] = $_POST['filter_by_course']; $udata['student_id'] = $sid; $udata['subjects_list'] = $theUpdateData; $udata['created_on'] = date('Y-m-d H:i:s',strtotime($this->nepali_current_date)); $udata['created_by'] = $_SESSION['admin_name']; $this->db->insert('student_optional_subjects', $udata); } }*/ } $this->session->set_flashdata('success', "The details have been updated successfully."); } } $whereCond = " WHERE S.id > 0 AND SB.batch_id=" . $_POST['filter_by_batch'] . " AND CR.course_id=" . $_POST['filter_by_course']; $orderBy = " ORDER BY S.name ASC "; if ($currentBatch == $_POST['filter_by_batch'] && isset($_POST['filter_by_section']) && !empty($_POST['filter_by_section'])) $whereCond .= " AND CR.section_id IN(" . implode(",", $_POST['filter_by_section']) . ")"; $theSql = "SELECT S.id,S.name,S.studentId, SB.roll_no,SB.classroom_id, CR.course_id,CR.section_id FROM students AS S JOIN student_batch AS SB on SB.student_id = S.id JOIN classroom AS CR ON SB.classroom_id = CR.id " . $whereCond . $orderBy; $theResults = $this->Admin_model->get_query_result($theSql); if (!empty($theResults)) { foreach ($theResults as $key => $sutd) { $stdOptSubjects = $this->db->query("SELECT subjects_list FROM student_optional_subjects WHERE student_id=" . $sutd['id'] . " AND course_id=" . $_POST['filter_by_course'] . " AND batch_id=" . $_POST['filter_by_batch'])->result_array(); if (!empty($stdOptSubjects)) { $theResults[$key]['the_opt_subjects'] = $stdOptSubjects[0]['subjects_list']; $getOSdets = $this->db->query("SELECT GROUP_CONCAT(subject_name) AS sub_names_here FROM subject WHERE id IN(" . $stdOptSubjects[0]['subjects_list'] . ")")->result_array(); $theResults[$key]['the_opt_subject_details'] = ''; if (isset($getOSdets[0]['sub_names_here'])) $theResults[$key]['the_opt_subject_details'] = $theResults[$key]['the_opt_subject_details']; } else { $theResults[$key]['the_opt_subjects'] = ''; $theResults[$key]['the_opt_subject_details'] = ''; } } } //$getCSql = "SELECT GROUP_CONCAT(subject_id) AS c_s_ids FROM course_subjects WHERE course_id=".$_POST['filter_by_course']; $courseSubjects = $this->db->query("SELECT GROUP_CONCAT(subject_id) AS c_s_ids FROM course_subjects WHERE course_id=" . $_POST['filter_by_course'])->result_array(); if (isset($courseSubjects[0]['c_s_ids']) && $courseSubjects[0]['c_s_ids'] != '') { $csIdsArr = explode(',', $courseSubjects[0]['c_s_ids']); $s = 0; foreach ($csIdsArr as $key => $subId) { $subDetails = $this->db->query("SELECT id,subject_name FROM subject WHERE id=$subId AND is_optional='Yes' AND is_active='yes'")->result_array(); if (!empty($subDetails)) { $theOptSubs[$s]['id'] = $subDetails[0]['id']; $theOptSubs[$s]['sub_name'] = $subDetails[0]['subject_name']; $s++; } } } } //echo '
'; print_r($theResults);exit;

		$data['course'] = $this->db->query("select * from course WHERE is_active='yes'")->result_array();
		$data['batch'] = $this->Admin_model->get_batches();
		$data['currentBatch'] = $currentBatch;
		$data['theResults'] = $theResults;
		$data['theOptSubs'] = $theOptSubs;

		$this->load->view('admin/header', $data);
		$this->load->view('admin/assign-opt-sub-to-students', $data);
		$this->load->view('admin/footer');
	}


	function checktime()
	{
		echo date('l jS \of F Y h:i:s A', strtotime($this->nepali_current_date)) . "
"; echo date('l jS \of F Y h:i:s A') . "
"; echo $today = date('Y-m-d', strtotime('today 00:00:00')); } function assign_due_fees() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/assign_due_fees.php')) show_404(); $data['currentURL'] = current_url(); $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $data['menulist'] = $this->Admin_model->get_adminMenu(); $batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes')); $data['batches'] = $batches; $courses = $this->Admin_model->get_table_info('course', '', '', 'ASC'); $data['course'] = $courses; $condition = ''; $student_fee = array(); if (isset($_POST['save']) && $_POST['save'] == 'Save') { // print_r($_POST); $amount_arr = $_POST['opening_balance']; $batch_arr = $_POST['student_batch']; $course_arr = $_POST['student_course']; $section_arr = $_POST['student_section']; $cfIds_arr = $_POST['course_fee']; foreach ($amount_arr as $key => $value) { $amount = $amount_arr[$key]; $batchId = $batch_arr[$key]; $courseId = $course_arr[$key]; $sectionId = $section_arr[$key]; $courseFeeId = $cfIds_arr[$key]; $grouped = 'no'; $hostel_plan = NULL; $route_id = NULL; $nowDate = $this->nepali_current_date; // $cfId = // print_r($_POST); if ($value != 0) { if ($courseFeeId != '') { // Creating new fee of due balance. $data_to_update = array( 'amount' => $amount, 'modified' => $nowDate, ); $insertQuery = $this->Admin_model->add_edit_table('course_fees', $courseFeeId, $data_to_update); } else { // Creating new fee of due balance. $data_to_db = array( 'batch_id' => $batchId, 'course_id' => $courseId, 'fees_type' => 99, 'fees_name' => 'Due Balance', 'amount' => $amount, 'due_date' => $this->nepali_current_date, 'grouped' => $grouped, 'fee_values' => 'Due Balance', 'hostel_plan_id' => $hostel_plan, 'route_id' => $route_id, 'created' => $nowDate, ); $insertQuery = $this->Admin_model->add_edit_table('course_fees', 0, $data_to_db); // Assigning Fee to student/ $lastInsertedId = $this->db->insert_id(); $data_to_fas_db = array( 'student_id' => $key, 'course_fee_id' => $lastInsertedId, 'created_at' => $nowDate, ); $feeAssignedQuery = $this->Admin_model->add_edit_table('fee_assigned_students', 0, $data_to_fas_db); } } } if ($insertQuery || $feeAssignedQuery) { $this->session->set_flashdata('success_msg', str_replace('%s', 'Student opening balance', THE_ADD_SUCCESS_MSG)); // redirect(base_url() . 'admin/assign-due-fees'); } else { $this->session->set_flashdata('error_msg', str_replace('%s', 'Student opening balance', THE_ADD_ERROR_MSG)); // redirect(base_url() . 'admin/assign-due-fees'); } } else { if (count($_POST)) { $se_batch = (isset($_POST['f_batch']) && !empty($_POST['f_batch'])) ? $_POST['f_batch'] : ''; $se_course = (isset($_POST['f_course']) && !empty($_POST['f_course'])) ? $_POST['f_course'] : ''; $se_section = (isset($_POST['f_section']) && !empty($_POST['f_section'])) ? $_POST['f_section'] : ''; if ($se_course != '') $condition .= " AND cl.course_id=$se_course"; if ($se_section != '') $condition .= " AND cl.section_id IN (" . implode(',', $se_section) . ")"; $studentlist = $this->db->query("SELECT s.id as student_id,s.name as student_name,s.course as course_id ,s.batch_id,s.email,s.studentId,s.mobile,s.emergency_contact_name,s.emergency_contact_number,c.course_name,se.id as section_id, se.section_name,sb.roll_no FROM students s JOIN student_batch sb ON s.id=sb.student_id JOIN classroom cl ON cl.id=sb.classroom_id JOIN course c ON c.id=cl.course_id JOIN section se ON se.id=cl.section_id WHERE sb.batch_id=$se_batch AND s.is_active ='yes' $condition")->result_array(); $data['student_fees'] = $studentlist; $studentOpeningBalanceFees = $this->db->query("SELECT fas.student_id ,fas.course_fee_id, cf.id as course_fee_id, cf.course_id,cf.batch_id,cf.fees_name,cf.amount,cf.fee_values FROM fee_assigned_students fas JOIN course_fees cf ON cf.id=fas.course_fee_id WHERE cf.batch_id=$se_batch AND cf.fees_type=99")->result_array(); $data['student_opening_balance'] = $studentOpeningBalanceFees; // var_dump($studentOpeningBalanceFees); } } $this->load->view('admin/header', $data); $this->load->view('admin/assign_due_fees', $data); $this->load->view('admin/footer'); } public function scholarship() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/scholarship.php')) show_404(); $data['currentURL'] = current_url(); $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $data['menulist'] = $this->Admin_model->get_adminMenu(); $startDate = ''; $endDate = ''; $condition = ''; $studentlist = array(); $selectedFeeTypes = array(); $batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes')); $data['batches'] = $batches; $courses = $this->Admin_model->get_table_info('course', '', '', 'ASC'); $data['course'] = $courses; $fees_types_list = $this->Admin_model->get_fees_type(); // dd($fees_types_list); $data['fees_types'] = $fees_types_list; $ft_where = " "; if (count($_POST)) { // if (isset($_POST['filtersubmit']) && $_POST['filtersubmit'] == 'Filter') { $se_batch = (isset($_POST['f_batch']) && !empty($_POST['f_batch'])) ? $_POST['f_batch'] : ''; $se_course = (isset($_POST['f_course']) && !empty($_POST['f_course'])) ? $_POST['f_course'] : ''; $se_section = (isset($_POST['f_section']) && !empty($_POST['f_section'])) ? $_POST['f_section'] : ''; $f_feetype = (isset($_POST['filter_fee_types']) && !empty($_POST['filter_fee_types'])) ? $_POST['filter_fee_types'] : ''; // echo '
';
			// var_dump($_POST['filter_fee_types']);

			if ($se_course != '')
				$condition .= " AND cl.course_id=$se_course";

			if ($se_section != '')
				$condition .= " AND cl.section_id IN (" . implode(',', $se_section) . ")";

			$studentlist = $this->db->query("SELECT s.id as student_id,s.name as student_name,s.course as course_id ,s.batch_id,s.email,s.studentId,s.mobile,s.emergency_contact_name,s.emergency_contact_number,c.course_name,se.id as section_id, se.section_name,sb.id as student_batch_id, sb.roll_no FROM students s 
			JOIN student_batch sb ON s.id=sb.student_id 
			JOIN classroom cl ON cl.id=sb.classroom_id 
			JOIN course c ON c.id=cl.course_id 
			JOIN section se ON se.id=cl.section_id
			WHERE sb.batch_id=$se_batch AND s.is_active ='yes' $condition")->result_array();

			// echo '
';
			// print_r($studentlist2);





			$arr_feetype = implode(',', $f_feetype);

			$selectedCourseFeeType = $this->db->query(
				"SELECT cf.id as course_fee_id,cf.fees_name,cf.amount,cf.fee_values,cf.is_active,cf.fees_type,cf.course_id,cf.batch_id,cf.modified 
				FROM course_fees cf WHERE cf.course_id = $se_course AND cf.batch_id=$se_batch AND cf.is_active ='yes' AND cf.fees_type in ($arr_feetype)"
			)->result_array();

			$data['selected_fee_types'] = $selectedCourseFeeType;
			// echo '
';
			// var_dump($selectedCourseFeeType);

			foreach ($studentlist as $key => $theStd) {


				$studentScholarship = $this->db->query("SELECT ss.id, ss.student_id, ss.course_fee_id, ss.created, ss.modified, ss.scholarship_amount, ss.scholarship_type, ss.scholarship_discount,
				IF(sop.id is null,0,sop.id) as isPaymentMade
				FROM student_scholarship ss
				LEFT JOIN students_online_payments sop on ss.course_fee_id = sop.course_fee_id AND sop.student_id = ss.student_id
				WHERE ss.student_id =" . $theStd['student_id'] . " AND ss.batch_id = " . $theStd['batch_id'] . " AND ss.fee_type in ($arr_feetype)")->result_array();

				$studentlist[$key]['scholarship'] = count($studentScholarship) > 0 ? $studentScholarship : null;
			}
			if (isset($_POST['save'])   && $_POST['save'] == 'Save') {
				// echo '
';
				// var_dump($_POST);

				$scholarshipPercentage = (isset($_POST['scholarshipPercentage']) && !empty($_POST['scholarshipPercentage'])) ? $_POST['scholarshipPercentage'] : [];
				$scholarshipAmount = (isset($_POST['scholarshipAmount']) && !empty($_POST['scholarshipAmount'])) ? $_POST['scholarshipAmount'] : [];
				$s_type = (isset($_POST['s_type']) && !empty($_POST['s_type'])) ? $_POST['s_type'] : [];

				$courseFees = (isset($_POST['courseFeeId']) && !empty($_POST['courseFeeId'])) ? $_POST['courseFeeId'] : [];
				$studentBatches = (isset($_POST['studentBatchId']) && !empty($_POST['studentBatchId'])) ? $_POST['studentBatchId'] : [];


				$selectedCourseFee = (isset($_POST['f_selected_course_fee']) && !empty($_POST['f_selected_course_fee'])) ? $_POST['f_selected_course_fee'] : [];
				$updateStatusArr = [];
				$scholarship_course_fees = [];
				// echo '
';

				// Loop for selected fee type
				foreach ($scholarshipAmount as $feeTypeKey => $s_amountValue) {
					foreach ($s_amountValue as $sa_key => $sa_value) {
						// dd($studentBatches[$sa_key]);
						if ($sa_value != '0' || $sa_value != '') {
							// var_dump($sa_value);
							if ($sa_value == 0) {
								// echo 'value = 0';

								if ($feeTypeKey == 4 || $feeTypeKey == 8 || $feeTypeKey == 5) {

									if (isset($selectedCourseFee[$sa_key])) {
										foreach ($selectedCourseFee[$sa_key] as $scf_value) {
											$ss_scholarship = $this->db->query("SELECT * FROM student_scholarship WHERE student_id =" . $sa_key . " AND course_fee_id = " . $scf_value . " AND batch_id = " . $se_batch)->result_array();

											// echo '
';

											// print_r($ss_scholarship[0]['id']);
											$this->db->where('id', $ss_scholarship[0]['id']);
											$del = $this->db->delete('student_scholarship');
											// print_r($del);
										}
									}
								} else {
									$assignedScholarshipId = (isset($_POST['assignedScholarshipId']) && !empty($_POST['assignedScholarshipId'])) ? $_POST['assignedScholarshipId'] : [];


									$courseFeeId = $courseFees[$feeTypeKey][$sa_key];
									$scholarshipId =
										$assignedScholarshipId[$feeTypeKey][$sa_key];

									$data_to_update = [];

									if ($scholarshipId != 0) {


										$this->db->where('id', $scholarshipId);
										$del = $this->db->delete('student_scholarship');
										// print_r($del);
									}

									// var_dump($data_to_update);
								}
							} else if ($sa_value == '') {
								// echo 'value = empty';
							} else {
								$s_Amount = $sa_value;
								$s_Percentage = $scholarshipPercentage[$feeTypeKey][$sa_key];
								$scholarshipType = $s_type[$sa_key];
								// ************************************************** Single Fee Logic **************************************************
								if ($feeTypeKey == 4 || $feeTypeKey == 8 || $feeTypeKey == 5) {
									// echo '
';


									if (isset($selectedCourseFee[$sa_key])) {
										foreach ($selectedCourseFee[$sa_key] as $scf_value) {


											$ss_scholarship = $this->db->query("SELECT * FROM student_scholarship WHERE student_id =" . $sa_key . " AND course_fee_id = " . $scf_value . " AND batch_id = " . $se_batch)->result_array();
											// print_r($ss_scholarship);
											// Checking if the student is in student scholarship table
											if (count($ss_scholarship) > 0) {
												// var_dump($ss_scholarship[0]['id']);
												$data_to_update = array(
													'student_id' => $sa_key,
													'course_fee_id' => $scf_value,
													'is_active' => 'yes',
													'scholarship_amount' => $s_Amount,
													'scholarship_type' => $scholarshipType,
													'scholarship_discount' => $s_Percentage,
													'modified' => $this->nepali_current_date,
												);

												$updateQuery = $this->Admin_model->add_edit_table('student_scholarship', $ss_scholarship[0]['id'], $data_to_update);
												if ($updateQuery == true) {
													array_push($updateStatusArr, true);
												} else {
													array_push($updateStatusArr, false);
												}
											} else {
												$data_to_update = array(
													'student_id' => $sa_key,
													'course_fee_id' => $scf_value,
													'fee_type' => $feeTypeKey,
													'batch_id' => $se_batch,
													'is_active' => 'yes',
													'scholarship_amount' => $s_Amount,
													'scholarship_type' => $scholarshipType,
													'scholarship_discount' => $s_Percentage,
													'created' => $this->nepali_current_date,
													'modified' => $this->nepali_current_date,
												);
												// print_r($data_to_update);
												$updateQuery = $this->Admin_model->add_edit_table('student_scholarship', 0, $data_to_update);
												if ($updateQuery == true) {
													array_push($updateStatusArr, true);
												} else {
													array_push($updateStatusArr, false);
												}
											}
										}
									}
								} else {
									// foreach ($s_amountValue as $sa_key => $sa_value) {
									$assignedScholarshipId = (isset($_POST['assignedScholarshipId']) && !empty($_POST['assignedScholarshipId'])) ? $_POST['assignedScholarshipId'] : [];


									$courseFeeId = $courseFees[$feeTypeKey][$sa_key];
									$scholarshipId =
										$assignedScholarshipId[$feeTypeKey][$sa_key];

									$data_to_update = [];

									if ($scholarshipId != 0) {
										$data_to_update = array(
											'student_id' => $sa_key,
											'course_fee_id' => $courseFeeId,
											'is_active' => 'yes',
											'scholarship_amount' => $s_Amount,
											'scholarship_type' => $scholarshipType,
											'scholarship_discount' => $s_Percentage,
											'modified' => $this->nepali_current_date,
										);
										$insertQuery = $this->Admin_model->add_edit_table('student_scholarship', $scholarshipId, $data_to_update);
										if ($insertQuery == true) {
											array_push($updateStatusArr, true);
										} else {
											array_push($updateStatusArr, false);
										}
									} else {
										$data_to_update = array(
											'student_id' => $sa_key,
											'course_fee_id' => $courseFeeId,
											'fee_type' => $feeTypeKey,
											'batch_id' => $se_batch,
											'is_active' => 'yes',
											'scholarship_amount' => $s_Amount,
											'scholarship_type' => $scholarshipType,
											'scholarship_discount' => $s_Percentage,
											'created' => $this->nepali_current_date,
											'modified' => $this->nepali_current_date,
										);
										$insertQuery = $this->Admin_model->add_edit_table('student_scholarship', 0, $data_to_update);
										if ($insertQuery == true) {
											array_push($updateStatusArr, true);
										} else {
											array_push($updateStatusArr, false);
										}
									}

									// 

								}
							}
						}
					}
				}

				if (in_array(false, $updateStatusArr)) {
					$this->session->set_flashdata('error_msg', str_replace('%s', 'Scholarship', 'Something went wrong. Plese try again after sometime.'));
				} else {
					$this->session->set_flashdata('success_msg', str_replace('%s', 'Scholarship', 'Scholarship has been assigned successfully.'));
					redirect(base_url() . 'admin/scholarship');
				}
				// // $scholarship_course_fees = $scholarship_course_fees + ', ' + strval($feeTypeKey);

				// ************************************************** Single Fee Logic **************************************************
			}
		}
		$data['all_fee_types'] = $this->Admin_model->get_query_result("SELECT id,feetype_name FROM fee_types");
		$data['all_scholarship_types'] = $this->Admin_model->get_query_result("SELECT id, scholarshiptype_name FROM scholarship_types WHERE is_active = 'yes'");
		$data['selected_feetype'] = $selectedFeeTypes;
		$data['search_start_paid_date'] = $startDate;
		$data['search_end_paid_date'] = $endDate;
		$data['students'] = $studentlist;

		$this->load->view('admin/header', $data);
		$this->load->view('admin/scholarship', $data);
		$this->load->view('admin/footer');
	}

	public function scholarship_list()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/scholarship-list.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$startDate = '';
		$endDate = '';
		$condition = '';
		$studentlist = array();
		$selectedFeeTypes = array();
		$batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes'));
		$data['batches'] = $batches;
		$courses = $this->Admin_model->get_table_info('course', '', '', 'ASC');
		$data['course'] = $courses;
		$fees_types_list = $this->Admin_model->get_fees_type();
		// dd($fees_types_list);
		$data['fees_types'] = $fees_types_list;
		$ft_where = " ";
		if (count($_POST)) {
			// if (isset($_POST['filtersubmit'])   && $_POST['filtersubmit'] == 'Filter') {
			$se_batch = (isset($_POST['f_batch']) && !empty($_POST['f_batch'])) ? $_POST['f_batch'] : '';
			$data['search_batch_id'] = $se_batch;
			$query = "SELECT ss.id, ss.student_id,
			s.studentId AS studentId, s.name AS student_name, s.course AS student_course, s.batch_id AS student_batch_id, 
            sb.roll_no, cr.classroom_name, crs.course_name, sec.section_name
			FROM student_scholarship ss
            LEFT JOIN students AS s ON s.id = ss.student_id 
            LEFT JOIN student_batch AS sb ON s.id = sb.student_id AND s.batch_id=sb.batch_id 
            LEFT JOIN classroom as cr ON sb.classroom_id = cr.id AND s.course=cr.course_id
			LEFT JOIN course as crs ON cr.course_id = crs.id AND s.course=crs.id
			LEFT JOIN section as sec ON cr.section_id = sec.id
			WHERE ss.batch_id = $se_batch
			GROUP BY ss.student_id";

			$scholarshipList = [];

			$scholarshipList = $this->db->query($query)->result_array();

			foreach ($scholarshipList as $stdKey => $stdValue) {

				$scholarship = $this->db->query("SELECT ss.id as scholarship_id,ss.student_id, ss.course_fee_id, ss.batch_id, ss.is_active, ss.scholarship_type,ss.scholarship_amount,ss.scholarship_discount, 
												cf.fee_values as fee_name, cf.amount as fee_amount, ft.feetype_name as fee_type, IF(sop.id is null,0,sop.id) as isPaymentMade
								FROM student_scholarship ss
								LEFT JOIN course_fees AS cf ON ss.course_fee_id = cf.id
								LEFT JOIN fee_types AS ft ON cf.fees_type = ft.id
								LEFT JOIN students_online_payments sop on ss.course_fee_id = sop.course_fee_id AND sop.student_id = ss.student_id
								WHERE ss.batch_id=$se_batch AND ss.student_id=" . $stdValue['student_id'])->result_array();


				$scholarshipList[$stdKey]['scholarship'] = $scholarship;
			}
			$data['scholarStudents'] = $scholarshipList;
			// echo '
';
			// print_r($scholarshipList);
		}
		$data['all_fee_types'] = $this->Admin_model->get_query_result("SELECT id,feetype_name FROM fee_types");
		$data['all_scholarship_types'] = $this->Admin_model->get_query_result("SELECT id, scholarshiptype_name FROM scholarship_types WHERE is_active = 'yes'");
		$data['selected_feetype'] = $selectedFeeTypes;
		$data['search_start_paid_date'] = $startDate;
		$data['search_end_paid_date'] = $endDate;


		$this->load->view('admin/header', $data);
		$this->load->view('admin/scholarship-list', $data);
		$this->load->view('admin/footer');
	}

	function getscholarshipDetails()
	{
		$batchid = $_REQUEST['batch_id'];
		$student_id = $_REQUEST['studentId'];
		$scholarships = $this->db->query("SELECT ss.id as scholarship_id,ss.student_id, ss.course_fee_id, ss.batch_id, ss.is_active, ss.scholarship_type,ss.scholarship_amount,ss.scholarship_discount, 
												cf.fee_values as fee_name, cf.amount as fee_amount, ft.feetype_name as fee_type, IF(sop.id is null,0,sop.id) as isPaymentMade
								FROM student_scholarship ss
								LEFT JOIN course_fees AS cf ON ss.course_fee_id = cf.id
								LEFT JOIN fee_types AS ft ON cf.fees_type = ft.id
								LEFT JOIN students_online_payments sop on ss.course_fee_id = sop.course_fee_id AND sop.student_id = ss.student_id
								WHERE ss.batch_id=$batchid AND ss.student_id=" . $student_id)->result_array();
		$studentInfo = $this->db->query("SELECT * FROM students 
								WHERE id=$student_id")->result_array();

		// $studentDetail = [];

		foreach ($studentInfo as $sKey => $sValue) {
			$data['student_info'] = $sValue;
		}
		$data['batchid'] = $batchid;
		$data['all_scholarship_types'] = $this->Admin_model->get_query_result("SELECT id, scholarshiptype_name FROM scholarship_types WHERE is_active = 'yes'");

		$data['student_id'] = $student_id;
		$data['scholarship_data'] = $scholarships;
		// $data['route_data'] = $routelist;
		// $data['batch_name'] = $this->db->get_where('batch', array('id' => $batchid))->row()->b_name;
		// $data['student_route_id'] = $student_route_id;
		// $data['student_assigned_route'] = $studentAssignedRoute;
		// $data['stop_list'] = $stoplist;
		$page = $this->load->view('admin/scholarshipdata', $data, TRUE);
		echo $page;
	}

	public function updateScholarship()
	{

		$studentId = $_REQUEST['student_id'];
		$routeId = $_REQUEST['route_id'];
		$pick_id = $_REQUEST['stop_id'];
		$batch_id = $_REQUEST['batch_id'];
		$is_one_way = $_REQUEST['is_one_way'];

		var_dump($_REQUEST);
	}




	public function send_message()
	{
		print_r($_POST);

		echo '
		';
	}


	public function sendNotification($message)
	{

		$options = array(
			'cluster' => 'ap2',
			'encrypted' => true
		);
		$pusher = new Pusher\Pusher(
			'6df1a6c2a507560f5547', // app key
			'0d22f8afc8c3bfc10442', // app secret
			'1532423', // app id
			$options
		);

		$data['message'] = $message;
		$pusher->trigger('my-channel', 'my-event', $data);
	}

	public function scholarship_types()
	{
		// sendNotification('Pusher Check');
		$options = array(
			'cluster' => 'ap2',
			'encrypted' => true
		);
		$pusher = new Pusher\Pusher(
			'6df1a6c2a507560f5547', // app key
			'0d22f8afc8c3bfc10442', // app secret
			'1532423', // app id
			$options
		);

		$data['message'] = '$message';
		$pusher->trigger('my-channel', 'my-event', $data);
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		$data['currentURL'] = current_url();

		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$data['result'] = $this->Admin_model->get_table_info('scholarship_types');

		$this->load->view('admin/header', $data);
		$this->load->view('admin/scholarship_types');
		$this->load->view('admin/footer');
	}

	public function add_edit_scholarship_type($scholarshipId)
	{

		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		if (!file_exists(APPPATH . 'views/admin/ae_scholarship_type.php'))
			show_404();

		$data['currentURL'] = current_url();

		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$data['id'] = $scholarshipId;


		$whereClause = array('id' => $scholarshipId);
		$checkSectionExists = $this->Admin_model->get_scholarship_type($whereClause);

		if (empty($checkSectionExists) && $scholarshipId != 0) {
			$this->session->set_flashdata('failed', 'There is no section with selected id');
			redirect(base_url() . 'Admin/section');
		}

		if (count($_POST) > 0) {

			$_POST['scholarshiptype_name'] = $this->convertToCapCase($_POST['scholarshiptype_name']);

			var_dump($_POST);

			if ($scholarshipId > 0) {
				$_POST['modified'] = $this->nepali_current_date;
			} else {
				$_POST['created'] = $this->nepali_current_date;
			}

			$sql = $this->Admin_model->add_edit_scholarship($scholarshipId, $_POST);

			if (($sql) && $scholarshipId > 0) {
				$this->session->set_flashdata('success', 'Scholarship has been updated successfully');
				redirect(base_url() . 'admin/scholarship-types');
			} else if ($sql) {
				$this->session->set_flashdata('success', 'Scholarship has been addedd successfully');
				redirect(base_url() . 'admin/scholarship-types');
			} else {
				$this->session->set_flashdata('failed', 'Scholarship updation failed.');
				redirect(base_url() . 'admin/scholarship-types');
			}
		}

		$data['title'] = 'Add New Scholarship';

		if ($scholarshipId > 0) {
			$data['title'] = 'Edit Scholarship';
			$data['result'] = $checkSectionExists;
		}


		$this->load->view('admin/header', $data);
		$this->load->view('admin/ae_scholarship_type');
		$this->load->view('admin/footer');
	}

	public function debug_to_console($data)
	{
		$output = $data;
		if (is_array($output))
			$output = implode(',', $output);

		echo "";
	}

	public function transport_report()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/transport-report.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$startDate = '';
		$endDate = '';
		$condition = '';
		$studentlist = array();
		$selectedFeeTypes = array();
		$batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes'));
		$data['batches'] = $batches;
		$courses = $this->Admin_model->get_table_info('course', '', '', 'ASC');
		$data['course'] = $courses;
		$fees_types_list = $this->Admin_model->get_fees_type();
		// dd($fees_types_list);
		$data['fees_types'] = $fees_types_list;
		$ft_where = " ";
		if (count($_POST)) {
			// if (isset($_POST['filtersubmit'])   && $_POST['filtersubmit'] == 'Filter') {
			$se_batch = (isset($_POST['f_batch']) && !empty($_POST['f_batch'])) ? $_POST['f_batch'] : '';
			$data['search_batch_id'] = $se_batch;

			$transport_db = $this->load->database('erisnClassroom_bts', TRUE);
			$batch_routes = $transport_db->query('SELECT * from bt_batch_routes where batch_id = ' . $se_batch)->row_array();


			$transportListQuery = "SELECT btRD.student_id, btRD.route_id, btRD.pick_up_id, btRD.batch_id, btRD.one_way, btRD.is_active, btRD.drop_id
			FROM bt_students_bus_route_details btRD";

			// $transportList = $this->$transport_db->query($transportListQuery);



			$transport_db = $this->load->database('erisnClassroom_bts', TRUE);
			$transportList = $transport_db->query(
				'SELECT btRD.student_id, btRD.route_id, btRD.pick_up_id, btRD.batch_id, btRD.one_way, btRD.is_active, btRD.drop_id,
			bRD.place_name, bRD.route_id, bRD.route_order, br.id, br.route_name
			FROM bt_students_bus_route_details btRD
			LEFT JOIN bt_routes_details AS bRD ON bRD.id = btRD.pick_up_id AND btRD.route_id=bRD.route_id
			LEFT JOIN bt_routes AS br ON br.id=btRD.route_id 
			Where btRD.batch_id = ' . $se_batch
			)->result_array();


			// $studentList

			foreach ($transportList as $tl_key => $tl_value) {
				$studentQuery = "SELECT s.id, s.name AS student_name,s.studentId, s.course AS student_course, s.batch_id AS student_batch_id, 
            sb.roll_no, cr.classroom_name, crs.course_name, sec.section_name
			FROM students AS s
            LEFT JOIN student_batch AS sb ON s.id = sb.student_id AND s.batch_id=sb.batch_id 
            LEFT JOIN classroom as cr ON sb.classroom_id = cr.id AND s.course=cr.course_id
			LEFT JOIN course as crs ON cr.course_id = crs.id AND s.course=crs.id
			LEFT JOIN section as sec ON cr.section_id = sec.id
			WHERE s.batch_id = $se_batch AND s.id = " . $tl_value['student_id'] . "
			GROUP BY s.id";

				// 	$transportFee = "SELECT cf.feeAmount, cf.fee_values AS fee_name
				// FROM course_fees AS cf
				// WHERE cf.batch_id = $se_batch AND cf.course_id = " . $tl_value['student_id'] . "
				// GROUP BY s.id";

				$studentDetail = $this->db->query($studentQuery)->result_array();
				$transportList[$tl_key]['student'] = $studentDetail;
			}

			$data['transportList'] = $transportList;
		}
		$this->load->view('admin/header', $data);
		$this->load->view('admin/transport-report', $data);
		$this->load->view('admin/footer');
	}

	// public function assign_class_teacher()
	// {
	// }

	public function assign_class_teacher($classroomId)
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/assign-class-teacher.php'))
			show_404();
		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$data['courselist'] = $this->Admin_model->get_general_result_details('course', 'DESC', array('is_active' => 'yes'));
		$data['title'] = "Assign Class Teacher ";
		$data['id'] = $classroomId;
		$teacherIds = [];
		if ($classroomId > 0) {

			$data['classroom'] = $this->Admin_model->get_general_row_details('classroom', 'ASC', array('id' => $classroomId));
			$sqlQuery = "SELECT cl.*,cs.subject_id as course_subject_ids FROM classroom cl JOIN
			   course_subjects cs ON cl.course_id=cs.course_id  WHERE cl.id='$classroomId' AND cs.subject_id NOT IN (Select subject_id as subid from classroom_teacher_subject WHERE classroom_id = $classroomId)";
			$data['course_subjects'] = $this->Admin_model->get_query_result($sqlQuery);

			$classroomSubjects = $this->Admin_model->get_general_result_details('classroom_teacher_subject', 'ASC', array('classroom_id' => $classroomId));


			$sqlQuery =
				"SELECT cts.id,cts.classroom_id,cts.subject_id,cts.teacher_id,cts.is_class_teacher,sub.subject_name FROM classroom_teacher_subject cts 
				LEFT JOIN subject sub on cts.subject_id=sub.id WHERE cts.classroom_id=$classroomId";


			$data['classroom_subjects'] =
				$this->Admin_model->get_query_result($sqlQuery);


			if (count($_POST)) {
				if (isset($_POST['update']) && ($_POST['update'] == 'Update')) {
					$classroomSubjects = $data['classroom_subjects'];



					$subjectId = $_POST['subject_id'];
					var_dump($classroomSubjects);

					$updateStatus = [];

					foreach ($classroomSubjects as $cs_key => $cs_value) {
						$isClassTeacher = '';
						if ($cs_value['subject_id'] == $subjectId) {
							$isClassTeacher = 'yes';
						} else {
							$isClassTeacher = 'no';
						}
						$data_array = array(
							'is_class_teacher' => $isClassTeacher,
							'modified' => $this->nepali_current_date
						);

						$this->db->where('id', $cs_value['id']);
						$update = $this->db->update('classroom_teacher_subject', $data_array);

						if ($update) {
							array_push($updateStatus, true);
						} else {
							array_push($updateStatus, false);
						}
					}
					if (!in_array(false, $updateStatus)) {
						$this->session->set_flashdata('success', 'Classteacher has been updated successfully');
						redirect(base_url() . 'admin/ae-classroom/' . $classroomId);
					} else {
						$this->session->set_flashdata('error', 'Something went wrong.');
					}
				}
			}
		} else {
			show_404();
		}


		$this->load->view('admin/header', $data);
		$this->load->view('admin/assign-class-teacher');
		$this->load->view('admin/footer');
	}

	public function symbolNumberUpdate($classroomId)
	{
		$data['encrepted_clas'] = $classroomId;
		$classroom_id = (int)str_replace("-qqcksbvlwierhwjerw", '', urlsafe_b64decode($classroomId));

		$check_classroom_id = $this->db->query('select * from classroom where id =' . $classroom_id)->row_array();

		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		$data['title'] = "Symbol Number of " . $check_classroom_id['classroom_name'];
		$data['classroomid'] = $check_classroom_id['id'];
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$cls_id = $check_classroom_id['id'];
		// $query = "SELECT sb.id as stud_batch_id, sb.roll_no, sb.symbol_no, sb.registration_no, sb.batch_id,sb.classroom_id,s.* FROM student_batch sb LEFT JOIN students s ON sb.student_id=s.id AND sb.batch_id = " . $school_info['batch_id'] . " WHERE sb.classroom_id=$cls_id";
		$query = "SELECT sb.id as stud_batch_id, sb.roll_no, sb.symbol_no, sb.batch_id as student_batch, sb.classroom_id, s.* FROM student_batch sb LEFT JOIN students s ON sb.student_id=s.id WHERE sb.batch_id = " . $data['school_info']['batch_id'] . " AND sb.classroom_id=$cls_id ORDER BY sb.roll_no";
		$data['student_list'] = $this->Admin_model->get_query_result($query);

		if ($_POST) {
			$checker = 0;
			$symbol_numbers = explode(",", $_POST['symbol_numbers']);
			$batch_ids = explode(",", $_POST['batch_ids']);

			// dd($_POST);

			foreach ($symbol_numbers as $key => $value) {
				$this->db->set('symbol_no', $value);
				$this->db->where('id', $batch_ids[$key]);
				$update = $this->db->update('student_batch');
				if ($update) {
					$checker = 1;
				}
			}

			if ($checker > 0)
				$this->session->set_flashdata('success_msg', 'Symbol Number Updated Successfully');
			else
				$this->session->set_flashdata('error_msg', 'Something Went Wrong...Plese try again...!!');


			redirect(base_url() . 'admin/symbol-number/' . $classroomId);
		}

		$this->load->view('admin/header', $data);
		$this->load->view('admin/assign_symbol_number');
		$this->load->view('admin/footer');
	}

	public function registrationNumberUpdate($classroomId)
	{
		$data['encrepted_clas'] = $classroomId;
		$classroom_id = (int)str_replace("-qqcksbvlwierhwjerw", '', urlsafe_b64decode($classroomId));

		$check_classroom_id = $this->db->query('select * from classroom where id =' . $classroom_id)->row_array();

		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		$data['title'] = "Registration Number of " . $check_classroom_id['classroom_name'];
		$data['classroomid'] = $check_classroom_id['id'];
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$cls_id = $check_classroom_id['id'];
		$query = "SELECT sb.id as stud_batch_id, sb.roll_no, sb.symbol_no, sb.registration_no, sb.batch_id as student_batch, sb.classroom_id, s.* FROM student_batch sb LEFT JOIN students s ON sb.student_id=s.id WHERE sb.batch_id = " . $data['school_info']['batch_id'] . " AND sb.classroom_id=$cls_id ORDER BY sb.roll_no";

		// $query = "SELECT sb.id as stud_batch_id, sb.roll_no, sb.symbol_no, sb.registration_no, sb.batch_id,sb.classroom_id,s.* FROM student_batch sb LEFT JOIN students s ON sb.student_id=s.id AND sb.batch_id = s.batch_id WHERE sb.classroom_id=$cls_id";
		$data['student_list'] = $this->Admin_model->get_query_result($query);

		if ($_POST) {
			$checker = 0;
			$registration_numbers = explode(",", $_POST['registration_numbers']);
			$batch_ids = explode(",", $_POST['batch_ids']);

			// dd($_POST);

			foreach ($registration_numbers as $key => $value) {
				$this->db->set('registration_no', $value);
				$this->db->where('id', $batch_ids[$key]);
				$update = $this->db->update('student_batch');
				if ($update) {
					$checker = 1;
				}
			}

			if ($checker > 0)
				$this->session->set_flashdata('success_msg', 'Registration Number Updated Successfully');
			else
				$this->session->set_flashdata('error_msg', 'Something Went Wrong...Plese try again...!!');


			redirect(base_url() . 'admin/registration-number/' . $classroomId);
		}

		$this->load->view('admin/header', $data);
		$this->load->view('admin/assign_registration_number');
		$this->load->view('admin/footer');
	}
	public function multiple_edit()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/multiple-student-edit.php'))
			show_404();

		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$theStudents = array();
		$theSubjects = array();

		$data['selected_batch'] = $data['school_info']['batch_id'];

		if (count($_POST) > 0) {

			$se_course =
				$_POST['course_id'];
			$se_batch
				= $_POST['batch_id'];
			// $se_offline_exam_id =
			// 	$_POST['offline_exam_id'];
			$se_section = (isset($_POST['section_id']) && !empty($_POST['section_id'])) ? $_POST['section_id'] : '';


			$data['selected_batch'] =
				$_POST['batch_id'];
			$condition = '';

			if (isset($_POST['clicked_button']) && ($_POST['clicked_button'] == 'Save' || $_POST['clicked_button'] == 'Save All')) {
				$this->load->helper('url');
				$this->load->helper(array('form', 'url'));
				$std_names = $_POST['name'];
				$std_email = $_POST['email'];
				$std_dob = $_POST['sdob'];
				$std_mobile = $_POST['mobile'];
				$std_fathername = $_POST['fathername'];
				$std_mothername = $_POST['mother_name'];
				$std_emergency_contact_number = $_POST['emergency_contact_number'];
				$std_address = $_POST['address'];
				$std_state = $_POST['state'];
				$std_country = $_POST['country'];
				$std_iemis = $_POST['iemis'];
				$user_photos = $_POST['user_photo'];
				$studentId = $_POST['studentId'];

				$update_status = array();

				$std_photos = array();

				$config['upload_path'] = 'assets_student/application/';
				$config['allowed_types'] = 'gif|jpg|png|jpeg|jfif|jiff';

				$imageCount = $_FILES['photo']['name'];
				print_r(count($imageCount));

				// for ($i = 0; $i < $imageCount; $i++) {
				// $_FILES['file']['name']       = $_FILES['photo']['name'][$i];
				// $_FILES['file']['type']       = $_FILES['photo']['type'][$i];
				// $_FILES['file']['tmp_name']   = $_FILES['photo']['tmp_name'][$i];
				// $_FILES['file']['error']      = $_FILES['photo']['error'][$i];
				// $_FILES['file']['size']       = $_FILES['photo']['size'][$i];


				// }
				foreach ($imageCount as $i_key => $i_value) {

					$config['file_name'] = $studentId[$i_key];
					$config['encrypt_name'] = FALSE;
					$this->load->library('upload', $config);
					$this->upload->initialize($config);

					$_FILES['file']['name']       = $_FILES['photo']['name'][$i_key];
					$_FILES['file']['type']       = $_FILES['photo']['type'][$i_key];
					$_FILES['file']['tmp_name']   = $_FILES['photo']['tmp_name'][$i_key];
					$_FILES['file']['error']      = $_FILES['photo']['error'][$i_key];
					$_FILES['file']['size']       = $_FILES['photo']['size'][$i_key];
					// echo '
';
					// print_r($_FILES['file']['tmp_name']);

					if ($_FILES['file']['size'] != 0) {

						if (!$this->upload->do_upload('file')) {
							$std_photos[$i_key] = "";
						} else {
							$photo = array('upload_data' => $this->upload->data());
							$std_photos[$i_key] = $photo['upload_data']['file_name'];

							$file = $config['upload_path'] . '' . $user_photos[$i_key];
							// dd($file);
							if (file_exists($file)) {
								unlink($file);
							}
						}
					}
				}



				foreach ($std_names as $std_key => $std_value) {
					echo '
';
					$userPhoto = (isset($std_photos[$std_key]) && !empty($std_photos[$std_key])) ? $std_photos[$std_key] : $user_photos[$std_key];
					$update_data = array(
						'name' 		=> $std_names[$std_key],
						'email' 	=> $std_email[$std_key],
						'dob'		=> $std_dob[$std_key],
						'mobile'	=> $std_mobile[$std_key],
						'father_name'	=> $std_fathername[$std_key],
						'mother_name'	=> $std_mothername[$std_key],
						'emergency_contact_number' => $std_emergency_contact_number[$std_key],
						'address1'	=> $std_address[$std_key],
						'state'		=> $std_state[$std_key],
						'country'	=> $std_country[$std_key],
						'iemis'	=> $std_iemis[$std_key],
						'photo' => $userPhoto
					);

					// var_dump($update_data);

					$this->db->where('id', $std_key);
					$update = $this->db->update("students", $update_data);



					if ($update) {
						array_push($update_status, true);
					} else {
						array_push($update_status, false);
					}
				}


				// dd($update_status);
				// dd($std_photos);

				if (in_array(false, $update_status)) {
					$this->session->set_flashdata('error_msg', str_replace('%s', 'Records Update', 'Something went wrong. Plese try again after sometime.'));
				} else {
					$this->session->set_flashdata('success_msg', str_replace('%s', 'Records Update', 'Student records has been updated successfully.'));
					redirect(base_url() . 'admin/multiple-edit');
				}
			}

			//START -- of getting the subjects for selected batch,course & exam combination
			if (isset($_SESSION['admin_role_ids']) && $_SESSION['admin_role_ids'] == 1) {
				// $theSubSql = "SELECT OEM.subject_id,OEM.th_total_marks,OEM.th_pass_marks,OEM.is_practical,OEM.pr_total_marks,OEM.pr_pass_marks,OEM.subject_order,S.subject_name,S.is_optional,S.is_additional FROM offline_exam_marks AS OEM, subject AS S WHERE OEM.batch_id=" . $_POST['batch_id'] . " AND OEM.course_id=" . $_POST['course_id'] . " AND OEM.offline_exam_id=" . $_POST['offline_exam_id'] . " AND OEM.subject_id=S.id AND S.is_additional='No' AND OEM.is_active='yes' ORDER BY OEM.subject_order ASC";
				// $theSubjects = $this->db->query($theSubSql)->result_array();

				// echo '
';
				// print_r($theSubjects);
				if ($se_course != '')
					$condition .= " AND cl.course_id=$se_course";

				if ($se_section != '')
					$condition .= " AND cl.section_id IN (" . implode(',', $se_section) . ")";


				$theStudents = $this->db->query("SELECT s.*,c.course_name,se.section_name,sb.roll_no FROM students s JOIN student_batch sb ON s.id=sb.student_id JOIN classroom cl ON cl.id=sb.classroom_id JOIN course c ON c.id=cl.course_id JOIN section se ON se.id=cl.section_id WHERE sb.batch_id=$se_batch $condition")->result_array();
				// dd($theStudents);
			}
		}

		$data['batch'] = $this->db->query("select id,b_name from batch WHERE is_active='yes'")->result_array();
		$data['course'] = $this->db->query("select * from course WHERE is_active='yes'")->result_array();
		$data['exams'] = $this->db->query("select * from offline_exams WHERE is_active='yes'")->result_array();


		$data['theStudents'] = $theStudents;
		// $data['theSubjects'] = $theSubjects;

		$this->load->view('admin/header', $data);
		$this->load->view('admin/multiple-student-edit', $data);
		$this->load->view('admin/footer');
	}

	public function school_calendar()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/school-calendar.php'))
			show_404();
		$data['title'] = 'School Calendar';
		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$adminInfo = $this->db->query("SELECT * FROM admin WHERE id =" . $_SESSION['admin_id'])->row_array();
		$data['courses'] = $this->Admin_model->get_courses();
		$data['batch'] = $this->Admin_model->get_batch();
		$data['result'] = $this->db->query('select * from school_settings where id= 1')->row_array();
		// $rst=$this->db->query("SELECT invoice_no FROM `student_fee_online_transactions` ORDER BY id DESC")->row_array();
		// if(!empty($rst)){
		// $data['new_invoice_no']=(isset($rst['invoice_no']) && !empty($rst['invoice_no'])) ? $rst['invoice_no'] :"0000";
		// }
		if ($_POST > 0) {
			if (isset($_POST['addEvent']) && ($_POST['addEvent'] == 'Add')) {


				$start_date_array = explode('-', $_POST['event_date']);

				$td['title'] = $_POST['title'];
				$td['year'] = $start_date_array[0];
				$td['month'] = $start_date_array[1];
				$td['day'] = $start_date_array[2];
				$td['date'] = $_POST['event_date'];
				$td['end_date'] = $_POST['event_end_date'];
				$td['event_type'] = $_POST['event_type'];
				$td['remarks'] = $_POST['description'];
				$td['created_on'] = $this->nepali_current_date;
				$td['created_by'] = $adminInfo['admin_name'];
				$td['modified_on'] = $this->nepali_current_date;
				$td['modified_by'] = $adminInfo['admin_name'];


				$this->db->insert('school_calendar', $td);
				$this->session->set_flashdata('success', str_replace('%s', 'Event Type', 'New event has been added.'));

				redirect(base_url() . 'admin/school-calendar');
				// dd($td);
			} else if (isset($_POST['updateEvent']) && ($_POST['updateEvent'] == 'Update')) {
				$start_date_array = explode('-', $_POST['event_date']);
				$ud['title'] = $_POST['title'];
				$ud['year'] = $start_date_array[0];
				$ud['month'] = $start_date_array[1];
				$ud['day'] = $start_date_array[2];
				$ud['date'] = $_POST['up_event_date'];
				$ud['end_date'] = $_POST['up_event_end_date'];
				$ud['event_type'] = $_POST['event_type'];
				$ud['remarks'] = $_POST['description'];
				$ud['modified_on'] = $this->nepali_current_date;
				$ud['modified_by'] = $adminInfo['admin_name'];

				$this->db->where('id', $_POST['eventId']);
				$update = $this->db->update('school_calendar', $ud);
				if ($update) {
					$this->session->set_flashdata('success', str_replace('%s', 'Event', 'Event record updated successfully.'));
				} else {
					$this->session->set_flashdata('danger', str_replace('%s', 'Event', 'Something went wrong. Please try again.'));
				}
				redirect(base_url() . 'admin/school-calendar');
				// dd($_POST);
			} else if (isset($_POST['deleteEvent']) && ($_POST['deleteEvent'] == 'Delete')) {
				$eventId = $_POST['eventId'];

				$this->db->where('id', $eventId);
				$delete = $this->db->delete('school_calendar');
				$this->session->set_flashdata('success', str_replace('%s', 'Event', 'Event deleted successfully.'));

				redirect(base_url() . 'admin/school-calendar');
			}
		}

		$data['event_lists'] =  $this->db->query('select * from school_calendar')->result_array();
		$data['event_types'] =  $this->db->query("select * from school_event_types WHERE is_active='yes'")->result_array();
		$dateTimeArray = explode(' ', $this->nepali_current_date);
		$data['today_date'] = $dateTimeArray[0];
		$data['currency'] = currency_data();
		$this->load->view('admin/header', $data);
		$this->load->view('admin/school-calendar');
		$this->load->view('admin/footer');
	}

	public function school_event_type()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/school-event-type.php'))
			show_404();
		$data['title'] = 'Event Types';
		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$data['courses'] = $this->Admin_model->get_courses();
		$data['batch'] = $this->Admin_model->get_batch();
		$data['result'] = $this->db->query('select * from school_settings where id= 1')->row_array();

		if ($_POST > 0) {
			if (isset($_POST['addEventType']) && ($_POST['addEventType'] == 'Add')) {
				// dd($_POST);

				$eventTitle = $_POST['title'];
				$isUnique = $this->Admin_model->get_unique_name_main_db('title', $eventTitle, 'school_event_types');

				if ($isUnique) {
					$in_data['title'] = $eventTitle;
					$in_data['is_active'] = 'yes';
					$in_data['created_on'] = $this->nepali_current_date;
					$in_data['modified_on'] =  $this->nepali_current_date;
					$this->db->insert('school_event_types', $in_data);
					$this->session->set_flashdata('success', str_replace('%s', 'Event Type', 'New event type has been added.'));
				} else {
					$this->session->set_flashdata('danger', str_replace('%s', 'Event Type', 'Event name already exist.'));
				}
				redirect(base_url() . 'admin/event-types');
			} else if (isset($_POST['updateEventType']) && ($_POST['updateEventType'] == 'Update')) {
				$eventId = $_POST['eventId'];
				$eventTitle = $_POST['title'];
				// dd($_POST);

				$isUnique = $this->Admin_model->update_unique_name_main_db('title', $eventTitle, 'school_event_types', $eventId);

				if ($isUnique) {
					$up_data['title'] = $eventTitle;
					$up_data['is_active'] = $_POST['is_active'];
					$up_data['modified_on'] =  $this->nepali_current_date;
					$this->db->where('id', $eventId);
					$this->db->update('school_event_types', $up_data);
					$this->session->set_flashdata('success', str_replace('%s', 'Event Type', 'Event details has been updated successfully.'));
				} else {
					$this->session->set_flashdata('danger', str_replace('%s', 'Event Type', 'Event name already exist.'));
				}
				redirect(base_url() . 'admin/event-types');
			} else if (isset($_POST['deleteEventType']) && ($_POST['deleteEventType'] == 'Delete')) {
				$eventId = $_POST['eventId'];
				$events = $this->db->query("SELECT * FROM school_calendar WHERE event_type=$eventId")->result_array();

				if (empty($events)) {
					$this->db->where('id', $eventId);
					$delete = $this->db->delete('school_event_types');
					if ($delete) {
						$this->session->set_flashdata('success', str_replace('%s', 'Event Type', 'Event type deleted successfully.'));
					}
				} else {
					$this->session->set_flashdata('danger', str_replace('%s', 'Event Type', 'Event existed with this event type. Please delete events link with it.'));
				}

				redirect(base_url() . 'admin/event-types');
			}
		}


		$data['event_type_list'] =  $this->db->query('select * from school_event_types')->result_array();
		$dateTimeArray = explode(' ', $this->nepali_current_date);
		$data['today_date'] = $dateTimeArray[0];
		$data['currency'] = currency_data();
		$this->load->view('admin/header', $data);
		$this->load->view('admin/school-event-type');
		$this->load->view('admin/footer');
	}


	public function designation()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		$data['currentURL'] = current_url();
		$data['title'] = 'Designations';
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		$hr_db = $this->load->database('hr', TRUE);

		if (isset($_POST['addDesignation']) && $_POST['addDesignation'] == 'Add') {
			$designationTitle = $_POST['title'];

			$isUnique = $this->Admin_model->get_unique_name('title', $designationTitle, 'hr_designation');

			if ($isUnique) {
				$in_data['title'] = $designationTitle;
				$in_data['is_active'] = 'yes';
				$in_data['created_on'] = $this->nepali_current_date;

				$in_data['modified_on'] =  $this->nepali_current_date;
				$hr_db->insert('hr_designation', $in_data);
				$this->session->set_flashdata('success', str_replace('%s', 'Designation', 'New designation has been added.'));
			} else {
				$this->session->set_flashdata('danger', str_replace('%s', 'Designation', 'Designation title already exist.'));
			}
			redirect(base_url() . 'admin/designation');
		} else if (isset($_POST['updateDesignation']) && $_POST['updateDesignation'] == 'Update') {
			$designationTitle = $_POST['title'];
			$designationId = $_POST['designationId'];

			$update_data = array(
				'title' => $designationTitle,
				'is_active' => $_POST['is_active'],
				'modified_on' =>  $this->nepali_current_date,
			);
			$hr_db->where('id', $designationId);
			$update = $hr_db->update("hr_designation", $update_data);
			if ($update) {

				$this->session->set_flashdata('success', str_replace('%s', 'Designation', 'Designation has been updated successfully.'));
			} else {
				$this->session->set_flashdata('danger', str_replace('%s', 'Designation', 'THE_ADD_ERROR_MSG'));
			}


			redirect(base_url() . 'admin/designation');
		}

		$query = $hr_db->query('select * from hr_designation');
		$data['designation_list'] = $query->result_array();

		// $this->load->view('bustracking-admin/common/left-menu', $data);
		// $this->load->view('bustracking-admin/common/header', $data);
		// $this->load->view('bustracking-admin/designation', $data);

		$this->load->view('admin/header', $data);
		$this->load->view('admin/designation', $data);
		$this->load->view('admin/footer');
	}

	public function department()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		$data['currentURL'] = current_url();
		$data['title'] = 'Departments';
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();

		$hr_db = $this->load->database('hr', TRUE);

		if (isset($_POST['addDepartment']) && $_POST['addDepartment'] == 'Add') {
			$departmentTitle = $_POST['title'];

			$isUnique = $this->Admin_model->get_unique_name('title', $departmentTitle, 'hr_department');
			// echo '
';
			// print_r($isUnique);

			if ($isUnique) {
				$in_data['title'] = $departmentTitle;
				$in_data['is_active'] = 'yes';
				$in_data['created_on'] = $this->nepali_current_date;

				$in_data['modified_on'] =  $this->nepali_current_date;
				$hr_db->insert('hr_department', $in_data);
				$this->session->set_flashdata('success', str_replace('%s', 'Department', 'New department has been added.'));
			} else {
				$this->session->set_flashdata('danger', str_replace('%s', 'Department', 'Department title already exist.'));
			}
			redirect(base_url() . 'admin/department');
		} else if (isset($_POST['updateDepartment']) && $_POST['updateDepartment'] == 'Update') {
			$departmentTitle = $_POST['title'];
			$departmentId = $_POST['departmentId'];

			$update_data = array(
				'title' => $departmentTitle,
				'is_active' => $_POST['is_active'],
				'modified_on' =>  $this->nepali_current_date,
			);
			$hr_db->where('id', $departmentId);
			$update = $hr_db->update("hr_department", $update_data);
			if ($update) {

				$this->session->set_flashdata('success', str_replace('%s', 'Department', 'Department has been updated successfully.'));
			} else {
				$this->session->set_flashdata('danger', str_replace('%s', 'Department', 'THE_ADD_ERROR_MSG'));
			}


			redirect(base_url() . 'admin/department');
		}

		$query = $hr_db->query('select * from hr_department');
		$data['department_list'] = $query->result_array();

		$this->load->view('admin/header', $data);
		$this->load->view('admin/department', $data);
		$this->load->view('admin/footer');
	}

	public function staff_roles()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		$data['currentURL'] = current_url();
		$data['title'] = 'Staff Roles';
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['logo'] = $this->Admin_model->get_logo();

		$hr_db = $this->load->database('hr', TRUE);

		if (isset($_POST['addStaffRole']) && $_POST['addStaffRole'] == 'Add') {
			$staffRoleTitle = $_POST['title'];

			$isUnique = $this->Admin_model->get_unique_name('title', $staffRoleTitle, 'staff_roles');
			// echo '
';
			// print_r($isUnique);

			if ($isUnique) {
				$in_data['title'] = $staffRoleTitle;
				$in_data['is_active'] = 'yes';
				$in_data['created_on'] = $this->nepali_current_date;
				$in_data['modified_on'] =  $this->nepali_current_date;

				$hr_db->insert('staff_roles', $in_data);
				$this->session->set_flashdata('success', str_replace('%s', 'Role', 'New has been added.'));
			} else {
				$this->session->set_flashdata('danger', str_replace('%s', 'Role', 'Role already exist.'));
			}
			redirect(base_url() . 'admin/staff-roles');
		} else if (isset($_POST['updateStaffRole']) && $_POST['updateStaffRole'] == 'Update') {
			// var_dump($_POST);
			// exit();
			$staffRoleTitle = $_POST['title'];
			$staffRoleId = $_POST['roleId'];

			$update_data = array(
				'title' => $staffRoleTitle,
				'is_active' => $_POST['is_active'],
				'modified_on' =>  $this->nepali_current_date,
			);
			$hr_db->where('id', $staffRoleId);
			$update = $hr_db->update("staff_roles", $update_data);
			if ($update) {

				$this->session->set_flashdata('success', str_replace('%s', 'Roles', 'Role has been updated successfully.'));
			} else {
				$this->session->set_flashdata('danger', str_replace('%s', 'Roles', 'THE_ADD_ERROR_MSG'));
			}


			redirect(base_url() . 'admin/staff-roles');
		}

		$query = $hr_db->query('select * from staff_roles');
		$data['staffRole_list'] = $query->result_array();

		$this->load->view('admin/header', $data);
		$this->load->view('admin/staff-roles', $data);
		$this->load->view('admin/footer');
	}

	public function school_administration()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');
		if (!file_exists(APPPATH . 'views/admin/school-administration.php'))
			show_404();
		$data['title'] = 'School Administration';
		$data['currentURL'] = current_url();
		//get logo
		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		//get menu list
		$data['menulist'] = $this->Admin_model->get_adminMenu();

		$data['courses'] = $this->Admin_model->get_courses();
		$data['batch'] = $this->Admin_model->get_batch();
		$data['result'] = $this->db->query('select * from school_settings where id= 1')->row_array();
		// $rst=$this->db->query("SELECT invoice_no FROM `student_fee_online_transactions` ORDER BY id DESC")->row_array();
		// if(!empty($rst)){
		// $data['new_invoice_no']=(isset($rst['invoice_no']) && !empty($rst['invoice_no'])) ? $rst['invoice_no'] :"0000";
		// }
		$data['currency'] = currency_data();
		$this->load->view('admin/header', $data);
		$this->load->view('admin/school-administration');
		$this->load->view('admin/footer');
	}


	public function school_staffs()
	{
		if (isset($_SESSION['admin_id'])) {


			$tid = '';
			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();
			$staffs = $this->Admin_model->get_staff($tid);

			foreach ($staffs as $key => $value) {

				$filePath = 'assets_admin/images/teacher-profile/' . $value['photo'];
				if (file_exists($filePath)) {
					$staffs[$key]['profile_pic'] = base_url() . 'assets_admin/images/teacher-profile/' . $value['photo'];
				} else {
					$staffs[$key]['profile_pic'] = base_url() . 'common_assets/No-Image.jpg';
				}
			}
			$data['staffs'] = $staffs;
			$hr_db = $this->load->database('hr', TRUE);
			$hr_roles = $hr_db->query("SELECT * from staff_roles where is_active = 'yes'")->result_array();
			$hr_designation = $hr_db->query("SELECT * from hr_designation where is_active = 'yes'")->result_array();
			$data['hr_designation'] = $hr_designation;
			$data['hr_roles'] = $hr_roles;
			$this->load->view('admin/header', $data);
			$this->load->view('admin/staffs');
			$this->load->view('admin/footer');
		}
	}

	public function add_edit_staff($tid = NULL)
	{
		if (isset($_SESSION['admin_id'])) {
			$data['tid'] = $tid;
			$data['currentURL'] = current_url();
			//get logo
			$data['logo'] = $this->Admin_model->get_logo();
			$data['school_info'] = $this->Admin_model->get_logo_from_setting();
			//get menu list
			$data['menulist'] = $this->Admin_model->get_adminMenu();

			//shankar code start here /
			$data['subject_list'] = $this->Admin_model->get_subjects();
			$data['assign_subjects'] = array('0');

			//shankar code end here
			if ($tid > 0) {
				$data['detail'] = $this->Admin_model->get_teacher($tid);

				//shankar code start here

				$data['subjects'] = $this->Admin_model->get_teacher($tid, 1);
				$dat = array();
				foreach ($data['subjects'] as $key => $val) {
					array_push($dat, $val['id']);
				}

				$data['assign_subjects'] = $dat;

				//shankar code end here
			}

			$hr_db = $this->load->database('hr', TRUE);
			$hr_roles = $hr_db->query("SELECT * from staff_roles where is_active = 'yes'")->result_array();
			$hr_designation = $hr_db->query("SELECT * from hr_designation where is_active = 'yes'")->result_array();
			$data['hr_designation'] = $hr_designation;
			$data['hr_roles'] = $hr_roles;
			// dd($hr_designation);

			$this->load->view('admin/header', $data);
			$this->load->view('admin/add-edit-staff');
			$this->load->view('admin/footer');
		}
	}


	public function dowmloadApplictionForm()
	{
		$this->load->library('m_pdf');

		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['issue_date'] = $this->nepali_current_date;
		$data['courses'] = $this->db->query("SELECT * FROM course WHERE is_active = 'yes'")->result_array();
		// dd($data['school_info']);
		$html = $this->load->view('admin/admission_form', $data, true);
		$pdfFilePath = 'Admission Form' . '-' . date('YmdHis') . ".pdf";
		$pdf = $this->m_pdf->loadforAdmissionForm();
		// $stylesheet = file_get_contents('assets_admin/css/bootstrap.min.css');
		// $pdf->WriteHTML($stylesheet, 1);
		$pdf->WriteHTML($html, 2);
		$pdf->Output($pdfFilePath, "D");
	}

	public function dowmloadApplicantApplictionForm()
	{
		$this->load->library('m_pdf');

		// dd($_POST);

		$data['logo'] = $this->Admin_model->get_logo();
		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
		$data['issue_date'] = $this->nepali_current_date;
		$data['courses'] = $this->db->query("SELECT * FROM course WHERE is_active = 'yes'")->result_array();
		// dd($data['school_info']);
		$data['applicant'] = $this->db->query("SELECT * FROM applications WHERE id = " . $_POST['applicant_id'])->row_array();
		$html = $this->load->view('admin/applicant_admission_form', $data, true);
		$pdfFilePath = 'Admission Form' . '-' . date('YmdHis') . ".pdf";
		$pdf = $this->m_pdf->loadforAdmissionForm();
		// $stylesheet = file_get_contents('assets_admin/css/bootstrap.min.css');
		// $pdf->WriteHTML($stylesheet, 1);
		$pdf->WriteHTML($html, 2);
		$pdf->Output($pdfFilePath, "D");
	}

	function classroom_schedule()
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		if (!file_exists(APPPATH . 'views/admin/classroom_schedule.php'))
			show_404();

		$theCourseSubjects = array();
		$theBatchId = '';
		$studntinfo = [];
		$sectionId = '';
		$courseId = '';
		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$data['title'] = "Assign Fees";
		$data['courses'] = $this->Admin_model->get_courses();
		//echo '
'; print_r($data['courses']);exit;
		$school_info = $this->Admin_model->get_logo_from_setting();
		$data['school_info'] = $school_info;
		$data['nepali_months'] = $this->db->query("Select * from nepali_months")->result_array();
		$adminInfo = $this->db->query("SELECT * FROM admin WHERE id =" . $_SESSION['admin_id'])->row_array();
		$theResult = array();
		$weekDays = $this->db->query("Select * from week_days")->result_array();

		if (isset($school_info['batch_id']))
			$theBatchId = (!empty($school_info['batch_id'])) ? $school_info['batch_id'] : 0;



		if ($this->input->post('filterSubmit') == "Filter") {
			$obj = new NepaliDate();
			$condtion = '';
			$theBatchId = (isset($_POST['f_batch']) && !empty($_POST['f_batch'])) ? $_POST['f_batch'] : $school_info['batch_id'];
			$courseId = (isset($_POST['filter-course']) && !empty($_POST['filter-course'])) ? $_POST['filter-course'] : '';
			$sectionId = (isset($_POST['filter-section']) && !empty($_POST['filter-section'])) ? $_POST['filter-section'] : '';

			$theCourseSubjects = $this->db->query("Select cs.*, s.subject_name, s.id as subject_id from course_subjects cs JOIN subject s ON s.id = cs.subject_id WHERE cs.course_id = $courseId")->result_array();

			$class_schedule_query = "SELECT id, 
									GROUP_CONCAT(DISTINCT start_time) AS class_start_time,
									GROUP_CONCAT(DISTINCT end_time) as class_end_time
									FROM classroom_schedule 
									WHERE batch=$theBatchId AND course=$courseId AND section=$sectionId";
			$theResult = $this->db->query($class_schedule_query)->row_array();

			if (!empty($theResult['class_start_time'])) {

				$class_start_time_array = explode(',', $theResult['class_start_time']);
				$class_end_time_array = explode(',', $theResult['class_end_time']);

				// dd($theResult);

				foreach ($class_start_time_array as $cst_key => $cst_value) {

					// echo $cst_value . ' =====> ' . $class_end_time_array[$cst_key] . '
'; $theResult['class_schedule'][$cst_key]['batch_id'] = $theBatchId; $theResult['class_schedule'][$cst_key]['course_id'] = $courseId; $theResult['class_schedule'][$cst_key]['section_id'] = $sectionId; $theResult['class_schedule'][$cst_key]['start_time'] = $cst_value; $theResult['class_schedule'][$cst_key]['end_time'] = $class_end_time_array[$cst_key]; foreach ($weekDays as $wd_key => $wd_value) { $theResult['class_schedule'][$cst_key]['days'][$wd_key] = $wd_value; $class_subject_schedule = "SELECT cs.subject, s.subject_name FROM classroom_schedule cs JOIN subject s ON s.id=cs.subject WHERE cs.start_time = '$cst_value' AND cs.end_time='" . $class_end_time_array[$cst_key] . "' AND cs.day=" . $wd_value['id'] . " AND batch=$theBatchId AND course=$courseId AND section=$sectionId"; $class_subject = $this->db->query($class_subject_schedule)->row_array(); $theResult['class_schedule'][$cst_key]['days'][$wd_key]['subject'] = $class_subject; } } } // dd($theResult); } if ((isset($_POST['addClassSchedule'])) && ($_POST['addClassSchedule'] == 'Save')) { $theBatchId = (isset($_POST['selectedBatchId']) && !empty($_POST['selectedBatchId'])) ? $_POST['selectedBatchId'] : $school_info['batch_id']; $courseId = (isset($_POST['selectedCourseId']) && !empty($_POST['selectedCourseId'])) ? $_POST['selectedCourseId'] : ''; $sectionId = (isset($_POST['selectedSectionId']) && !empty($_POST['selectedSectionId'])) ? $_POST['selectedSectionId'] : ''; $days = $_POST['days']; $startTime = $_POST['class_start_time']; $endTime = $_POST['class_end_time']; $subject = $_POST['subject']; $classroom = $this->db->query("SELECT * FROM classroom WHERE course_id=$courseId AND section_id=$sectionId")->row_array(); $insert_array = array(); foreach ($days as $key => $day) { $td['day'] = $day; $td['start_time'] = $startTime; $td['end_time'] = $endTime; $td['subject'] = $subject; $td['course'] = $courseId; $td['section'] = $sectionId; $td['batch'] = $theBatchId; $td['classroom'] = $classroom['id']; $td['created_on'] = $this->nepali_current_date; $td['created_by'] = $adminInfo['admin_name']; $td['modified_on'] = $this->nepali_current_date; $td['modified_by'] = $adminInfo['admin_name']; // echo '
';
				// print_r($td);


				$insert = $this->db->insert('classroom_schedule', $td);

				if ($insert) {
					array_push($insert_array, true);
				} else {
					array_push($insert_array, true);
				}
			}


			if (!in_array(false, $insert_array)) {
				$this->session->set_flashdata('success', 'Record has been inserted Successfully.');
			} else {
				$this->session->set_flashdata('error', 'Something Went Wrong. Please try again later');
			}
			// redirect('admin/classroom-schedule');
			// dd($insert_array);
			$class_schedule_query = "SELECT id, 
									GROUP_CONCAT(DISTINCT start_time) AS class_start_time,
									GROUP_CONCAT(DISTINCT end_time) as class_end_time
									FROM classroom_schedule 
									WHERE batch=$theBatchId AND course=$courseId AND section=$sectionId";
			$theResult = $this->db->query($class_schedule_query)->row_array();

			$class_start_time_array = explode(',', $theResult['class_start_time']);
			$class_end_time_array = explode(',', $theResult['class_end_time']);

			foreach ($class_start_time_array as $cst_key => $cst_value) {

				// echo $cst_value . ' =====> ' . $class_end_time_array[$cst_key] . '
'; $theResult['class_schedule'][$cst_key]['start_time'] = $cst_value; $theResult['class_schedule'][$cst_key]['end_time'] = $class_end_time_array[$cst_key]; foreach ($weekDays as $wd_key => $wd_value) { $theResult['class_schedule'][$cst_key]['days'][$wd_key] = $wd_value; $class_subject_schedule = "SELECT cs.subject, s.subject_name FROM classroom_schedule cs JOIN subject s ON s.id=cs.subject WHERE cs.start_time = '$cst_value' AND cs.end_time='" . $class_end_time_array[$cst_key] . "' AND cs.day=" . $wd_value['id'] . " AND batch=$theBatchId AND course=$courseId AND section=$sectionId"; $class_subject = $this->db->query($class_subject_schedule)->row_array(); $theResult['class_schedule'][$cst_key]['batch_id'] = $theBatchId; $theResult['class_schedule'][$cst_key]['course_id'] = $courseId; $theResult['class_schedule'][$cst_key]['section_id'] = $sectionId; $theResult['class_schedule'][$cst_key]['days'][$wd_key]['subject'] = $class_subject; } } $theCourseSubjects = $this->db->query("Select cs.*, s.subject_name, s.id as subject_id from course_subjects cs JOIN subject s ON s.id = cs.subject_id WHERE cs.course_id = $courseId")->result_array(); } if ((isset($_POST['d_action'])) && ($_POST['d_action'] == 'deleteSchedule')) { $theBatchId = $_POST['batch_id']; $courseId = $_POST['course_id']; $sectionId = $_POST['section_id']; $startTime = $_POST['start_time']; $endTime = $_POST['end_time']; $current_class = $this->db->query("SELECT id FROM classroom_schedule WHERE start_time='$startTime' AND end_time='$endTime' AND batch=$theBatchId AND course=$courseId AND section=$sectionId")->result_array(); $delete_array = array(); foreach ($current_class as $c_key => $cc) { $this->db->where('id', $cc['id']); $delete = $this->db->delete('classroom_schedule'); // print_r($cc); if ($delete) { array_push($delete_array, true); } else { array_push($delete_array, false); } } if (!(in_array(false, $delete_array))) { $this->session->set_flashdata('success', 'Record has been deleted Successfully.'); } else { $this->session->set_flashdata('error', 'Something Went Wrong. Please try again later'); } $class_schedule_query = "SELECT id, GROUP_CONCAT(DISTINCT start_time) AS class_start_time, GROUP_CONCAT(DISTINCT end_time) as class_end_time FROM classroom_schedule WHERE batch=$theBatchId AND course=$courseId AND section=$sectionId"; $theResult = $this->db->query($class_schedule_query)->row_array(); if (empty($theResult['id'])) { $theResult = []; $class_start_time_array = []; $class_end_time_array = []; } else { $class_start_time_array = explode(',', $theResult['class_start_time']); $class_end_time_array = explode(',', $theResult['class_end_time']); } // dd($theResult); foreach ($class_start_time_array as $cst_key => $cst_value) { // echo $cst_value . ' =====> ' . $class_end_time_array[$cst_key] . '
'; if (!empty($theResult['id'])) { $theResult['class_schedule'][$cst_key]['start_time'] = $cst_value; $theResult['class_schedule'][$cst_key]['end_time'] = $class_end_time_array[$cst_key]; foreach ($weekDays as $wd_key => $wd_value) { $theResult['class_schedule'][$cst_key]['days'][$wd_key] = $wd_value; $class_subject_schedule = "SELECT cs.subject, s.subject_name FROM classroom_schedule cs JOIN subject s ON s.id=cs.subject WHERE cs.start_time = '$cst_value' AND cs.end_time='" . $class_end_time_array[$cst_key] . "' AND cs.day=" . $wd_value['id'] . " AND batch=$theBatchId AND course=$courseId AND section=$sectionId"; $class_subject = $this->db->query($class_subject_schedule)->row_array(); $theResult['class_schedule'][$cst_key]['batch_id'] = $theBatchId; $theResult['class_schedule'][$cst_key]['course_id'] = $courseId; $theResult['class_schedule'][$cst_key]['section_id'] = $sectionId; $theResult['class_schedule'][$cst_key]['days'][$wd_key]['subject'] = $class_subject; } } } $theCourseSubjects = $this->db->query("Select cs.*, s.subject_name, s.id as subject_id from course_subjects cs JOIN subject s ON s.id = cs.subject_id WHERE cs.course_id = $courseId")->result_array(); } // dd($theResult); $data['course_subjects'] = $theCourseSubjects; $data['week_days'] = $weekDays; $data['section'] = $sectionId; $data['course'] = $courseId; $data['class_schedule'] = $theResult; // dd($theResult); $data['theBatchId'] = $theBatchId; $batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes')); $data['batches'] = $batches; $this->load->view('admin/header', $data); $this->load->view('admin/classroom_schedule', $data); $this->load->view('admin/footer'); } function classroom_schedule_update($url_params) { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/classroom_schedule.php')) show_404(); $theCourseSubjects = array(); $theBatchId = ''; $studntinfo = []; $sectionId = ''; $courseId = ''; $data['currentURL'] = current_url(); $data['logo'] = $this->Admin_model->get_logo(); $data['menulist'] = $this->Admin_model->get_adminMenu(); $data['courses'] = $this->Admin_model->get_courses(); //echo '
'; print_r($data['courses']);exit;
		$school_info = $this->Admin_model->get_logo_from_setting();
		$data['school_info'] = $school_info;
		$data['nepali_months'] = $this->db->query("Select * from nepali_months")->result_array();
		$adminInfo = $this->db->query("SELECT * FROM admin WHERE id =" . $_SESSION['admin_id'])->row_array();
		$theResult = array();
		$weekDays = $this->db->query("Select * from week_days")->result_array();

		// 
		$param_arr = unserialize(urldecode($url_params));

		$theBatchId = $param_arr['batch_id'];
		$sectionId = $param_arr['section_id'];
		$courseId = $param_arr['course_id'];
		$start_time = $param_arr['start_time'];
		$end_time = $param_arr['end_time'];


		if ($_POST > 0) {



			if (isset($_POST['schedule_update']) && ($_POST['schedule_update'] == 'Save')) {
				// $isUnique = $this->Admin_model->get_unique_name_main_db('classroom_schedule', $_POST['class_start_time'], 'start_time');
				// if($isUnique){}
				$class_start_time = date('h:i:s', strtotime($_POST['class_start_time']));
				//  strtotime($_POST['class_start_time']);

				$class_end_time = date('h:i:s', strtotime($_POST['class_end_time']));

				$theBatchId = $_POST['batch_id'];
				$courseId = $_POST['course_id'];
				$sectionId = $_POST['section_id'];

				$class_schedule_query = "SELECT id, 
									GROUP_CONCAT(DISTINCT start_time) AS class_start_time,
									GROUP_CONCAT(DISTINCT end_time) as class_end_time
									FROM classroom_schedule 
									WHERE batch=$theBatchId AND course=$courseId AND section=$sectionId";

				$schedules = $this->db->query($class_schedule_query)->row_array();

				$previos_class_start_times = explode(',', $schedules['class_start_time']);
				$previos_class_end_times = explode(',', $schedules['class_end_time']);

				foreach ($previos_class_start_times as $p_key => $pc_value) {
					// echo ($pc_value . ' => ' . $class_start_time . '
'); $pc_startTime = date('h:i:s', strtotime($pc_value)); $pcEndTime = date('h:i:s', strtotime($previos_class_end_times[$p_key])); $subjects = $_POST['subject']; foreach ($subjects as $s_key => $subject) { $current_class = $this->db->query("SELECT id FROM classroom_schedule WHERE start_time='$pc_startTime' AND end_time='$pcEndTime' AND day=" . $s_key . " AND batch=$theBatchId AND course=$courseId AND section=$sectionId")->row_array(); if (!empty($current_class)) { // echo $subject . ' => ' . $current_class['id'] . '
'; $ud['start_time'] = $_POST['class_start_time']; $ud['end_time'] = $_POST['class_end_time']; $ud['subject'] = $subject; $ud['modified_on'] = $this->nepali_current_date; $ud['modified_by'] = $adminInfo['admin_name']; $ud['id'] = $current_class['id']; // echo '
';
							// print_r($ud);
							$this->db->where('id', $current_class['id']);
							$update = $this->db->update('classroom_schedule', $ud);
						} else {

							$classroom = $this->db->query("SELECT * FROM classroom WHERE course_id=$courseId AND section_id=$sectionId")->row_array();


							$td['day'] = $s_key;
							$td['start_time'] = $_POST['class_start_time'];
							$td['end_time'] = $_POST['class_end_time'];
							$td['subject'] = $subject;
							$td['course'] = $courseId;
							$td['section'] = $sectionId;
							$td['batch'] = $theBatchId;
							$td['classroom'] = $classroom['id'];
							$td['created_on'] = $this->nepali_current_date;
							$td['created_by'] = $adminInfo['admin_name'];
							$td['modified_on'] = $this->nepali_current_date;
							$td['modified_by'] = $adminInfo['admin_name'];
							// echo '
';
							// print_r($td);
							$insert = $this->db->insert('classroom_schedule', $td);

							if ($insert) {
								array_push($insert_array, true);
							} else {
								array_push($insert_array, true);
							}
						}
					}
					// 	}
					// }
					// dd($_POST);
					$url_params = array(
						'batch_id' => $_POST['batch_id'],
						'course_id' => $_POST['course_id'],
						'section_id' => $_POST['section_id'],
						'start_time' => $_POST['class_start_time'],
						'end_time' => $_POST['class_end_time']
					);
					$this->session->set_flashdata('success', 'The schedule updated successfully.');
					redirect('admin/classroom-schedule-update/' . urlencode(serialize($url_params)));
				}
			}
		}


		$classroom_schedule = $this->db->query("SELECT * FROM classroom_schedule WHERE start_time='$start_time' AND end_time='$end_time' AND course=$courseId AND section=$sectionId AND batch=$theBatchId")->result_array();
		$classroom = $this->db->query("SELECT * FROM classroom WHERE course_id=$courseId AND section_id=$sectionId")->row_array();
		$theCourseSubjects = $this->db->query("Select cs.*, s.subject_name, s.id as subject_id from course_subjects cs JOIN subject s ON s.id = cs.subject_id WHERE cs.course_id = $courseId")->result_array();

		$data['course_subjects'] = $theCourseSubjects;
		$data['week_days'] = $weekDays;
		$data['section'] = $sectionId;
		$data['course'] = $courseId;
		$data['classroom'] = $classroom;
		$data['url_params'] = $url_params;
		$data['start_time'] = $start_time;
		$data['end_time'] = $end_time;
		$data['class_schedule'] = $classroom_schedule;
		$data['theBatchId'] = $theBatchId;
		$batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes'));
		$data['batches'] = $batches;

		$this->load->view('admin/header', $data);
		$this->load->view('admin/classroom_schedule_update', $data);
		$this->load->view('admin/footer');
	}

	function assign_student_fees($url_params)
	{
		if (!isset($_SESSION['admin_id']))
			redirect(base_url() . 'admin');

		if (!file_exists(APPPATH . 'views/admin/assign-all-fees-student.php'))
			show_404();

		$theStudents = array();
		$theFees = array();
		$theBatchId = '';
		$feestype = array();
		$studntinfo = [];
		$studntinfo1 = [];
		$studntRouteInfo = [];
		$studntRouteInfo1 = [];
		$sectionId = '';
		$courseId = '';
		$filterRouteId = '';
		$dateFrom = '';
		$feestypes = [];
		$data['currentURL'] = current_url();
		$data['logo'] = $this->Admin_model->get_logo();
		$data['menulist'] = $this->Admin_model->get_adminMenu();
		$data['title'] = "Assign Fees";
		$data['courses'] = $this->Admin_model->get_courses();
		//echo '
'; print_r($data['courses']);exit;
		$school_info = $this->Admin_model->get_logo_from_setting();
		$data['school_info'] = $school_info;
		if (isset($school_info['batch_id']))
			$theBatchId = (!empty($school_info['batch_id'])) ? $school_info['batch_id'] : 0;

		$param_arr = unserialize(urldecode($url_params));

		$theBatchId = $param_arr['batch_id'];
		$theCourseId = $param_arr['course_id'];
		$theSectionId = $param_arr['section_id'];
		$theStudentd = $param_arr['student_id'];

		$student_info_query = "SELECT s.id as student_id, s.name, s.email, s.studentId, s.photo, s.bus_routeid, s.hostel_plan_id, s.gender, s.emergency_contact_number, s.dob, cl.classroom_name,b.id as batch_id, cl.course_id, b.b_name, sb.roll_no FROM students s
		JOIN student_batch sb ON sb.student_id = $theStudentd AND sb.batch_id = $theBatchId
		JOIN batch b ON b.id = $theBatchId
		JOIN classroom cl ON cl.id = sb.classroom_id WHERE s.id =$theStudentd  ORDER BY sb.id DESC";

		$student_info = $this->db->query($student_info_query)->row_array();
		// echo $student_info_query;

		$course_fees_types_query = "SELECT DISTINCT cf.fees_type FROM course_fees cf WHERE cf.course_id = $theCourseId AND cf.batch_id = $theBatchId";
		$course_fee_types = $this->db->query($course_fees_types_query)->result_array();


		foreach ($course_fee_types as $cft_key => $cf_type) {
			$fee_type = $this->db->query("SELECT * FROM fee_types WHERE id = " . $cf_type['fees_type'])->row_array();

			$course_fees_query = "";
			// For transport fee

			// if($student_info['bus_routeid'] > 0){

			// }
			if (($cf_type['fees_type'] == 4)) {
				if ($student_info['bus_routeid'] > 0) {
					$course_fees_query = "SELECT cf.* FROM course_fees cf WHERE cf.course_id = $theCourseId AND cf.batch_id = $theBatchId AND cf.fees_type = " . $cf_type['fees_type'] . " AND route_id = " . $student_info['bus_routeid'];
					$course_fees = $this->db->query($course_fees_query)->result_array();

					$student_info['course_fees'][$cf_type['fees_type']]['fee_title'] = $fee_type['feetype_name'];
					$student_info['course_fees'][$cf_type['fees_type']]['fees'] = $course_fees;

					foreach ($course_fees as $cf_key => $cf_value) {
						$fee_assign_query = "SELECT * FROM fee_assigned_students WHERE student_id = $theStudentd AND course_fee_id = " . $cf_value['id'];
						$assigned_fee = $this->db->query($fee_assign_query)->row_array();

						// Looking if the fee is assigned or not
						if (!empty($assigned_fee)) {
							$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['assigned'] = 'yes';
							$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['fee_assigned_id'] = $assigned_fee['id'];
						} else {
							$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['assigned'] = 'no';
							$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['fee_assigned_id'] = 0;
						}

						// Checking if the payment has been made or not.
						$fee_online_payment_query = "SELECT * FROM students_online_payments WHERE student_id = $theStudentd AND course_fee_id = " . $cf_value['id'];
						$student_online_payment = $this->db->query($fee_online_payment_query)->row_array();

						if (!empty($assigned_fee)) {
							$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['payment'] = 'yes';
							$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['sop_id'] = isset($student_online_payment) ? $student_online_payment['id'] : 0;
						} else {
							$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['payment'] = 'no';
							$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['sop_id'] = 0;
						}

						// print_r($assigned_fee);
					}
				}
			} else {
				$course_fees_query = "SELECT cf.* FROM course_fees cf WHERE cf.course_id = $theCourseId AND cf.batch_id = $theBatchId AND cf.fees_type = " . $cf_type['fees_type'];

				$course_fees = $this->db->query($course_fees_query)->result_array();

				$student_info['course_fees'][$cf_type['fees_type']]['fee_title'] = $fee_type['feetype_name'];
				$student_info['course_fees'][$cf_type['fees_type']]['fees'] = $course_fees;

				foreach ($course_fees as $cf_key => $cf_value) {
					$fee_assign_query = "SELECT * FROM fee_assigned_students WHERE student_id = $theStudentd AND course_fee_id = " . $cf_value['id'];
					$assigned_fee = $this->db->query($fee_assign_query)->row_array();

					// Looking if the fee is assigned or not
					if (!empty($assigned_fee)) {
						$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['assigned'] = 'yes';
						$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['fee_assigned_id'] = $assigned_fee['id'];
					} else {
						$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['assigned'] = 'no';
						$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['fee_assigned_id'] = 0;
					}

					// Checking if the payment has been made or not.
					$fee_online_payment_query = "SELECT * FROM students_online_payments WHERE student_id = $theStudentd AND course_fee_id = " . $cf_value['id'];
					$student_online_payment = $this->db->query($fee_online_payment_query)->row_array();

					if (!empty($student_online_payment)) {
						$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['payment'] = 'yes';
						$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['sop_id'] = isset($student_online_payment) ? $student_online_payment['id'] : 0;
					} else {
						$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['payment'] = 'no';
						$student_info['course_fees'][$cf_type['fees_type']]['fees'][$cf_key]['sop_id'] = 0;
					}

					// print_r($assigned_fee);
				}
			}
		}

		if ($_POST > 0) {
			if (isset($_POST['assigntostudents']) && $_POST['assigntostudents'] == 'Update') {
				// 

				$course_fees = isset($_POST['course_fees_id']) ? $_POST['course_fees_id'] : [];
				$fees_assigned = isset($_POST['course_fees_assigned_id']) ? $_POST['course_fees_assigned_id'] : [];
				$fees_payment_status = isset($_POST['course_fees_payment_status']) ? $_POST['course_fees_payment_status'] : [];
				$assigned_fees = isset($_POST['fees']) ? $_POST['fees'] : [];

				$update_array = array();

				foreach ($course_fees as $cf_key => $cf_value) {

					// echo $cf_value . ' => ' . $fees_assigned[$cf_value] . ' => ' . $fees_payment_status[$cf_value];

					// Deleting previous assigned fees
					if ($fees_payment_status[$cf_value] == 'no') {
						if ($fees_assigned[$cf_value] > 0) {
							// echo '
' . 'Delete id ' . $fees_assigned[$cf_value] . '
'; $this->db->where('id', $fees_assigned[$cf_value]); $this->db->delete('fee_assigned_students'); } } // End of Deleting previous assigned fees if (isset($assigned_fees[$cf_value])) { // echo ' => ' . $assigned_fees[$cf_value] . '
'; $td['student_id'] = $_POST['student_id']; $td['course_fee_id'] = $cf_value; $td['created_at'] = $this->nepali_current_date; $insert = $this->db->insert('fee_assigned_students', $td); if ($insert) { array_push($update_array, true); } else { array_push($update_array, false); } } // echo ' ===============================================
'; } if (in_array(true, $update_array)) { $this->session->set_flashdata('success', 'Student fees updated successfully.'); } else { $this->session->set_flashdata('danger', 'Fee update unsuccessful.'); } redirect('admin/student-fees/' . $url_params); // dd($_POST); } } // dd($student_info); $data['url_params'] = $url_params; $data['theBatchId'] = $theBatchId; $data['theStudentInfo'] = $student_info; $this->load->view('admin/header', $data); $this->load->view('admin/assign-all-fees-student', $data); $this->load->view('admin/footer'); } public function accounting_ledgers() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/accounting-ledgers.php')) show_404(); $data['currentURL'] = current_url(); $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $data['menulist'] = $this->Admin_model->get_adminMenu(); $condition = ''; $studentlist = array(); $batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes')); $data['batches'] = $batches; $courses = $this->Admin_model->get_table_info('course', '', '', 'ASC'); $data['course'] = $courses; $fees_types_list = $this->Admin_model->get_fees_type(); $data['fees_types'] = $fees_types_list; $user_type = 'student'; if (count($_POST)) { $user_type = $_POST['f_user_type']; if ($_POST['f_user_type'] == 'student') { $se_batch = (isset($_POST['f_batch']) && !empty($_POST['f_batch'])) ? $_POST['f_batch'] : ''; $se_course = (isset($_POST['f_course']) && !empty($_POST['f_course'])) ? $_POST['f_course'] : ''; $se_section = (isset($_POST['f_section']) && !empty($_POST['f_section'])) ? $_POST['f_section'] : ''; $f_feetype = (isset($_POST['filter_fee_types']) && !empty($_POST['filter_fee_types'])) ? $_POST['filter_fee_types'] : ''; if ($se_course != '') $condition .= " AND cl.course_id=$se_course"; if ($se_section != '') $condition .= " AND cl.section_id IN (" . implode(',', $se_section) . ")"; $studentlist = $this->db->query("SELECT s.id as student_id,s.name as student_name,s.course as course_id ,s.batch_id,s.email,s.studentId,s.mobile,s.emergency_contact_name as guardian_name,s.emergency_contact_number as guardian_contact_number,c.course_name,se.id as section_id, se.section_name,sb.id as student_batch_id, sb.roll_no FROM students s JOIN student_batch sb ON s.id=sb.student_id JOIN classroom cl ON cl.id=sb.classroom_id JOIN course c ON c.id=cl.course_id JOIN section se ON se.id=cl.section_id WHERE sb.batch_id=$se_batch AND s.is_active ='yes' $condition ORDER BY cl.course_id, cl.section_id, sb.roll_no ")->result_array(); foreach ($studentlist as $key => $std) { $studentlist[$key]['ledger_account'] = $this->accounting->fetchAccountInfo($std['studentId']); } // dd($studentlist); $data['students'] = $studentlist; } else { $tid = ''; $teachers = $this->Admin_model->get_teacher($tid); foreach ($teachers as $key => $value) { $filePath = 'assets_admin/images/teacher-profile/' . $value['photo']; if (file_exists($filePath)) { $teachers[$key]['profile_pic'] = base_url() . 'assets_admin/images/teacher-profile/' . $value['photo']; } else { $teachers[$key]['profile_pic'] = base_url() . 'common_assets/No-Image.jpg'; } $teachers[$key]['ledger_account'] = $this->accounting->fetchAccountInfo($value['teacherId']); } // dd($studentlist); $data['teacher'] = $teachers; $hr_db = $this->load->database('hr', TRUE); $hr_roles = $hr_db->query("SELECT * from staff_roles where is_active = 'yes'")->result_array(); $hr_designation = $hr_db->query("SELECT * from hr_designation where is_active = 'yes'")->result_array(); $data['hr_designation'] = $hr_designation; $data['hr_roles'] = $hr_roles; $data['teachers'] = $teachers; } // dd($data); } $data['user_type'] = $user_type; $this->load->view('admin/header', $data); $this->load->view('admin/accounting-ledgers', $data); $this->load->view('admin/footer'); } public function createLedgerAccount() { // dd($_POST); $adminInfo = $this->db->query("SELECT * FROM admin WHERE id =" . $_SESSION['admin_id'])->row_array(); $userIds = $this->input->post('contact_list'); $user_type = $this->input->post('user_t'); $course_id = $this->input->post('course_id'); $course_id = !empty($course_id) ? $course_id : 0; $dobArr = explode('-', date("Y-m-d")); $dateBS = $this->nepaliDateObject->convertAdToBs($dobArr[0], $dobArr[1], $dobArr[2]); $t_date = $dateBS['year'] . '-' . sprintf("%02d", $dateBS['month']) . '-' . sprintf("%02d", $dateBS['day']); $status = array(); foreach ($userIds as $c_key => $userId) { $username = ''; if ($user_type == 'student') { $std_info = $this->db->query("SELECT * FROM students WHERE studentId = '$userId'")->row_array(); $username = $std_info['name']; } else { $teacher_info = $this->db->query("SELECT * FROM teacher WHERE teacherId = '$userId'")->row_array(); $username = $teacher_info['teacher_name']; } $acc_create = $this->accounting->userCreateAcc($userId, $user_type, $username, $t_date); array_push($status, $acc_create); } if (in_array('success', $status)) { $this->session->set_flashdata('success_msg', str_replace('%s', 'Ledger Account', 'Ledger accounts has been created successfully.')); } else { $this->session->set_flashdata('error_msg', str_replace('%s', 'Ledger Account', 'Something went wrong. Please try again later.')); } redirect(base_url() . 'admin/accounting-ledgers'); } public function journal_vouchers() { if (!isset($_SESSION['admin_id'])) redirect(base_url() . 'admin'); if (!file_exists(APPPATH . 'views/admin/journal-vouchers.php')) show_404(); $data['currentURL'] = current_url(); $data['logo'] = $this->Admin_model->get_logo(); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $data['menulist'] = $this->Admin_model->get_adminMenu(); $condition = ''; $studentlist = array(); $batches = $this->Admin_model->get_table_info('batch', array('is_active' => 'yes')); $data['batches'] = $batches; $courses = $this->Admin_model->get_table_info('course', '', '', 'ASC'); $data['course'] = $courses; $fees_types_list = $this->Admin_model->get_fees_type(); $data['fees_types'] = $fees_types_list; $user_type = 'student'; if (count($_POST)) { $user_type = $_POST['f_user_type']; if ($_POST['f_user_type'] == 'student') { $se_batch = (isset($_POST['f_batch']) && !empty($_POST['f_batch'])) ? $_POST['f_batch'] : ''; $se_course = (isset($_POST['f_course']) && !empty($_POST['f_course'])) ? $_POST['f_course'] : ''; $se_section = (isset($_POST['f_section']) && !empty($_POST['f_section'])) ? $_POST['f_section'] : ''; $f_feetype = (isset($_POST['filter_fee_types']) && !empty($_POST['filter_fee_types'])) ? $_POST['filter_fee_types'] : ''; if ($se_course != '') $condition .= " AND cl.course_id=$se_course"; if ($se_section != '') $condition .= " AND cl.section_id IN (" . implode(',', $se_section) . ")"; $studentlist = $this->db->query("SELECT s.id as student_id,s.name as student_name,s.course as course_id ,s.batch_id,s.email,s.studentId,s.mobile,s.emergency_contact_name as guardian_name,s.emergency_contact_number as guardian_contact_number,c.course_name,se.id as section_id, se.section_name,sb.id as student_batch_id, sb.roll_no FROM students s JOIN student_batch sb ON s.id=sb.student_id JOIN classroom cl ON cl.id=sb.classroom_id JOIN course c ON c.id=cl.course_id JOIN section se ON se.id=cl.section_id WHERE sb.batch_id=$se_batch AND s.is_active ='yes' $condition ORDER BY cl.course_id, cl.section_id, sb.roll_no ")->result_array(); foreach ($studentlist as $key => $std) { $studentlist[$key]['ledger_account'] = $this->accounting->fetchVoucherInfo($std['student_id']); } // dd($studentlist); $data['students'] = $studentlist; } else { $tid = ''; $teachers = $this->Admin_model->get_teacher($tid); foreach ($teachers as $key => $value) { $filePath = 'assets_admin/images/teacher-profile/' . $value['photo']; if (file_exists($filePath)) { $teachers[$key]['profile_pic'] = base_url() . 'assets_admin/images/teacher-profile/' . $value['photo']; } else { $teachers[$key]['profile_pic'] = base_url() . 'common_assets/No-Image.jpg'; } $teachers[$key]['ledger_account'] = $this->accounting->fetchAccountInfo($value['teacherId']); } // dd($studentlist); $data['teacher'] = $teachers; $hr_db = $this->load->database('hr', TRUE); $hr_roles = $hr_db->query("SELECT * from staff_roles where is_active = 'yes'")->result_array(); $hr_designation = $hr_db->query("SELECT * from hr_designation where is_active = 'yes'")->result_array(); $data['hr_designation'] = $hr_designation; $data['hr_roles'] = $hr_roles; $data['teachers'] = $teachers; } // dd($data); } $data['all_fee_types'] = $this->Admin_model->get_query_result("SELECT id,feetype_name FROM fee_types WHERE is_active = 'yes'"); $data['user_type'] = $user_type; $this->load->view('admin/header', $data); $this->load->view('admin/journal-vouchers', $data); $this->load->view('admin/footer'); } public function createVoucher() { // dd($_POST); $adminInfo = $this->db->query("SELECT * FROM admin WHERE id =" . $_SESSION['admin_id'])->row_array(); $userIds = $this->input->post('contact_list'); $user_type = $this->input->post('user_t'); $course_id = $this->input->post('course_id'); $course_id = !empty($course_id) ? $course_id : 0; $dobArr = explode('-', date("Y-m-d")); $dateBS = $this->nepaliDateObject->convertAdToBs($dobArr[0], $dobArr[1], $dobArr[2]); $t_date = $dateBS['year'] . '-' . sprintf("%02d", $dateBS['month']) . '-' . sprintf("%02d", $dateBS['day']); $status = array(); foreach ($userIds as $c_key => $userId) { $username = ''; if ($user_type == 'student') { $std_info = $this->db->query("SELECT * FROM students WHERE studentId = '$userId'")->row_array(); $student = $this->db->query("SELECT s.id as student_id FROM students s WHERE s.studentId='$userId' AND s.is_active ='yes' ")->row_array(); $userId = $student['student_id']; } else { $teacher_info = $this->db->query("SELECT * FROM teacher WHERE teacherId = '$userId'")->row_array(); $userId = $teacher_info['id']; } $acc_create = $this->accounting->createVoucher($userId, $user_type); array_push($status, $acc_create); } // dd($status); if (in_array('success', $status)) { $this->session->set_flashdata('success_msg', str_replace('%s', 'Ledger Account', 'Ledger accounts has been created successfully.')); } else { $this->session->set_flashdata('error_msg', str_replace('%s', 'Ledger Account', 'Something went wrong. Please try again later.')); } redirect(base_url() . 'admin/journal-vouchers'); } }