/// <summary>
 /// LINQ method to insert a new lecturer object
 /// </summary>
 /// <returns>A bool to confirm/deny insert</returns>
 public bool InsertLecturer(Lecturer l)
 {
     try
     {
         using (LinqDBDataContext db = new LinqDBDataContext())
         {
             db.Lecturers.InsertOnSubmit(l);
             db.SubmitChanges();
         }
     }
     catch (SqlException sqlException)
     {
         this.ErrorMessage = "SQL Error: " + sqlException.Message;
         return(false);
     }
     catch (InvalidOperationException invalidOperationException)
     {
         this.ErrorMessage = "SQL Operation Error: " + invalidOperationException.Message;
         return(false);
     }
     catch (Exception e)
     {
         this.ErrorMessage = "Error: " + e.Message;
         return(false);
     }
     return(true);
 }
        /// <summary>
        /// LINQ method to insert a new subject object
        /// </summary>
        /// <returns>int count to confirm/deny insert</returns>
        public int InsertNewSubject(Subject s)
        {
            int count;

            try
            {
                using (LinqDBDataContext db = new LinqDBDataContext())
                {
                    count = db.Subjects.Count(n => n.SubjectName.Equals(s.SubjectName));

                    if (count == 0)
                    {
                        db.Subjects.InsertOnSubmit(s);
                        db.SubmitChanges();
                    }
                }
            }
            catch (SqlException sqlException)
            {
                this.ErrorMessage = "SQL Error: " + sqlException.Message;
                return(-1);
            }
            catch (InvalidOperationException invalidOperationException)
            {
                this.ErrorMessage = "SQL Operation Error: " + invalidOperationException.Message;
                return(-1);
            }
            catch (Exception e)
            {
                this.ErrorMessage = "Error: " + e.Message;
                return(-1);
            }
            return(count);
        }
        /// <summary>
        /// LINQ method to either add a new subject and grade to a student or update the grade of
        /// and existing subject
        /// </summary>
        /// <returns>A count in int form</returns>
        public int UpdateSubjectDetails(Grade g)
        {
            int count;

            try
            {
                using (LinqDBDataContext db = new LinqDBDataContext())
                {
                    count = db.Grades.Count(n => n.SubjectID.Equals(g.SubjectID) && n.StudentID.Equals(g.StudentID));

                    if (count == 0)
                    {
                        db.Grades.InsertOnSubmit(g);
                        db.SubmitChanges();
                    }
                    else
                    {
                        Grade grade = db.Grades.FirstOrDefault(e => e.SubjectID.Equals(g.SubjectID) && e.StudentID.Equals(g.StudentID));

                        grade.Grade1 = g.Grade1;
                        db.SubmitChanges();
                    }
                }
            }
            catch (SqlException sqlException)
            {
                this.ErrorMessage = "SQL Error: " + sqlException.Message;
                return(-1);
            }
            catch (InvalidOperationException invalidOperationException)
            {
                this.ErrorMessage = "SQL Operation Error: " + invalidOperationException.Message;
                return(-1);
            }
            catch (Exception e)
            {
                this.ErrorMessage = "Error: " + e.Message;
                return(-1);
            }
            return(count);
        }
        /// <summary>
        /// LINQ method to insert a list of subjects for the new student above
        /// </summary>
        /// <returns>A bool to confirm/deny insert</returns>
        public bool InsertGrades(List <Grade> gList)
        {
            try
            {
                foreach (var item in gList)
                {
                    using (LinqDBDataContext db = new LinqDBDataContext())
                    {
                        Grade g = new Grade();

                        g.StudentID   = item.StudentID;
                        g.SubjectID   = item.SubjectID;
                        g.DateEntered = DateTime.Now;


                        db.Grades.InsertOnSubmit(g);
                        db.SubmitChanges();
                    }
                }
            }
            catch (SqlException sqlException)
            {
                this.ErrorMessage = "SQL Error: " + sqlException.Message;
                return(false);
            }
            catch (InvalidOperationException invalidOperationException)
            {
                this.ErrorMessage = "SQL Operation Error: " + invalidOperationException.Message;
                return(false);
            }
            catch (Exception e)
            {
                this.ErrorMessage = "Error: " + e.Message;
                return(false);
            }
            return(true);
        }