16void EShopServlet::onViewOrder(
21 Writer& out = ctx.
writer();
22 ListedStringToStringArrayMap& params = ctx.__formMap;
26 String strName = (params[L
"name"])[0];
27 String strTel = (params[L
"tel"])[0];
28 String strAddr = (params[L
"tel"])[0];
32 "INSERT INTO ES_ORDER_MASTER(ORDER_DATETIME, USER_ID,"
33 " DELIVERY_NAME, DELIVERY_TEL, DELIVERY_ADDR)\n"
34 " VALUES(CURRENT_TIMESTAMP, :USER_ID, :DELIVERY_NAME, "
35 " :DELIVERY_TEL, :DELIVERY_ADDR)"
37 q.params()[0].setValue(session.
userID());
38 q.params()[1].setValue(strName);
39 q.params()[2].setValue(strTel);
40 q.params()[3].setValue(strAddr);
44 "SELECT MAX(ORDER_ID) FROM ES_ORDER_MASTER "
45 " WHERE USER_ID = " + String::valueOf(session.
userID())
50 "INSERT INTO ES_ORDER_DETAIL\n"
51 " SELECT " + q.fields()[0].asString() + L
", S.PRODUCT_ID, P.PRICE, S.QUANTITY "
52 " FROM ES_SHOPPING_BASKET S "
53 " INNER JOIN ES_PRODUCT P ON S.PRODUCT_ID = P.PRODUCT_ID \n"
54 " WHERE SESSION_ID = \'" + session.
sessionID() + L
"\'"
58 "DELETE FROM ES_SHOPPING_BASKET "
59 " WHERE SESSION_ID = \'" + session.
sessionID() + L
"\'"
63 SQLQuery qMaster(session.
SQLConn());
65 "SELECT * FROM ES_ORDER_MASTER "
66 " WHERE USER_ID = :USER_ID"
68 qMaster.params()[0].setValue(session.
userID());
72 TextTemplate tpl = *m_pViewOrder;
73 TextTemplate& tplOrder = tpl[L
"ORDER"];
74 TextTemplate& tplEmpty = tpl[L
"EMPTY"];
79 tpl.assign(L
"EMPTY", tplEmpty);
83 String strDetailSQL = L
""
84 "SELECT P.IMAGE_FILE_NAME, P.PRODUCT_NAME, P.QUALITY, "
85 " D.PRICE, D.QUANTITY, D.PRICE * D.QUANTITY AS AMOUNT\n"
86 " FROM ES_ORDER_DETAIL D "
87 " INNER JOIN ES_PRODUCT P ON (D.PRODUCT_ID = P.PRODUCT_ID)\n"
88 " WHERE D.ORDER_ID = :ORDER_ID \n"
89 " ORDER BY D.PRODUCT_ID";
91 SQLQuery qDetail(session.
SQLConn());
93 TextTemplate& tplMaster = tplOrder[L
"MASTER_ROW"];
94 TextTemplate& tplDetail = tplMaster[L
"DETAIL_ROW"];
99 int nOrderID = qMaster.fields().byName(L
"ORDER_ID").asInteger();
104 qDetail.prepare(strDetailSQL);
105 qDetail.params()[0].setValue(nOrderID);
109 int64_t nSubTotal = 0;
110 while(!qDetail.eof())
113 qDetail.fields().byName(L
"AMOUNT").getValue(nAmount);
114 nSubTotal += nAmount;
115 tplDetail.assign(qDetail.fields(), L
" ");
119 tplMaster.assign(L
"DETAIL_ROW", tplDetail);
122 tplMaster.append(L
"DETAIL_ROW", tplDetail);
127 tplMaster.assign(L
"SUB_TOTAL", String::valueOf(nSubTotal));
129 tplMaster.assign(qMaster.fields(), L
" ");
130 tplMaster.assign(L
"NO", String::valueOf(nNo++));
131 tplOrder.append(L
"MASTER_ROW", tplMaster);
134 tplOrder.assign(L
"TOTAL", String::valueOf(nTotal));
135 tpl.assign(L
"ORDER", tplOrder);
const String & sessionID() const
SQLConnection * SQLConn() const