Project

General

Profile

Bug #2355 » wtdbo.cpp

Anonymous, 10/23/2013 07:52 PM

 
#include <Wt/WApplication>
#include <Wt/WContainerWidget>
#include <Wt/WEnvironment>
#include <Wt/WLineEdit>
#include <Wt/WPushButton>
#include <Wt/WText>
#include <Wt/WMenu>
#include <Wt/WString>
#include <Wt/WTableView>
#include <Wt/WComboBox>
#include <Wt/WStackedWidget>
#include <Wt/Dbo/SqlTraits>
#include <Wt/Dbo/Dbo>
#include <Wt/Dbo/backend/Sqlite3>
#include <Wt/Dbo/Session>
#include <Wt/Dbo/Transaction>
#include <Wt/Dbo/ptr>
#include <Wt/Dbo/QueryModel>
#include <Wt/Dbo/SqlConnection>
#include <Wt/WBreak>
#include <Wt/WDate>
#include <Wt/WDatePicker>
#include <Wt/WDateValidator>
#include <Wt/WValidator>
#include <Wt/WInPlaceEdit>
#include <Wt/WLabel>
using namespace Wt;
namespace dbo = Wt::Dbo;
#include <string>
using namespace std;
class User
{
public:
std::string program;
std::string name;
std::string fathername;
std::string mothername;
std::string dobirth;
std::string rollno;
std::string stream;
std::string department;
std::string semester;
template <class Action>
void persist(Action& a)
{
dbo::field(a, program, "program");
dbo::field(a, name, "name");
dbo::field(a, fathername, "fathername");
dbo::field(a, mothername, "mothername");
dbo::field(a, dobirth, "dobirth");
dbo::field(a, rollno, "rollno");
dbo::field(a, stream, "stream");
dbo::field(a, department, "department");
dbo::field(a, semester, "semester");
}
};
class Myform : public WApplication
{
public:
dbo::Session session;
dbo::backend::Sqlite3 sqlite3;
WLineEdit *updatetext;
WLineEdit *retrievetext;
WLineEdit *nametxt;
WLineEdit *fathernametxt;
WLineEdit *mothernametxt;
WLineEdit *dateEdit;
WLineEdit *rollnotxt;
WComboBox *programbox;
WComboBox *streambox;
WComboBox *departmentbox;
WComboBox *semesterbox;
WContainerWidget *c;
WContainerWidget *c1;
WContainerWidget *c2;
WContainerWidget *c3;
WText *t0;
Myform (const WEnvironment &env) :WApplication (env), sqlite3 ("data.db")
{
session.setConnection (sqlite3);
session.mapClass<User>("User");
//session.createTables();
useStyleSheet("wpage.css");
setTitle("Databaseform");
WText *formtxt=new WText("<div>EXAM REGISTRATION FORM</div>",root());
formtxt->setStyleClass("form");
WStackedWidget *stack=new WStackedWidget();
WMenu *mainmenu=new WMenu(stack,Vertical,root());
mainmenu->setStyleClass("menu1");
root()->addWidget(stack);
c=new WContainerWidget();
c1=new WContainerWidget();
c2=new WContainerWidget();
c3=new WContainerWidget();
mainmenu->addItem("New user",c);
mainmenu->addItem("Exist account",c1);
mainmenu->addItem("Update data",c2);
mainmenu->addItem("Delete data",c3);
c->setStyleClass("cc1");
c1->setStyleClass("cc1");
c2->setStyleClass("cc1");
c3->setStyleClass("cc1");
c->addWidget(new WBreak());
c->addWidget(new WBreak());
//in place edit with buttons.
WContainerWidget *cn = new WContainerWidget(c2);
WText *out = new WText (cn);
out->setMargin(10,Wt::Right);
WInPlaceEdit *rajan = new WInPlaceEdit("this is editable text",c2);
rajan->setEmptyText("you deleted the text!");
rajan->valueChanged().connect(std::bind([=] (){
out->setText("In-place edit is set to.");
}));

WText *programtext_=new WText ("Program",c);
programbox=new WComboBox(c);
programbox->addItem("");
programbox->addItem("Under graduate section");
programbox->addItem("Post graduate section");
c->addWidget(new WBreak());
c->addWidget(new WBreak());

WText *nametext_=new WText("Name ",c);
nametxt=new WLineEdit(c);
c->addWidget(new WBreak());
c->addWidget(new WBreak());

WText *fathernametext_=new WText("Fathername",c);
fathernametxt=new WLineEdit(c);
c->addWidget(new WBreak());
c->addWidget(new WBreak());

WText *mothernametext_=new WText("Mothername",c);
mothernametxt=new WLineEdit(c);
c->addWidget(new WBreak());
c->addWidget(new WBreak());

Wt::WContainerWidget *cc = new Wt::WContainerWidget(c);
Wt::WLabel *label = new Wt::WLabel("Birthdate",cc);
dateEdit = new Wt::WLineEdit(cc);
label->setBuddy(dateEdit);

Wt::WDatePicker *birthDP = new Wt::WDatePicker(dateEdit, cc);
//create and costomize a date validator
Wt::WDateValidator *dv = new Wt::WDateValidator();
dateEdit->setValidator(dv);

dv->setBottom(Wt::WDate(1990, 1, 1));
dv->setTop(Wt::WDate::currentDate());
dv->setFormat("dd/mm/yyyy");
dv->setMandatory(true);
dv->setInvalidBlankText("birthdate is mandatory!");
dv->setInvalidNotADateText("you should enter a date in the format" "\"dd/mm/yyyy\"!");
dv->setInvalidTooEarlyText((Wt::WString("That's too early... The date must be {1} or later!").arg(dv->bottom().toString("dd/MM/yyyy"))));
dv->setInvalidTooLateText((Wt::WString("That's too late... The date must be {1} or earlier!").arg(dv->top().toString("dd/MM/yyyy"))));
new Wt::WBreak(cc);
{
Wt::WValidator::Result result =
dv->validate(birthDP->lineEdit()->text());
if (result.state() == Wt::WValidator::Valid) {
Wt::WDate d = Wt::WDate::currentServerDate();
int years = d.year() - birthDP->date().year();
int days = d.daysTo(birthDP->date().addYears(years));
if (days < 0)
days = d.daysTo( birthDP->date().addYears(years + 1) );
} else { birthDP->lineEdit()->setFocus();
}
};



/*WText *dobirthtext_=new WText("DOBirth",c);
dobirthtxt=new WLineEdit(c);
c->addWidget(new WBreak());*/
c->addWidget(new WBreak());

WText *rollnotext_=new WText("Rollno",c);
rollnotxt=new WLineEdit(c);
c->addWidget(new WBreak());
c->addWidget(new WBreak());

WText *streamtext_=new WText("Stream",c);
streambox=new WComboBox(c);
streambox->addItem("");
streambox->addItem("B.tech");
streambox->addItem("M.tech");
streambox->addItem("M.B.A");
c->addWidget(new WBreak());
c->addWidget(new WBreak());

WText *departmenttext_=new WText("Department",c);
departmentbox=new WComboBox(c);
departmentbox->addItem("");
departmentbox->addItem("Computer Engineering");
departmentbox->addItem("Civil Engineering");
departmentbox->addItem("Electronics and Communication Engineering");
departmentbox->addItem("Information Technology");
departmentbox->addItem("Mechnical Engineering");
departmentbox->addItem("Production Engineering");
departmentbox->addItem("M.B.A");
c->addWidget(new WBreak());
c->addWidget(new WBreak());

WText *semestertext_=new WText("Semester",c);
semesterbox=new WComboBox(c);
semesterbox->addItem("");
semesterbox->addItem("1");
semesterbox->addItem("2");
semesterbox->addItem("3");
semesterbox->addItem("4");
semesterbox->addItem("5");
semesterbox->addItem("6");
semesterbox->addItem("7");
semesterbox->addItem("8");
c->addWidget(new WBreak());
c->addWidget(new WBreak());

WPushButton *button=new WPushButton("Submit",c);
button->clicked().connect(this, &Myform::enterdata);
c->addWidget(new WBreak());
c->addWidget(new WBreak());

WText *updatetext_=new WText("Enter name to update data",c2);
c2->setStyleClass("form");
updatetext=new WLineEdit(c2);
WPushButton *updatebutton=new WPushButton("enter",c2);
updatebutton->clicked().connect(this, &Myform::updatedata);

WText *retrievetext_=new WText("Enter name to retrieve data",c1);
c1->setStyleClass("form");
retrievetext=new WLineEdit(c1);
WPushButton *retrievebutton=new WPushButton("enter",c1);
retrievebutton->clicked().connect(this, &Myform::retrievedata);
c1->addWidget(new WBreak());

}
~Myform (void)
{
cout<<"Myform dead"<<endl;}
void enterdata();
void retrievedata();
void updatedata();
};
void Myform::enterdata()
{
{
dbo::Transaction transaction(session);

User *user = new User();
user->name = nametxt->text().toUTF8();
user->fathername = fathernametxt->text().toUTF8();
user->mothername = mothernametxt->text().toUTF8();
user->dobirth = dateEdit->text().toUTF8();
user->rollno = rollnotxt->text().toUTF8();
user->program = programbox->currentText().toUTF8();
user->stream = streambox->currentText().toUTF8();
user->department = departmentbox->currentText().toUTF8();
user->semester = semesterbox->currentText().toUTF8();
dbo::ptr<User> userPtr = session.add(user);
transaction.commit();
}}
void Myform::updatedata()
{
sqlite3.setProperty("show-queries","true");
Wt::WString x=updatetext->text();
std::string y=x.toUTF8();
{
dbo::Transaction transaction(session);


dbo::ptr<User> users = session.find<User>().where("name = ?").bind(y);
User *user = new User();
users.modify()->name = nametxt->text().toUTF8();
users.modify()->fathername = fathernametxt->text().toUTF8();
users.modify()->mothername = mothernametxt->text().toUTF8();
users.modify()->dobirth = dateEdit->text().toUTF8();
users.modify()->rollno = rollnotxt->text().toUTF8();
users.modify()->program = programbox->currentText().toUTF8();
users.modify()->stream = streambox->currentText().toUTF8();
users.modify()->department = departmentbox->currentText().toUTF8();
users.modify()->semester = semesterbox->currentText().toUTF8();
dbo::ptr<User> userPtr = session.add(user);
transaction.commit();
}
}

void Myform::retrievedata()
{
sqlite3.setProperty("show-queries","true");
Wt::WString a=retrievetext->text();
std::string b=a.toUTF8();
{
dbo::Transaction transaction(session);
typedef dbo::collection< dbo::ptr<User> >Users;
Users users = session.find<User>().where("name=?").bind(b);
int i;
for (Users::const_iterator i = users.begin(); i !=users.end(); ++i)
{
c1->addWidget(new WText("name:"));
WText *nameout=new WText ((*i)->name,c1);
nameout->setStyleClass("output");
c1->addWidget(new WBreak());
c1->addWidget(new WBreak());

c1->addWidget(new WText("father name:"));
WText *fathernameout=new WText ((*i)->fathername,c1);
fathernameout->setStyleClass("output");
c1->addWidget(new WBreak());
c1->addWidget(new WBreak());

c1->addWidget(new WText("mother name:"));
WText *mothernameout=new WText ((*i)->mothername,c1);
mothernameout->setStyleClass("output");
c1->addWidget(new WBreak());
c1->addWidget(new WBreak());

c1->addWidget(new WText("dobirth:"));
WText *dobirthout=new WText ((*i)->dobirth,c1);
dobirthout->setStyleClass("output");
c1->addWidget(new WBreak());
c1->addWidget(new WBreak());

c1->addWidget(new WText("rollno"));
WText *rollnoout=new WText ((*i)->rollno,c1);
rollnoout->setStyleClass("output");
c1->addWidget(new WBreak());
c1->addWidget(new WBreak());

c1->addWidget(new WText("stream:"));
WText *streamout=new WText ((*i)->stream,c1);
streamout->setStyleClass("output");
c1->addWidget(new WBreak());
c1->addWidget(new WBreak());

c1->addWidget(new WText("department:"));
WText *departmentout=new WText ((*i)->department,c1);
departmentout->setStyleClass("output");
c1->addWidget(new WBreak());
c1->addWidget(new WBreak());

c1->addWidget(new WText("semester:"));
WText *semesterout=new WText ((*i)->semester,c1);
semesterout->setStyleClass("output");
c1->addWidget(new WBreak());
c1->addWidget(new WBreak());
}
transaction.commit();
}}
WApplication * createApplication (WEnvironment const & env)
{ return new Myform (env); }

int main(int argc, char **argv)
{
return WRun (argc, argv, & createApplication);
}










(1-1/2)