package it.acxent.pg.servlet; import it.acxent.anag.Cliente; import it.acxent.anag.Clifor; import it.acxent.anag.Nazione; import it.acxent.anag.NazioneCR; import it.acxent.cart.CartStatus; import it.acxent.cart.servlet.AcCartSvlt; import it.acxent.db.CRAdapter; import it.acxent.db.DBAdapter; import it.acxent.db.ResParm; import it.acxent.pg.Users; import it.acxent.pg.UsersCR; import it.acxent.util.CodiceFiscale; import it.acxent.util.Vectumerator; import java.sql.Date; import java.util.Calendar; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class UsersSvlt extends it.acxent.www.servlet.UsersSvlt { private static final String PARM_REG_VLD = "REG_VLD"; protected void addRows(HttpServletRequest req, HttpServletResponse res) {} protected void fillComboAfterDetail(DBAdapter bean, HttpServletRequest req, HttpServletResponse res) { NazioneCR nCR = new NazioneCR(); nCR.setLang(getLang(req)); req.setAttribute("listaNazioni", new Nazione(getApFull(req)).findAllAttive(getLang(req))); if (req.getAttribute("msg").equals("Lettura effettuata")) req.setAttribute("msg", ""); } protected void fillComboAfterSearch(CRAdapter CR, HttpServletRequest req, HttpServletResponse res) {} protected DBAdapter getBean(HttpServletRequest req) { return new Users(getApFull(req)); } protected CRAdapter getBeanCR(HttpServletRequest req) { return new UsersCR(getApFull(req)); } protected void prepareNewRecord(HttpServletRequest req, HttpServletResponse res) { NazioneCR nCR = new NazioneCR(); nCR.setLang(getLang(req)); req.setAttribute("listaNazioni", new Nazione(getApFull(req)).findAllAttive(getLang(req))); sendMessage(req, ""); Users bean = new Users(getApFull(req)); if (getLoginUserId(req) > 0L) { bean.findByPrimaryKey(getLoginUserId(req)); } else { bean.setFlgMl(1L); bean.setId_userProfile(bean.getIdUserProfileWww()); } bean.setCallingJsp(getRequestParameter(req, "callingJsp")); bean.setId_documento(getRequestLongParameter(req, "id_documento")); req.setAttribute("bean", bean); } protected boolean isSecureServlet(HttpServletRequest req) { return false; } protected String getBeanPageName(HttpServletRequest req) { return "users"; } protected String getCmd(HttpServletRequest req) { if (super.getCmd(req).isEmpty()) return "ni"; return super.getCmd(req); } protected String newDispathcerAfterShowBean(DBAdapter beanA, HttpServletRequest req, HttpServletResponse res) { Users bean = (Users)beanA; bean.setCallingJsp(getRequestParameter(req, "callingJsp")); bean.setId_documento(getRequestLongParameter(req, "id_documento")); req.setAttribute("bean", bean); return ""; } private boolean mailConfermaCambiamentoDati(HttpServletRequest req, Users bean, String passwordIscrizione) { return bean.sendUserDataMailMessageCrypt(passwordIscrizione).getStatus(); } protected String getRegistrazioneMailMessage() { return getParm("MAIL_REG").getTesto(); } protected void sqlActions(HttpServletRequest req, HttpServletResponse res) { Users bean = new Users(getApFull(req)); long l_id_users = getRequestLongParameter(req, "id_users"); if (l_id_users > 0L) bean.findByPrimaryKey(l_id_users); fillObject(req, bean); if (bean.getLogin().contains("@")) bean.setEMail(bean.getLogin()); Cliente cli = new Cliente(getApFull(req)); if (bean.getId_users() > 0L) cli.findByPrimaryKey(bean.getId_clifor()); fillObject(req, cli); bean.setClifor((Clifor)cli); String msg = "Impossibile Registrare un nuovo utente:"; if (bean.isLogonDuplicated()) { msg = msg + " Login già presente in archivio"; forceMessage(req, msg); setJspPageRelative(getBeanPageName(req) + ".jsp", req); fillComboAfterDetail((DBAdapter)bean, req, res); req.setAttribute("bean", bean); callJsp(req, res); } else if (bean.isEmailDuplicated()) { Users userMl = new Users(getApFull(req)); userMl.findUsersByEmail(bean.getEMail()); if (userMl.getId_userProfile() == bean.getIdUserProfileMailingList()) { req.setAttribute("id_users", String.valueOf(userMl.getId_users())); req.setAttribute("flgValido", "S"); req.setAttribute("id_userProfile", Long.valueOf(bean.getIdUserProfileWww())); saveUserAndClifor(req, res); } else { msg = msg + " Email già presente in archivio"; forceMessage(req, msg); setJspPageRelative(getBeanPageName(req) + ".jsp", req); fillComboAfterDetail((DBAdapter)bean, req, res); req.setAttribute("bean", bean); callJsp(req, res); } } else if (bean.isCodFiscDuplicated()) { msg = msg + " Codice Fiscale già presente in archivio"; forceMessage(req, msg); fillComboAfterDetail((DBAdapter)bean, req, res); setJspPageRelative(getBeanPageName(req) + ".jsp", req); cli.setCodFisc(""); bean.setCodFisc(""); bean.setClifor((Clifor)cli); req.setAttribute("bean", bean); callJsp(req, res); } else if (cli.isPIvaDuplicated()) { msg = msg + " Partita Iva già presente in archivio"; forceMessage(req, msg); fillComboAfterDetail((DBAdapter)bean, req, res); setJspPageRelative(getBeanPageName(req) + ".jsp", req); bean.setPIva(""); cli.setPIva(""); bean.setPIva(""); bean.setClifor((Clifor)cli); callJsp(req, res); } else if (!bean.getCodFisc().isEmpty() && !CodiceFiscale.controlloFormale(bean.getCodFisc())) { msg = msg + " Il codice fiscale non è valido:"; forceMessage(req, msg); fillComboAfterDetail((DBAdapter)bean, req, res); setJspPageRelative(getBeanPageName(req) + ".jsp", req); cli.setCodFisc(""); bean.setCodFisc(""); bean.setClifor((Clifor)cli); req.setAttribute("bean", bean); callJsp(req, res); } else if (!cli.getPIva().isEmpty() && cli.getPIva().length() != 11) { msg = msg + " Partita iva non valida:"; forceMessage(req, msg); fillComboAfterDetail((DBAdapter)bean, req, res); setJspPageRelative(getBeanPageName(req) + ".jsp", req); bean.setPIva(""); cli.setPIva(""); bean.setPIva(""); bean.setClifor((Clifor)cli); req.setAttribute("bean", bean); callJsp(req, res); } else { req.setAttribute("flgValido", "S"); req.setAttribute("id_userProfile", Long.valueOf(bean.getIdUserProfileWww())); if (bean.getLogin().contains("@")) req.setAttribute("eMail", bean.getLogin()); if ((long)getParm("REG_VLD").getNumeroInt() == 1L) { req.setAttribute("flgValido", "S"); } else { req.setAttribute("flgValido", "N"); } if (bean.getId_users() == 0L) { if (getParm("GG_VALIDITA").getNumeroInt() > 0) { Calendar cal = Calendar.getInstance(); cal.add(6, getParm("GG_VALIDITA").getNumeroInt()); req.setAttribute("dataScadenza", getDataFormat().format(new Date(cal.getTimeInMillis()))); } if (getParm("N_FOTO_MAX").getNumeroInt() > 0) req.setAttribute("nFotoMax", String.valueOf(getParm("N_FOTO_MAX").getNumeroLong())); } saveUserAndClifor(req, res); } } protected void recordMailingList(HttpServletRequest req, HttpServletResponse res) { Users bean = new Users(getApFull(req)); fillObject(req, bean); ResParm rp = new ResParm(); String msg = "Impossibile Registrare utente ML:"; if (bean.isEmailDuplicated()) { msg = msg + " Email già presente in archivio - " + msg; rp.setStatus(false); rp.setMsg(msg); if (bean.isEmailDuplicatedNoMl()) { rp.setErrorCode(1L); } else { rp.setErrorCode(2L); } req.setAttribute("RP", rp); forceJspPageRelative("mailingListUser.jsp", req); callJsp(req, res); } else { bean.setFlgValido("N"); bean.setFlgMl(1L); bean.setId_userProfile(bean.getIdUserProfileMailingList()); bean.setLangMl(getRequestParameter(req, "langMl")); bean.setLogin("ML_" + bean.getEMail()); bean.setCognome("MLC_" + bean.getEMail()); bean.setNome("MLN_" + bean.getEMail()); if (bean.getLogin().length() > 30) bean.setLogin(bean.getLogin().substring(0, 30)); if (bean.getCognome().length() > 30) bean.setCognome(bean.getCognome().substring(0, 30)); if (bean.getNome().length() > 30) bean.setNome(bean.getNome().substring(0, 30)); rp = bean.save(); if (rp.getStatus()) bean.sendMLMailMessageOLD(req.getRemoteHost() + " " + req.getRemoteHost()); forceJspPageRelative("mailingListUser.jsp", req); callJsp(req, res); } } protected void checkCc(HttpServletRequest req, HttpServletResponse res) { Users bean = new Users(getApFull(req)); fillObject(req, bean); ResParm rp = new ResParm(); String msg = "Impossibile Registrare utente ML:"; if (bean.isEmailDuplicated()) { msg = msg + " Email già presente in archivio - " + msg; rp.setStatus(false); rp.setMsg(msg); if (bean.isEmailDuplicatedNoMl()) { rp.setErrorCode(1L); } else { rp.setErrorCode(2L); } req.setAttribute("RP", rp); forceJspPageRelative("mailingListUser.jsp", req); callJsp(req, res); } else { bean.setFlgValido("N"); bean.setFlgMl(1L); bean.setId_userProfile(bean.getIdUserProfileMailingList()); bean.setLogin("ML_" + bean.getEMail()); bean.setCognome("MLC_" + bean.getEMail()); bean.setNome("MLN_" + bean.getEMail()); rp = bean.save(); if (rp.getStatus()) bean.sendMLMailMessageOLD(req.getRemoteHost() + " " + req.getRemoteHost()); forceJspPageRelative("mailingListUser.jsp", req); callJsp(req, res); } } protected it.acxent.common.Users getUser(HttpServletRequest req) { return new Users(getApFull(req)); } protected ResParm afterSave(DBAdapter beanA, HttpServletRequest req, HttpServletResponse res) { String msg; Users bean = (Users)beanA; long l_id_user = getRequestLongParameter(req, "id_users"); String l_passwordIscrizione = getRequestParameter(req, "pwd"); if (bean.getDBState() == 1) { msg = "Salvataggio effettuato"; if (l_id_user == 0L) { if (!mailConfermaCambiamentoDati(req, bean, l_passwordIscrizione)) { msg = msg + " Attenzione!! Impossibile mandare email di conferma."; bean.setFlgEmailOk(0L); } else { msg = msg + " Inviata mail di conferma."; bean.setFlgEmailOk(1L); } } else { bean.setFlgEmailOk(1L); } setJspPageRelative(getBeanPageName(req) + "Reg.jsp", req); } else { msg = "ERRORE!. Non è stato possibile salvare. Contattare l'amministratore o immettere login diverso"; } forceMessage(req, msg); return new ResParm(true); } protected void otherCommands(HttpServletRequest req, HttpServletResponse res) { if (getCmd(req).equals("ML")) { recordMailingList(req, res); } else if (getCmd(req).equals("checkCC")) { recordMailingList(req, res); } else if (getCmd(req).equals("checkUCF")) { checkUserCF(req, res); } else { super.otherCommands(req, res); } } protected void saveUserAndClifor(HttpServletRequest req, HttpServletResponse res) { Users user = new Users(getApFull(req)); long l_id_users = getRequestLongParameter(req, "id_users"); user.findByPrimaryKey(l_id_users); fillObject(req, user); if (user.getId_nazione().isEmpty() || user.getId_nazione().toLowerCase().equals("i")) { user.setLangMl("it"); user.setLang("it"); } else { user.setLangMl("en"); user.setLang("en"); } Clifor cliente = user.getClifor(); fillObject(req, cliente); String nominativo = getRequestParameter(req, "nominativo"); if (!nominativo.isEmpty()) { cliente.setFlgAzienda(1L); cliente.setCognome(nominativo); cliente.setNome(""); } cliente.setFlgTipo("C"); ResParm rp = cliente.save(); if (rp.getStatus()); if (rp.getStatus()) { user.setId_clifor(cliente.getId_clifor()); if (user.getId_userProfile() == 0L) user.setId_userProfile(user.getIdUserProfileWww()); user.setFlgValido("S"); rp.append(user.save()); if (l_id_users > 0L) { if (!getRequestParameter(req, "newpwd").isEmpty()) user.salvaNuovaPassword(getRequestParameter(req, "newpwd")); } else { rp = user.salvaNuovaPassword(user.getPwd()); } } if (rp.getStatus()) { afterSave((DBAdapter)user, req, res); sendMessage(req, "Record salvato correttamente"); setJspPage("/usersReg.jsp", req); } else { sendMessage(req, "Impossibile salvare: " + rp.getMsg()); setJspPage("/users.jsp", req); } req.setAttribute("bean", user); callJsp(req, res); } protected void checkUserCF(HttpServletRequest req, HttpServletResponse res) { String l_cf = getRequestParameter(req, "codFiscR"); ResParm rp = new ResParm(true); if (l_cf.isEmpty()) { rp.setStatus(false); rp.setMsg("Codice Fiscale errato!"); } else { Clifor clifor = new Clifor(getApFull(req)); clifor.findByCF(l_cf, "C"); if (clifor.getDBState() == 0) { rp.setStatus(false); rp.setMsg("Il Codice Fiscale richiesto non è nei nostri database. "); } else if (clifor.getDBState() == 1 && clifor.getEMail().isEmpty()) { rp.setStatus(false); rp.setMsg("Il Codice Fiscale è nei nostri database ma l'indirizzo email non è stato comunicato."); } else { Users user = new Users(getApFull(req)); Vectumerator vec = user.findByClifor(clifor.getId_clifor(), 1, 1); if (vec.getTotNumberOfRecords() == 0) { user.setCognome(clifor.getCognome()); user.setNome(clifor.getNome()); if (clifor.getFlgAzienda() == 1L) user.setNominativo(clifor.getCognome()); user.setFlgValido("S"); user.setId_userProfile(10L); user.setId_clifor(clifor.getId_clifor()); user.setEMail(clifor.getEMail()); if (!clifor.getCellulare().isEmpty()) { user.setTelefono(clifor.getCellulare()); } else { user.setTelefono(clifor.getTelefono()); } user.setLogin(user.getEMail()); user.setPwd(String.valueOf(Math.random() * 1000000.0D).substring(0, 6)); rp = user.save(); if (rp.getStatus()) { rp = user.sendUserDataMailMessage(); if (rp.getStatus()) rp.setMsg("Utente creato correttamente. Una Mail ti è stata inviata all'indirizzo email " + user.getEMail()); } else { rp.setStatus(false); rp.setMsg("Utente creato correttamente ma non è stato possibile inviare l'email di conferma."); } } else { rp.setStatus(false); rp.setMsg("Attenzione! Il codice fiscale è nei nostri database ma esiste già un utente web associato. Richiedi i dati di accesso attraverso il recupero del login tramite indirizzo email."); } } } if (rp.getStatus()) { forceJspPage("/usersReg.jsp", req); } else { forceJspPage("/usersRegError.jsp", req); } sendMessage(req, rp.getMsg()); callJsp(req, res); } protected void showBean(HttpServletRequest req, HttpServletResponse res) { long l_id_usersDoc = getRequestLongParameter(req, "id_usersDoc"); req.setAttribute("id_users", String.valueOf(getLoginUserId(req))); if (l_id_usersDoc > 0L) req.setAttribute("id_users", Long.valueOf(l_id_usersDoc)); super.showBean(req, res); } public void _lostPasword(HttpServletRequest req, HttpServletResponse res) { _lostPassword(req, res); } protected ResParm sendLostPasswordMessage(HttpServletRequest req, HttpServletResponse res) { Users user = new Users(getApFull(req)); String lostEmail = getRequestParameter(req, AcCartSvlt.ATTR_LOSTPWDEMAIL); if (lostEmail.isEmpty()) return new ResParm(false, "Email errata"); return user.sendLostPasswordMailMessageCrypt(lostEmail); } public void _lostPassword(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(AcCartSvlt.ATTR_CART_STATUS, cs); } else { forceMessage(req, rp.getMsg()); cs.setStatus(CartStatus.ST_LOSTPWD_SEND_OK); req.setAttribute(AcCartSvlt.ATTR_CART_STATUS, cs); } setJspPageRelative(AcCartSvlt.JSP_LOSTPASSWORD, req); callJsp(req, res); } catch (Exception e) { handleDebug(e); sendMessage(req, e.getMessage()); callJsp(req, res); } } }