Ejemplo n.º 1
0
        // Метод який повертає групи студентів для певного адміністратора
        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); // відправляємо об'єкт клієнту
            }
        }
Ejemplo n.º 2
0
        // Створення та збереження нової групи студентів в базу
        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");
                }
            }
        }
Ejemplo n.º 3
0
        // Метод який повертає інформацію про певного адміністратора
        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); // надсилання об'єкта адміністратора на клієнтську частину
            }
        }
Ejemplo n.º 4
0
        // Метод для входу користувача в систему
        // Приймає стрічку, яка містить ідентифікатор, який визначає який користувач входить (студент/адмін), також стрічка містить логін та пароль користувача
        // Метод перевіряє чи існує користувач з даним логіном та паролем в базі, і надсилає відповідь клієнтській частині
        //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");
                    }
                }
            }
        }
Ejemplo n.º 5
0
        //Видалення певної групи студентів
        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");
            }
        }
Ejemplo n.º 6
0
        // Видалення студента з певної групи студентів
        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");
        }
Ejemplo n.º 7
0
        //Реєстрація нового студента
        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!");
            }
        }
Ejemplo n.º 8
0
        // Метод який змінює пароль адміністратора, приймає повідомлення в якому є 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");
                }
            }
        }
Ejemplo n.º 9
0
        // Метод який повертає інформацію про певного студента
        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); // надсилання об'єкта студента на клієнтську частину
            }
        }
Ejemplo n.º 10
0
        // Реєстрація нового адміністратора
        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!");
            }
        }
Ejemplo n.º 11
0
        // Метод який повертає тести які доступні для певної групи студентів
        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); // Надсилаємо список тестів на клієнтську частину
            }
        }
Ejemplo n.º 12
0
        // Метод який повертає студентів певної групи
        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); // Надсилаємо список студентів на клієнтську частину
            }
        }