public void InsertData()
        {
            using (SqlConnection connection = new SqlConnection(Connectivity.ConnectionString()))
            {
                using (SqlCommand cmd = new SqlCommand("sp_AddCourse", connection))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@courseName", name);
                    cmd.Parameters.AddWithValue("@courseCode", code);
                    cmd.Parameters.AddWithValue("@credits", credits);
                    cmd.Parameters.AddWithValue("@faculty", getFaculty);
                    cmd.Parameters.AddWithValue("@description", description);
                    cmd.Parameters.AddWithValue("@dateOfAddition", date);
                    cmd.Parameters.AddWithValue("@courseAps", courseAps);

                    connection.Open();
                    cmd.ExecuteNonQuery();


                    Essentials.DisplayMessage("Course Successfully Added", "Course Addition");
                    Essentials.ResetControls(edtAPSPoint, edtCourseCode, edtCourseName, edtCredits, txtBoxDescribtion);

                    connection.Close();
                }
            }
        }
        private void GetAllCourses()
        {
            string selectQuery = string.Format("SELECT name,code,credits,aps,faculty FROM Course");

            try
            {
                using (SqlConnection conn = new SqlConnection(Connectivity.ConnectionString()))
                {
                    using (SqlCommand command = new SqlCommand(selectQuery, conn))
                    {
                        command.CommandType = CommandType.Text;
                        DataTable dt = new DataTable();
                        conn.Open();
                        SqlDataReader sdr = command.ExecuteReader();
                        dt.Load(sdr);
                        conn.Close();
                        ViewCourseDataGridView.DataSource = dt;
                    }
                }
            }
            catch (Exception ex)
            {
                Essentials.SetErrorMessage(ex.Message, "Error");
            }
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            const string updateQuery = "Update ApplicationInfotbl SET role=@role,appStatus=@appStatus WHERE name=@name";

            try
            {
                using (SqlConnection conn = new SqlConnection(Connectivity.ConnectionString()))
                {
                    using (SqlCommand command = new SqlCommand(updateQuery, conn))
                    {
                        command.CommandType = CommandType.Text;
                        command.Parameters.AddWithValue("@role", GetRole());
                        command.Parameters.AddWithValue("@appStatus", GetAdmissionStatus());
                        command.Parameters.AddWithValue("@name", cboUsers.Text);
                        conn.Open();
                        command.ExecuteNonQuery();
                        conn.Close();

                        Essentials.DisplayMessage("role changed successfully", "Roles");
                        Essentials.ResetControls(rdoAdmin, rdoNoAccess, rdoStudent);
                    }
                }
            }catch (Exception ex)
            {
                Essentials.SetErrorMessage(ex.Message, "Role Update Error");
            }
        }
        public void InsertData()
        {
            using (SqlConnection connection = new SqlConnection(Connectivity.ConnectionString()))
            {
                using (SqlCommand cmd = new SqlCommand("sp_InsertCourse", connection))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@courseName", name);
                    cmd.Parameters.AddWithValue("@courseCode", code);
                    cmd.Parameters.AddWithValue("@courseType", type);
                    cmd.Parameters.AddWithValue("@dateOfAddition", date);
                    cmd.Parameters.AddWithValue("@courseAps", aps);

                    connection.Open();
                    cmd.ExecuteNonQuery();
                    connection.Close();

                    Essentials.DisplayMessage("Course/Subject Successfully Added", "Course Addition");
                    Essentials.ResetControls(edtName, edtCode, cboxAPS, cboxSubject, edtAps);
                    Essentials.HideControls(edtAps);
                }
            }
        }
        private void btnApply_Click(object sender, EventArgs e)
        {
            string name, lastName, applicationStatus = "Submitted",role = "NONE",
                   id, address, phoneNumber, gender, emailAddress,
                   highestGrade, nameOfSchool, schoolLeavingDate, password = "******", studentNumber;

            DateTime applicationDate;

            string subject1, subject2, subject3, subject4,
                   subject5, subject6, subject7;

            const int idNumberLength = 13;

            int year = DateTime.Today.Year;

            int apsSum = 0;


            if (!Essentials.ContainsText(edtName, edtLastName, edtMail, edtID, edtAddress, edtPhoneNumber, edtSchoolName))
            {
                Essentials.SetErrorMessage("Error: Input Field(s) cannot be empty,please fill in all fields", "Error: Empty Field(s)");

            }
            else
            {
                name = Essentials.RetrieveInputText(edtName);
                lastName = Essentials.RetrieveInputText(edtLastName);
                id = Essentials.RetrieveInputText(edtID);
                address = Essentials.RetrieveInputText(edtAddress);
                phoneNumber = Essentials.RetrieveInputText(edtPhoneNumber);
                emailAddress = Essentials.RetrieveInputText(edtMail);
                nameOfSchool = Essentials.RetrieveInputText(edtSchoolName);

                Student student;

                studentNumber = GenerateStudNum().Substring(0, 5).Insert(0, $"{year}");

                applicationDate = DateTime.Now;

                gender = cboGender.Text;
                highestGrade = cboHighestGrade.Text;

                schoolLeavingDate = cndarSchoolLeaving.Value.ToString();

                subject1 = cboSubject1.Text;
                subject2 = cboSubject2.Text;
                subject3 = cboSubject3.Text;
                subject4 = cboSubject4.Text;
                subject5 = cboSubject5.Text;
                subject6 = cboSubject6.Text;
                subject7 = cboSubject7.Text;

                apsSum = ComputeApplicantAPS(cboPercentage1) + ComputeApplicantAPS(cboPercentage2) + ComputeApplicantAPS(cboPercentage3)
                         + ComputeApplicantAPS(cboPercentage4) + ComputeApplicantAPS(cboPercentage5) + ComputeApplicantAPS(cboPercentage6)
                         + ComputeApplicantAPS(cboPercentage7);

                if (InspectComboValidity(cboSubject1, cboSubject3, cboSubject4,
                                         cboSubject5, cboSubject6, cboSubject7))
                {
                    if (Essentials.IsValidNamesInput(Essentials.RetrieveInputText(edtName)))
                    {
                        if (Essentials.IsValidMail(Essentials.RetrieveInputText(edtMail)))
                        {
                            if (edtID.Text.Length == idNumberLength)
                            {
                                using (SqlConnection connection = new SqlConnection(Connectivity.ConnectionString()))
                                {
                                    using (SqlCommand cmd = new SqlCommand("sp_Insert_ApplicantInfo", connection))
                                    {
                                        cmd.CommandType = CommandType.StoredProcedure;

                                        cmd.Parameters.AddWithValue("@name", name);
                                        cmd.Parameters.AddWithValue("@lastName", lastName);
                                        cmd.Parameters.AddWithValue("@identityNum", id);
                                        cmd.Parameters.AddWithValue("@address", address);
                                        cmd.Parameters.AddWithValue("@phone", phoneNumber);
                                        cmd.Parameters.AddWithValue("@email", emailAddress);
                                        cmd.Parameters.AddWithValue("@school", nameOfSchool);
                                        cmd.Parameters.AddWithValue("@applicationDate", applicationDate);
                                        cmd.Parameters.AddWithValue("@gender", gender);
                                        cmd.Parameters.AddWithValue("@highestGrade", highestGrade);

                                        cmd.Parameters.AddWithValue("@sub1", subject1);
                                        cmd.Parameters.AddWithValue("@sub2", subject2);
                                        cmd.Parameters.AddWithValue("@sub3", subject3);
                                        cmd.Parameters.AddWithValue("@sub4", subject4);
                                        cmd.Parameters.AddWithValue("@sub5", subject5);
                                        cmd.Parameters.AddWithValue("@sub6", subject6);
                                        cmd.Parameters.AddWithValue("@sub7", subject7);

                                        cmd.Parameters.AddWithValue("@appStatus", applicationStatus);
                                        cmd.Parameters.AddWithValue("@password", password);
                                        cmd.Parameters.AddWithValue("@studNum", studentNumber);
                                        cmd.Parameters.AddWithValue("@aps", apsSum);

                                        cmd.Parameters.AddWithValue("@role", role);

                                        connection.Open();
                                        cmd.ExecuteNonQuery();
                                        connection.Close();

                                        Essentials.DisplayMessage($"Application successfully submitted\nStudent Number {studentNumber}", $"Application");

                                        Essentials.ResetControls(edtName, edtLastName, edtMail, edtID, edtAddress, edtSchoolName,
                                        edtPhoneNumber, cboxGoodHealth, cboxPoorHealth, cboxYesDisabled, cboxNoDisabled);
                                    }
                                }
                            }
                            else
                            {
                                Essentials.SetErrorMessage($"Error: Invalid Identity number", $"Invalid ID");
                            }
                        }
                        else
                        {
                            Essentials.SetErrorMessage($"Error: Invalid Email address", $"EMail Invalid");
                        }
                    }
                    else
                    {
                        Essentials.SetErrorMessage($"Error: Name supplied is not valid", $"Invalid name");
                    }
                }
                else
                {
                    Essentials.SetErrorMessage($"Error: Please select all subjects", $"Subject(s) missing");
                }
            }
        }
        private void btnCheck_Click(object sender, EventArgs e)
        {
            if (Essentials.ContainsText(edtIdNum))
            {
                if (Essentials.GetAllInputText(edtIdNum).Length == 13)
                {
                    string id  = Essentials.GetAllInputText(edtIdNum);
                    int    log = 1;

                    string selectQuery = string.Format("SELECT name,lastName,appStatus,studNum,identityNum From ApplicationInfotbl");

                    try
                    {
                        using (SqlConnection conn = new SqlConnection(Connectivity.ConnectionString()))
                        {
                            using (SqlCommand command = new SqlCommand(selectQuery, conn))
                            {
                                command.CommandType = CommandType.Text;
                                conn.Open();

                                SqlDataReader sdr = command.ExecuteReader();

                                if (sdr.HasRows)
                                {
                                    while (sdr.Read())
                                    {
                                        if (sdr["identityNum"].ToString().Equals(id))
                                        {
                                            this.Size = new Size(680, 472);
                                            Essentials.ShowControls(statusGroupBox, btnReset);

                                            lblStudNum.Text  = sdr["studNum"].ToString();
                                            lblName.Text     = sdr["name"].ToString();
                                            lblLastName.Text = sdr["lastName"].ToString();
                                            lblStatus.Text   = sdr["appStatus"].ToString();

                                            log = 0;
                                        }
                                    }
                                    if (log != 0)
                                    {
                                        Essentials.SetErrorMessage($"No record found for: {id}", " Id record not found");
                                    }
                                }

                                conn.Close();
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Essentials.SetErrorMessage(ex.Message, "Id Error");
                    }
                }
                else
                {
                    Essentials.SetErrorMessage("Error: ID number provided is invalid", "Invalid ID");
                }
            }
            else
            {
                Essentials.SetErrorMessage("Error: ID number is required!", "Empty ID field");
            }
        }