gradesapi.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "gradesapi.h"
  2. #include <QJsonDocument>
  3. #include <QJsonObject>
  4. #include <QJsonValue>
  5. #include <optional>
  6. #include "appevent.h"
  7. #include "tapi.h"
  8. #include <QDebug>
  9. namespace TC {
  10. extern std::optional<QJsonValue> sendRequest(QNetworkAccessManager::Operation op,
  11. const QString &url,
  12. const QByteArray &postData);
  13. GradesUpdate::GradesUpdate()
  14. : QObject()
  15. , url("/score-api/grades/update")
  16. {}
  17. GradesUpdate::GradesUpdate(const QString &answerFileName,
  18. const QString &checkinNumber,
  19. int endTime,
  20. const QString &examRoom,
  21. const QString &examSessions,
  22. const QString &examText,
  23. const QString &examineNumber,
  24. const QString &groupName,
  25. const QString &id,
  26. const QString &name,
  27. int onlineStatus,
  28. const QString &schoolAddress,
  29. const QString &schoolName,
  30. int sex,
  31. int startTime,
  32. int status,
  33. const QString &swId)
  34. : QObject()
  35. , url("/score-api/grades/update")
  36. {
  37. QJsonObject json;
  38. json["answerFileName"] = answerFileName;
  39. json["checkinNumber"] = checkinNumber;
  40. json["endTime"] = endTime;
  41. json["examRoom"] = examRoom;
  42. json["examSessions"] = examSessions;
  43. json["examText"] = examText;
  44. json["examineNumber"] = examineNumber;
  45. json["groupName"] = groupName;
  46. json["id"] = id;
  47. json["name"] = name;
  48. json["onlineStatus"] = onlineStatus;
  49. json["schoolAddress"] = schoolAddress;
  50. json["schoolName"] = schoolName;
  51. json["sex"] = sex;
  52. json["startTime"] = startTime;
  53. json["status"] = status;
  54. json["swId"] = swId;
  55. QJsonDocument jsonData(json);
  56. postData = jsonData.toJson();
  57. }
  58. GradesUpdate::Data GradesUpdate::post()
  59. {
  60. GradesUpdate::Data ret;
  61. ret.success = false;
  62. ret.message = "Failed to update grades";
  63. std::optional<QJsonValue> data = sendRequest(QNetworkAccessManager::PostOperation,
  64. url,
  65. postData);
  66. if (!data.has_value()) {
  67. return ret;
  68. }
  69. const QJsonObject &object = data.value().toObject();
  70. qDebug() << object;
  71. ret.success = object["status"].toBool();
  72. ret.message = object["message"].toString();
  73. // 如果成功,触发考试更新事件
  74. if (ret.success) {
  75. AppEvent::instance()->examsTestUpdate();
  76. }
  77. return ret;
  78. }
  79. } // namespace TC