/// <summary> /// Get the last created homework from a given list /// </summary> /// <param name="homeworksList"></param> /// <returns></returns> private static HomeworkInfo GetLastHomework(List <HomeworkInfo> homeworksList) { HomeworkInfo lastHomework = new HomeworkInfo(); foreach (HomeworkInfo homework in homeworksList) { if (lastHomework.creationDate < homework.creationDate) { lastHomework = homework; } } return(lastHomework); }
/// <summary> /// Get all homeworks from a specific studentId /// </summary> /// <param name="studentId"></param> /// <returns></returns> private static List <HomeworkInfo> GetAllHomeworks(int studentId) { using SQLiteCommand cmd = GlobalFunction.OpenDbConnection(); cmd.CommandText = $"SELECT * FROM homeworks WHERE studentId = {studentId}"; using SQLiteDataReader rdr = cmd.ExecuteReader(); List <HomeworkInfo> homeworksList = new List <HomeworkInfo>(); while (rdr.Read()) { HomeworkInfo homeworkInfo = new HomeworkInfo() { homeworkId = rdr.GetInt32(0), creationDate = rdr.GetInt32(2), endDate = rdr.GetInt32(3), retrieveDate = rdr.GetInt32(4), description = rdr.GetString(5) }; homeworksList.Add(homeworkInfo); } rdr.Close(); return(homeworksList); }
private void ReadStudentsData(List <int> studentIdList) { foreach (int studentId in studentIdList) { using SQLiteCommand cmd = GlobalFunction.OpenDbConnection(); //Handle classroom name List <int> classroomIdList = Database.Get.Classroom.AllIDFromStudentID(studentId); List <string> classroomNameList = new List <string>(); foreach (int classroomId in classroomIdList) { classroomNameList.Add(Database.Get.Classroom.NameFromID(classroomId)); } string classroomName = String.Join(", ", classroomNameList.ToArray()); string[] studentName = Database.Get.Student.NameFromID(studentId); //Handle homework List <HomeworkInfo> homeworkList = GetAllHomeworks(studentId); HomeworkInfo lastHomework = GetLastHomework(homeworkList); bool lastHomeworkButtonEnabled = false; string lastHomeworkStatus = GlobalVariable.specialCharacter["CheckMark"]; string lastHomeworkColor = "Green"; if (lastHomework.retrieveDate == 0 && lastHomework.creationDate != 0) { lastHomeworkButtonEnabled = true; lastHomeworkStatus = GlobalVariable.specialCharacter["Cross"]; lastHomeworkColor = "Red"; } //Handle note List <NoteInfo> notesList = GetAllNotes(studentId); NoteInfo lastNotes = GetLastNote(notesList); //Handle votes List <VotesInfo> upvotesList = Database.Get.Vote.AllFromStudentId(studentId, true); List <VotesInfo> downvotesList = Database.Get.Vote.AllFromStudentId(studentId, false); string average = ""; List <GradeInfo> gradesList = Database.Get.Grade.AllFromStudentId(studentId); if (gradesList.Count == 0) { average = "20/20"; } else { float[] gradesArray = new float[gradesList.Count]; int[] coeffArray = new int[gradesList.Count]; for (int i = 0; i < gradesList.Count; i++) { gradesArray[i] = gradesList[i].Grade; coeffArray[i] = gradesList[i].Coeff; } int coeffSum = coeffArray.Sum(); float[] gradesCoeffMultiply = new float[gradesList.Count]; for (int i = 0; i < gradesList.Count; i++) { gradesCoeffMultiply[i] = gradesArray[i] * coeffArray[i]; } float gradesCoefMultiplySum = gradesCoeffMultiply.Sum(); float averageFloat = gradesCoefMultiplySum / coeffSum; average = averageFloat.ToString() + "/20"; } StudentDisplay studentDisplay = new StudentDisplay() { ID = studentId, Name = studentName[1] + " " + studentName[0], ClassroomName = classroomName, HomeworkButtonEnabled = lastHomeworkButtonEnabled, LastHomeworkStatusText = lastHomeworkStatus, LastHomeworkStatusColor = lastHomeworkColor, LastHomeWorkId = lastHomework.homeworkId, Note = lastNotes.content ?? "Aucune note", Average = average, UpvotesCount = upvotesList.Count.ToString(), DownvotesCount = downvotesList.Count.ToString() }; studentsCollection.Add(studentDisplay); } }