Added ability to use QStringList for schedule codes

This commit is contained in:
Patrick Linstruth 2019-04-28 07:27:42 -07:00
parent f8b223ec05
commit f43a5dbe08
2 changed files with 53 additions and 0 deletions

View File

@ -116,6 +116,18 @@ QString RDSchedSearchText(const QString &schedcode)
}
QString RDSchedSearchText(const QStringList &schedcodes)
{
QString ret="";
for(int i=0;i<schedcodes.size();i++) {
ret+=QString().sprintf(" inner join CART_SCHED_CODES as S%d on (CART.NUMBER=S%d.CART_NUMBER and S%d.SCHED_CODE='%s')",i,i,i,(const char *)schedcodes.at(i));
}
return ret;
}
QString RDCartSearchText(QString filter,const QString &group,
const QString &schedcode,bool incl_cuts)
{
@ -130,6 +142,20 @@ QString RDCartSearchText(QString filter,const QString &group,
return ret;
}
QString RDCartSearchText(QString filter,const QString &group,
const QStringList &schedcodes,bool incl_cuts)
{
QString ret="";
ret+=RDSchedSearchText(schedcodes);
ret+=QString(" where ")+RDBaseSearchText(filter,incl_cuts);
if(!group.isEmpty()) {
ret+=QString("&&(CART.GROUP_NAME=\"")+RDEscapeString(group)+"\")";
}
return ret;
}
QString RDAllCartSearchText(const QString &filter,const QString &schedcode,
const QString &user,bool incl_cuts)
@ -153,3 +179,25 @@ QString RDAllCartSearchText(const QString &filter,const QString &schedcode,
return search;
}
QString RDAllCartSearchText(const QString &filter,const QStringList &schedcodes,
const QString &user,bool incl_cuts)
{
QString sql;
RDSqlQuery *q;
QString search="";
search+=RDSchedSearchText(schedcodes);
search+=" where (";
sql=QString("select GROUP_NAME from USER_PERMS where ")+
"USER_NAME=\""+RDEscapeString(user)+"\"";
q=new RDSqlQuery(sql);
while(q->next()) {
search+=QString("(CART.GROUP_NAME=\"")+
RDEscapeString(q->value(0).toString())+"\")||";
}
delete q;
search=search.left(search.length()-2)+QString(")");
search+=QString("&&")+RDBaseSearchText(filter,incl_cuts);
return search;
}

View File

@ -22,14 +22,19 @@
#define RDCART_SEARCH_TEXT_H
#include <qstring.h>
#include <qstringlist.h>
#include <rdstation.h>
QString RDCartSearchText(QString filter,const QString &group,
const QString &schedcode,bool incl_cuts);
QString RDCartSearchText(QString filter,const QString &group,
const QStringList &schedcodes,bool incl_cuts);
QString RDAllCartSearchText(const QString &filter,const QString &schedcode,
const QString &user,bool incl_cuts);
QString RDAllCartSearchText(const QString &filter,const QStringList &schedcodes,
const QString &user,bool incl_cuts);
#endif // RDCART_SEARCH_TEXT_H