void ordersfrm::complete()
{
	int r = QMessageBox::question(this, tr("Complete items..."),tr("Change status for completed items?"),QMessageBox::Yes, QMessageBox::No);
    if(r == QMessageBox::Yes)
    {
		int i;
		QTreeWidgetItem *item = new QTreeWidgetItem;
		for(i=0;i<treemain->topLevelItemCount();i++)
		{
				item = treemain->topLevelItem(i);
		    if(item->checkState(0))
		    {
		    	QString qstr = QString("SELECT STATUS, STOCK, DEF FROM `orders` WHERE `ID`=%1;").arg(item->text(0));
				QSqlQuery query1(qstr);
				query1.next();
		
				if(query1.value(0).toInt() < 2)
				{
				    QSqlQuery query2;
				    query2.prepare("UPDATE `orders` SET `STATUS`= :status, `DATE"+QString("%1").arg(query1.value(0).toInt()+2, 0, 10)+"`= :date WHERE `ID`=:ID LIMIT 1;");
				    query2.bindValue(":status", query1.value(0).toInt()+1);
				    query2.bindValue(":date", QDate::currentDate().toString("yyyy-MM-dd"));
				    query2.bindValue(":ID", item->text(0));
				    query2.exec();
				}
		
				if(query1.value(0).toInt() == 2)
				{
					qstr = QString("UPDATE `orders` SET `STATUS`= '%1' WHERE `ID`='%2' LIMIT 1;").arg(query1.value(0).toInt()+1).arg(item->text(0));
				    QSqlQuery query2(qstr);
		    
		    		qstr = QString("SELECT NAME, USERS FROM datatables WHERE `DESCRIPTION`='%1';").arg(query1.value(1).toString());
				    QSqlQuery query3(qstr);
				    query3.next();
				    QString stock = query3.value(0).toString();
		    
		    		qstr = QString("SELECT ID, col3 FROM %1 WHERE `col1`= '%2';").arg(stock).arg(item->text(2));
		    		QSqlQuery query4(qstr);
				    query4.next();
				    QString id = query4.value(0).toString();
				    QString old_q = query4.value(1).toString();
		    	    
		    	    qstr = QString("UPDATE `%1` SET `col3`= '%2' WHERE `ID`= '%3' LIMIT 1;").arg(stock).arg(old_q.toInt() + item->text(4).toInt()).arg(id);
				    QSqlQuery query5(qstr);
				    QMessageBox::question(this, tr("Complete items..."), query5.executedQuery());
				}
		    }
		}
		loadentries();
		countentries();
    }
}
Example #2
0
int 
handleclient(int conn) 
{
	char *basedir;
	char *clientdir;
	mp3entry *mp3buf;
	FILE *stream;

	if ((stream = fdopen(conn, "r+")) == NULL || !readrequest(stream)) {
		debug(1, "error while reading client request");
		fclose(stream);
		return(EXIT_FAILURE);
	}
	
	debug(1, "requested path %s", conf.path);

	GETCWD(basedir);
	if(chdir(conf.path))
		die("incorrect dir");
	GETCWD(clientdir);
	
	debug(1, "doing security checks");
	if(strncmp(basedir, clientdir, strlen(basedir) - 1)) {
		fclose(stream);
		debug(1, "basedir %s, clientdir %s", basedir, clientdir);
		die("client tried to break out of base directory");
	}
	
	debug(1, "looking for mp3 files in subdirectory %s", conf.path);
	if(!MODE_ISSET(MODE_SINGLE)) {
		getfiles(".");
	} else if(validfile(conf.filename, clientdir, &mp3buf)) { 
		addentry(&root, mp3buf);
	}
	
	if(!root)
		die("no files");
	else
		debug(1, "%d MP3 file(s) found", countentries(root));

	if(!MODE_ISSET(MODE_INDEX) && !conf.order) {
		debug(1, "shuffling mp3 files");
		shuffleentries();
	}

	if(conf.debuglevel > 2) {
		debug(1, "listing mp3 files");
		dumpentries();
	}
	
	if(MODE_ISSET(MODE_INDEX)) {
		debug(1, "entering HTTP mode");
		fprintf(stream, HTTPSERVMSG, AMPLE_VERSION);
		fflush(stream);
		createhtml(stream,(clientdir + strlen(basedir)),(strlen(clientdir) + 1));
	} else if(MODE_ISSET(MODE_SINGLE)) {
		debug(1, "entering MP3-Single mode");
		fprintf(stream, SINGLESERVMSG, AMPLE_VERSION, root->filesize);
		fflush(stream);
		playfile(stream, root);
	} else if (MODE_ISSET(MODE_METADATA)) {
		debug(1, "entering MP3-Metadata mode");
		fprintf(stream, SHOUTSERVMSG, AMPLE_VERSION, conf.servername, BYTESBETWEENMETA);
		fflush(stream);
		playlist(stream);
	} else {
		debug(1, "entering MP3-Basic mode");
		fprintf(stream, BASICSERVMSG, AMPLE_VERSION);
		fflush(stream);
		playlist(stream);
	}

	fclose(stream);
	clearlist(root);
	return(EXIT_SUCCESS);
}