// Метод який повертає групи студентів для певного адміністратора private void GetGroupsForAdmin(string mess) { int id = int.Parse(mess); using (var db = new TestingSystemDBContext()) { List <Group> groups = db.Groups.Include(p => p.Admin).Where(a => a.Admin.Id == id).ToList(); // список груп із бази List <DTOGroup> dtoGroups = new List <DTOGroup>(); // Список груп для передавання на клієнтську частину foreach (Group item in groups) { List <int> studentsId = new List <int>(); List <int> testsId = new List <int>(); foreach (Student st in item.Students) { studentsId.Add(st.StudentId); } foreach (Test ts in item.Tests) { testsId.Add(ts.TestId); } DTOGroup group = new DTOGroup { GroupId = item.GroupId, AdminId = item.Admin.Id, GroupName = item.GroupName, StudentsId = studentsId, TestsId = testsId }; // Об'єкт групи для передавання на клієнтську частину dtoGroups.Add(group); // додаємо елемент до списку } SendObject(dtoGroups); // відправляємо об'єкт клієнту } }
// Створення та збереження нової групи студентів в базу private void AddGroup(string mess) { string[] el = mess.Split(); // отримуємо повіжомлення з даними про групу int adminId = int.Parse(el[0]); // id адміністратора який створив групу string groupName = el[1]; // назва групи using (var db = new TestingSystemDBContext()) { // перевірка чи не існує вже групи з таким іменем в базі if (db.Groups.FirstOrDefault(g => g.GroupName == groupName) == null) { Group gr = new Group() { Admin = db.Administrators.FirstOrDefault(a => a.Id == adminId), GroupName = groupName }; // Створення об'єкта групи db.Groups.Add(gr); // додаємо групу до бази db.SaveChanges(); SendMessage("successfully"); // відправляємо повідомлення про успішність операції } else { SendMessage("ExistName"); } } }
// Метод який повертає інформацію про певного адміністратора private void InfoAboutAdmin(string mess) { int adminId = int.Parse(mess); // отримуємо id адміністратора з повідомлення using (var db = new TestingSystemDBContext()) { var admin = db.Administrators.FirstOrDefault(a => a.Id == adminId); // Отримуємо адміністратора з бази по id List <int> groupsId = new List <int>(); // список груп, які створив цей адміністратор List <int> subjectsId = new List <int>(); // список предметів, які створив цей адміністратор if (admin.Groups.Count != 0) { foreach (var item in admin.Groups) { groupsId.Add(item.GroupId); } } if (admin.Subjects.Count != 0) { foreach (var item in admin.Subjects) { groupsId.Add(item.SubjectId); } } DTOAdministrator administrator = new DTOAdministrator { Id = admin.Id, Name = admin.Name, Login = admin.Login, Password = admin.Password, GroupsId = groupsId, SubjectsId = subjectsId }; // створення об'єкта адміністратора для надсилання SendObject(administrator); // надсилання об'єкта адміністратора на клієнтську частину } }
// Метод для входу користувача в систему // Приймає стрічку, яка містить ідентифікатор, який визначає який користувач входить (студент/адмін), також стрічка містить логін та пароль користувача // Метод перевіряє чи існує користувач з даним логіном та паролем в базі, і надсилає відповідь клієнтській частині //private void LogIn(string mess) //{ // string[] logEl = mess.Split(); // isAdmin = bool.Parse(logEl[0]); // login = logEl[1]; // password = logEl[2]; // if (isAdmin) // { // using (var db = new TestingSystemDBContext()) // { // if (db.Administrators.FirstOrDefault(a => a.Login == login) != null) // { // if (db.Administrators.FirstOrDefault(a => a.Password == password) != null) // { // var admin = db.Administrators.FirstOrDefault(a => a.Password == password); // SendMessage(admin.Id + ":succesfully"); // } // else // { // SendMessage("No user with this password"); // } // } // else // { // SendMessage("No user with this login"); // } // } // } // else // { // using (var db = new TestingSystemDBContext()) // { // if (db.Students.FirstOrDefault(s => s.Login == login) != null) // { // if (db.Students.FirstOrDefault(a => a.Password == password) != null) // { // var student = db.Students.FirstOrDefault(s => s.Password == password); // SendMessage(student.StudentId + ":succesfully"); // } // else // { // SendMessage("No user with this password"); // } // } // else // { // SendMessage("No user with this login"); // } // } // } //} private void LogIn(string mess) { string[] logEl = mess.Split(); isAdmin = true; login = logEl[0]; password = logEl[1]; using (var db = new TestingSystemDBContext()) { if (db.Administrators.FirstOrDefault(a => a.Login == login) == null) { if (db.Administrators.FirstOrDefault(a => a.Password == password) == null) { isAdmin = false; } } if (isAdmin) { if (db.Administrators.FirstOrDefault(a => a.Login == login) != null) { if (db.Administrators.FirstOrDefault(a => a.Password == password) != null) { var admin = db.Administrators.FirstOrDefault(a => a.Password == password); SendMessage(admin.Id + " " + isAdmin + ":succesfully"); } else { SendMessage("No user with this password"); } } else { SendMessage("No user with this login"); } } else { if (db.Students.FirstOrDefault(s => s.Login == login) != null) { if (db.Students.FirstOrDefault(a => a.Password == password) != null) { var student = db.Students.FirstOrDefault(s => s.Password == password); SendMessage(student.StudentId + " " + isAdmin + ":succesfully"); } else { SendMessage("No user with this password"); } } else { SendMessage("No user with this login"); } } } }
//Видалення певної групи студентів public void DeleteGroup(string mess) { int groupId = Convert.ToInt32(mess); // Отримуємо з повідомлення id потрібної групи using (var db = new TestingSystemDBContext()) { Group gr = db.Groups.FirstOrDefault(g => g.GroupId == groupId); db.Groups.Remove(gr); // видаляємо групу db.SaveChanges(); SendMessage("successfully"); } }
// Видалення студента з певної групи студентів private void DeleteStudentFromGroup(string _id) { int id = int.Parse(_id); // Отримуємо id студента using (var db = new TestingSystemDBContext()) { Student student = db.Students.Include(g => g.Group).FirstOrDefault(s => s.StudentId == id); // Отримуємо студента з бази по його id Group group = db.Groups.Include(s => s.Students).FirstOrDefault(g => g.GroupId == student.Group.GroupId); // Отримуємо групу жо якої належить цей студент group.Students.Remove(student); // Видаляємо студента з групи db.SaveChanges(); } SendMessage("successfully"); }
//Реєстрація нового студента private void StudentRegistration() { var obj = RecieveObject(); // Отримуємо об'єкт студента з клієнтської частини if (obj is DTOStudent) // перевіряємо чи це справді об'єкт студента { DTOStudent dtoStudent = obj as DTOStudent; // приведення до потрібного типу using (var db = new TestingSystemDBContext()) { // якщо такого студента ще не існує в базі то додаємо дані нового адміна в базу if (db.Students.FirstOrDefault(s => s.Password == dtoStudent.Password) == null) { if (db.Students.FirstOrDefault(s => s.Login == dtoStudent.Login) == null) { Group gr = db.Groups.FirstOrDefault(g => g.GroupId == dtoStudent.GroupId); Student student = new Student() { Name = dtoStudent.Name, SurName = dtoStudent.SurName, Group = gr, Login = dtoStudent.Login, Password = dtoStudent.Password }; db.Students.Add(student); db.SaveChanges(); SendMessage("successfully"); } else { SendMessage("login already exists"); } } else { SendMessage("password already exists"); } } } else { SendMessage("Error object!"); } }
// Метод який змінює пароль адміністратора, приймає повідомлення в якому є id адміністратора та новий пароль private void EditAdminPassword(string mess) { string[] adminEl = mess.Split(); int id = int.Parse(adminEl[0]); string newPassword = adminEl[1]; using (var db = new TestingSystemDBContext()) { if (db.Administrators.Where(p => p.Password == newPassword).Count() == 0) { Administrator admin = db.Administrators.FirstOrDefault(a => a.Id == id); admin.Password = newPassword; db.SaveChanges(); SendMessage("succesfully"); } else { SendMessage("Exist admin with this password"); } } }
// Метод який повертає інформацію про певного студента private void InfoAboutStudent(string mess) { int studentId = int.Parse(mess); // отримуємо id студента з повідомлення using (var db = new TestingSystemDBContext()) { var student = db.Students.FirstOrDefault(s => s.StudentId == studentId); // Отримуємо студента з бази по id List <int> testSessionsId = new List <int>(); // список тестових сесій, які проходив цей студент if (student.TestSessions.Count != 0) { foreach (var item in student.TestSessions) { testSessionsId.Add(item.TestSessionId); } } DTOStudent dtoStudent = new DTOStudent { StudentId = student.StudentId, Name = student.Name, SurName = student.SurName, Login = student.Login, Password = student.Password, GroupId = student.Group.GroupId, GroupName = student.Group.GroupName, TestSessionsId = testSessionsId }; // створення об'єкта студента для надсилання SendObject(dtoStudent); // надсилання об'єкта студента на клієнтську частину } }
// Реєстрація нового адміністратора private void AdminRegistration() { var obj = RecieveObject(); // отримуємо об'єкт адміністратора з клієнтської частини if (obj is DTOAdministrator) // перевіряємо чи це справді об'єкт адміністратора { DTOAdministrator dtoAdmin = obj as DTOAdministrator; // приведення до потрібного типу using (var db = new TestingSystemDBContext()) { // якщо такого адміністратора ще не існує в базі то додаємо дані нового адміна в базу if (db.Administrators.FirstOrDefault(a => a.Password == dtoAdmin.Password) == null) { if (db.Administrators.FirstOrDefault(a => a.Login == dtoAdmin.Login) == null) { Administrator administrator = new Administrator() { Name = dtoAdmin.Name, Login = dtoAdmin.Login, Password = dtoAdmin.Password }; db.Administrators.Add(administrator); db.SaveChanges(); SendMessage("successfully"); } else { SendMessage("login already exists"); } } else { SendMessage("password already exists"); } } } else { SendMessage("Error object!"); } }
// Метод який повертає тести які доступні для певної групи студентів private void GetGroupTests() { var obj = RecieveObject(); // отримуємо список id тестів, які доступні для певної групи студентів if (obj is List <int> ) { List <DTOTest> tests = new List <DTOTest>(); // Список тестів List <int> testsId = (List <int>)obj; // Приведення до потрібного типу using (var db = new TestingSystemDBContext()) { for (int i = 0; i < testsId.Count(); i++) { int id = testsId[i]; Test test = db.Tests.Include(g => g.Theme).FirstOrDefault(s => s.TestId == id); // Отримуємо тест з бази по його id DTOTest dtoTest = new DTOTest { TestId = test.TestId, TestName = test.TestName, TestTime = test.TestTime, MixAnswersOrder = test.MixAnswersOrder, MixQuestionsOrder = test.MixQuestionsOrder, TestCountScores = test.TestCountScores, ThemeId = test.Theme.Id }; // Створюємо об'єкт теста для надсилання tests.Add(dtoTest); // Додаємо тест до списку } } SendObject(tests); // Надсилаємо список тестів на клієнтську частину } }
// Метод який повертає студентів певної групи private void GetGroupStudents() { var obj = RecieveObject(); // отримуємо список id студентів певної групи if (obj is List <int> ) { List <DTOStudent> students = new List <DTOStudent>(); // Список студентів List <int> studentsId = (List <int>)obj; // Приведення до потрібного типу using (var db = new TestingSystemDBContext()) { for (int i = 0; i < studentsId.Count(); i++) { int id = studentsId[i]; Student student = db.Students.Include(g => g.Group).FirstOrDefault(s => s.StudentId == id); // Отримуємо студента з бази по його id DTOStudent dtoStudent = new DTOStudent { StudentId = student.StudentId, Name = student.Name, SurName = student.SurName, Login = student.Login, Password = student.Password, GroupId = student.Group.GroupId }; // Створюємо об'єкт студента для надсилання students.Add(dtoStudent); // Додаємо студента до списку } } SendObject(students); // Надсилаємо список студентів на клієнтську частину } }