/// <summary> /// Возвращает оценки пользователя по определенному предмету /// </summary> /// <param name="subjectID">Идентификатор предмета</param> /// <returns>Масив оценок</returns> public Marks[] GetMyMarks(int subjectID) { Marks[] result = null; DB db = new DB(); string query; if (this.userType == UserType.Student) { query = string.Format("select marks.Mark_id from marks inner join studentsubject inner join student inner join users on marks.StudentSubject_id = studentsubject.StudentSubject_id and studentsubject.Student_id = student.Student_id and student.Student_id = users.Student_id and users.User_id = {0} and studentsubject.Subject_id = {1} order by marks.Date;", this.userID, subjectID); } else { query = string.Format("select marks.Mark_id from marks inner join studentsubject inner join subject inner join lecturer inner join users on marks.StudentSubject_id = studentsubject.StudentSubject_id and studentsubject.Subject_id = subject.Subject_id and subject.Lecturer_id = lecturer.Lecturer_id and lecturer.Lecturer_id = users.Lecturer_id and users.User_id = {0} and studentsubject.Subject_id = {1} order by marks.Date;", this.userID, subjectID); } DB.ResponseTable markID = db.QueryToRespontTable(query); if (markID != null && markID.CountRow > 0) { result = new Marks[markID.CountRow]; for (int i = 0, end = result.Length; i < end && markID.Read(); i++) { result[i] = new Marks(Convert.ToInt32(markID["Mark_id"])); result[i].GetInformationAboutUserFromDB(); } } return(result); }
/// <summary> /// Добовляет оценку в БД /// </summary> /// <param name="studentID">Идентификатор студента</param> /// <param name="subjectID">Идентификатор предмета</param> /// <param name="mark">Сама оценка</param> /// <param name="bonusMark">Бонусные балы</param> /// <param name="maxMark">Максимальная оценка</param> /// <param name="typeMark">Тип оценки</param> /// <param name="date">Дата выставления оценки</param> /// <returns>Новыя оценка</returns> public static Marks AddMark(int studentID, int subjectID, int mark, int bonusMark, int maxMark, Marks.TypeMarks typeMark, DateTime date) { DB db = new DB(); db.QueryToRespontTable(string.Format("insert into marks(Date, Mark, Bonus_mark, Max_mark, StudentSubject_id, Type_marks) value ('{0}', {1}, {2}, {3}, (select StudentSubject_id from studentsubject where Student_id = {4} and Subject_id = {5}), '{6}');", date.ToString("yyyy-MM-dd"), mark, bonusMark, maxMark, studentID, subjectID, Marks.GetEnumDescription(typeMark))); DB.ResponseTable markID = db.QueryToRespontTable("select LAST_INSERT_ID() as id;"); markID.Read(); Marks currentMark = new Marks(Convert.ToInt32(markID["id"])); currentMark.GetInformationAboutUserFromDB(); return(currentMark); }
/// <summary> /// Берет всю информацию об оценке из БД /// </summary> /// <returns>true - есть, false - нету</returns> public bool GetInformationAboutUserFromDB() { DB db = new DB(); DB.ResponseTable marks = db.QueryToRespontTable(string.Format("select * from marks inner join studentsubject on marks.StudentSubject_id = studentsubject.StudentSubject_id and marks.Mark_id = {0};", this.markID)); if (marks != null && marks.CountRow == 1) { marks.Read(); this.studentID = Convert.ToInt32(marks["Student_id"]); this.subjectID = Convert.ToInt32(marks["Subject_id"]); this.date = Convert.ToDateTime(marks["Date"]); this.mark = Convert.ToInt32(marks["Mark"]); this.bonusMark = Convert.ToInt32(marks["Bonus_mark"]); this.maxMark = Convert.ToInt32(marks["Max_mark"]); this.typeMark = Marks.ConverStringToEnum((string)marks["Type_marks"]); return(true); } return(false); }