Timesheets-Server
Timesheets server
Načítám...
Vyhledávám...
Nebylo nic nalezeno
controllerholidays.cpp
Zobrazit dokumentaci tohoto souboru.
1
4
6#include "httprequest.h"
7#include "db.h"
8#include "pdebug.h"
9#include <QDate>
10
11using namespace Httpd;
12
13ControllerHolidays::ControllerHolidays(HobrasoftHttpd::HttpConnection *parent) : AbstractController(parent) { }
14
15void ControllerHolidays::service(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response) {
16 QStringList parts = request->path().split("/");
17 parts.removeFirst();
18 parts.removeFirst();
19 parts.removeFirst();
20
21 if (parts.size() == 4 && parts[0] == "holidays" && parts[1] == "copy") {
22 bool ok1 = false; bool ok2 = false;
23 int fromYear = parts[2].toInt(&ok1);
24 int toYear = parts[3].toInt(&ok2);
25 if (!ok1 || !ok2) {
26 serviceError(request, response, 400, "bad-request", "Invalid year");
27 return;
28 }
29 serviceCopy(request, response, fromYear, toYear);
30 return;
31 }
32
34}
35
36void ControllerHolidays::serviceList(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response) {
37 Q_UNUSED(request);
38 serviceOK(request, response, toList(db()->holidays()));
39}
40
41void ControllerHolidays::serviceIdGet(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString& id) {
42 QDate date = QDate::fromString(id, "yyyy-MM-dd");
43 if (!date.isValid()) { serviceError(request, response, 404, "not-found", "NotFound"); return; }
44 auto list = db()->holidays(date);
45 if (list.isEmpty()) { serviceError(request, response, 404, "not-found", "NotFound"); return; }
46 serviceOK(request, response, list.first().toMap());
47}
48
49void ControllerHolidays::serviceIdPut(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap& data) {
50 Q_UNUSED(request);
51 serviceOK(request, response, putKey(db()->save(Dbt::Holidays::fromMap(data))));
52}
53
54void ControllerHolidays::serviceIdPost(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap& data) {
55 serviceIdPut(request, response, data);
56}
57
58void ControllerHolidays::serviceIdDelete(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString& id) {
59 QDate date = QDate::fromString(id, "yyyy-MM-dd");
60 db()->remove(Dbt::Holidays(date));
61 serviceOK(request, response);
62}
63
64void ControllerHolidays::serviceCopy(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, int fromYear, int toYear) {
65 Q_UNUSED(request);
66 db()->copyHolidays(fromYear, toYear);
67 serviceOK(request, response);
68}
69
Virtuální třída pro vyřizování unifikovaných Http požadavků na server API.
virtual void service(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
Obsluha požadavku.
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.
void serviceList(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response) Q_DECL_OVERRIDE
Pošle chybovou odpověď
void serviceIdPut(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap &data) Q_DECL_OVERRIDE
Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existu...
void serviceIdDelete(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id) Q_DECL_OVERRIDE
Pošle odpověď na požadavek konkrétního ID metodou DELETE - obvykle objekt smaže.
void serviceIdPost(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap &data) Q_DECL_OVERRIDE
Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existu...
void serviceIdGet(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id) Q_DECL_OVERRIDE
Pošle odpověď na požadavek konkrétního ID metodou GET.
Jmenný prostor pro obsluhu konkrétních HTTP požadavků aplikace.