@@ -120,8 +120,23 @@ void MainWindow::slotReadyRead()
120120 }
121121 break ;
122122 }
123+
124+ case (type_forward::upload_result):
125+ {
126+ auto type = doc.FirstChildElement (" body" )->FirstChildElement (" answer" );
127+ if (type->GetText () == QString (" correct" ))
128+ {
129+ qDebug () << " Загружено на сервер!" ;
130+ }
131+ else
132+ {
133+ throw " Неверный логин или пароль!" ;
134+ }
135+ break ;
136+ }
123137 }
124138
139+
125140 this ->socket ->close ();
126141 }
127142 catch (const char * e)
@@ -167,6 +182,11 @@ void MainWindow::slotConnected()
167182 info = this ->get_user_info ();
168183 this ->send_auth (info.login , info.password );
169184 break ;
185+
186+ case (type_forward::upload_result):
187+ info = this ->get_user_info ();
188+ this ->send_test_result (info.login , info.password );
189+ break ;
170190 }
171191}
172192
@@ -253,6 +273,67 @@ void MainWindow::send_auth(const QString &login, const QString &password)
253273 this ->send (printer.CStr ());
254274}
255275
276+ void MainWindow::send_test_result (const QString &login, const QString &password)
277+ {
278+ tinyxml2::XMLDocument doc;
279+ tinyxml2::XMLDeclaration* decl = doc.NewDeclaration (" xml version=\" 1.1\" encoding=\" UTF-8\" " );
280+ doc.InsertEndChild (decl);
281+
282+ tinyxml2::XMLElement* type = doc.NewElement (" type" );
283+ type->SetText (" set_all_result" );
284+ doc.InsertEndChild (type);
285+
286+ tinyxml2::XMLElement* body = doc.NewElement (" body" );
287+ doc.InsertEndChild (body);
288+
289+ tinyxml2::XMLElement* login_xml = doc.NewElement (" login" );
290+ login_xml->SetText (login.toLocal8Bit ().data ());
291+ body->InsertEndChild (login_xml);
292+
293+ tinyxml2::XMLElement* password_xml = doc.NewElement (" password" );
294+ password_xml->SetText (password.toLocal8Bit ().data ());
295+ body->InsertEndChild (password_xml);
296+
297+ int counter{ 0 };
298+ QSqlQuery query (" SELECT COUNT(*) FROM User_test" );
299+ if (query.next ())
300+ counter = query.value (0 ).toInt ();
301+ tinyxml2::XMLElement* count_test = doc.NewElement (" count_test" );
302+ count_test->SetText (counter);
303+ body->InsertEndChild (count_test);
304+
305+ if (counter)
306+ {
307+ tinyxml2::XMLElement* tests = doc.NewElement (" tests" );
308+
309+ QSqlQuery res_tests (" SELECT * FROM User_test" );
310+
311+ while (res_tests.next ())
312+ {
313+ tinyxml2::XMLElement* test = doc.NewElement (" test" );
314+
315+ tinyxml2::XMLElement* xml_name = doc.NewElement (" name" );
316+ xml_name->SetText (res_tests.value (0 ).toString ().toUtf8 ().data ());
317+ test->InsertEndChild (xml_name);
318+
319+ tinyxml2::XMLElement* result = doc.NewElement (" result" );
320+ result->SetText (res_tests.value (1 ).toString ().toUtf8 ().data ());
321+ test->InsertEndChild (result);
322+
323+ tests->InsertEndChild (test);
324+ }
325+
326+ body->InsertEndChild (tests);
327+ }
328+
329+ tinyxml2::XMLPrinter printer;
330+ doc.Print (&printer);
331+
332+ qDebug () << printer.CStr ();
333+
334+ this ->send (printer.CStr ());
335+ }
336+
256337void MainWindow::fill_db_login (tinyxml2::XMLElement *body)
257338{
258339 QString login {this ->ui ->login_lineEdit ->text ()};
@@ -499,3 +580,14 @@ void MainWindow::on_load_result_clicked()
499580 connect (socket.get (), SIGNAL (readyRead ()), SLOT (slotReadyRead ()));
500581 connect (socket.get (), SIGNAL (errorOccurred (QAbstractSocket::SocketError)), this , SLOT (slotError (QAbstractSocket::SocketError)));
501582}
583+
584+ void MainWindow::on_upload_result_clicked ()
585+ {
586+ this ->forward = type_forward::upload_result;
587+
588+ this ->socket .reset (new QTcpSocket ());
589+ socket->connectToHost (this ->host , this ->port );
590+ connect (socket.get (), SIGNAL (connected ()), SLOT (slotConnected ()));
591+ connect (socket.get (), SIGNAL (readyRead ()), SLOT (slotReadyRead ()));
592+ connect (socket.get (), SIGNAL (errorOccurred (QAbstractSocket::SocketError)), this , SLOT (slotError (QAbstractSocket::SocketError)));
593+ }
0 commit comments