//вибір дії private void comboBoxAct_SelectedIndexChanged(object sender, EventArgs e) { string act = comboBoxAct.SelectedItem.ToString(); switch (act) { case "Add test to DB": { OpenFileDialog file = new OpenFileDialog(); file.ShowDialog(); string xmlTest = File.ReadAllText(file.FileName); var time = DateTime.Now; using (ExamVceDB test = new ExamVceDB()) { test.TestDBs.Add(new TestDB() { IdFromPerson = loginPerson.ID, Test = xmlTest, DateLoad = time, }); test.SaveChanges(); MessageBox.Show("test was added"); } ChangeIDForTest(); break; } case "Send test to": { break; } case "Add student to DB": { AddStudentToDB addStudent = new AddStudentToDB(); addStudent.ShowDialog(); break; } case "Choose exam": { listBoxExam.Enabled = true; using (ExamVceDB exam = new ExamVceDB()) { foreach (var item in exam.TestDBs) { MakeTest subject = DeserialiseFromString(item.Test); listBoxExam.Items.Add($"{item.ID}* {subject.Subject}"); } } break; } } if (comboBoxAct.SelectedItem.Equals("Add test to DB")) { } }
void FillTable() { using (ExamVceDB pass = new ExamVceDB()) { //var query = pass.PassExams.Join(pass.Students, c => c.Student.Name); foreach (var item in pass.PassExams) { try { ListViewItem i = new ListViewItem(item.ID.ToString()); var studentName = pass.Students.Where(q => q.ID == item.Id_Student).ToList(); i.SubItems.Add(studentName[0].Name); string testForm = pass.TestDBs.First(q => q.ID == item.Id_Test).Test; MakeTest test = DeserialiseFromString(testForm); i.SubItems.Add(test.Subject); i.SubItems.Add(item.Date_Pass.ToString()); i.SubItems.Add(item.Mark.ToString()); listViewPassExam.Items.Add(i); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } }
//непотрібний вже метод був як тест private void ChooseStartExam_Click(object sender, RoutedEventArgs e) { using (OpenFileDialog openFileDialog = new OpenFileDialog()) { openFileDialog.ShowDialog(); string path = openFileDialog.FileName; XmlSerializer serializer = new XmlSerializer(typeof(MakeTest)); StreamReader reader = new StreamReader(path); test = (MakeTest)serializer.Deserialize(reader); } FillFild(); FillQuestions(); FillRadioAnswer(); mainWindow.Children.Clear(); }
//вибір типу отриманого повідомлення void FunctionForSwich(TransferInfo info, string recive, User client) { switch (info.Type) { case MessageType.CheckLogIn: { User reciveUser = JsonConvert.DeserializeObject <User>(recive); string passRecive; using (MD5 md5Hash = MD5.Create()) { passRecive = GetMd5Hash(md5Hash, reciveUser.Password); } using (ExamVceDB userLogin = new ExamVceDB()) { var student = userLogin.Students.Where(i => i.Login == reciveUser.Login).FirstOrDefault(); char[] login = student.Login.ToCharArray(); var password = student.Password.ToCharArray(); int endPosLogin = 0; int endPosPass = 0; while (true) { if (login[endPosLogin] == ' ' || endPosLogin > student.Login.Length - 1) { break; } endPosLogin++; } while (true) { if (password[endPosPass] == ' ' || endPosPass > student.Login.Length - 1) { break; } endPosPass++; } string log = new string(login, 0, endPosLogin); string pass = new string(password, 0, endPosPass); bool isCorrectMD5 = false; if (reciveUser.Login.Equals(log) && passRecive.Equals(pass)) { client.ID = student.ID; SendAnswer(student.ID.ToString(), client, MessageType.GetAnswer); return; } ; SendAnswer("not correct", client, MessageType.GetAnswer); } break; } case MessageType.Test: { using (ExamVceDB test = new ExamVceDB()) { try { if (idChooseExam < 0) { new Exception(); } SendAnswer(GetTestForSendStudent(idChooseExam), client, MessageType.Test); } catch { SendAnswer("error xml", client, MessageType.Error); } } break; } case MessageType.CheckTestFromStudent: { MakeTest testFromUser = DeserialiseFromString(recive); int mark = 0; bool isWriteToDB = true; using (ExamVceDB test = new ExamVceDB()) { try { var result = test.TestDBs.FirstOrDefault(i => i.ID == testFromUser.IdTest); MakeTest correctTest = DeserialiseFromString(result.Test); for (int i = 0; i < correctTest.questions.Count; i++) { for (int j = 0; j < correctTest.questions[i].answers.Count; j++) { if (correctTest.questions[i].answers[j].IsCorrect) { if (testFromUser.questions[i].answers[j].IsCorrect) { mark += correctTest.questions[i].Weight; } } } } //MessageBox.Show(mark.ToString()); } catch { isWriteToDB = false; MessageBox.Show("Test not foudn"); } } if (isWriteToDB) { try { using (ExamVceDB passExam = new ExamVceDB()) { passExam.PassExams.Add(new PassExam() { Id_Sender = loginPerson.ID, Id_Student = client.ID, Id_Test = testFromUser.IdTest, Mark = mark, Date_Pass = DateTime.Now }); passExam.SaveChanges(); MessageBox.Show("Test pass writed in DB"); } }catch (Exception ex) { MessageBox.Show(ex.Message); } } SendAnswer($"Your mark is: {mark}", client, MessageType.SendMark); break; } } }
//отримання повідомлення void ReceiveMessages() { try { while (true) { byte[] infoBytes = new byte[8]; server.Receive(infoBytes); var info = TransferInfo.FromBytes(infoBytes); byte[] buffer = new byte[250]; MemoryStream memoryStream = new MemoryStream(); int left = info.Size; int count = 0; while (left > 0) { int download = left < buffer.Length ? left : buffer.Length; count = server.Receive(buffer, download, SocketFlags.None); memoryStream.Write(buffer, 0, count); left -= count; } string recive = Encoding.UTF8.GetString(memoryStream.ToArray()); switch (info.Type) { case MessageType.Test: { var serializer = new XmlSerializer(typeof(MakeTest)); //MakeTest desr; using (TextReader reader = new StringReader(recive)) { test = (MakeTest)serializer.Deserialize(reader); } Dispatcher.Invoke(() => { mainWindow.Children.Clear(); FillFild(); FillRadioAnswer(); FillQuestions(); EndExamButton.IsEnabled = true; }); break; } case MessageType.SendMark: { Dispatcher.Invoke(() => { YourMark.Text = recive; }); break; } case MessageType.Error: { System.Windows.MessageBox.Show("Uppss some error"); break; } } } } catch (Exception ex) { System.Windows.MessageBox.Show(ex.Message); System.Windows.MessageBox.Show("Connection with server is lost"); } }