Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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);
                        }
                    }
                }
            }
        }
Esempio n. 5
0
        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;
                    }
                }
            }
        }