private void SEND_MESSAGE(string msg, string login) { InfoLibClientSendClass info = new InfoLibClientSendClass(); info.MSG = msg; info.remoteEP = remoteEP_2; info.Login = login; info.Password = null; info.TestMark = null; info.GroupId = null; info.TestId = null; info.UserId = null; SenderDataClient(info); }
private void SenderDataClient(object obj) { InfoLibClientSendClass info = obj as InfoLibClientSendClass; BinaryFormatter bf = new BinaryFormatter(); byte[] data = null; using (MemoryStream ms = new MemoryStream()) { bf.Serialize(ms, info); data = ms.ToArray(); client_2.Send(data, data.Length, info.remoteEP); } }
private void Button1_Click(object sender, EventArgs e) { try { testPassed = 0; var testId = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells["Id"].Value); InfoLibClientSendClass info = new InfoLibClientSendClass(); info.MSG = "PASS_TEST"; info.remoteEP = remoteEP_2; info.TestId = testId; info.UserId = USER_ID; SenderDataClient(info); } catch (Exception) { MessageBox.Show("ERROR", "ClientAlert", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void Listener() { while (true) { IPEndPoint ep = null; byte[] mas = client_2.Receive(ref ep); using (MemoryStream ms = new MemoryStream()) { BinaryFormatter bf = new BinaryFormatter(); ms.Write(mas, 0, mas.Length); ms.Seek(0, SeekOrigin.Begin); InfoLibClientSendClass info = (InfoLibClientSendClass)bf.Deserialize(ms); if (info.MSG == "CONNECT") { var user = repoUser.FirstOrDefault(t => t.Login == info.Login && t.Password == info.Password); Info inf = new Info(); if (user == null) { inf.MSG = "CONNECTED_FALSE"; inf.Data = null; inf.DBTestData = null; inf.DBUserData = null; inf.remoteEP = remoteEP; SenderData(inf); } else { inf.MSG = "CONNECTED_TRUE"; inf.Data = null; inf.DBTestData = null; inf.DBUserData = new DBUserData() { Id = user.Id, FName = user.FName, LName = user.LName, GroupId = user.GroupId }; inf.remoteEP = remoteEP; SenderData(inf); } } else if (info.MSG == "LOAD_TESTS") { var user = repoUser.FirstOrDefault(t => t.Login == info.Login); if (user == null) { return; } var groupP = repoGroup.FindById(user.GroupId); if (groupP == null) { return; } var bs = from g in repoGroup.GetAllData() join gt in repoGroupTest.GetAllData() on g.Id equals gt.GroupId join t in repoTest.GetAllData() on gt.TestId equals t.Id where g.Id == groupP.Id select new { GroupName = g.Name, Author = t.Author, Title = t.Title, NumOfQuestions = t.NumOfQuestions, Time = t.Time }; Info inf = new Info(); inf.MSG = "LOAD_TESTS_TRUE"; inf.remoteEP = remoteEP; inf.DBUserData = new DBUserData() { FName = groupP.Name }; inf.Data = null; inf.DBTestData = new List <DBTestData>(); foreach (var t in bs) { var test = repoTest.FirstOrDefault(m => m.Author == t.Author && m.Title == t.Title); DBTestData data = new DBTestData() { Author = t.Author, Filename = test.Filename, Id = test.Id, NumOfQuestions = t.NumOfQuestions, Title = t.Title, Time = t.Time }; inf.DBTestData.Add(data); } SenderData(inf); } else if (info.MSG == "PASS_TEST") { var selectedTest = repoTest.FindById(info.TestId); XmlSerializer formatter = new XmlSerializer(typeof(Data)); Data data = new Data(); using (FileStream fs = new FileStream($@"UploadedFiles\{selectedTest.Filename}", FileMode.Open)) { data = (Data)formatter.Deserialize(fs); } Info d = new Info(); d.MSG = "RETURN_TEST"; d.Data = new Data(); d.Data = data; d.remoteEP = remoteEP; d.DBTestData = new List <DBTestData>(); d.DBTestData.Add(new DBTestData() { Id = selectedTest.Id, Author = selectedTest.Author, Filename = selectedTest.Filename, NumOfQuestions = selectedTest.NumOfQuestions, Title = selectedTest.Title, Time = selectedTest.Time }); SenderData(d); } else if (info.MSG == "TEST_PASSED_DATA") { var gr = repoGrade.FirstOrDefault(t => t.UserId == info.UserId && t.TestId == info.TestId); if (gr != null) { if (info.UserId.HasValue) { gr.UserId = info.UserId.Value; } if (info.TestId.HasValue) { gr.TestId = info.TestId.Value; } if (info.TestMark.HasValue) { gr.Mark = info.TestMark.Value; } repoGrade.Update(gr); } else { Grade grade = new Grade(); if (info.UserId.HasValue) { grade.UserId = info.UserId.Value; } if (info.TestId.HasValue) { grade.TestId = info.TestId.Value; } if (info.TestMark.HasValue) { grade.Mark = info.TestMark.Value; } repoGrade.Add(grade); } } } } }
private void Listener() { while (true) { IPEndPoint ep = null; byte[] mas = client.Receive(ref ep); using (MemoryStream ms = new MemoryStream()) { BinaryFormatter bf = new BinaryFormatter(); ms.Write(mas, 0, mas.Length); ms.Seek(0, SeekOrigin.Begin); Info info = (Info)bf.Deserialize(ms); if (info.MSG == "CONNECTED_TRUE") { GiveAccess = true; label1.Text = info.DBUserData.FName; label2.Text = info.DBUserData.LName; USER_ID = info.DBUserData.Id; GROUP_ID = info.DBUserData.GroupId; if (GROUP_ID == null && noGroup == 0) { MessageBox.Show("Admin should first add you to the group!\nThen restart app", "ClientAlert", MessageBoxButtons.OK, MessageBoxIcon.Error); noGroup = 1; } } else if (info.MSG == "EXIT") { Application.Exit(); } else if (info.MSG == "LOAD_TESTS_TRUE") { if (GROUP_NAME == string.Empty) { GROUP_NAME = info.DBUserData.FName; Invoke(new Action(() => { label3.Text = "Group: " + GROUP_NAME; })); } dBTestDataList = info.DBTestData; Invoke(new Action(() => { dataGridView1.DataSource = null; dataGridView1.Rows.Clear(); dataGridView1.DataSource = dBTestDataList; })); } else if (info.MSG == "RETURN_TEST") { if (testPassed == 1) { continue; } Data data = info.Data; List <TestAnsws> answs = new List <TestAnsws>(); for (int i = 0; i < data.Tests.Count(); i++) { FormPassTest form = new FormPassTest(); form.groupBox1.Text = $"{i+1} || {data.Tests.Count()}"; form.textBox1.Text = data.Tests[i].Question; for (int j = 0; j < data.Tests[i].Answers.Count(); j++) { form.listBox1.Items.Add(data.Tests[i].Answers[j]); } DialogResult res = form.ShowDialog(); if (res == DialogResult.OK) { if (form.listBox1.SelectedItem.ToString() == data.Tests[i].CorectAnswer) { answs.Add(new TestAnsws() { Question = data.Tests[i].Question, IsAnswerCorect = true }); } else { answs.Add(new TestAnsws() { Question = data.Tests[i].Question, IsAnswerCorect = false }); } } } var trueAswers = answs.Where(t => t.IsAnswerCorect == true).Count(); var totalAnswers = data.Tests.Count(); double ress = 0; try { ress = (trueAswers * 100) / totalAnswers; } catch (Exception) { MessageBox.Show("ERROR", "ClientAlert", MessageBoxButtons.OK, MessageBoxIcon.Error); } var mark = Convert.ToInt32(ress); MessageBox.Show($"Your mark is: {mark}%", "TestClient", MessageBoxButtons.OK, MessageBoxIcon.Information); InfoLibClientSendClass inf = new InfoLibClientSendClass(); inf.MSG = "TEST_PASSED_DATA"; inf.GroupId = GROUP_ID; inf.UserId = USER_ID; inf.TestId = info.DBTestData[0].Id; inf.TestMark = mark; inf.remoteEP = remoteEP_2; SenderDataClient(inf); testPassed = 1; } } } }