load->model('Teacher_model'); $this->load->model('Admin_model'); $this->load->helper('url'); $this->load->library('email'); $this->load->helper('common_helper'); // date_default_timezone_set("Asia/Kolkata"); date_default_timezone_set("Asia/Kathmandu"); $this->nepaliDateObject = new NepaliDate(); $this->nepali_current_date = cuurentNepaliDate($this->nepaliDateObject); } public function index() { //if(!isset($_SESSION['teacher_id'])){ $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/header', $data); $this->load->view('teacher/login'); $this->load->view('teacher/footer'); /* } else redirect(base_url().'Teacher/dashboard');*/ } public function teacher_login() { $uname = $this->input->post('email'); $pwd = $this->input->post('password'); if ($this->Teacher_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() + 86400); //86400 seconds in a day setcookie("password", $_POST["password"], time() + 86400); setcookie("rem_me", 'On', time() + 86400); } 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', ''); } } $teacher_info = $this->Teacher_model->login($uname, $pwd); //getting values from database $teacher_id = $teacher_info->id; $teacher_role = $teacher_info->role; $teacher_rights = $teacher_info->rights; $teacher_email = $teacher_info->email; $teacher_name = $teacher_info->teacher_name; //create required sessions $this->session->set_userdata('teacher_id', $teacher_id); $this->session->set_userdata('teacher_role', $teacher_role); $this->session->set_userdata('teacher_rights', $teacher_rights); $this->session->set_userdata('teacher_email', $teacher_email); $this->session->set_userdata('teacher_name', $teacher_name); echo '1'; } else { echo '0'; } } public function convert() { $date = $this->nepaliDateObject->getDetails('2077', '1', '1', 'bs'); test_view_array($date); // echo date('d-m-Y', strtotime($start)); } public function teacher_logout() { $this->session->sess_destroy(); redirect(base_url() . 'Teacher'); } public function dashboard() { if (!isset($_SESSION['teacher_id'])) redirect(base_url() . 'teacher'); if (isset($_SESSION['teacher_id'])) { $data['currentURL'] = current_url(); // print_r($data['currentURL']); // die(); $tid = $_SESSION['teacher_id']; $tname = $_SESSION['teacher_name']; //$data['classes'] = $this->Teacher_model->get_myClasses($tid,''); // print_r($data['classes']); $nowMonth = date('m', strtotime($this->nepali_current_date)); $nowYear = date('Y', strtotime($this->nepali_current_date)); $nowDay = date('d', strtotime($this->nepali_current_date)); $obj = new NepaliDate(); // Convert BS to AD. $nowArr = $obj->convertBsToAd($nowYear, $nowMonth, $nowDay); $currConvDate = $nowArr['year'] . '-' . $nowArr['month'] . '-' . $nowArr['day']; $presentDay = strtolower(date('l', strtotime(date('Y-m-d H:i:s')))); $currentDate = date('Y-m-d', strtotime($this->nepali_current_date)); $teacher_subjects = $this->Teacher_model->get_table_info('classroom_teacher_subject', array('teacher_id' => $_SESSION['teacher_id']), '', "ASC"); $data['subjects'] = array(); $count = 0; foreach ($teacher_subjects as $key => $value) { $sql = "Select sd.subject_id, sd.id as session_id, sd.start, sd.day, sd.duration,sd.start_link, sd.join_link, cs.start_date,cs.end_date,c.id as classroom_id,c.classroom_name, s.subject_name, s.subject_icon from classroom_teacher_subject cts inner join classroom_session cs on cts.classroom_id = cs.classroom_id inner join session_details sd on cs.id = sd.session_id inner join subject s on s.id = sd.subject_id inner join classroom c on c.id = $value[classroom_id] inner join batch b on cs.batch_id = b.id WHERE s.id = $value[subject_id] AND (cts.teacher_id = $_SESSION[teacher_id] AND cts.classroom_id = $value[classroom_id]) AND LOWER(sd.day) = '$presentDay' AND ('$currentDate' between cs.start_date and cs.end_date) AND (cs.is_active = 'yes' AND s.is_active = 'yes' AND c.is_active = 'yes') GROUP BY sd.id"; $session_results = $this->Teacher_model->get_table_info('classroom_teacher_subject', '', $sql); // echo $this->db->last_query();exit; if (!empty($session_results)) { foreach ($session_results as $key2 => $value2) { $data['subjects'][$count] = array( 'subject_id' => $value2['subject_id'], 'session_id' => $value2['session_id'], 'start' => $value2['start'], 'start_date' => $value2['start_date'], 'end_date' => $value2['end_date'], 'classroom_id' => $value2['classroom_id'], 'classroom_name' => $value2['classroom_name'], 'subject_name' => $value2['subject_name'], 'subject_icon' => $value2['subject_icon'], 'duration' => $value2['duration'], 'start_link' => $value2['start_link'], 'day' => $value2['day'] ); $count++; } } } usort($data['subjects'], function ($item1, $item2) { return $item1['start'] <=> $item2['start']; }); //get logo $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/dashboard', $data); $this->load->view('teacher/teacher-footer'); } } public function teacher_test_exams() { if (isset($_SESSION['teacher_id'])) { $data['currentURL'] = current_url(); //get logo $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/teacher-test-exams'); $this->load->view('teacher/teacher-footer'); } } public function teacher_grades() { if (isset($_SESSION['teacher_id'])) { $data['currentURL'] = current_url(); //get logo $sql = "SELECT cst.teacher_id, cst.classroom_id, cr.id as course_name, cr.course_name, c.classroom_name from classroom_teacher_subject cst inner join classroom c on cst.classroom_id = c.id inner JOIN course cr ON cr.id = c.course_id WHERE cst.teacher_id = '" . $_SESSION['teacher_id'] . "' GROUP BY c.classroom_name, cr.course_name order by c.id"; $data['result'] = $this->Teacher_model->get_table_info('teacher_subjects', '', $sql); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/teacher-grades'); $this->load->view('teacher/teacher-footer'); } } public function add_edit_classroom($crid = NULL) { // if(isset($_SESSION['admin_id'])){ $data['crid'] = $crid; $cid = ''; $data['currentURL'] = current_url(); //get logo $data['logo'] = $this->Admin_model->get_logo(); //get menu list $data['menulist'] = $this->Admin_model->get_adminMenu(); if ($crid > 0) { $data['detail'] = $this->Admin_model->get_classroom($crid); } $data['course'] = $this->Admin_model->get_course($cid); /* $this->load->view('admin/header',$data); $this->load->view('admin/add-edit-classroom'); $this->load->view('admin/footer');*/ // } } // Shankar code start from here // public function teacher_assignment() { if (isset($_SESSION['teacher_id'])) { $data['currentURL'] = current_url(); $tid = $_SESSION['teacher_id']; $tname = $_SESSION['teacher_name']; $data['classes'] = $this->Teacher_model->get_course($tid); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu'); $this->load->view('teacher/teacher-assignment'); $this->load->view('teacher/teacher-footer'); } } public function create_assignment() { if (isset($_SESSION['teacher_id'])) { $tid = $_SESSION['teacher_id']; if (isset($_POST)) { $due_date = $this->input->post('due_date'); $title = $this->input->post('c_title'); $remark = $this->input->post('c_remark'); $subject_id = $this->input->post('Sub'); $cls_id = $this->input->post('classroom_id'); $data = array( 'classroom_id' => $cls_id, 'teacher_id' => $tid, 'subject_id' => $subject_id, 'title' => $title, 'remark' => $remark, 'due_date' => $due_date, 'created_on' => $this->nepali_current_date ); $result = $this->Teacher_model->create_assignment($data); if ($result) { $this->session->set_flashdata('success', 'Assignment Created Successfully'); redirect(base_url() . 'teacher/assignment_cls/' . $cls_id . '/' . $result); } echo json_encode($data); } } } public function assignment_class() { if (!isset($_SESSION['teacher_id'])) redirect(base_url() . 'teacher'); $data['currentURL'] = current_url(); $tid = $_SESSION['teacher_id']; $tname = $_SESSION['teacher_name']; $classroom_id = $this->uri->segment(3); $asgn_id = $this->uri->segment(4); $m = $this->uri->segment(5); $year = $this->uri->segment(6); if ($m < 10) { $month = '0' . $m; } else { $month = $m; } if (isset($_POST['submit'])) { $query = $this->db->query('select id from assignment where assignment.id IN ( select assignment_id from assignments_uploaded where assignment_id =' . $_POST['assignment_id'] . ' )'); if ($query->num_rows() > 0) { $this->session->set_flashdata('danger', str_replace('%s', "Assignment", ALREADY_ASSIGNED_MSG)); } else { $update = $this->db->delete('assignment', array('id' => $_POST['assignment_id'])); $this->session->set_flashdata('success', str_replace('%s', "Assignment", THE_DELETE_SUCCESS_MSG)); } $data['subjects'] = $this->Teacher_model->get_subjects($tid, $_POST['classroom_id']); $data['assignment'] = $this->Teacher_model->get_assignments($tid, $_POST['classroom_id']); } else { $data['subjects'] = $this->Teacher_model->get_subjects($tid, $classroom_id); $data['assignment'] = $this->Teacher_model->get_assignments($tid, $classroom_id, $asgn_id, $month, $year); } $allStudtentArray = array(); foreach ($data['assignment'] as $key => $value) { $assignmentData = $this->Teacher_model->uploaded_assignment($value['student_id'], $value['asgn_id']); if ($assignmentData) { $overdue = false; if ($assignmentData[0]['uploaded_date'] > $value['due_date']) $overdue = true; array_push($allStudtentArray, array( 'title' => $value['title'], 'subject_name' => $value['subject_name'], 'remark' => $value['remark'], 'due_date' => $value['due_date'], 'teacher_name' => $value['teacher_name'], 'student_name' => $value['student_name'], 'student_id' => $value['student_id'], 'asgn_id' => $value['asgn_id'], 'uploaded_date' => $assignmentData[0]['uploaded_date'], 'overdue' => $overdue ? $overdue : false, 'flag' => $assignmentData[0]['Flag'], 'uploaded_id' => $assignmentData[0]['id'], 'uploaded_remark' => $assignmentData[0]['remark'] ? $assignmentData[0]['remark'] : 2 )); } else { array_push($allStudtentArray, array( 'title' => $value['title'], 'subject_name' => $value['subject_name'], 'remark' => $value['remark'], 'due_date' => $value['due_date'], 'teacher_name' => $value['teacher_name'], 'student_name' => $value['student_name'], 'student_id' => $value['student_id'], 'asgn_id' => $value['asgn_id'], 'overdue' => false, 'uploaded_remark' => 1 )); } } $data['main_assignment'] = $allStudtentArray; $data['list_assignments_all'] = $this->Teacher_model->list_of_assignments($tid, $classroom_id, $month, $year); $list_students = array(); foreach ($data['list_assignments_all'] as $key => $value) { $assignmentData = $this->Teacher_model->uploaded_assignment(0, $value['assignment_id']); if ($assignmentData) { array_push($list_students, array( 'assignment_id' => $value['assignment_id'], 'classroom_id' => $value['classroom_id'], 'teacher_id' => $value['teacher_id'], 'subject_id' => $value['subject_id'], 'title' => $value['title'], 'remark' => $value['remark'], 'due_date' => $value['due_date'], 'subject_name' => $value['subject_name'], 'teacher_name' => $value['teacher_name'], 'classroom_name' => $value['classroom_name'], 'flag' => $assignmentData[0]['Flag'], 'uploaded_remark' => $assignmentData[0]['remark'] ? $assignmentData[0]['remark'] : 2 )); } else { array_push($list_students, array( 'assignment_id' => $value['assignment_id'], 'classroom_id' => $value['classroom_id'], 'teacher_id' => $value['teacher_id'], 'subject_id' => $value['subject_id'], 'title' => $value['title'], 'remark' => $value['remark'], 'due_date' => $value['due_date'], 'subject_name' => $value['subject_name'], 'teacher_name' => $value['teacher_name'], 'classroom_name' => $value['classroom_name'], 'flag' => 0, 'uploaded_remark' => 1 )); } } $data['list_assignments'] = $list_students; $data['month'] = $year ? $year . '-' . $month : date('Y-m', strtotime($this->nepali_current_date)); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/teachers-assignments-class', $data); $this->load->view('teacher/teacher-footer'); } public function teachers_assignments_review() { if (!isset($_SESSION['teacher_id'])) redirect(base_url() . 'teacher'); $data['currentURL'] = current_url(); $tid = $_SESSION['teacher_id']; $tname = $_SESSION['teacher_name']; $asgn_id = $this->uri->segment(3); $student_id = $this->uri->segment(4); $data['assignment'] = $this->Teacher_model->show_student_assignment($asgn_id, $student_id); $std_folder = $student_id . '_' . $asgn_id; $file_extensions = array('jpg', 'png', 'jpeg'); $img = array(); if (is_dir("student_assignment/" . $std_folder . '/')) { $files = scandir("student_assignment/" . $std_folder . '/'); for ($i = 0; $i < count($files); $i++) { if ($files[$i] != '.' && $files[$i] != '..') { $file = pathinfo($files[$i]); $extension = $file['extension']; if (in_array($extension, $file_extensions)) { $img[$i] = "student_assignment/$std_folder/$files[$i]"; } } } } $data['images'] = $img ? $img : ''; $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/teachers-assignments-review', $data); $this->load->view('teacher/teacher-footer'); } public function upload_assignment() { if (isset($_SESSION['teacher_id'])) { if (isset($_POST)) { $student_upload_id = $this->input->post('uploaded_id'); $data = array( 'remark' => $this->input->post('remark'), 'Flag' => 1, 'modified' => $this->nepali_current_date ); $res = $this->Teacher_model->upload_assignment($data, $student_upload_id); if ($res) { $this->session->set_flashdata('success', 'Remark added successfully'); redirect(base_url() . 'teacher/assignment_cls/' . $this->input->post('classroom_id') . '/' . $this->input->post('assignment_id')); } } } } //shankar code end here // Notification Controllers - 14-10-2021 public function teacher_notification() { if (isset($_SESSION['teacher_id'])) { $date = date('Y-m-d', strtotime($this->nepali_current_date)); $time = strtotime($date); $month = date("m", $time); $year = date("Y", $time); $currDate = $year . '-' . $month; $dateArr = array('month' => $month, 'year' => $year); $data['date'] = $currDate; $id = $_SESSION['teacher_id']; $sql = $this->Teacher_model->getTeachersNotification($id, $dateArr); if (!$sql) { $data['currentURL'] = current_url(); //get logo $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/teacher-notification', $data); $this->load->view('teacher/teacher-footer'); } else { $data['result'] = $sql; $data['currentURL'] = current_url(); //get logo $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/teacher-notification', $data); $this->load->view('teacher/teacher-footer'); } } } public function ajax_displayNotificationByDate() { $json = $this->input->post('dateArr'); $data = json_decode($json); $dateArr = array('month' => $data[1], 'year' => $data[0]); $sql = $this->Teacher_model->getTeachersNotification($_SESSION['teacher_id'], $dateArr); if ($sql == false) { $json = json_encode('failed'); echo $json; } else { $notifyArr = array(); foreach ($sql as $row) { $originalDate = $row['created_at']; $newDate = date("d-m-Y", strtotime($originalDate)); $newTime = date("h:i", strtotime($originalDate)); $holder = ''; $holder = '
'; $holder .= '
'; $holder .= '
'; $holder .= "
" . $row['notification_title'] . "
"; $holder .= '
'; $holder .= '
'; $holder .= '
'; $holder .= "

" . $row['description'] . "

"; $holder .= '
'; $holder .= '
'; $holder .= '
  • Date : ' . $newDate . '
  • '; $holder .= '
  • Time : ' . $newTime . '
  • '; $holder .= '
  • '; $holder .= '
    '; $holder .= '
    '; array_push($notifyArr, $holder); } $json = json_encode($notifyArr); echo $json; } } public function ajax_getNotificationDescription() { $id = $this->input->post('notifid'); $sql = $this->Admin_model->getSingleNotification($id); if ($sql) { echo json_encode($sql); } else { echo json_encode('failed'); } } public function ajax_hide_notification_msg() { $id = $this->input->post('notifid'); $update_read = $this->Admin_model->notification_update_read($id); if (!$update_read) echo json_encode('failed'); else echo json_encode('success'); } // Notification Controllers - 14-10-2021 // Exam Controllers - 20-10-2021 - Afras Khan public function test_exam() { if (!isset($_SESSION['teacher_id'])) redirect(base_url() . 'teacher'); if (!file_exists(APPPATH . 'views/teacher/test-exam.php')) show_404(); //classroom Query // $sql = "SELECT t.teacher_id, t.classroom_id, c.id as classroom_table_id, c.classroom_name FROM teacher_subjects t INNER JOIN classroom c on t.classroom_id = c.id WHERE t.teacher_id = '".$_SESSION['teacher_id']."' AND (t.classroom_id = c.id AND t.teacher_id = c.teacher_id)"; $sql = "SELECT cst.teacher_id, cst.classroom_id, cr.id as course_name, c.classroom_name as course_name from classroom_teacher_subject cst inner join classroom c on cst.classroom_id = c.id inner JOIN course cr ON cr.id = c.course_id WHERE cst.teacher_id = '" . $_SESSION['teacher_id'] . "' GROUP BY c.classroom_name, cr.course_name order by c.id"; $data['result'] = $this->Teacher_model->get_table_info('teacher_subjects', '', $sql); $data['currentURL'] = current_url(); //get logo $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/test-exam', $data); $this->load->view('teacher/teacher-footer'); } // Exam Controllers - 20-10-2021 - Afras Khan // Teacher Attendence - 31-10-2021 - Afras Khan public function teacher_attendance() { if (!isset($_SESSION['teacher_id'])) redirect(base_url() . 'teacher'); if (!file_exists(APPPATH . 'views/teacher/teacher-attendance.php')) show_404(); if (isset($_SESSION['teacher_id'])) { $data['currentURL'] = current_url(); $query = "SELECT cst.teacher_id, cst.classroom_id, cr.id as course_name, c.classroom_name , c.id from classroom_teacher_subject cst inner join classroom c on cst.classroom_id = c.id inner JOIN course cr ON cr.id = c.course_id WHERE cst.teacher_id = '" . $_SESSION['teacher_id'] . "' GROUP BY c.classroom_name, cr.course_name order by c.id"; $sql = $this->Teacher_model->get_table_info('classroom_teacher_subject', '', $query); // dd($sql); // $classroom_where_clause = ''; // foreach ($sql as $key => $value) { // if ($key == 0) { // $classroom_where_clause .= "id = '$value[classroom_id]'"; // } else { // $classroom_where_clause .= " OR id = '$value[classroom_id]'"; // } // } // $data['teacher_classes'] = $this->Teacher_model->get_table_info('classroom', $classroom_where_clause); $data['teacher_classes'] = $sql; // dd($data['teacher_classes']); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/teacher-attendance'); $this->load->view('teacher/teacher-footer'); } } public function teacher_attendance_subjects($cid) { if (!isset($_SESSION['teacher_id'])) { redirect(base_url() . 'teacher'); } if (!file_exists(APPPATH . 'views/teacher/teachers-attendance-subjects.php')) show_404(); $data['currentURL'] = current_url(); $data['classroom_id'] = $cid; $nowMonth = date('m', strtotime($this->nepali_current_date)); $nowYear = date('Y', strtotime($this->nepali_current_date)); $nowDay = date('d', strtotime($this->nepali_current_date)); $obj = new NepaliDate(); // Convert BS to AD. $nowArr = $obj->convertBsToAd($nowYear, $nowMonth, $nowDay); $currConvDate = $nowArr['year'] . '-' . $nowArr['month'] . '-' . $nowArr['day']; $data['pday'] = $presentDay = strtolower(date('l', strtotime($currConvDate))); // $data['pday'] = $presentDay = strtolower(date('l', strtotime($this->nepali_current_date))); $data['complete_curr_date'] = $this->nepali_current_date; $data['cur_date'] = $currentDate = date('Y-m-d', strtotime($this->nepali_current_date)); $sql = "Select sd.subject_id, sd.id as session_id, sd.start as start_time, cs.start_date,cs.end_date,c.id as classroom_id,c.classroom_name, s.subject_name, s.subject_icon,b.b_name, b.id as batch_id from classroom_teacher_subject cts inner join classroom_session cs on cts.classroom_id = cs.classroom_id inner join session_details sd on cs.id = sd.session_id inner join subject s on s.id = sd.subject_id inner join classroom c on c.id = $cid inner join batch b on cs.batch_id = b.id WHERE cts.teacher_id = $_SESSION[teacher_id] AND cts.classroom_id = $cid AND cts.subject_id = sd.subject_id AND LOWER(sd.day) = '$presentDay' AND ('$currentDate' between cs.start_date and cs.end_date) AND (cs.is_active = 'yes' AND s.is_active = 'yes' AND c.is_active = 'yes') GROUP BY sd.id"; $data['subjects'] = $this->Teacher_model->get_table_info('classroom_teacher_subject', '', $sql); foreach ($data['subjects'] as $key => $value) { $data['subjects'][$key]['attendance_date'] = $currentDate . ' ' . date('H:i:s', strtotime($value['start_time'])); } $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/teachers-attendance-subjects'); $this->load->view('teacher/teacher-footer'); } public function teacher_attendance_list() { if (count($_POST) == 0) { $this->session->set_flashdata('failed', "Please select one classroom"); redirect(base_url() . 'teacher/teacher_attendance'); } $cid = (int)$this->input->post('classroom_id'); $subject_id = (int)$this->input->post('subject_id'); $session_id = (int)$this->input->post('session_id'); $class_date = $this->input->post('class_date'); $class_time = $this->input->post('class_time'); $batch_id = $this->input->post('batch_id'); if (!isset($_SESSION['teacher_id'])) redirect(base_url() . 'teacher'); if (!file_exists(APPPATH . 'views/teacher/teacher-attendance-list.php')) show_404(); $data['currentURL'] = current_url(); $data['class_time'] = date('Y-m-d H:i a', strtotime($class_time)); $data['classroom_id'] = $cid; $data['class_date'] = $class_date; $data['subject_id'] = $subject_id; $data['session_id'] = $session_id; $data['batch_id'] = $batch_id; $subjecQuery = $this->db->get_where('subject', array('id' => $data['subject_id'], 'is_active' => 'yes'))->row_array(); $data['sub_name'] = $subjecQuery['subject_name']; $classQuery = $this->db->get_where('classroom', array('id' => $data['classroom_id'], 'is_active' => 'yes'))->row_array(); $data['class_name'] = $classQuery['classroom_name']; // Check if data is present in student_attendance table $sql = "Select * from student_attendence where classroom_id = $data[classroom_id] AND subject_id = $data[subject_id] AND DATE(attendence_date) = '" . date('Y-m-d', strtotime($class_date)) . "' AND session_id = $data[session_id]"; $check_if_record_exists = $this->Teacher_model->get_table_info('student_attendence', '', $sql); // if data is present, then its a update proceess else insert process $data['status'] = empty($check_if_record_exists) ? 'Insert' : 'Update'; // if its update process, assigning attendance data into a variable if ($data['status'] == 'Update') { $data['existing_attendence'] = $check_if_record_exists; } // Select Student Id's from student_batch $query = "SELECT * FROM student_batch WHERE classroom_id = '$data[classroom_id]' AND is_active = 'yes' AND batch_id = $batch_id"; if ($data['status'] == 'Update') { $query = "SELECT * FROM student_batch sb INNER JOIN student_attendence sa on sb.student_id = sa.student_id WHERE sb.classroom_id = '$data[classroom_id]' AND is_active = 'yes' AND sb.batch_id = $batch_id"; } $student_ids = array_column($this->Teacher_model->get_table_info('student_batch', '', $query), 'student_id'); // If there are Ids Go inside this IF condition else Empty classroom with no students if (!empty($student_ids)) { $student_where_clause = ''; foreach ($student_ids as $key => $value) { if ($key == 0) { $student_where_clause .= "id = '$value'"; } else { $student_where_clause .= " OR id = '$value'"; } } $stud_sql = "Select * from students where $student_where_clause ORDER by name"; // Fetch students names from student ids // $data['students_list'] = $this->Teacher_model->get_table_info('students', '',$stud_sql); $student_list = $this->Teacher_model->get_table_info('students', '', $stud_sql); foreach ($student_list as $key => $value) { $roll = $this->db->order_by('id', 'DESC')->get_where('student_batch', array('student_id' => $value['id'], 'batch_id' => $value['batch_id']))->row_array(); (!empty($roll)) ? $student_list[$key]['roll_no'] = $roll['roll_no'] : 0; } usort($student_list, function ($item1, $item2) { return $item1['roll_no'] <=> $item2['roll_no']; }); $data['students_list'] = $student_list; if (count($_POST) > 0 && isset($_POST['studentid'])) { unset($_POST['markAll']); $insertData = array(); $class_time = $this->input->post('class_time'); $class_date = $this->input->post('class_date'); $classroom_id = $this->input->post('classroom_id'); $subject_id = $this->input->post('subject_id'); $session_id = $this->input->post('session_id'); $student_ids = $this->input->post('studentid'); $student_name = $this->input->post('studentname'); $attendance_data = $this->input->post('attendance'); $status = $this->input->post('status'); if ($data['status'] == 'Update') { $queryFlag = true; foreach ($student_ids as $key => $value) { $updateData = array(); $updateData = [ 'status' => $attendance_data[$key], 'modified' => date('Y-m-d H:i:s') ]; $whereClause = array( 'student_id' => $value, 'classroom_id' => $data['classroom_id'], 'subject_id' => $data['subject_id'], 'session_id' => $data['session_id'], 'DATE(attendence_date)' => date('Y-m-d', strtotime($class_date)) ); $updateQuery = $this->Teacher_model->add_edit_student_attendance($updateData, $data['status'], $whereClause); if (!$updateQuery) { $queryFlag = false; return false; } } // $updateQuery = $this->Teacher_model->add_edit_student_attendance($updateData, $data['status'], $data['subject_id']); if (!$queryFlag) { $this->session->set_flashdata('failed', str_replace('%s', "Student's Attendance", THE_UPDATE_ERROR_MSG)); redirect(base_url() . "teacher/attendance-subjects/$classroom_id"); } else { $this->session->set_flashdata('success', str_replace('%s', "Student's Attendance", THE_UPDATE_SUCCESS_MSG)); redirect(base_url() . "teacher/attendance-subjects/$classroom_id"); } } else { echo $class_date; foreach ($attendance_data as $key => $value) { $insertData[] = array( 'student_id' => $student_ids[$key], 'classroom_id' => $classroom_id, 'subject_id' => $subject_id, 'session_id' => $data['session_id'], 'attendence_date' => date('Y-m-d H:i:s', strtotime($class_date)), 'status' => $value ); } $insertQuery = $this->Teacher_model->add_edit_student_attendance($insertData, $data['status']); if (!$insertQuery) { $this->session->set_flashdata('failed', str_replace('%s', "Student's Attendance", THE_ADD_ERROR_MSG)); redirect(base_url() . "teacher/attendance-subjects/$classroom_id"); } else { $this->session->set_flashdata('success', str_replace('%s', "Student's Attendance", THE_ADD_SUCCESS_MSG)); redirect(base_url() . "teacher/attendance-subjects/$classroom_id"); } } } } $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/teacher-attendance-list'); $this->load->view('teacher/teacher-footer'); } public function ajax_get_teacher_sessions_from_date() { $date = $this->input->post('dateval'); $cid = $this->input->post('classroom_id'); $date = date('Y-m-d', strtotime($date)); $nowMonth = date('m', strtotime($date)); $nowYear = date('Y', strtotime($date)); $nowDay = date('d', strtotime($date)); $obj = new NepaliDate(); // Convert BS to AD. $nowArr = $obj->convertBsToAd($nowYear, $nowMonth, $nowDay); $currConvDate = $nowArr['year'] . '-' . $nowArr['month'] . '-' . $nowArr['day']; $day = strtolower(date('l', strtotime($currConvDate))); // $day = strtolower(date('l', strtotime($date))); $sql = "Select sd.subject_id, sd.id as session_id, sd.start as start_time, cs.start_date,cs.end_date,c.id as classroom_id,c.classroom_name, s.subject_name, s.subject_icon,b.b_name, b.id as batch_id from classroom_teacher_subject cts inner join classroom_session cs on cts.classroom_id = cs.classroom_id inner join session_details sd on cs.id = sd.session_id inner join subject s on s.id = sd.subject_id inner join batch b on cs.batch_id = b.id inner join classroom c on c.id = $cid WHERE cts.teacher_id = $_SESSION[teacher_id] AND cts.classroom_id = $cid AND cts.subject_id = sd.subject_id AND LOWER(sd.day) = '$day' AND (DATE('$date') between cs.start_date and cs.end_date) AND (cs.is_active = 'yes' AND s.is_active = 'yes' AND c.is_active = 'yes') GROUP BY sd.id"; $data = $this->Teacher_model->get_table_info('classroom_teacher_subject', '', $sql); foreach ($data as $key => $value) { $data[$key]['attendance_date'] = $date . ' ' . date('H:i:s', strtotime($value['start_time'])); } if (!empty($data)) { $sessions = '
    '; $sessions .= '

    ' . date("d/m/Y", strtotime($date)) . '

    '; $sessions .= '
    '; $sessions .= '
    '; foreach ($data as $key => $value) { $sessions .= '
    '; $sessions .= ''; $sessions .= ''; $sessions .= ''; $sessions .= ''; $sessions .= ''; $sessions .= ''; $sessions .= '
    '; $sessions .= ''; $sessions .= '
    '; $sessions .= '

    ' . $value['subject_name'] . '

    '; $sessions .= '

    ' . $value['classroom_name'] . '

    ' . $value['b_name'] . '

    '; $sessions .= '
    '; $sessions .= '
    '; $sessions .= '' . ucfirst($day) . ', ' . date('h:i a', strtotime($value['start_time'])) . ''; $sessions .= '
    '; } echo $sessions; } else { echo 'failed'; } } // Teacher Attendence - 31-10-2021 - Afras Khan // view syllabus of teacher - shankar 01-11-21 public function teacher_syllabus() { if (isset($_SESSION['teacher_id'])) $data['currentURL'] = current_url(); $data['currentURL'] = current_url(); //get logo $tid = $_SESSION['teacher_id']; $data['get_syllabus'] = $this->Teacher_model->get_syllabus($tid); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/teachers-syllabus', $data); $this->load->view('teacher/teacher-footer'); } //exam -Add/Edit in teacher flow on 01-11-21 public function exam_questions($clsroom_id) { if (isset($_SESSION['teacher_id'])) $data['currentURL'] = current_url(); $data['currentURL'] = current_url(); //get logo $tid = $_SESSION['teacher_id']; $get_questions = $this->Teacher_model->view_all_exam_details($tid, $clsroom_id); $exam_data = array(); if ($get_questions != '' && isset($get_questions)) { foreach ($get_questions as $key => $val) { $get_total_count = $this->Teacher_model->get_count_questions_details($val['id']); $nowMonth = date('m', strtotime($val['exam_date'])); $nowYear = date('Y', strtotime($val['exam_date'])); $nowDay = date('d', strtotime($val['exam_date'])); $obj = new NepaliDate(); // Convert BS to AD. $nowArr = $obj->convertBsToAd($nowYear, $nowMonth, $nowDay); $currConvDate = $nowArr['year'] . '-' . $nowArr['month'] . '-' . $nowArr['day']; $currConvDate = date('Y-m-d', strtotime('-1 day', strtotime($currConvDate))); $ConDar = $obj->convertAdToBs(date('Y', strtotime($currConvDate)), date('m', strtotime($currConvDate)), date('d', strtotime($currConvDate))); array_push($exam_data, array( 'exam_id' => $get_total_count['exam_id'], 'tot_mark' => $get_total_count['sum(question_mark)'], 'id' => $val['id'], 'classroom_id' => $val['classroom_id'], 'course_id' => $val['course_id'], 'exam_date' => $val['exam_date'], 'exam_starttime' => $val['exam_starttime'], 'exam_endtime' => $val['exam_endtime'], 'e_name' => $val['e_name'], 'subject_icon' => $val['subject_icon'], 'classroom_name' => $val['classroom_name'], 'subject_name' => $val['subject_name'], 'total_marks' => $val['total_marks'], 'Ndate' => date('Y-m-d', strtotime($this->nepali_current_date)), 'checker_date' => $ConDar['year'] . '-' . $ConDar['month'] . '-' . $ConDar['day'] )); } } $data['get_questions'] = $exam_data; $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/teacher-test-exams', $data); $this->load->view('teacher/teacher-footer'); } public function add_edit_exam_questions() { if (isset($_SESSION['teacher_id'])) $data['currentURL'] = current_url(); $e_id = $this->uri->segment(3); $cls_rm_id = $this->uri->segment(4); $data['currentURL'] = current_url(); $tid = $_SESSION['teacher_id']; $data['exam_id'] = $e_id; $data['classroom_id'] = $cls_rm_id; $data['get_questions'] = $this->Teacher_model->get_all_questions($e_id); // $data['get_exam_question'] = $this->Teacher_model->get_all_questions_details($exam_que_id='', $e_id); $exam_date = $data['get_questions']['exam_date']; $nowMonth = date('m', strtotime($exam_date)); $nowYear = date('Y', strtotime($exam_date)); $nowDay = date('d', strtotime($exam_date)); $obj = new NepaliDate(); // Convert BS to AD. $nowArr = $obj->convertBsToAd($nowYear, $nowMonth, $nowDay); $currConvDate = $nowArr['year'] . '-' . $nowArr['month'] . '-' . $nowArr['day']; $currConvDate = date('Y-m-d', strtotime('-1 day', strtotime($currConvDate))); $ConDar = $obj->convertAdToBs(date('Y', strtotime($currConvDate)), date('m', strtotime($currConvDate)), date('d', strtotime($currConvDate))); $checkDate = $ConDar['year'] . '-' . $ConDar['month'] . '-' . $ConDar['day']; if (strtotime($checkDate) <= strtotime(date('Y-m-d', strtotime($this->nepali_current_date)))) { $data['date_checker'] = 1; } else { $data['date_checker'] = 0; } $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/Teacher-flow-exam-correction-mc', $data); $this->load->view('teacher/teacher-footer'); } function get_exam_question_details($e_id) { $get_questions = $this->Teacher_model->get_all_questions($e_id); // $get_questions =''; echo json_encode($get_questions); } function add_edit_question_details($exam_que_id) { $get_exam_details = $this->Teacher_model->get_all_questions_details($exam_que_id); // if ($exam_que_id != '') { // $data['get_total_count'] = $this->Teacher_model->get_count_questions_details($e_id, $exam_que_id); // } // print_r($get_exam_details); // exit(); echo json_encode($get_exam_details); } function add_edit_question_details_save() { $tid = $_SESSION['teacher_id']; $exam_questions_id = ($_POST['exam_que_id'] != '') ? $_POST['exam_que_id'] : ''; if (isset($_FILES['file']['name'])) { $filename = $_FILES['file']['name']; if (!is_dir('content-Test-Image')) { mkdir('./content-Test-Image', 0777, true); } $location = "content-Test-Image/" . $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']['tmp_name'], $location)) { $response = $location; } } } $image_name = ''; if (isset($_FILES['file']['name'])) { $image_name = $response; } $insert_data = array( 'exam_id' => $_POST['exam_id'], 'subject_id' => $_POST['subject_id'], 'teacher_id' => $tid, 'question_type_id' => $_POST['question_type_id'], 'question_name' => $_POST['question_name'], 'option_a' => $_POST['option_a'], 'option_b' => $_POST['option_b'], 'option_c' => $_POST['option_c'], 'option_d' => $_POST['option_d'], 'correct_answer' => $_POST['multiple_answer'] ? $_POST['multiple_answer'] : $_POST['tf_answer'], 'question_mark' => $_POST['question_mark'], 'image' => $image_name ? $image_name : '', ); $id = $this->Teacher_model->add_questions_details($insert_data, $exam_questions_id); echo json_decode($id); } public function tick_marks_data_view() { $get_total_count = $this->Teacher_model->get_count_questions_details($_POST['exam_id'], $_POST['marks'], $_POST['count']); if ($_POST['count'] == 1) { $exam_data = array(); foreach ($get_total_count as $k => $v) { array_push($exam_data, array( 'exam_id' => $v['exam_id'], 'count_mark' => $v['count(question_mark)'], 'que_mark' => $v['question_mark'], )); } echo json_encode($exam_data); } else { echo json_decode($get_total_count['count(question_mark)']); } } //end code for Test/Exam on 10-11-21 // Teacher's Calendar - 09-11-2021 - Afraskhan public function teacher_calender() { if (!isset($_SESSION['teacher_id'])) { redirect(base_url() . 'teacher'); } if (!file_exists(APPPATH . 'views/teacher/teachers-attendance-subjects.php')) show_404(); $data['currentURL'] = current_url(); $nowMonth = date('m', strtotime($this->nepali_current_date)); $nowYear = date('Y', strtotime($this->nepali_current_date)); $nowDay = date('d', strtotime($this->nepali_current_date)); $obj = new NepaliDate(); // Convert BS to AD. $nowArr = $obj->convertBsToAd($nowYear, $nowMonth, $nowDay); $currConvDate = $nowArr['year'] . '-' . $nowArr['month'] . '-' . $nowArr['day']; $presentDay = strtolower(date('l', strtotime($currConvDate))); // $presentDay = strtolower(date('l', strtotime($this->nepali_current_date))); $query = "Select cts.* from classroom_teacher_subject cts inner join classroom c on c.id = cts.classroom_id where cts.teacher_id = '$_SESSION[teacher_id]' AND c.is_active='yes'"; $teacher_subjects = $this->Teacher_model->get_table_info('classroom_teacher_subject', '', $query); $data['cur_date'] = $currentDate = date('Y-m-d', strtotime($this->nepali_current_date)); // test_view_array($teacher_subjects); $data['subjects'] = array(); $count = 0; foreach ($teacher_subjects as $key => $value) { $sql = "Select sd.subject_id, sd.id as session_id, sd.start, sd.day, sd.duration,sd.start_link, sd.join_link, cs.start_date,cs.end_date,c.id as classroom_id,c.classroom_name, s.subject_name, s.subject_icon,b.b_name from classroom_teacher_subject cts inner join classroom_session cs on cts.classroom_id = cs.classroom_id inner join session_details sd on cs.id = sd.session_id inner join subject s on s.id = sd.subject_id inner join classroom c on c.id = $value[classroom_id] inner join batch b on cs.batch_id = b.id WHERE s.id = $value[subject_id] AND (cts.teacher_id = $_SESSION[teacher_id] AND cts.classroom_id = $value[classroom_id]) AND LOWER(sd.day) = '$presentDay' AND ('$currentDate' between cs.start_date and cs.end_date) AND (cs.is_active = 'yes' AND s.is_active = 'yes' AND c.is_active = 'yes') GROUP BY sd.id "; $session_results = $this->Teacher_model->get_table_info('classroom_teacher_subject', '', $sql); if (!empty($session_results)) { foreach ($session_results as $key2 => $value2) { $data['subjects'][$count] = array( 'subject_id' => $value2['subject_id'], 'session_id' => $value2['session_id'], 'start' => $value2['start'], 'start_date' => $value2['start_date'], 'end_date' => $value2['end_date'], 'classroom_id' => $value2['classroom_id'], 'classroom_name' => $value2['classroom_name'], 'subject_name' => $value2['subject_name'], 'subject_icon' => $value2['subject_icon'], 'duration' => $value2['duration'], 'start_link' => $value2['start_link'], 'day' => $value2['day'], 'batch_name' => $value2['b_name'] ); $count++; } } } usort($data['subjects'], function ($item1, $item2) { return $item1['start'] <=> $item2['start']; }); $data['school_info'] = $this->Admin_model->get_logo_from_setting(); $this->load->view('teacher/teacher-header', $data); $this->load->view('teacher/teacher-leftmenu', $data); $this->load->view('teacher/teacher-calendar'); $this->load->view('teacher/teacher-footer'); } public function ajax_get_teacher_calendar_from_date() { $date = $this->input->post('dateval'); $date = date('Y-m-d', strtotime(str_replace('-', '/', $date))); $nowMonth = date('m', strtotime($date)); $nowYear = date('Y', strtotime($date)); $nowDay = date('d', strtotime($date)); $obj = new NepaliDate(); // Convert BS to AD. $nowArr = $obj->convertBsToAd($nowYear, $nowMonth, $nowDay); $currConvDate = $nowArr['year'] . '-' . $nowArr['month'] . '-' . $nowArr['day']; $day = strtolower(date('l', strtotime($currConvDate))); // $day = strtolower(date('l', strtotime($date))); $query = "Select cts.* from classroom_teacher_subject cts inner join classroom c on c.id = cts.classroom_id where cts.teacher_id = '$_SESSION[teacher_id]' AND c.is_active='yes'"; $teacher_subjects = $this->Teacher_model->get_table_info('classroom_teacher_subject', '', $query); $data = array(); $count = 0; foreach ($teacher_subjects as $key => $value) { $sql = "Select sd.subject_id, sd.id as session_id, sd.start, sd.day, sd.duration,sd.start_link, sd.join_link, cs.start_date,cs.end_date,c.id as classroom_id,c.classroom_name, s.subject_name, s.subject_icon,b.b_name from classroom_teacher_subject cts inner join classroom_session cs on cts.classroom_id = cs.classroom_id inner join session_details sd on cs.id = sd.session_id inner join subject s on s.id = sd.subject_id inner join classroom c on c.id = $value[classroom_id] inner join batch b on cs.batch_id = b.id WHERE s.id = $value[subject_id] AND (cts.teacher_id = $_SESSION[teacher_id] AND cts.classroom_id = $value[classroom_id]) AND LOWER(sd.day) = '$day' AND (DATE('$date') between cs.start_date and cs.end_date) AND (cs.is_active = 'yes' AND s.is_active = 'yes' AND c.is_active = 'yes') GROUP BY sd.id"; $session_results = $this->Teacher_model->get_table_info('classroom_teacher_subject', '', $sql); if (!empty($session_results)) { foreach ($session_results as $key2 => $value2) { $data[$count] = array( 'subject_id' => $value2['subject_id'], 'session_id' => $value2['session_id'], 'start' => $value2['start'], 'start_date' => $value2['start_date'], 'end_date' => $value2['end_date'], 'classroom_id' => $value2['classroom_id'], 'classroom_name' => $value2['classroom_name'], 'subject_name' => $value2['subject_name'], 'subject_icon' => $value2['subject_icon'], 'duration' => $value2['duration'], 'start_link' => $value2['start_link'], 'day' => $value2['day'], 'batch_name' => $value2['b_name'] ); $count++; } } } usort($data, function ($item1, $item2) { return $item1['start'] <=> $item2['start']; }); if (empty($data)) { echo 'failed'; } else { $sessions = '
    '; $sessions .= '

    ' . date('d/m/Y', strtotime($date)) . '

    '; $sessions .= '
    '; $sessions .= '
    '; foreach ($data as $key => $value) { $pday = date("l"); $sessionDay = $value['day']; $s = $value['start']; // $s = "15:03"; $p = date("H:i"); $mins = (strtotime($s) - strtotime($p)) / 60; $duration = $value['duration']; $end = date('H:i', strtotime($s) + ($duration * 60)); $now = new Datetime("now"); $begintime = new DateTime($s); $endtime = new DateTime($end); $sessions .= '
    '; $sessions .= '
    '; $sessions .= '

    ' . $value['classroom_name'] . '

    '; $sessions .= '
    '; $sessions .= '
    '; $sessions .= '
    ' . $value["subject_name"] . '
    '; $sessions .= '
    '; $sessions .= '' . $value['duration'] . ' min'; $sessions .= '
    '; $sessions .= '

    ' . $value['batch_name'] . '

    '; if (strtolower($pday) === strtolower($sessionDay) && ($now >= $begintime && $now <= $endtime) && $date == date('Y-m-d', strtotime($this->nepali_current_date))) { $sessions .= '
    '; $sessions .= 'Start'; $sessions .= '
    '; } else { $sessions .= '

    ' . date('h:i a', strtotime($s)) . '

    '; } $sessions .= '
    '; } echo $sessions; } } // Teacher's Calendar End - 09-11-2021 - Afraskhan // Teacher Test/Exam Evaluation Start - 11-11-21 - Shankar public function exam_evaluation() { if (!isset($_SESSION['teacher_id'])) { redirect(base_url() . 'teacher'); } $data['currentURL'] = current_url(); $tid = $_SESSION['teacher_id']; $sql = 'select e_name,exam_id,exam_date FROM questions, exam WHERE teacher_id = ' . $tid . ' AND exam_id = exam.id GROUP BY exam_id ORDER BY exam_date DESC'; $data['session_results'] = $this->Teacher_model->get_table_info('classroom_teacher_subject', '', $sql); foreach ($data['session_results'] as $key => $value) { $returnaArr = get_complete_BS_date_info($this->nepaliDateObject, $value['exam_date']); $data['session_results'][$key]['bs_date'] = $returnaArr['F'] . '-' . $returnaArr['Y']; } // test_view_array($data['session_results']); // echo "
    ";print_r($data['session_results']);exit();
    
    		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
    		$this->load->view('teacher/teacher-header', $data);
    		$this->load->view('teacher/teacher-leftmenu', $data);
    		$this->load->view('teacher/TF-evaluation-details', $data);
    		$this->load->view('teacher/teacher-footer');
    	}
    
    	public function get_exam_subject_details($exam_id)
    	{
    		if (!isset($_SESSION['teacher_id'])) {
    			redirect(base_url() . 'teacher');
    		}
    
    		$data['currentURL'] = current_url();
    		$tid = $_SESSION['teacher_id'];
    		$query = 'select q.id as question_id,e_name, subject_name, subject_id, teacher_name, subject_icon, q.exam_date
        		from questions q, exam e,subject s, teacher t
        		where q.teacher_id = ' . $tid . ' 
        		and q.exam_id =  ' . $exam_id . ' 
        		and q.teacher_id = t.id
        		and s.id = q.subject_id
        		and e.id = q.exam_id
        		ORDER by exam_date DESC';
    		$query_result = $this->Teacher_model->get_table_info('classroom_teacher_subject', '', $query);
    
    		echo json_encode($query_result);
    	}
    
    	public function exam_question_evaluation()
    	{
    		if (!isset($_SESSION['teacher_id'])) {
    			redirect(base_url() . 'teacher');
    		}
    
    		$data['currentURL'] = current_url();
    
    		$question_id = $this->uri->segment(3);
    		$data['questions_id'] = $question_id;
    		$query = $this->db->query('select questions.*, e_name from questions,exam where questions.id =' . $question_id . ' and exam_id = exam.id');
    		$questions_data = $query->row_array();
    
    		foreach ($questions_data as $key => $value) {
    			if ($key == 'exam_date') {
    				$returnaArr = get_complete_BS_date_info($this->nepaliDateObject, $value);
    				$questions_data['bs_date'] = $returnaArr['F'] . '-' . $returnaArr['Y'];
    			}
    		}
    
    		$data['questions_details'] = $questions_data;
    		$sections = explode(",", $questions_data['section_id']);
    
    		$data_array = array();
    		for ($i = 0; $i < count($sections); $i++) {
    
    			$q_one = $this->db->query('SELECT s.id as student_id, s.name, q.id as questions_id 
        				FROM questions q
        				INNER JOIN classroom c ON q.course_id = c.course_id  
        				INNER JOIN student_batch sb ON c.id = sb.classroom_id
        				INNER JOIN students s ON sb.student_id = s.id AND sb.batch_id = s.batch_id			            
        				WHERE q.id =' . $question_id . '  
        				AND c.course_id =' . $questions_data['course_id'] . ' 
        				AND c.section_id =' . $sections[$i] . '
        				GROUP BY s.id
        				');
    
    			$query_result1 = $q_one->result_array();
    
    			if (count($query_result1) > 0) {
    				foreach ($query_result1 as $key => $value) {
    
    					$appeared_exam = $this->db->query('
        						select exams_id as exam_ans_id,created,review, status from exam_answers where exams_id = ' . $value['questions_id'] . ' AND student_id =' . $value['student_id'] . ' limit 1');
    					$ans_query = $appeared_exam->row_array();
    
    
    					if (isset($ans_query)) {
    
    						array_push($data_array, array(
    							'exam_ans_id'	=> $ans_query['exam_ans_id'],
    							'date_of_exam'	=> $ans_query['created'],
    							'status'		=> $ans_query['status'],
    							'student_name'	=> $value['name'],
    							'student_id'	=> $value['student_id'],
    							'appeared'		=> 'yes',
    						));
    					} else {
    						array_push($data_array, array(
    
    							'student_name'	=> $value['name'],
    							'student_id'	=> $value['student_id'],
    							'appeared'		=> 'no',
    						));
    					}
    				}
    			}
    		}
    
    
    		$data['students_data']	= $data_array;
    
    		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
    		$this->load->view('teacher/teacher-header', $data);
    		$this->load->view('teacher/teacher-leftmenu', $data);
    		$this->load->view('teacher/TF-evaluation-action', $data);
    		$this->load->view('teacher/teacher-footer');
    	}
    
    
    	public function exam_question_evaluation_paper()
    	{
    		if (!isset($_SESSION['teacher_id'])) {
    			redirect(base_url() . 'teacher');
    		}
    
    		$data['currentURL'] = current_url();
    
    		$question_id = $this->uri->segment(3);
    		$student_id = $this->uri->segment(4);
    
    		$get_Data = $this->db->query('select q.*, subject_name, e_name from questions q, subject s, exam e where q.id =' . $question_id . ' AND q.subject_id = s.id and q.exam_id = e.id');
    		$data['exam_data'] = $get_Data->row_array();
    
    		$query = $this->db->query('
        			SELECT  ea.*,eq.subject_id, eq.question_type_id, eq.question_name,eq.option_a,eq.option_b,eq.option_c,eq.option_d,eq.correct_answer,eq.question_mark,eq.image 
        			FROM exam_questions eq
        			LEFT JOIN exam_answers ea ON ea.exams_id = eq.exam_id 			            			            
        			WHERE eq.exam_id =' . $question_id . ' 
        			AND ea.student_id = ' . $student_id . '
        			AND eq.exam_id = ea.exams_id
        			AND eq.id = ea.exam_questions_id
        			GROUP by eq.question_name,ea.id
        			ORDER BY eq.id asc
        			');
    
    		$data['questions_data'] = $query->result_array();
    
    		$data['questions_id'] = $question_id;
    
    		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
    		$this->load->view('teacher/teacher-header', $data);
    		$this->load->view('teacher/teacher-leftmenu', $data);
    		$this->load->view('teacher/TF-evaluation-qn1', $data);
    		$this->load->view('teacher/teacher-footer');
    	}
    
    	public function get_questionsAndAnswerEvaluation()
    	{
    		if (!isset($_SESSION['teacher_id'])) {
    			redirect(base_url() . 'teacher');
    		}
    
    		$examAnsid = $_POST['exam_answer_id'];
    		$marks = $_POST['marks'];
    
    		$query = $this->db->query('
        			SELECT  eq.question_mark 
        			FROM exam_questions eq, exam_answers ea
    
        			WHERE ea.id =' . $examAnsid . ' 
        			AND ea.exam_questions_id = eq.id
        			');
    		$data = $query->row_array();
    
    		if ($marks <= $data['question_mark']) {
    
    			$this->db->set('review', $marks);
    			$this->db->set('modified', $this->nepali_current_date);
    			$this->db->where('id', $examAnsid);
    			$this->db->update('exam_answers');
    
    			echo 1;
    		} else {
    			echo 0;
    		}
    	}
    
    	public function teacher_review_status()
    	{
    		if (!isset($_SESSION['teacher_id'])) {
    			redirect(base_url() . 'teacher');
    		}
    		$data['currentURL'] = current_url();
    
    		$exams_id = $_POST['exams_id'];
    		$student_id = $_POST['student_id'];
    		$status = $_POST['status'];
    
    		$data = array(
    			'status' => $status + 1,
    			'modified' => $this->nepali_current_date
    		);
    
    
    		$this->db->trans_start();
    		$this->db->where('student_id', $student_id);
    		$this->db->where('exams_id', $exams_id);
    		$this->db->update('exam_answers', $data);
    		$this->db->trans_complete();
    
    		if ($this->db->trans_status() === FALSE) {
    			//false
    			redirect(base_url() . 'teacher/evaluate-questions/' . $exams_id);
    		} else {
    			//true
    			// if ($status == 1) {
    
    			$query = $this->db->query(' select sum(review) as totalMarks from exam_answers where student_id =' . $student_id . ' AND exams_id=' . $exams_id);
    			$get_marks_student = $query->row_array();
    
    			$student_marks_tot = $get_marks_student['totalMarks'];
    
    
    			$tot_mark_query = $this->db->query(' select  subject_id,total_marks from questions where id=' . $exams_id);
    			$tot_mark = $tot_mark_query->row_array();
    
    			$actual_marks = $tot_mark['total_marks'];
    
    			if ($student_marks_tot == 0) {
    				$scored_percentage = 0;
    			} else {
    				$scored_percentage = round(($student_marks_tot * (100 / $actual_marks)), 2);
    			}
    
    
    
    			$grade = student_grade_show($scored_percentage);
    
    			$batch_id_query = $this->db->query('select student_batch.id from student_batch, students where students.id =' . $student_id . ' and students.batch_id = student_batch.batch_id and students.id = student_batch.student_id and students.is_active = "yes"');
    			$student_batch_id = $batch_id_query->row_array();
    
    			$insert_data = array(
    				'student_id'		=> $student_id,
    				'exams_id'			=> $exams_id,
    				'subject_id'		=> 	$tot_mark['subject_id'],
    				'total_marks'		=>	$actual_marks,
    				'get_marks'			=>	$student_marks_tot,
    				'grades_id'			=>	$grade['id'],
    				'student_batch_id'	=>	$student_batch_id['id'],
    			);
    
    			$check_data = $this->db->query('select * from student_exam_results where student_id=' . $student_id . ' and exams_id=' . $exams_id . ' and subject_id=' . $tot_mark['subject_id']);
    
    			if ($check_data->num_rows() == 0) {
    				$this->db->insert('student_exam_results', $insert_data);
    				$result_id = $this->db->insert_id();
    				if ($result_id) {
    					redirect(base_url() . 'teacher/evaluate-questions/' . $exams_id);
    				}
    			} else {
    				$this->db->trans_start();
    				$this->db->where('student_id', $student_id);
    				$this->db->where('exams_id', $exams_id);
    				$this->db->where('subject_id', $tot_mark['subject_id']);
    				$this->db->update('student_exam_results', $insert_data);
    				$this->db->trans_complete();
    				redirect(base_url() . 'teacher/evaluate-questions/' . $exams_id);
    			}
    		}
    	}
    
    	// Teacher Test/Exam Evaluation End - 11-11-21 - Shankar 
    
    	//Teacher Grade 
    
    	public function teacher_grade_deatils()
    	{
    		if (!isset($_SESSION['teacher_id'])) {
    			redirect(base_url() . 'teacher');
    		}
    
    		$data['currentURL'] = current_url();
    
    		$classroom_id = $this->uri->segment(3);
    
    		$tid = $_SESSION['teacher_id'];
    
    		$sql = 'select e_name,exam_id,exam_date, classroom.id as classroom_id
        		FROM questions, exam, classroom
        		WHERE teacher_id = ' . $tid . ' 
        		AND classroom.id = ' . $classroom_id . '
        		AND classroom.course_id = questions.course_id
        		AND exam_id = exam.id
        		GROUP BY exam_id
        		ORDER BY exam_date DESC';
    
    		$data['session_results'] = $this->Teacher_model->get_table_info('classroom_teacher_subject', '', $sql);
    
    		foreach ($data['session_results'] as $key => $value) {
    			$returnaArr = get_complete_BS_date_info($this->nepaliDateObject, $value['exam_date']);
    			$data['session_results'][$key]['bs_date'] = $returnaArr['F'] . '-' . $returnaArr['Y'];
    		}
    
    		// test_view_array($data['session_results']);
    
    		$data['classroom_id'] = $classroom_id;
    
    		// echo "
    ";print_r($data['session_results']);exit();
    
    		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
    		$this->load->view('teacher/teacher-header', $data);
    		$this->load->view('teacher/teacher-leftmenu', $data);
    		$this->load->view('teacher/TF-grade-exam-details', $data);
    		$this->load->view('teacher/teacher-footer');
    	}
    
    	public function get_datewises_exam_details($classroom_id, $date)
    	{
    		if (!isset($_SESSION['teacher_id'])) {
    			redirect(base_url() . 'teacher');
    		}
    		$tid = $_SESSION['teacher_id'];
    
    		$sql = 'select e_name,exam_id,exam_date, classroom.id as classroom_id
        		FROM questions, exam, classroom
        		WHERE teacher_id = ' . $tid . ' 
        		AND classroom.id = ' . $classroom_id . '
        		AND classroom.course_id = questions.course_id
        		AND exam_id = exam.id
        		AND DATE_FORMAT(questions.exam_date,"%Y-%m") >="' . $date . '" 
        		GROUP BY exam_id
        		ORDER BY exam_date DESC';
    
    		echo json_encode($this->Teacher_model->get_table_info('classroom_teacher_subject', '', $sql));
    		// echo $this->db->last_query();
    		// echo $date;
    	}
    
    
    
    
    
    	//teacher reset password start here
    
    	public function teacher_reset_view()
    	{
    		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
    		$this->load->view('teacher/header', $data);
    
    		$this->load->view('teacher/teacher-reset');
    		$this->load->view('teacher/footer');
    	}
    
    	public function fp_check_is_emailid_valid()
    	{
    		$emailId = $_POST['email'];
    
    		$query = $this->db->get_where('teacher', array('email' => $emailId));
    
    		if (!empty($query->row_array())) {
    			echo ('success');
    		} else {
    			echo ('failure');
    		}
    	}
    
    	public function send_email_reset_password()
    	{
    
    		if ($_POST) {
    			$url =  str_replace("reset-email", "create-password", current_url());
    			$emailId = $_POST['teacherID'];
    			$query = $this->db->get_where('teacher', array('email' => $emailId));
    			$teacher_name = $query->row_array();
    
    			$base_url = str_replace("index.php/teacher/send_email_reset_password", "", current_url());
    
    			$mail_url = urlsafe_b64encode($emailId);
    
    			$replace_url = $url . '/' . $mail_url;
    
    			$approve_data = array(
    				"teachername" => $teacher_name['teacher_name'],
    				"reset_link" => $replace_url,
    				"baseurl" => $base_url
    			);
    			$approve_data['school_info'] = $this->Admin_model->get_logo_from_setting();
    
    			$msg = $this->load->view('reset_password_email_teacher', $approve_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($emailId);
    			//$this->email->to('shankar@erisn.com');
    
    
    			$this->email->subject('Reset Password');
    			$this->email->message($msg);
    
    			if ($this->email->send()) {
    				$this->session->set_flashdata('success', 'A mail has been sent to your Email-Id, Please check and reset your password');
    				redirect(base_url() . 'teacher/teacher-reset');
    			} else {
    				$this->session->set_flashdata('failed', "Mailer Error: " . $this->email->print_debugger());
    				redirect(base_url() . 'teacher/teacher-reset');
    			}
    		} else {
    			redirect(base_url() . 'teacher', 'refresh');
    		}
    	}
    
    
    	public function teacher_create_password($emailId)
    	{
    		$decode_mail = urlsafe_b64decode($emailId);
    		$query = $this->db->get_where('teacher', array('email' => $decode_mail));
    
    		if (!empty($query->row_array())) {
    			$data['teacher_data'] = $query->row_array();
    		} else {
    			$data['teacher_data'] =  '0';
    		}
    
    		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
    		$this->load->view('teacher/header', $data);
    		$this->load->view('teacher/teacher-new-password', $data);
    		$this->load->view('teacher/footer');
    	}
    
    	public function change_teacher_password()
    	{
    		if ($_POST) {
    			$data = array(
    				'password' => base64_encode($_POST['password'])
    			);
    			$this->db->where('id', $_POST['teacher_id']);
    			$this->db->where('email', $_POST['teacher_email']);
    
    			$this->db->update('teacher', $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() . 'teacher');
    		} else {
    			redirect(base_url() . 'teacher', 'refresh');
    		}
    	}
    
    	public function update_link_active()
    	{
    		$storedURL = $this->input->post('link');
    		$_SESSION['active_old_link'] = $storedURL;
    	}
    
    	public function changeTeacher_password()
    	{
    		if (!isset($_SESSION['teacher_id']))
    			redirect(base_url() . 'teacher');
    
    		$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) {
    
    			$data = array(
    				'password' => base64_encode($_POST['password']),
    				'modified_on' => $this->nepali_current_date
    			);
    
    
    			$this->db->where('id', $_SESSION['teacher_id']);
    			$this->db->update('teacher', $data);
    			$this->db->trans_complete();
    			if ($this->db->trans_status() === FALSE) {
    				$this->session->set_flashdata('danger', str_replace('%s', 'Password', THE_ADD_ERROR_MSG));
    				redirect(base_url() . 'teacher/teacher-change-password');
    			} else {
    				$this->session->set_flashdata('success', str_replace('%s', 'Password', THE_UPDATE_SUCCESS_MSG));
    				redirect(base_url() . 'teacher/teacher-change-password');
    			}
    
    			exit();
    		}
    		$this->load->view('teacher/teacher-header', $data);
    		$this->load->view('teacher/teacher-leftmenu', $data);
    		$this->load->view('teacher/change-password', $data);
    		$this->load->view('teacher/teacher-footer');
    	}
    
    	public function leaves()
    	{
    		if (!isset($_SESSION['teacher_id']))
    			redirect(base_url() . 'teacher');
    
    		$data['currentURL'] = current_url();
    
    		//get logo
    		$data['logo'] = $this->Admin_model->get_logo();
    		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
    
    		$teacher_id = (string)$_SESSION['teacher_id'];
    
    		$sql = "SELECT s.name,c.classroom_name,la.* from leave_applications la 
        		INNER JOIN students s on s.id = la.student_id
        		INNER JOIN student_batch sb on s.id = sb.student_id AND sb.batch_id = s.batch_id
        		INNER JOIN classroom c on c.id = sb.classroom_id
        		WHERE JSON_CONTAINS(la.teacher_id, '[$teacher_id]')";
    
    		$data['leaves'] = $leaves = $this->Teacher_model->get_table_info('leave_applications', '', $sql);
    		// dd($leaves);
    		$this->load->view('teacher/teacher-header', $data);
    		$this->load->view('teacher/teacher-leftmenu');
    		$this->load->view('teacher/leaves');
    		$this->load->view('teacher/teacher-footer');
    	}
    
    	public function view_leave($id)
    	{
    
    		if (!isset($_SESSION['teacher_id']))
    			redirect(base_url() . 'teacher');
    
    		$data['currentURL'] = current_url();
    
    		//get logo
    		$data['logo'] = $this->Admin_model->get_logo();
    		$data['school_info'] = $this->Admin_model->get_logo_from_setting();
    		$data['leave_id'] = $id;
    		$leave = $this->Teacher_model->get_table_info('leave_applications', array('id' => $id));
    
    		if (empty($leave)) {
    			$this->session->set_flashdata('failed', 'There is no leave application with the given Id');
    			redirect(base_url() . 'teacher/leaves');
    		} else {
    			$name = '';
    			foreach ($leave as $key => $value) {
    				$teacher_ids = json_decode($value['teacher_id']);
    				foreach ($teacher_ids as $index => $ele) {
    					$teacher_name = $this->db->get_where('teacher', array('id' => $ele))->row();
    					if (!empty($teacher_name)) {
    						if (!$name) {
    							$name = $teacher_name->teacher_name;
    							$leave[$key]['teacher_name'] = $name;
    						} else {
    							$name .= ', ' . $teacher_name->teacher_name;
    							$leave[$key]['teacher_name'] = $name;
    						}
    					} else {
    						if (!$name) {
    							$name = 'unknown teacher';
    							$leave[$key]['teacher_name'] = $name;
    						} else {
    							$name .= ', unknown teacher ';
    							$leave[$key]['teacher_name'] = $name;
    						}
    					}
    				}
    			}
    			$data['leave'] = $leave;
    		}
    		// dd($data['leave']);
    		$this->load->view('teacher/teacher-header', $data);
    		$this->load->view('teacher/teacher-leftmenu');
    		$this->load->view('teacher/single_leave');
    		$this->load->view('teacher/teacher-footer');
    	}
    
    	public function ar_leave_application()
    	{
    
    		if (!isset($_SESSION['teacher_id']))
    			redirect(base_url() . 'teacher');
    
    		if (count($_POST) == 0) {
    			$this->session->set_flashdata('failed', 'Please select a valid leave application');
    			redirect(base_url() . 'teacher/leaves');
    		}
    
    		$id = $this->input->post('id');
    
    		if (isset($_POST['rejected_msg'])) {
    
    			$data['status'] = 'Rejected';
    			$data['rejected_msg'] = $this->input->post('rejected_msg');
    			$data['modified'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date));
    			$leave = $this->Teacher_model->update_table($id, $data, 'leave_applications');
    
    			if ($leave) {
    				$this->session->set_flashdata('success', 'Leave has been successfully rejected');
    				redirect(base_url() . 'teacher/leaves');
    			} else {
    				$this->session->set_flashdata('failed', 'Please try again later!');
    				redirect(base_url() . 'teacher/leaves');
    			}
    		} else {
    			$data['status'] = 'Approved';
    			$data['modified'] = date('Y-m-d H:i:s', strtotime($this->nepali_current_date));
    			$leave = $this->Teacher_model->update_table($id, $data, 'leave_applications');
    
    			if ($leave) {
    				$this->session->set_flashdata('success', 'Leave has been successfully approved');
    				redirect(base_url() . 'teacher/leaves');
    			} else {
    				$this->session->set_flashdata('failed', 'Please try again later!');
    				redirect(base_url() . 'teacher/leaves');
    			}
    		}
    	}
    }