HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux vmi1674223.contaboserver.net 5.4.0-182-generic #202-Ubuntu SMP Fri Apr 26 12:29:36 UTC 2024 x86_64
User: root (0)
PHP: 7.4.3-4ubuntu2.22
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //home/evaluation-leave/models/course.js
const config = require("../config/config");
const mysql = require("mysql2"); // Use mysql2 for connection pooling

// Create a connection pool
const pool = mysql.createPool({
  host: config.connection.host,
  user: config.connection.user,
  password: config.connection.password,
  database: config.connection.database,
  waitForConnections: true,
  connectionLimit: 10, // Adjust as needed
  queueLimit: 0, // Unlimited queue size
});

module.exports = {
  findAllCourses: async () => {
    return new Promise((resolve, reject) => {
      pool.getConnection((err, connection) => {
        if (err) {
          return reject(err);
        }

        connection.query("SELECT * FROM course_evaluation", (error, result) => {
          connection.release();

          if (error) {
            return reject(error);
          }
          resolve(result);
        });
      });
    });
  },

  findPendingCoursesEvaluationRecord: async (id) => {
    return new Promise((resolve, reject) => {
      pool.getConnection((err, connection) => {
        if (err) {
          return reject(err);
        }

        connection.query(
          "SELECT * FROM course_evaluation where userId=? AND status = 'Pending'",
          id,
          (error, result) => {
            connection.release();

            if (error) {
              return reject(error);
            }
            resolve(result[0]);
          }
        );
      });
    });
  },

  findCoursesForEvaluationDvc: async (data) => {
    return new Promise((resolve, reject) => {
      pool.getConnection((err, connection) => {
        if (err) {
          return reject(err);
        }

        connection.query(
          "SELECT * FROM course_evaluation where userId=? AND sessionId=? AND status = 'Pending'", // Change status to Evaluated
          [data.userId, data.sessionId],
          (error, result) => {
            connection.release();

            if (error) {
              return reject(error);
            }
            resolve(result[0]);
          }
        );
      });
    });
  },

  createCorse: async (course) => {
    return new Promise((resolve, reject) => {
      pool.getConnection((err, connection) => {
        if (err) {
          return reject(err);
        }

        connection.query(
          "INSERT INTO course_evaluation SET ?",
          course,
          (error, result) => {
            connection.release();

            if (error) {
              return reject(error);
            }
            resolve(result);
          }
        );
      });
    });
  },
  findcourseById: async (id) => {
    return new Promise((resolve, reject) => {
      pool.getConnection((err, connection) => {
        if (err) {
          return reject(err);
        }

        connection.query(
          "SELECT * FROM course_evaluation where id=?",
          id,
          (error, result) => {
            connection.release();

            if (error) {
              return reject(error);
            }
            resolve(result[0]);
          }
        );
      });
    });
  },

  findUserCourseForCompilation(data) {
    return new Promise((resolve, reject) => {
      pool.getConnection((err, connection) => {
        if (err) {
          return reject(err);
        }

        connection.query(
          "SELECT * FROM course_evaluation where userId =? and sessionId=? and self_submite_yn='Y'",
          [data.userId, data.sessionId],
          (error, result) => {
            connection.release();

            if (error) {
              return reject(error);
            }
            resolve(result[0]);
          }
        );
      });
    });
  },

  findHodCourseForCompilation(data) {
    return new Promise((resolve, reject) => {
      pool.getConnection((err, connection) => {
        if (err) {
          return reject(err);
        }

        connection.query(
          "SELECT * FROM course_evaluation where userId =? and sessionId=? and status = 'Pending' and self_submite_yn='Y'",
          [data.userId, data.sessionId],
          (error, result) => {
            connection.release();

            if (error) {
              return reject(error);
            }
            resolve(result[0]);
          }
        );
      });
    });
  },

  updateCourseEvaluation: async (updateCourse) => {
    return new Promise((resolve, reject) => {
      pool.getConnection((err, connection) => {
        if (err) {
          return reject(err);
        }

        const query = `
        UPDATE course_evaluation SET
          course_class_ontime_h =?,
          course_consultation_time_h=?,
          course_hosted_guest_h=?,
          course_instructional_tech_h=?,
          course_appropriate_design_h=?,
          course_multimedia_type_h=?,
          course_quality_instructional_h=?,
          course_updated_record_h=?,
          course_draft_exam_h=?,
          course_standard_exam_h=?,
          course_administer_exams_h=?,
          course_mark_script_h=?,
          course_process_grades_h=?,
          course_attend_school_meetings_h=?,
          course_support_school_activity_h=?,
          updatedAt=?,
          updated_by=?,
          hod_submited_yn =?
          WHERE id = ?`;
        const values = [
          updateCourse.course_class_ontime_h,
          updateCourse.course_consultation_time_h,
          updateCourse.course_hosted_guest_h,
          updateCourse.course_instructional_tech_h,
          updateCourse.course_appropriate_design_h,
          updateCourse.course_multimedia_type_h,
          updateCourse.course_quality_instructional_h,
          updateCourse.course_updated_record_h,
          updateCourse.course_draft_exam_h,
          updateCourse.course_standard_exam_h,
          updateCourse.course_administer_exams_h,
          updateCourse.course_mark_script_h,
          updateCourse.course_process_grades_h,
          updateCourse.course_attend_school_meetings_h,
          updateCourse.course_support_school_activity_h,
          updateCourse.updatedAt,
          updateCourse.updated_by,
          updateCourse.hod_submited_yn,
          updateCourse.id,
        ];
        connection.query(query, values, (error, result) => {
          connection.release();

          if (error) {
            return reject(error);
          }
          resolve(result);
        });
      });
    });
  },
};