public QuestionInfoForm(Client client, QuestionBase question)
 {
     InitializeComponent();
     this.Question = question;
     this.client = client;
     FillQuestionBox();
     FillClientAnswersBox();
     this.Text = " Вопрос " + question.Name +"  Ученика: " + client.Data.Name + " " + this.client.Data.LastName + " " + this.client.Data.Group ;
 }
 public ClientDetailForm(Client client, Test OriginalTest)
 {
     if (client == null) { throw new ArgumentNullException(); }
     if (OriginalTest == null) { throw new ArgumentNullException(); }
     InitializeComponent();
     this.client = client;
     this.OriginalTest = OriginalTest;
     this.Text = client.Data.Name + " " + this.client.Data.LastName + " " + this.client.Data.Group;
     FillInfoBox();
     FillQuestionsBox();
 }
Exemple #3
0
 ///// <summary>
 ///// получить клиентов по запросу
 ///// </summary>
 ///// <param name="query">запрос</param>
 ///// <returns>словарь клиентов</returns>
 //public Dictionary<string, Client> GetClientsByQuery(IDictionaryQueryAddon<string, Client> query)
 //{
 //    try
 //    {
 //        var result = query.MakeQuery(this.Clients);
 //        return result;
 //    }
 //    catch
 //    {
 //        throw new Exception();
 //    }
 //}
 /// <summary>
 /// добавить клиента
 /// </summary>
 /// <param name="key">ид</param>
 /// <param name="client">клиент</param>
 /// <param name="exist">делегат - что делать если уже существует клиент с таким же ид</param>
 /// <param name="notexist">делегат - что делать если не существует клиента с таким же ид</param>
 public void Add(string key, Client value, Action<Dictionary<string, Client>, Client> exist, Action<Dictionary<string, Client>, Client> notexist)
 {
     if (this.Clients.ContainsKey(key) == true)
     {
         exist(this.Clients, value);
     }
     else
     {
         notexist(this.Clients, value);
     }
 }
Exemple #4
0
 public ClientRecievedEventArgs(Client Client)
 {
     this.Client = Client;
 }
Exemple #5
0
        private void Recieve(object o)
        {
            TcpClient tcp_client = (TcpClient)o;

            List<byte[]> buf = new List<byte[]>();

            int read = -1;
            int pos = 0;

            byte[] END_DATA = Encoding.UTF8.GetBytes("#@END@#");

            while (true)
            {
                byte[] mas = new byte[MAX_BUFFER_SIZE];
                read = tcp_client.GetStream().Read(mas, 0, mas.Length);

                buf.Add(mas);
                pos += read;

                string str1 = Encoding.UTF8.GetString(mas);
                string str2 = Encoding.UTF8.GetString(END_DATA);
                if (str1.IndexOf(str2, System.StringComparison.Ordinal) > -1 || read == 0)
                {
                    int t = 0;
                    t++;
                    break;
                }
            }

            if (read == -1)
            {
                tcp_client.Close();
                return;
            }

            byte[] result = new byte[MAX_BUFFER_SIZE*buf.Count];
            int position = 0;
            for (int i = 0; i < buf.Count; i++)
            {
                Array.Copy(buf[i], 0, result, position, MAX_BUFFER_SIZE);
                position += MAX_BUFFER_SIZE;
            }

            try
            {
                Client client = new Client(result, ref this.OriginalTest);

                MakeClientRequest(client, tcp_client);
            }
            catch
            {
                Exception ex = new Exception("Не правльный запрос");
                Client.SendError(tcp_client, ex);
            }
        }
Exemple #6
0
        private void OnRequestSetResult(Client client, TcpClient tcp_client)
        {
            try
            {
                string res = AddClient(client);
                if (Manager.Clients.ContainsKey(client.ID))
                {
                    client = Manager.Clients[client.ID];
                }

                if (res.Equals("") == false)
                {
                    Client.Write(tcp_client,"#"+res);
                }
                else
                {
                    client.Verify(ref this.OriginalTest, client.Buffer);

                    client.Status = Status.AnswersVerified;
                    Client.WriteInfo(client.Data.Result, tcp_client);
                }
            }
            catch (Exception ex)
            {
                Client.SendError(tcp_client, ex);
            }

               // manager.Clients.Add(client.ID, client);

            ClientRecievedEventArgs Re = new ClientRecievedEventArgs(client);
            this.OnClientRecieved(this, Re);
        }
Exemple #7
0
        private void OnRequestGetTest(Client client,TcpClient tcp_client)
        {
            try
            {
                client.Data.Name = client.CurrentXml.Element("Client").Attribute("Name").Value;
                client.Data.LastName = client.CurrentXml.Element("Client").Attribute("LastName").Value;
                client.Data.Group = client.CurrentXml.Element("Client").Attribute("Group").Value;
                client.Data.TimeStart = DateTime.Now;
                client.Status = Internet.Status.RecieveTest;
            }
            catch
            {
                Exception ex = new Exception("неправильный xml");
                Client.SendError(tcp_client,ex);
            }

            try
            {
                Client.Write(tcp_client,SerializedTest);
            }
            catch
            {
                Exception ex = new Exception("невозможно передать тест");
                Client.SendError(tcp_client, ex);
            }

            manager.Clients.Add(client.ID, client);
            ClientRecievedEventArgs Re = new ClientRecievedEventArgs(client);
            this.OnClientRecieved(this, Re);
        }
Exemple #8
0
        private void MakeClientRequest(Client client, TcpClient tcp_client)
        {
            try
            {
                string Request = client.CurrentXml.Element("Client").Attribute("Request").Value;

                switch (Request)
                {
                    case "GETTEST":
                        {
                            OnRequestGetTest(client, tcp_client);
                            break;
                        }
                    case "SETRESULT":
                        {
                            OnRequestSetResult(client, tcp_client);
                            break;
                        }
                    default:
                        {
                            Exception ex = new Exception("неправильный запрос");
                            Client.SendError(tcp_client,ex);
                            return;
                        }
                }
            }
            catch
            {
                Exception ex = new Exception("Неправильный xml файл");
                Client.SendError(tcp_client, ex);
            }
        }
Exemple #9
0
 private string AddClient(Client client)
 {
     if (manager.Clients.ContainsKey(client.ID) == true)
     {
         if (manager.Clients[client.ID].Data.Attemts < this.OriginalTest.Settings.Attemts)
         {
             manager.Clients[client.ID] = client;
             manager.Clients[client.ID].Data.Attemts += 1;
             return "";
         }
         else
         {
             return "Превышено количество попыток";
         }
     }
     else
     {
         manager.Clients.Add(client.ID,client);
         client.Data.Attemts += 1;
     }
     return "";
 }