8#include "httprequest.h"
15ControllerTimesheet::ControllerTimesheet(HobrasoftHttpd::HttpConnection *parent) :
AbstractController(parent) {
19void ControllerTimesheet::serviceStart(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response,
int id) {
21 QList<Dbt::TicketTimesheets> list1 = db()->runningTimesheets(
id);
22 if (!list1.isEmpty()) {
23 QVariantMap item = list1[0].toMap();
24 item.remove(
"created");
25 item.remove(
"modified");
27 item[
"error"] =
"conflict";
28 item[
"reason"] =
"Timesheet is already started";
33 QList<Dbt::TicketTimesheets> list2 = db()->startTimesheet(
id);
34 if (list2.isEmpty()) {
39 QVariantMap item = list2[0].toMap();
40 item.remove(
"created");
41 item.remove(
"modified");
46void ControllerTimesheet::serviceStop(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response,
int id) {
48 QList<Dbt::TicketTimesheets> list1 = db()->runningTimesheets(
id);
49 if (list1.isEmpty()) {
52 item[
"error"] =
"conflict";
53 item[
"reason"] =
"No running timesheet found";
59 for (
int i=0; i<list1.size(); i++) {
60 int xid = list1[0].ticket.toInt();
61 PDEBUG <<
"Stopping" << xid;
62 QList<Dbt::TicketTimesheets> list2 = db()->stopTimesheet(xid);
63 if (list2.isEmpty()) {
64 PDEBUG <<
"error, Some timesheets could not be stopped, id: " << xid;
68 QVariantMap item = list2[0].toMap();
69 item.remove(
"created");
70 item.remove(
"modified");
74 if (items.isEmpty()) {
83void ControllerTimesheet::serviceToggle(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response,
int id) {
85 QList<Dbt::TicketTimesheets> list2 = db()->toggleTimesheet(
id);
86 if (list2.isEmpty()) {
91 QVariantMap item = list2[0].toMap();
92 item.remove(
"created");
93 item.remove(
"modified");
99 QStringList parts =
request->path().split(
"/");
105 while (parts.size() == 3) {
107 QString sid = parts[2];
108 int id = sid.toInt(&ok);
109 if (sid ==
"all") { ok =
true;
id = 0; }
112 if (parts[0] ==
"timesheet" && parts[1] ==
"start") {
113 serviceStart(
request, response,
id);
117 if (parts[0] ==
"timesheet" && parts[1] ==
"stop") {
118 serviceStop(
request, response,
id);
122 if (parts[0] ==
"timesheet" && parts[1] ==
"toggle") {
123 serviceToggle(
request, response,
id);
Virtuální třída pro vyřizování unifikovaných Http požadavků na server API.
virtual void serviceError(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, int code, const QString &error, const QVariantMap &data)
Pošle chybovou odpověď
virtual void serviceOK(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariant &data=QVariant())
Pošle odpověď 200 OK.
HobrasoftHttpd::HttpRequest * request() const
Vrací ukazatel na aktuální request.
void service(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response) Q_DECL_OVERRIDE
Obsluha požadavku.
Jmenný prostor pro obsluhu konkrétních HTTP požadavků aplikace.