892 lines
31 KiB
Java
892 lines
31 KiB
Java
package it.acxent.cart.servlet;
|
|
|
|
import it.acxent.cart.AcCartObject;
|
|
import it.acxent.cart.Cart;
|
|
import it.acxent.cart.CartStatus;
|
|
import it.acxent.common.Users;
|
|
import it.acxent.db.ResParm;
|
|
import it.acxent.servlet.LogonSvlt;
|
|
import it.acxent.servlet.SavedHttpRequest;
|
|
import it.acxent.util.AbMessages;
|
|
import java.util.StringTokenizer;
|
|
import javax.servlet.RequestDispatcher;
|
|
import javax.servlet.ServletRequest;
|
|
import javax.servlet.ServletResponse;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpSession;
|
|
|
|
public abstract class AcCartSvlt extends LogonSvlt {
|
|
protected static String ACT_ADD_ONE = "one";
|
|
|
|
protected static String ACT_CHECK_OUT = "checkOut";
|
|
|
|
protected static String ACT_LOGIN = "login";
|
|
|
|
public static String CAL_CR = "cr";
|
|
|
|
public static String CAL_MD = "md";
|
|
|
|
public static String CAL_CAT = "cat";
|
|
|
|
protected static String JSP_CART = "cart.jsp";
|
|
|
|
protected static String ATTR_THE_PAGE = "thePage";
|
|
|
|
protected static String JSP_CHECKOUT = "checkOut.jsp";
|
|
|
|
protected static String JSP_CHECKOUT_NO_REG = "checkOutNoReg.jsp";
|
|
|
|
protected static String JSP_HOME = "index.jsp";
|
|
|
|
public static String JSP_LOSTPASSWORD = "lostPwd.jsp";
|
|
|
|
protected static String JSP_ORDER = "order.jsp";
|
|
|
|
protected static String JSP_ORDER_NO_REG = "orderNoReg.jsp";
|
|
|
|
protected static String ACT_LOSTPWD = "lostPwd";
|
|
|
|
public static String ATTR_CART = "cart";
|
|
|
|
public static String ATTR_CART_STATUS = "cartStatus";
|
|
|
|
public static String CMD_ADD_ITEMS = "addItems";
|
|
|
|
protected static String DEFAULT_CATALOG_SVLT = "/Catalogo.abl";
|
|
|
|
protected static String CMD_CHECK_CART = "checkCart";
|
|
|
|
protected static String CMD_CHECKOUT = "checkOut";
|
|
|
|
protected static String CMD_LOGOUT = "logout";
|
|
|
|
protected static String CMD_DELETE_CART = "deleteCart";
|
|
|
|
public static String CMD_DELETE_ITEM = "deleteItem";
|
|
|
|
protected static String CMD_MODIFY_ITEM = "modifyItem";
|
|
|
|
protected static String CMD_MODIFY_ITEMS = "modifyItems";
|
|
|
|
protected static String CMD_UPDATE_CART = "updateCart";
|
|
|
|
public static String PROP_ORDER = "bean";
|
|
|
|
public static String CMD_LOSTPWD = "lostPwd";
|
|
|
|
public static String ATTR_LOSTPWDEMAIL = "lostPwdEmail";
|
|
|
|
public static String CMD_ADD_ITEM = "addItem";
|
|
|
|
protected static String CMD_LOGON = "logon";
|
|
|
|
protected static String ACT_CHECK_OUT_NO_LOGIN = "checkOutNL";
|
|
|
|
protected static String CMD_CHECKOUT_NO_REG = "checkOutNoReg";
|
|
|
|
protected void addItems(HttpServletRequest req, HttpServletResponse res) {}
|
|
|
|
protected void callJsp(HttpServletRequest req, HttpServletResponse res) {
|
|
if (!getCal(req).isEmpty()) {
|
|
setJspPageRelative(getCal(req), req);
|
|
} else {
|
|
setJspPageRelative("cart.jsp", req);
|
|
}
|
|
try {
|
|
RequestDispatcher rd = getServletContext().getRequestDispatcher(getJspPage(req));
|
|
rd.forward((ServletRequest)req, (ServletResponse)res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
}
|
|
}
|
|
|
|
protected void checkCart(HttpServletRequest req, HttpServletResponse res) {
|
|
try {
|
|
Cart cart = getCart(req);
|
|
if (cart.getNumberOfItems() == 0L) {
|
|
String msg = "CheckCart: Il carrello è vuoto!";
|
|
handleDebug(msg);
|
|
sendMessage(req, msg);
|
|
callJsp(req, res);
|
|
} else {
|
|
Users utente = getLoginUser(req);
|
|
if (utente != null && utente.getId_userProfile() == utente.getIdUserProfileNoReg()) {
|
|
req.getSession().removeAttribute("utenteLogon");
|
|
req.getSession().removeAttribute("loginUser_id");
|
|
}
|
|
afterCheckCart(req, res);
|
|
}
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
}
|
|
}
|
|
|
|
protected void checkOut(HttpServletRequest req, HttpServletResponse res) {
|
|
CartStatus cartStatus = new CartStatus();
|
|
try {
|
|
Cart cart = getCart(req);
|
|
if (getAct(req).equals(ATTR_CART)) {
|
|
if (cart.getNumberOfItems() == 0L) {
|
|
String msg = "CheckOut: Si è tentato di utilizzare un carrello vuoto!!!!";
|
|
handleDebug(msg);
|
|
forceMessage(req, msg);
|
|
cartStatus.setStatus(CartStatus.ST_CHECK_OUT_ERROR);
|
|
req.setAttribute(ATTR_CART_STATUS, cartStatus);
|
|
setCart(req, cart);
|
|
afterCheckCart(req, res);
|
|
} else {
|
|
cartStatus.setStatus(CartStatus.ST_OK);
|
|
fillObject(req, cart);
|
|
req.setAttribute(ATTR_CART, cart);
|
|
req.setAttribute(ATTR_CART_STATUS, cartStatus);
|
|
afterCheckOut(req, res);
|
|
}
|
|
} else if (getAct(req).equals(ACT_LOGIN)) {
|
|
if (!getLogin(req).equals(""))
|
|
if (checkLoginName(req, res) >= 5L) {
|
|
if (!isFirstAccess(req)) {
|
|
cartStatus.setStatus(CartStatus.ST_OK);
|
|
} else {
|
|
SavedHttpRequest shr = (SavedHttpRequest)req.getSession().getAttribute("savedHttpRequest");
|
|
if (shr == null) {
|
|
shr = new SavedHttpRequest();
|
|
shr.setCompleteRequestedURI(req.getRequestURI());
|
|
shr.setServletPath(req.getServletPath());
|
|
shr.setAllParametersNAttributes(req);
|
|
req.getSession().setAttribute("savedHttpRequest", shr);
|
|
}
|
|
forceJspPageRelative(getCheckCCPage(), req);
|
|
RequestDispatcher rd = getServletContext().getRequestDispatcher(getJspPage(req));
|
|
rd.forward((ServletRequest)req, (ServletResponse)res);
|
|
}
|
|
} else {
|
|
sendMessage(req, AbMessages.getMessage(getLang(req), "LOGIN_FAIL"));
|
|
}
|
|
req.setAttribute(ATTR_CART_STATUS, cartStatus);
|
|
getCart(req);
|
|
afterCheckOut(req, res);
|
|
} else if (getAct(req).equals(ACT_LOSTPWD)) {
|
|
ResParm rp = sendLostPasswordMessage(req, res);
|
|
if (!rp.getStatus())
|
|
sendMessage(req, rp.getMsg());
|
|
afterCheckOut(req, res);
|
|
} else if (getAct(req).equals(ACT_CHECK_OUT)) {
|
|
if (getLoginUser(req) != null) {
|
|
if (cart.getNumberOfItems() == 0L) {
|
|
handleDebug(AbMessages.getMessage(getLang(req), "CART_SUBMIT_EMPTY"));
|
|
sendMessage(req, AbMessages.getMessage(getLang(req), "CART_SUBMIT_EMPTY"));
|
|
cartStatus.setStatus(CartStatus.ST_CHECK_OUT_ERROR);
|
|
req.setAttribute(ATTR_CART_STATUS, cartStatus);
|
|
setCart(req, cart);
|
|
afterCheckOut(req, res);
|
|
} else if (checkAvailability(req) && !cart.areAllItemsAvailable()) {
|
|
String msg = "CheckOut: Attenzione! Alcuni articoli non sono più disponibili!!!";
|
|
handleDebug(msg);
|
|
forceMessage(req, msg);
|
|
cartStatus.setStatus(CartStatus.ST_CHECK_OUT_ERROR);
|
|
req.setAttribute(ATTR_CART_STATUS, cartStatus);
|
|
setCart(req, cart);
|
|
afterCheckCart(req, res);
|
|
} else {
|
|
fillObject(req, cart);
|
|
setCart(req, cart);
|
|
ResParm rp = recordOrder(req, res);
|
|
if (rp.getStatus()) {
|
|
if (sendCheckOutMessage(req, res).getStatus()) {
|
|
cartStatus.setStatus(CartStatus.ST_CHECK_OUT_OK);
|
|
} else {
|
|
cartStatus.setStatus(CartStatus.ST_CHECK_OUT_OK_NO_MAIL);
|
|
sendMessage(req, rp.getMsg());
|
|
}
|
|
req.setAttribute(ATTR_CART_STATUS, cartStatus);
|
|
removeCart(req);
|
|
afterOrderRecorded(req, res);
|
|
} else {
|
|
sendMessage(req, rp.getMsg());
|
|
setJspPageRelative(getJspCheckOutPage(req), req);
|
|
callJsp(req, res);
|
|
}
|
|
}
|
|
} else {
|
|
sendMessage(req, AbMessages.getMessage(getLang(req), "CART_NEED_LOGIN"));
|
|
afterCheckOut(req, res);
|
|
}
|
|
} else if (getAct(req).equals(ACT_CHECK_OUT_NO_LOGIN)) {
|
|
if (cart.getNumberOfItems() == 0L) {
|
|
handleDebug(AbMessages.getMessage(getLang(req), "CART_SUBMIT_EMPTY"));
|
|
sendMessage(req, AbMessages.getMessage(getLang(req), "CART_SUBMIT_EMPTY"));
|
|
cartStatus.setStatus(CartStatus.ST_CHECK_OUT_ERROR);
|
|
req.setAttribute(ATTR_CART_STATUS, cartStatus);
|
|
setCart(req, cart);
|
|
afterCheckOut(req, res);
|
|
} else {
|
|
fillObject(req, cart);
|
|
setCart(req, cart);
|
|
ResParm rp = recordOrder(req, res);
|
|
if (rp.getStatus()) {
|
|
if (sendCheckOutMessage(req, res).getStatus()) {
|
|
cartStatus.setStatus(CartStatus.ST_CHECK_OUT_OK);
|
|
} else {
|
|
cartStatus.setStatus(CartStatus.ST_CHECK_OUT_OK_NO_MAIL);
|
|
sendMessage(req, rp.getMsg());
|
|
}
|
|
req.setAttribute(ATTR_CART_STATUS, cartStatus);
|
|
removeCart(req);
|
|
afterOrderRecorded(req, res);
|
|
} else {
|
|
sendMessage(req, rp.getMsg());
|
|
afterCheckOut(req, res);
|
|
}
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
sendMessage(req, e.getMessage());
|
|
callJsp(req, res);
|
|
}
|
|
}
|
|
|
|
protected void logOut(HttpServletRequest req, HttpServletResponse res) {
|
|
try {
|
|
req.getSession().removeAttribute("utenteLogon");
|
|
req.getSession().removeAttribute("loginUser_id");
|
|
setJspPageRelative(JSP_HOME, req);
|
|
_updateCart(req);
|
|
callJsp(req, res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
sendMessage(req, e.getMessage());
|
|
callJsp(req, res);
|
|
}
|
|
}
|
|
|
|
protected void lostPasword(HttpServletRequest req, HttpServletResponse res) {
|
|
try {
|
|
CartStatus cs = new CartStatus();
|
|
ResParm rp = sendLostPasswordMessage(req, res);
|
|
if (!rp.getStatus()) {
|
|
forceMessage(req, rp.getMsg());
|
|
cs.setStatus(CartStatus.ST_LOSTPWD_SEND_ERROR);
|
|
req.setAttribute(ATTR_CART_STATUS, cs);
|
|
} else {
|
|
forceMessage(req, rp.getMsg());
|
|
cs.setStatus(CartStatus.ST_LOSTPWD_SEND_OK);
|
|
req.setAttribute(ATTR_CART_STATUS, cs);
|
|
}
|
|
req.setAttribute(ATTR_THE_PAGE, getRequestParameter(req, ATTR_THE_PAGE));
|
|
setJspPageRelative(getJspLostPasswordPage(req), req);
|
|
callJsp(req, res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
sendMessage(req, e.getMessage());
|
|
callJsp(req, res);
|
|
}
|
|
}
|
|
|
|
protected void deleteCart(HttpServletRequest req, HttpServletResponse res) {
|
|
try {
|
|
removeCart(req);
|
|
afterDeleteCart(req, res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
}
|
|
}
|
|
|
|
protected void deleteItem(HttpServletRequest req, HttpServletResponse res) {
|
|
try {
|
|
AcCartObject aco = getCartObject(req);
|
|
Cart cart = getCart(req);
|
|
cart.remove(aco);
|
|
setCart(req, cart);
|
|
if (cart.getNumberOfItems() == 0L) {
|
|
String msg = "Il carrello è vuoto!";
|
|
handleDebug(msg);
|
|
sendMessage(req, msg);
|
|
}
|
|
afterDeleteItem(req, res);
|
|
callJsp(req, res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
}
|
|
}
|
|
|
|
protected String getAfterAddItemServlet(HttpServletRequest req) {
|
|
return DEFAULT_CATALOG_SVLT;
|
|
}
|
|
|
|
protected Cart getCart(HttpServletRequest req) {
|
|
HttpSession session = req.getSession(true);
|
|
Cart cart = null;
|
|
if (session.getAttribute(ATTR_CART) != null) {
|
|
cart = (Cart)session.getAttribute(ATTR_CART);
|
|
cart.setApplParmFull(getApFull(req));
|
|
updateDeliveryCost(cart, req);
|
|
} else {
|
|
cart = new Cart(getApFull(req));
|
|
updateDeliveryCost(cart, req);
|
|
}
|
|
if (cart != null)
|
|
setCart(req, cart);
|
|
return cart;
|
|
}
|
|
|
|
protected String getJspCartPage(HttpServletRequest req) {
|
|
return JSP_CART;
|
|
}
|
|
|
|
protected String getJspCheckOutPage(HttpServletRequest req) {
|
|
return JSP_CHECKOUT;
|
|
}
|
|
|
|
protected String getJspCheckOutNoRegPage(HttpServletRequest req) {
|
|
return JSP_CHECKOUT_NO_REG;
|
|
}
|
|
|
|
protected String getJspHomePage(HttpServletRequest req) {
|
|
return JSP_HOME;
|
|
}
|
|
|
|
protected String getJspLostPasswordPage(HttpServletRequest req) {
|
|
return JSP_LOSTPASSWORD;
|
|
}
|
|
|
|
protected String getJspOrderPage(HttpServletRequest req) {
|
|
return JSP_ORDER;
|
|
}
|
|
|
|
protected String getJspOrderPageNoReg(HttpServletRequest req) {
|
|
return JSP_ORDER_NO_REG;
|
|
}
|
|
|
|
public abstract AcCartObject getCartObject(HttpServletRequest paramHttpServletRequest) throws Exception;
|
|
|
|
protected String getCheckOutMailMessage() {
|
|
return getParm(Cart.P_CHECKOUTMSG).getTesto();
|
|
}
|
|
|
|
protected String getCheckOutMailMessage(String lang) {
|
|
String temp = getParm(Cart.P_CHECKOUTMSG).getTesto();
|
|
if (lang != null && !lang.isEmpty()) {
|
|
int dot = temp.lastIndexOf(".");
|
|
if (dot > 0)
|
|
temp = temp.substring(0, dot) + "_" + temp.substring(0, dot) + lang.toLowerCase();
|
|
}
|
|
return temp;
|
|
}
|
|
|
|
protected String getLostPasswordMailMessage() {
|
|
return getParm(Cart.P_CHECKOUTMSG).getTesto();
|
|
}
|
|
|
|
protected boolean isUsePriceWithVat(HttpServletRequest req) {
|
|
return !(getParm(Cart.P_USE_PRICE_WITH_VAT).getNumeroInt() == 0);
|
|
}
|
|
|
|
protected double getDeliveryCost(HttpServletRequest req, Cart cart) {
|
|
return getParm(Cart.P_DELIVERY_COST).getNumeroDouble();
|
|
}
|
|
|
|
protected boolean isCostoSpedizioneFull() {
|
|
return getParm("CC_COSTO_SPED_FULL").isTrue();
|
|
}
|
|
|
|
protected long getDeliveryIvaId(HttpServletRequest req) {
|
|
return getParm(Cart.P_DELIVERY_IVA_ID).getNumeroLong();
|
|
}
|
|
|
|
protected double getDeliveryIvaAliquota(HttpServletRequest req) {
|
|
return getParm(Cart.P_DELIVERY_IVA_ALIQUOTA).getNumeroDouble();
|
|
}
|
|
|
|
protected void modifyItem(HttpServletRequest req, HttpServletResponse res) {
|
|
try {
|
|
AcCartObject aco = getCartObject(req);
|
|
Cart cart = getCart(req);
|
|
if (aco.getId().equals(""));
|
|
ResParm rp = cart.add(aco, checkAvailability(req));
|
|
if (!rp.getStatus())
|
|
sendMessage(req, rp.getMsg());
|
|
setCart(req, cart);
|
|
afterModifyItems(req, res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
}
|
|
}
|
|
|
|
protected void modifyItems(HttpServletRequest req, HttpServletResponse res) {
|
|
try {
|
|
AcCartObject aco = null;
|
|
String l_id = "";
|
|
double l_quantita = 1.0D;
|
|
Cart cart = getCart(req);
|
|
String l_id_itemsVector = getRequestParameter(req, "id_itemsVector");
|
|
l_id_itemsVector = l_id_itemsVector.replace('\'', ' ');
|
|
StringTokenizer st = new StringTokenizer(l_id_itemsVector, ",");
|
|
while (st.hasMoreTokens()) {
|
|
l_id = st.nextToken().trim();
|
|
req.setAttribute("id", l_id);
|
|
aco = getCartObject(req);
|
|
if (req.getParameter("qt_" + l_id) != null &&
|
|
!req.getParameter("qt_" + l_id).equals(""))
|
|
l_quantita = getRequestDoubleParameter(req, "qt_" + l_id);
|
|
aco.setQuantity(l_quantita);
|
|
ResParm rp = cart.add(aco, checkAvailability(req));
|
|
if (!rp.getStatus())
|
|
sendMessage(req, rp.getMsg());
|
|
}
|
|
setCart(req, cart);
|
|
afterModifyItems(req, res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
}
|
|
}
|
|
|
|
protected void otherCommands(HttpServletRequest req, HttpServletResponse res) {
|
|
checkCart(req, res);
|
|
}
|
|
|
|
protected void processRequest(HttpServletRequest req, HttpServletResponse res) {
|
|
String cmd = getCmd(req);
|
|
forceJspPage("", req);
|
|
if (cmd.equals(CMD_ADD_ITEM)) {
|
|
addItem(req, res);
|
|
} else if (cmd.equals(CMD_ADD_ITEMS)) {
|
|
addItems(req, res);
|
|
} else if (cmd.equals(CMD_MODIFY_ITEM)) {
|
|
modifyItem(req, res);
|
|
} else if (cmd.equals(CMD_MODIFY_ITEMS)) {
|
|
modifyItems(req, res);
|
|
} else if (cmd.equals(CMD_DELETE_ITEM)) {
|
|
deleteItem(req, res);
|
|
} else if (cmd.equals(CMD_DELETE_CART)) {
|
|
deleteCart(req, res);
|
|
} else if (cmd.equals(CMD_CHECK_CART)) {
|
|
checkCart(req, res);
|
|
} else if (cmd.startsWith(CMD_CHECKOUT_NO_REG)) {
|
|
checkOutNoReg(req, res);
|
|
} else if (cmd.startsWith(CMD_CHECKOUT)) {
|
|
checkOut(req, res);
|
|
} else if (cmd.equals(CMD_LOGOUT)) {
|
|
logOut(req, res);
|
|
} else if (cmd.equals(CMD_LOGON)) {
|
|
logOn(req, res);
|
|
} else if (cmd.equals(CMD_LOSTPWD)) {
|
|
lostPasword(req, res);
|
|
} else if (cmd.equals(CMD_UPDATE_CART)) {
|
|
_updateCart(req);
|
|
} else {
|
|
ResParm rp = callCmdMethod(req, res);
|
|
if (!rp.getStatus()) {
|
|
if (!rp.getMsg().isEmpty())
|
|
sendMessage(req, rp.getMsg());
|
|
otherCommands(req, res);
|
|
}
|
|
}
|
|
}
|
|
|
|
protected abstract ResParm recordOrder(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse);
|
|
|
|
protected void removeCart(HttpServletRequest req) {
|
|
req.getSession(true).removeAttribute(ATTR_CART);
|
|
}
|
|
|
|
protected abstract ResParm sendCheckOutMessage(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse);
|
|
|
|
protected abstract ResParm sendLostPasswordMessage(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse);
|
|
|
|
protected void setCart(HttpServletRequest req, Cart cart) {
|
|
cart.setApplParmFull(getApFull(req));
|
|
cart.setDeliveryCostSetted(false);
|
|
req.getSession(true).setAttribute(ATTR_CART, cart);
|
|
}
|
|
|
|
protected void afterAddItem(HttpServletRequest req, HttpServletResponse res) {
|
|
try {
|
|
if (getCal(req).equals(CAL_CR)) {
|
|
req.setAttribute("cmd", "search");
|
|
req.setAttribute("act", CAL_CR);
|
|
RequestDispatcher rd = getServletContext().getRequestDispatcher(getAfterAddItemServlet(req));
|
|
rd.forward((ServletRequest)req, (ServletResponse)res);
|
|
} else {
|
|
req.setAttribute("cmd", "md");
|
|
req.setAttribute("act", CMD_ADD_ITEM);
|
|
RequestDispatcher rd = getServletContext().getRequestDispatcher(getAfterAddItemServlet(req));
|
|
rd.forward((ServletRequest)req, (ServletResponse)res);
|
|
}
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
}
|
|
}
|
|
|
|
protected void afterCheckCart(HttpServletRequest req, HttpServletResponse res) {
|
|
setJspPageRelative(getJspCartPage(req), req);
|
|
try {
|
|
callJsp(req, res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
}
|
|
}
|
|
|
|
protected void afterCheckOut(HttpServletRequest req, HttpServletResponse res) {
|
|
setJspPageRelative(getJspCheckOutPage(req), req);
|
|
callJsp(req, res);
|
|
}
|
|
|
|
protected void afterDeleteCart(HttpServletRequest req, HttpServletResponse res) {
|
|
setJspPageRelative(getJspHomePage(req), req);
|
|
try {
|
|
RequestDispatcher rd = getServletContext().getRequestDispatcher(getJspPage(req));
|
|
rd.forward((ServletRequest)req, (ServletResponse)res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
}
|
|
}
|
|
|
|
protected void afterDeleteItem(HttpServletRequest req, HttpServletResponse res) {
|
|
try {
|
|
checkCart(req, res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
}
|
|
}
|
|
|
|
protected void afterModifyItems(HttpServletRequest req, HttpServletResponse res) {
|
|
try {
|
|
checkCart(req, res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
}
|
|
}
|
|
|
|
protected void afterOrderRecorded(HttpServletRequest req, HttpServletResponse res) {
|
|
setJspPageRelative(getJspOrderPage(req), req);
|
|
callJsp(req, res);
|
|
}
|
|
|
|
protected void afterOrderRecordedNoReg(HttpServletRequest req, HttpServletResponse res) {
|
|
setJspPageRelative(getJspOrderPageNoReg(req), req);
|
|
callJsp(req, res);
|
|
}
|
|
|
|
protected boolean useControlCodeAccess() {
|
|
return false;
|
|
}
|
|
|
|
protected boolean usePriceWithVat() {
|
|
return true;
|
|
}
|
|
|
|
protected boolean useDeliveryCostOnUser() {
|
|
return true;
|
|
}
|
|
|
|
protected boolean checkControlCode(HttpServletRequest req) {
|
|
try {
|
|
Users ute = (Users)req.getSession().getAttribute("utenteCC");
|
|
if (ute == null)
|
|
return false;
|
|
ute.findByPrimaryKey(new Long(ute.getId_users()));
|
|
String controlCode = "";
|
|
if (req.getParameter("controlCode") != null &&
|
|
!req.getParameter("controlCode").equals(""))
|
|
controlCode = req.getParameter("controlCode");
|
|
if (!ute.getControlCode().equals(controlCode)) {
|
|
sendMessage(req, AbMessages.getMessage(getLocale(req), "CONTROL_CODE_FAIL"));
|
|
handleDebug(AbMessages.getMessage(getLocale(req), "CONTROL_CODE_FAIL"), 2);
|
|
setJspPageRelative(getCheckCCPage(), req);
|
|
return false;
|
|
}
|
|
sendMessage(req, AbMessages.getMessage(getLocale(req), "CONTROL_CODE_OK"));
|
|
handleDebug(AbMessages.getMessage(getLocale(req), "CONTROL_CODE_OK"));
|
|
ute.setControlCode("");
|
|
ute.save();
|
|
req.getSession().removeAttribute("utenteCC");
|
|
req.getSession().setAttribute("utenteLogon", ute);
|
|
req.getSession().setAttribute("loginUser_id", new Long(ute.getId_users()));
|
|
return true;
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
protected String getCheckCCPage() {
|
|
if (!getWebappResource("controlCodePage").equals(""))
|
|
return getWebappResource("controlCodePage");
|
|
return "controlCode.jsp";
|
|
}
|
|
|
|
protected boolean isFirstAccess(HttpServletRequest req) {
|
|
if (useControlCodeAccess())
|
|
try {
|
|
Users ute = (Users)req.getSession().getAttribute("utenteLogon");
|
|
ute.findByPrimaryKey(new Long(ute.getId_users()));
|
|
if (!ute.getControlCode().equals("")) {
|
|
req.getSession().removeAttribute("loginUser_id");
|
|
req.getSession().removeAttribute("utenteLogon");
|
|
req.getSession().setAttribute("utenteCC", ute);
|
|
return true;
|
|
}
|
|
return false;
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
protected double getMoreCost(HttpServletRequest req) {
|
|
return getParm(Cart.P_MORE_COST).getNumeroDouble();
|
|
}
|
|
|
|
protected void addItem(HttpServletRequest req, HttpServletResponse res) {
|
|
try {
|
|
AcCartObject aco = getCartObject(req);
|
|
Cart cart = getCart(req);
|
|
CartStatus cartStatus = new CartStatus();
|
|
String act = getAct(req);
|
|
if (act.equals(ACT_ADD_ONE)) {
|
|
ResParm rp = cart.quantityIncrement(aco, checkAvailability(req));
|
|
if (!rp.getStatus()) {
|
|
sendMessage(req, rp.getMsg());
|
|
cartStatus.setStatus(22L);
|
|
} else {
|
|
cartStatus.setStatus(21L);
|
|
}
|
|
} else {
|
|
ResParm rp = cart.add(aco, checkAvailability(req));
|
|
if (!rp.getStatus()) {
|
|
sendMessage(req, rp.getMsg());
|
|
cartStatus.setStatus(22L);
|
|
} else {
|
|
cartStatus.setStatus(21L);
|
|
}
|
|
}
|
|
req.setAttribute(ATTR_CART_STATUS, cartStatus);
|
|
updateDeliveryCost(cart, req);
|
|
setCart(req, cart);
|
|
afterAddItem(req, res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
}
|
|
}
|
|
|
|
protected double getDeliveryWarnCost(HttpServletRequest req) {
|
|
return getParm(Cart.P_DELIVERY_WARN_COST).getNumeroDouble();
|
|
}
|
|
|
|
protected void logOn(HttpServletRequest req, HttpServletResponse res) {
|
|
try {
|
|
String jspPage = getCal(req);
|
|
if (jspPage.isEmpty())
|
|
jspPage = getJspHomePage(req);
|
|
if (!getLogin(req).isEmpty())
|
|
if (checkLoginName(req, res) >= 5L) {
|
|
_updateCart(req);
|
|
if (isFirstAccess(req)) {
|
|
SavedHttpRequest shr = (SavedHttpRequest)req.getSession().getAttribute("savedHttpRequest");
|
|
if (shr == null) {
|
|
shr = new SavedHttpRequest();
|
|
shr.setCompleteRequestedURI(req.getRequestURI());
|
|
shr.setServletPath(req.getServletPath());
|
|
shr.setAllParametersNAttributes(req);
|
|
req.getSession().setAttribute("savedHttpRequest", shr);
|
|
}
|
|
forceJspPageRelative(getCheckCCPage(), req);
|
|
RequestDispatcher rd = getServletContext().getRequestDispatcher(getJspPage(req));
|
|
rd.forward((ServletRequest)req, (ServletResponse)res);
|
|
} else {
|
|
setJspPageRelative(jspPage, req);
|
|
callJsp(req, res);
|
|
}
|
|
} else {
|
|
_updateCart(req);
|
|
sendMessage(req, AbMessages.getMessage(getLang(req), "LOGIN_FAIL"));
|
|
setJspPageRelative(jspPage, req);
|
|
callJsp(req, res);
|
|
}
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
sendMessage(req, e.getMessage());
|
|
setJspPageRelative(getCal(req), req);
|
|
callJsp(req, res);
|
|
}
|
|
}
|
|
|
|
protected boolean checkAvailability(HttpServletRequest req) {
|
|
return true;
|
|
}
|
|
|
|
public void _updateCart(HttpServletRequest req, HttpServletResponse res) {
|
|
HttpSession session = req.getSession(true);
|
|
session.setAttribute(ATTR_CART, getCart(req));
|
|
setJspPage(getLoginPage(req, res), req);
|
|
RequestDispatcher rd = getServletContext().getRequestDispatcher(getJspPage(req));
|
|
try {
|
|
rd.forward((ServletRequest)req, (ServletResponse)res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
protected void checkOutNoReg(HttpServletRequest req, HttpServletResponse res) {
|
|
CartStatus cartStatus = new CartStatus();
|
|
try {
|
|
Cart cart = getCart(req);
|
|
if (getAct(req).equals(ATTR_CART)) {
|
|
if (cart.getNumberOfItems() == 0L) {
|
|
String msg = "CheckOut: Si è tentato di utilizzare un carrello vuoto!!!!";
|
|
handleDebug(msg);
|
|
forceMessage(req, msg);
|
|
cartStatus.setStatus(CartStatus.ST_CHECK_OUT_ERROR);
|
|
req.setAttribute(ATTR_CART_STATUS, cartStatus);
|
|
setCart(req, cart);
|
|
forceJspPageRelative(getJspCheckOutPage(req), req);
|
|
afterCheckCart(req, res);
|
|
} else {
|
|
cartStatus.setStatus(CartStatus.ST_OK);
|
|
fillObject(req, cart);
|
|
req.setAttribute(ATTR_CART, cart);
|
|
req.setAttribute(ATTR_CART_STATUS, cartStatus);
|
|
afterCheckOutNoReg(req, res);
|
|
}
|
|
} else if (getAct(req).equals(ACT_CHECK_OUT)) {
|
|
if (cart.getNumberOfItems() == 0L) {
|
|
handleDebug(AbMessages.getMessage(getLang(req), "CART_SUBMIT_EMPTY"));
|
|
sendMessage(req, AbMessages.getMessage(getLang(req), "CART_SUBMIT_EMPTY"));
|
|
cartStatus.setStatus(CartStatus.ST_CHECK_OUT_ERROR);
|
|
req.setAttribute(ATTR_CART_STATUS, cartStatus);
|
|
setCart(req, cart);
|
|
afterCheckOut(req, res);
|
|
} else {
|
|
fillObject(req, cart);
|
|
setCart(req, cart);
|
|
ResParm rp = recordOrderNoReg(req, res);
|
|
if (rp.getStatus()) {
|
|
if (sendCheckOutMessage(req, res).getStatus()) {
|
|
cartStatus.setStatus(CartStatus.ST_CHECK_OUT_OK);
|
|
} else {
|
|
cartStatus.setStatus(CartStatus.ST_CHECK_OUT_OK_NO_MAIL);
|
|
sendMessage(req, rp.getMsg());
|
|
}
|
|
req.setAttribute(ATTR_CART_STATUS, cartStatus);
|
|
removeCart(req);
|
|
afterOrderRecorded(req, res);
|
|
} else {
|
|
sendMessage(req, rp.getMsg());
|
|
forceJspPageRelative(getJspCheckOutNoRegPage(req), req);
|
|
afterCheckOutNoReg(req, res);
|
|
}
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
sendMessage(req, e.getMessage());
|
|
callJsp(req, res);
|
|
}
|
|
}
|
|
|
|
protected void afterCheckOutNoReg(HttpServletRequest req, HttpServletResponse res) {
|
|
setJspPageRelative(getJspCheckOutNoRegPage(req), req);
|
|
callJsp(req, res);
|
|
}
|
|
|
|
protected abstract ResParm recordOrderNoReg(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse);
|
|
|
|
public void updateDeliveryCost(Cart cart, HttpServletRequest req) {
|
|
Users users = getLoginUser(req);
|
|
if (users == null || users.getId_users() == 0L) {
|
|
cart.setId_users(0L);
|
|
resetDeliveryIva();
|
|
cart.setDeliveryCost(getDeliveryCost(req, cart));
|
|
cart.setAliquotaIvaDelivery(getDeliveryIvaAliquota(req));
|
|
cart.setId_ivaDelivery(getDeliveryIvaId(req));
|
|
} else {
|
|
cart.setId_users(users.getId_users());
|
|
resetDeliveryIva();
|
|
if (useDeliveryCostOnUser()) {
|
|
if (getLoginUserId(req) != null && getLoginUserId(req) != 0L) {
|
|
cart.setDeliveryCost(getDeliveryCost(req, cart));
|
|
cart.setId_ivaDelivery(getDeliveryIvaId(req));
|
|
cart.setAliquotaIvaDelivery(getDeliveryIvaAliquota(req));
|
|
cart.setDeliveryCostSetted(true);
|
|
cart.setUsePriceWithVat(isUsePriceWithVat(req));
|
|
}
|
|
System.out.println("updateDeliveryCost2: " + cart.getDeliveryCost());
|
|
} else {
|
|
cart.setDeliveryCost(getDeliveryCost(req, cart));
|
|
cart.setId_ivaDelivery(getDeliveryIvaId(req));
|
|
cart.setAliquotaIvaDelivery(getDeliveryIvaAliquota(req));
|
|
cart.setDeliveryCostSetted(true);
|
|
cart.setUsePriceWithVat(isUsePriceWithVat(req));
|
|
}
|
|
}
|
|
}
|
|
|
|
protected Cart getCartOldConDeliveryCostDentro(HttpServletRequest req) {
|
|
HttpSession session = req.getSession(true);
|
|
Cart cart = null;
|
|
if (session.getAttribute(ATTR_CART) != null) {
|
|
cart = (Cart)session.getAttribute(ATTR_CART);
|
|
cart.setApplParmFull(getApFull(req));
|
|
if (useDeliveryCostOnUser()) {
|
|
if (getLoginUserId(req) != null && getLoginUserId(req) != 0L) {
|
|
cart.setDeliveryCost(getDeliveryCost(req, cart));
|
|
cart.setDeliveryCostSetted(true);
|
|
cart.setId_ivaDelivery(getDeliveryIvaId(req));
|
|
cart.setAliquotaIvaDelivery(getDeliveryIvaAliquota(req));
|
|
}
|
|
} else {
|
|
cart.setDeliveryCost(getDeliveryCost(req, cart));
|
|
cart.setId_ivaDelivery(getDeliveryIvaId(req));
|
|
cart.setAliquotaIvaDelivery(getDeliveryIvaAliquota(req));
|
|
cart.setDeliveryCostSetted(true);
|
|
cart.setUsePriceWithVat(isUsePriceWithVat(req));
|
|
}
|
|
} else {
|
|
cart = new Cart(getApFull(req));
|
|
if (!cart.isDeliveryCostSetted() && getDeliveryCost(req, cart) > 0.0D) {
|
|
cart.setDeliveryCost(getDeliveryCost(req, cart));
|
|
cart.setId_ivaDelivery(getDeliveryIvaId(req));
|
|
cart.setAliquotaIvaDelivery(getDeliveryIvaAliquota(req));
|
|
cart.setDeliveryCostSetted(true);
|
|
}
|
|
}
|
|
if (cart != null) {
|
|
Users users = getLoginUser(req);
|
|
if (users == null || users.getId_users() == 0L) {
|
|
cart.setId_users(0L);
|
|
cart.setDeliveryCost(0.0D);
|
|
cart.setMoreCost(0.0D);
|
|
cart.setDeliveryWarnCost(0.0D);
|
|
cart.setId_ivaDelivery(0L);
|
|
} else {
|
|
cart.setId_users(users.getId_users());
|
|
}
|
|
setCart(req, cart);
|
|
}
|
|
return cart;
|
|
}
|
|
|
|
public void _updateCart(HttpServletRequest req) {
|
|
HttpSession session = req.getSession(true);
|
|
session.setAttribute(ATTR_CART, getCart(req));
|
|
}
|
|
|
|
public void _updateCartAfterLogin(HttpServletRequest req, HttpServletResponse res) {
|
|
HttpSession session = req.getSession(true);
|
|
session.setAttribute(ATTR_CART, getCart(req));
|
|
setJspPage(getLoginPage(req, res), req);
|
|
RequestDispatcher rd = getServletContext().getRequestDispatcher(getJspPage(req));
|
|
try {
|
|
rd.forward((ServletRequest)req, (ServletResponse)res);
|
|
} catch (Exception e) {
|
|
handleDebug(e);
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
protected void resetDeliveryIva() {}
|
|
}
|