| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 | #include "dbpilots.h"#include "dbman.cpp"/*! * \brief RetreivePilotNameFromID Looks up pilot ID in database * \param pilotID pilot_id in database * \return Pilot Name */QString dbPilots::retreivePilotNameFromID(QString pilotID){    QString pilotName("");    if (pilotID == "1")    {        pilotName = "self";        return pilotName;    }    QSqlQuery query;    query.prepare("SELECT piclastname, picfirstname, alias FROM pilots WHERE pilot_id == ?");    query.addBindValue(pilotID.toInt());    query.exec();    while (query.next()) {        pilotName.append(query.value(0).toString());        pilotName.append(", ");        pilotName.append(query.value(1).toString());//.left(1));    }    if(pilotName.length() == 0)    {        qDebug() << ("No Pilot with this ID found");    }    return pilotName;}/*! * \brief dbPilots::retreivePilotIdFromString Looks up a pilot in the database * \param lastname pic_lastname in pilots table * \param firstname pic_firstname in pilots table * \return pilot_id from database or empty string. */QString dbPilots::retreivePilotIdFromString(QString lastname, QString firstname){    QSqlQuery query;    query.prepare("SELECT pilot_id from pilots "                  "WHERE piclastname = ? AND picfirstname LIKE ?");    query.addBindValue(lastname);    firstname.prepend("%"); firstname.append("%");    query.addBindValue(firstname);    query.exec();    QString id;    if(query.first()){id.append(query.value(0).toString());}    return id;}/*! * \brief dbPilots::retreivePilotNameFromString Searches the pilot Name * in the Database and returns the name as a vector of results unless the pilot in command is the logbook owner. * \param searchstring * \return */QStringList dbPilots::retreivePilotNameFromString(QString searchstring){    QString firstname = searchstring; //To Do: Two control paths, one for single word, query as before with only searchstring    QString lastname = searchstring;  // second control path with comma, lastname like AND firstname like    if(searchstring.contains(QLatin1Char(',')))    {        QStringList namelist = searchstring.split(QLatin1Char(','));        QString lastname = namelist[0].trimmed();        lastname = lastname.toLower();        lastname[0] = lastname[0].toUpper();        lastname.prepend("%"), lastname.append("%");        QString firstname = namelist[1].trimmed();        if(firstname.length()>1)        {            firstname = firstname.toLower();            firstname[0] = firstname[0].toUpper();            firstname.prepend("%"), firstname.append("%");        }        qDebug() << "db::RetreivePilotNameFromString: first last after comma";        qDebug() << firstname << lastname;    }    QSqlQuery query;    query.prepare("SELECT piclastname, picfirstname, alias "                  "FROM pilots WHERE  "                  "picfirstname LIKE ? OR piclastname LIKE ? OR alias LIKE ?");    searchstring.prepend("%");    searchstring.append("%");    query.addBindValue(firstname);    query.addBindValue(lastname);    query.addBindValue(searchstring);    query.exec();    QStringList result;    while (query.next()) {        QString piclastname = query.value(0).toString();        QString picfirstname = query.value(1).toString();        QString alias = query.value(2).toString();        QString name = piclastname + ", " + picfirstname;        result.append(name);    }    qDebug() << "db::RetreivePilotNameFromString Result: "  << result;    if(result.size() == 0)    {        qDebug() << ("db::RetreivePilotNameFromString: No Pilot found");        return result;    }    return result;}/*! * \brief newPicGetString This function is returning a QStringList for the QCompleter in the NewFlight::newPic line edit * A regular expression limits the input possibilities to only characters, * followed by an optional ',' and 1 whitespace, e.g.: * Miller, Jim ->valid / Miller,  Jim -> invalid / Miller,, Jim -> invalid * Miller Jim -> valid / Miller  Jim ->invalid * Jim Miller-> valid * \param searchstring * \return */QStringList dbPilots::newPicGetString(QString searchstring){    QStringList result;    QStringList searchlist;    if(searchstring == "self")    {        result.append("self");        qDebug() << "Pilot is self";        return result;    }    //Case 1) Lastname, Firstname    if(searchstring.contains(QLatin1Char(',')))    {        QStringList namelist = searchstring.split(QLatin1Char(','));        QString name1 = namelist[0].trimmed();        name1 = name1.toLower();        name1[0] = name1[0].toUpper();        searchlist.append(name1);        if(namelist[1].length() > 1)        {            QString name2 = namelist[1].trimmed();            name2 = name2.toLower();            name2[0] = name2[0].toUpper();            searchlist.append(name2);        }    }    //Case 2: Firstname Lastname    if(searchstring.contains(" ") && !searchstring.contains(QLatin1Char(',')))    {        QStringList namelist = searchstring.split(" ");        QString name1 = namelist[0].trimmed();        name1 = name1.toLower();        name1[0] = name1[0].toUpper();        searchlist.append(name1);        if(namelist[1].length() > 1) //To avoid index out of range if the searchstring is one word followed by only one whitespace        {            QString name2 = namelist[1].trimmed();            name2 = name2.toLower();            name2[0] = name2[0].toUpper();            searchlist.append(name2);        }    }    //Case 3: Lastname    if(!searchstring.contains(" ") && !searchstring.contains(QLatin1Char(',')))    {        QString name1 = searchstring.toLower();        name1[0] = name1[0].toUpper();        searchlist.append(name1);    }    if(searchlist.length() == 1)    {        QSqlQuery query;        query.prepare("SELECT piclastname, picfirstname FROM pilots "                      "WHERE piclastname LIKE ?");        query.addBindValue(searchlist[0] + '%');        query.exec();        while(query.next())        {            result.append(query.value(0).toString() + ", " + query.value(1).toString());        }        QSqlQuery query2;        query2.prepare("SELECT piclastname, picfirstname FROM pilots "                       "WHERE picfirstname LIKE ?");        query2.addBindValue(searchlist[0] + '%');        query2.exec();        while(query2.next())        {            result.append(query2.value(0).toString() + ", " + query2.value(1).toString());        }    }else    {        QSqlQuery query;        query.prepare("SELECT piclastname, picfirstname FROM pilots "                      "WHERE piclastname LIKE ? AND picfirstname LIKE ?");        query.addBindValue(searchlist[0] + '%');        query.addBindValue(searchlist[1] + '%');        query.exec();        while(query.next())        {            result.append(query.value(0).toString() + ", " + query.value(1).toString());        }        QSqlQuery query2;        query2.prepare("SELECT piclastname, picfirstname FROM pilots "                       "WHERE picfirstname LIKE ? AND piclastname LIKE ?");        query2.addBindValue(searchlist[0] + '%');        query2.addBindValue(searchlist[1] + '%');        query2.exec();        while(query2.next())        {            result.append(query2.value(0).toString() + ", " + query2.value(1).toString());        }    }    qDebug() << "db::newPic Result" << result.length() << result;    if(result.length() == 0)    {        //To Do: try first name search        qDebug() << "No Pilot with this name found";        return result;    }else    {        return result;    }}QString dbPilots::newPicGetId(QString name){    QString result;    QStringList nameparts = name.split(QLatin1Char(','));    QString lastname = nameparts[0].trimmed();    lastname = lastname.toLower(); lastname[0] = lastname[0].toUpper();    QString firstname = nameparts[1].trimmed();    firstname = firstname.toLower(); firstname[0] = firstname[0].toUpper();    firstname.prepend("%"); firstname.append("%");    QSqlQuery query;    query.prepare("SELECT pilot_id FROM pilots "                  "WHERE piclastname = ? AND picfirstname LIKE ?");    query.addBindValue(lastname);    query.addBindValue(firstname);    query.exec();    while (query.next())    {        result.append(query.value(0).toString());    }    qDebug() << "newPicGetId: result = " << result;    return result;}
 |