From dff2e653e9ef1c7748cd975654e02925ec767202 Mon Sep 17 00:00:00 2001 From: konrad Date: Sun, 31 Aug 2008 11:23:39 +0000 Subject: [PATCH] added ordersbyevent function git-svn-id: https://silmor.de/svn/softmagic/smoke/trunk@170 6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33 --- src/eventedit.cpp | 7 ++++- src/eventedit.h | 2 + src/overview.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/overview.h | 2 + src/webrequest.cpp | 27 +++++++++++++++++++++ src/webrequest.h | 3 ++ 6 files changed, 106 insertions(+), 1 deletions(-) diff --git a/src/eventedit.cpp b/src/eventedit.cpp index 47c0783..0590ba6 100644 --- a/src/eventedit.cpp +++ b/src/eventedit.cpp @@ -50,7 +50,12 @@ MEventEditor::MEventEditor(QWidget*w,MWebRequest*r,qint32 id) setLayout(vl=new QVBoxLayout); vl->addLayout(gl=new QGridLayout); - gl->addWidget(lab=new QLabel(tr("Title:")),lctr,0); + gl->addWidget(lab=new QLabel(tr("ID:")),lctr,0); + lab->setAlignment(Qt::AlignRight|Qt::AlignVCenter); + gl->addWidget(eventid=new QLabel,lctr,1); + eventid->setText(QString::number(event.eventId())); + + gl->addWidget(lab=new QLabel(tr("Title:")),++lctr,0); lab->setAlignment(Qt::AlignRight|Qt::AlignVCenter); gl->addWidget(title=new QLineEdit,lctr,1); title->setText(event.title()); diff --git a/src/eventedit.h b/src/eventedit.h index e105f39..63a6a1b 100644 --- a/src/eventedit.h +++ b/src/eventedit.h @@ -23,6 +23,7 @@ class QLineEdit; class QTextEdit; class QCheckBox; class QSpinBox; +class QLabel; class MEventEditor:public QDialog { @@ -41,6 +42,7 @@ class MEventEditor:public QDialog QTextEdit*description; QCheckBox*cancelcheck; QSpinBox*capacity; + QLabel*eventid; }; diff --git a/src/overview.cpp b/src/overview.cpp index e65d9c2..2375204 100644 --- a/src/overview.cpp +++ b/src/overview.cpp @@ -80,6 +80,12 @@ MOverview::MOverview(MWebRequest*mw,QString pk) m=mb->addMenu(tr("&Misc")); m->addAction(tr("&Return ticket..."),this,SLOT(ticketReturn())); + m=mb->addMenu(tr("&Admin")); + m->setEnabled(req->hasRole("_admin")); + m->addAction(tr("&Schedule Backup...")); + m->addAction(tr("&Backup now...")); + m->addAction(tr("&Restore...")); + //tabs setCentralWidget(tab=new QTabWidget); connect(tab,SIGNAL(currentChanged(int)),this,SLOT(tabChanged())); @@ -189,6 +195,9 @@ MOverview::MOverview(MWebRequest*mw,QString pk) vl->addWidget(p=new QPushButton(tr("Find by Ticket...")),0); connect(p,SIGNAL(clicked()),this,SLOT(orderByTicket())); p->setEnabled(req->hasRole("orderbyticket")); + vl->addWidget(p=new QPushButton(tr("Find by Event...")),0); + connect(p,SIGNAL(clicked()),this,SLOT(orderByEvent())); + p->setEnabled(req->hasRole("getordersbyevents")); vl->addStretch(10); //Entrance Control Tab @@ -981,6 +990,63 @@ void MOverview::orderByTicket() om->show(); } +void MOverview::orderByEvent() +{ + //display selection dialog + QDialog d(this); + d.setWindowTitle(tr("Select Event")); + QVBoxLayout*vl; + QHBoxLayout*hl; + d.setLayout(vl=new QVBoxLayout); + QTableView*tv; + vl->addWidget(tv=new QTableView,10); + tv->setEditTriggers(QAbstractItemView::NoEditTriggers); + tv->setModel(eventmodel); + tv->resizeColumnsToContents(); + vl->addLayout(hl=new QHBoxLayout,0); + hl->addStretch(10); + QPushButton*p; + hl->addWidget(p=new QPushButton(tr("Ok")),0); + connect(p,SIGNAL(clicked()),&d,SLOT(accept())); + hl->addWidget(p=new QPushButton(tr("Cancel")),0); + connect(p,SIGNAL(clicked()),&d,SLOT(reject())); + //wait for user + if(d.exec()!=QDialog::Accepted) + return; + //get selection + QModelIndexList ilst=tv->selectionModel()->selectedIndexes(); + if(ilst.size()<1){ + qDebug("nothing selected"); + return; + } + //get events + QListeventids; + for(int i=0;idata(eventmodel->index(ilst[i].row(),0),Qt::UserRole).toInt(); + if(!eventids.contains(eid))eventids.append(eid); + } + //request data and display + //TODO: unify this part with updateOrders + ordermodel->clear(); + ordermodel->setHorizontalHeaderLabels(QStringList()< orders=req->getOrdersByEvents(eventids); + if(orders.size()==0)return; + QList cust=req->getAllCustomers(); + for(int cl=0;clinsertRow(cl); + ordermodel->setHeaderData(cl,Qt::Vertical,orders[cl].orderID()); + ordermodel->setData(ordermodel->index(cl,0),orders[cl].orderStatusString()); + ordermodel->setData(ordermodel->index(cl,0),orders[cl].orderID(),Qt::UserRole); + ordermodel->setData(ordermodel->index(cl,1),orders[cl].totalPriceString()); + ordermodel->setData(ordermodel->index(cl,2),orders[cl].amountPaidString()); + int cid=orders[cl].customerID(); + //TODO: make this more effective: + for(int j=0;jsetData(ordermodel->index(cl,3),cust[j].name()); + } +} + void MOverview::uploadTemplate() { //get file diff --git a/src/overview.h b/src/overview.h index 6e5fb98..cb6ee5e 100644 --- a/src/overview.h +++ b/src/overview.h @@ -124,6 +124,8 @@ class MOverview:public QMainWindow void ticketReturn(); /**find an order by ticket*/ void orderByTicket(); + /**find/select orders by event*/ + void orderByEvent(); private: //my session object diff --git a/src/webrequest.cpp b/src/webrequest.cpp index 39f2422..c6a3bcf 100644 --- a/src/webrequest.cpp +++ b/src/webrequest.cpp @@ -476,6 +476,33 @@ QList MWebRequest::getAllOrders() return ret; } +QList MWebRequest::getOrdersByEvents(QListevids) +{ + errstr=""; + QString evs; + for(int i=0;i(); + if(responseStatus()!=Ok)return QList(); + //parse return document + QDomDocument doc; + QString msg;int ln,cl; + if(!doc.setContent(rspdata,&msg,&ln,&cl)){ + errstr=tr("Error parsing OrderList XML data (line %1 column %2): %3").arg(ln).arg(cl).arg(msg); + return QList(); + } + QDomElement root=doc.documentElement(); + QDomNodeList nl=root.elementsByTagName("Order"); + QListret; + for(int i=0;igetAllOrders(); + /**returns a list of all orders that order from one of the specified events*/ + QListgetOrdersByEvents(QList); + /**return current host name of this session*/ QString hostName(); -- 1.7.2.5