string DispatcherHtml::dispatch(const UserInfo& info) const { std::ostringstream o; o << info.age(); string html = ""; html = "<html><body>"; html += "<h2>" + info.name() + " " + info.surname() + "</h2>"; if(info.age() > -1) html += "<p style='font-weight: 400; font-size:14px;'> " + o.str() + " years old<br>"; html += info.address() + "</p>"; vector<string>::const_iterator it; vector<string> _interests = info.interests(); if(!_interests.empty()) { html += "<h4><img src='img/rugby100.png'> Interests</h4><p style='font-weight: 400; font-size:14px;line-height:26px'>"; it = _interests.begin(); for(; it < _interests.end(); ++it) html += "<span style='background-color:rgba(102,102,156,.5);'> " + *it + " </span> "; html += "</p>"; } vector<string> _skills = info.skills(); if(!_skills.empty()) { html += "<h4><img src='img/atom2.png'> Skills</h4><p style='font-weight: 400; font-size:14px; line-height:26px;'>"; it = _skills.begin(); for(; it < _skills.end(); ++it) html += "<span style='background-color:rgba(102,102,102,.5);'> " + *it + " </span> "; html += "</p>"; } vector<string> _languages = info.languages(); if(!_languages.empty()) { html += "<h4><img src='img/flag27.png'> Languages</h4><p style='font-weight: 400; font-size:14px;'>"; it = _languages.begin(); for(; it < _languages.end(); ++it) html += *it + " "; html += "</p>"; } list<Experience*> _exp = info.experiences(); if(!_exp.empty()) { html += "<h4><img src='img/graduate34.png'> Educations</h4><ul style='font-weight: 400; font-size:14px;'>"; list<Experience*>::const_iterator itr = _exp.begin(); string jobs = ""; bool job = false; for(; itr != _exp.end(); ++itr) { if((*itr)->type() == 0) if(itr == _exp.end()) html += "<li>" + (*itr)->role() + " at " + (*itr)->location() + " from " + (*itr)->from().toString("dd.MM.yyyy").toStdString() + " to " + (*itr)->to().toString("dd.MM.yyyy").toStdString() + "</li>"; else html += "<li>" + (*itr)->role() + " at " + (*itr)->location() + " from " + (*itr)->from().toString("dd.MM.yyyy").toStdString() + " to " + (*itr)->to().toString("dd.MM.yyyy").toStdString() + "</li>"; else if((*itr)->type() == 1) { job = true; if(itr == _exp.end()) jobs += "<li>" + (*itr)->role() + " at " + (*itr)->location() + " from " + (*itr)->from().toString("dd.MM.yyyy").toStdString() + " to " + (*itr)->to().toString("dd.MM.yyyy").toStdString() + "</li>"; else jobs += "<li>" + (*itr)->role() + " at " + (*itr)->location() + " from " + (*itr)->from().toString("dd.MM.yyyy").toStdString() + " to " + (*itr)->to().toString("dd.MM.yyyy").toStdString() + "</li>"; } } if(job) { html += "</ul><h4><img src='img/work3.png'> Job Experiences</h4><ul style='font-weight: 400; font-size:14px;'>"; html += jobs; } } html += "</ul>"; if(!info.email().empty() || !info.telephon().empty() || !info.address().empty()) html += "<h4><img src='img/business133.png'> Contacts</h4><p style='font-weight: 400; font-size:14px'>E-mail: " + info.email() + " <br>Website: <a style='color:#4782EC;' href='#'>" + info.website() + "</a><br> Telephon: " + info.telephon() + "</p>"; return html; }
vector<QJsonObject> LinqDB::writeJson() const { vector<QJsonObject> vjs; UserInfo* uif; Bio* bio; list<SmartPtr<User> >::const_iterator it = _db.begin(); for(; it != _db.end(); ++it) { QJsonObject jUser, jInf, jFormations, jWork, jPayment, jInMail, jOutMail; QJsonArray jArr, jLang, jSkill, jInterest, jForArr, jForWrk, jPay, jKWords, jVis, jInMailArr, jOutMailArr; list<Experience*> experience; list<SmartPtr<Message> > inMail; list<SmartPtr<Message> > outMail; vector<SmartPtr<Payment> > payments; Info* info = (*it)->account()->info(); if((uif = dynamic_cast<UserInfo*> (info))) { /*downcast a userinfo*/ jInf["name"] = QString::fromStdString(uif->name()); jInf["surname"] = QString::fromStdString(uif->surname()); jInf["telephon"] = QString::fromStdString(uif->telephon()); jInf["birthdate"] = (uif->birthdate().toString("dd.MM.yyyy")); jInf["email"] = QString::fromStdString(uif->email()); jInf["address"] = QString::fromStdString(uif->address()); jInf["website"] = QString::fromStdString(uif->website()); experience = uif->experiences(); if((bio = dynamic_cast<Bio*> (info))) jInf["biography"] = QString::fromStdString(bio->bio()); } for(list<Experience*>::const_iterator j = experience.begin(); j != experience.end(); ++j) { if((*j)->type() == 0) { jFormations["location"] = QString::fromStdString((*j)->location()); jFormations["from"] = ((*j)->from().toString("dd.MM.yyyy")); jFormations["to"] = ((*j)->to().toString("dd.MM.yyyy")); jFormations["role"] = QString::fromStdString((*j)->role()); jForArr.append(jFormations); } else if((*j)->type() == 1) { jWork["location"] = QString::fromStdString((*j)->location()); jWork["from"] = ((*j)->from().toString("dd.MM.yyyy")); jWork["to"] = ((*j)->to().toString("dd.MM.yyyy")); jWork["role"] = QString::fromStdString((*j)->role()); jForWrk.append(jWork); } } vector<string>::const_iterator itr; vector<string> languages = uif->languages(); itr = languages.begin(); for(; itr < languages.end(); ++itr) jLang.append(QString::fromStdString(*itr)); vector<string> skills = uif->skills(); itr = skills.begin(); for(; itr < skills.end(); ++itr) jSkill.append(QString::fromStdString(*itr)); vector<string> interests = uif->interests(); itr = interests.begin(); for(; itr < interests.end(); ++itr) jInterest.append(QString::fromStdString(*itr)); jUser["avatar"] = QString::fromStdString((*it)->account()->avatar().path()); jUser["username"] = QString::fromStdString((*it)->account()->username().login()); jUser["password"] = QString::fromStdString((*it)->account()->username().password()); jUser["visitcount"] = (*it)->visitCount(); jUser["privilege"] = (*it)->account()->prLevel(); vector<Username> ulist = (*it)->net()->username(); vector<Username>::const_iterator itu = ulist.begin(); for(; itu < ulist.end(); ++itu) jArr.append(QString::fromStdString((*itu).login())); payments = (*it)->account()->history(); vector<SmartPtr<Payment> >::const_iterator iter = payments.begin(); for(; iter < payments.end(); ++iter) { if((*iter)->billMethod() != NULL) { jPayment["code"] = QString::fromStdString((*iter)->billMethod()->code()); jPayment["nominee"] = QString::fromStdString((*iter)->billMethod()->nominee()); } jPayment["approved"] = (*iter)->approvation(); jPayment["appdate"] = (*iter)->appDate().toString("dd.MM.yyyy"); jPayment["level"] = (*iter)->subscription()->level(); jPay.append(jPayment); } if(const ExecutiveUser* ex = dynamic_cast<const ExecutiveUser*> (&(*(*it)))) { map<string, int> kw = ex->keywords(); for(map<string, int>::iterator itm = kw.begin(); itm != kw.end(); ++itm) { for(int i = 0; i < itm->second; ++i) jKWords.append(QString::fromStdString(itm->first)); } jUser["keywords"] = jKWords; list<SmartPtr<User> > v = ex->visitors(); for(list<SmartPtr<User> >::iterator itr = v.begin(); itr != v.end(); ++itr) jVis.append(QString::fromStdString((*itr)->account()->username().login())); jUser["visitors"] = jVis; } inMail = (*it)->inMail(); outMail = (*it)->outMail(); list<SmartPtr<Message> >::const_iterator m_it = inMail.begin(); for(; m_it != inMail.end(); ++m_it) { jInMail["receiver"] = QString::fromStdString((*it)->account()->username().login()); jInMail["sender"] = QString::fromStdString((*m_it)->sender().login()); jInMail["object"] = QString::fromStdString((*m_it)->object()); jInMail["body"] = QString::fromStdString((*m_it)->body()); jInMail["read"] = (*m_it)->isRead(); jInMail["sent"] = (*m_it)->sent().toString("dd.MM.yyyy"); // jInMail["recv"] = (*m_it)->recv().toString("dd.MM.yyyy"); jInMailArr.append(jInMail); } m_it = outMail.begin(); for(; m_it != outMail.end(); ++m_it) { jOutMail["receiver"] = QString::fromStdString((*m_it)->receiver().login()); jOutMail["sender"] = QString::fromStdString((*it)->account()->username().login()); jOutMail["object"] = QString::fromStdString((*m_it)->object()); jOutMail["body"] = QString::fromStdString((*m_it)->body()); jOutMail["read"] = (*m_it)->isRead(); jOutMail["sent"] = (*m_it)->sent().toString("dd.MM.yyyy"); // jOutMail["recv"] = (*m_it)->recv().toString("dd.MM.yyyy"); jOutMailArr.append(jOutMail); } jUser["net"] = jArr; jUser["info"] = jInf; jUser["languages"] = jLang; jUser["skills"] = jSkill; jUser["interests"] = jInterest; jUser["formations"] = jForArr; jUser["jobs"] = jForWrk; jUser["payments"] = jPay; jUser["inmail"] = jInMailArr; jUser["outmail"] = jOutMailArr; vjs.push_back(jUser); } return vjs; }