1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| MangooForm::Ptr loadForm( const QString & docId )
{
using namespace tango::sql;
MangooForm::Ptr dbForm( new MangooForm() );
dbForm->uniqueId = docId;
QSqlError err = qx::dao::fetch_by_id( dbForm );
THROW_IF_SQL_ERROR( err, "Unable to load form document!" );
// Load pages
QList<FormPage::Ptr> pages;
{
qx::QxSqlQuery query( "WHERE FormPage.doc_id = :doc_id" );
query.bind( ":doc_id", dbForm->uniqueId );
QSqlError err = qx::dao::fetch_by_query( query, pages );
THROW_IF_SQL_ERROR( err, "Unable to load form pages!" );
}
BOOST_FOREACH( const FormPage::Ptr & page, pages )
{
dbForm->pages.append( page );
page->doc = dbForm;
// Load sections
QList<FormSection::Ptr> sections;
{
qx::QxSqlQuery query( "WHERE FormSection.page_id = :page_id" );
query.bind( ":page_id", (int)page->id );
QSqlError err = qx::dao::fetch_by_query( query, sections );
THROW_IF_SQL_ERROR( err, "Unable to load form section!" );
}
BOOST_FOREACH( const FormSection::Ptr & section, sections )
{
page->sections.append( section );
section->page = page;
// Load sections
QList<FormComponent::Ptr> components;
{
qx::QxSqlQuery query( "WHERE FormComponent.section_id = :section_id" );
query.bind( ":section_id", (int)section->id );
QSqlError err = qx::dao::fetch_by_query( query, components );
THROW_IF_SQL_ERROR( err, "Unable to load form component!" );
}
BOOST_FOREACH( const FormComponent::Ptr & formComponent, components )
{
section->components.append( formComponent );
formComponent->section = section;
mangoo::db::fillFormComponentProperties( formComponent );
}
}
}
return dbForm;
} |
Partager