Java tutorial
/* * Copyright (c) 2014 by Open eGovPlatform (http://http://openegovplatform.org/). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.oep.cmon.userreg.portlet.action; import java.io.File; import java.io.IOException; import java.net.URLEncoder; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.PortletConfig; import javax.portlet.PortletException; import javax.portlet.ResourceRequest; import javax.portlet.ResourceResponse; import javax.servlet.http.HttpServletResponse; import org.oep.cmon.portlet.document.util.FormatUtil; import org.oep.cmon.portlet.taocongdan.action.TaoCongDanAction; import org.oep.cmon.userreg.portlet.mail.AccountCreationRequestMail; import org.oep.cmon.userreg.portlet.mail.CitizenCreationRequestMail; import org.oep.cmon.userreg.portlet.util.AuthenticateCodeUtil; import org.oep.cmon.userreg.portlet.util.CheckCaptchaUtil; import org.oep.cmon.userreg.portlet.util.ScaleImageUtil; import org.oep.sharedservice.cmon.Constants; import org.oep.cmon.dao.cd.model.CongDan; import org.oep.cmon.dao.cd.service.CongDanLocalServiceUtil; import org.oep.cmon.dao.csms.model.YeuCauDangKyCongDan; import org.oep.cmon.dao.csms.model.YeuCauDangKyCongDanClp; import org.oep.cmon.dao.csms.service.YeuCauDangKyCongDanLocalServiceUtil; import org.oep.cmon.dao.qlhc.model.DonViHanhChinh; import org.oep.cmon.dao.qlhc.service.DonViHanhChinhLocalServiceUtil; import com.liferay.counter.service.CounterLocalServiceUtil; import com.liferay.portal.kernel.captcha.CaptchaUtil; import com.liferay.portal.kernel.dao.orm.DynamicQuery; import com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil; import com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.json.JSONArray; import com.liferay.portal.kernel.json.JSONFactoryUtil; import com.liferay.portal.kernel.json.JSONObject; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.servlet.ServletResponseUtil; import com.liferay.portal.kernel.servlet.SessionErrors; import com.liferay.portal.kernel.servlet.SessionMessages; import com.liferay.portal.kernel.upload.UploadPortletRequest; import com.liferay.portal.kernel.util.JavaConstants; import com.liferay.portal.kernel.util.ParamUtil; import com.liferay.portal.kernel.util.StringPool; import com.liferay.portal.kernel.util.Validator; import com.liferay.portal.model.User; import com.liferay.portal.util.PortalUtil; import com.liferay.util.bridges.mvc.MVCPortlet; /** * This is class UserRegActionPortlet * * This class contains all logics related to user registation * * * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 24-April-2013 Nam Dinh Create new */ public class UserRegActionPortlet extends MVCPortlet { /** Birth date format */ private static final String DATE_FORMAT = "dd/MM/yyyy"; /** Key to generate id on csms_yeucaudangkycongdan table */ private static final String CSMS_YEUCAUDANGKYCONGDAN_SEQUENCE = "CSMS_YEUCAUDANGKYCONGDAN"; /** Only request for account */ private static final int ACCOUNT_ONLY_TYPE = 1; /** Request for both account and citizen information type */ private static final int ACCOUNT_AND_CITIZEN_TYPE = 0; private static Log _log = LogFactoryUtil.getLog(TaoCongDanAction.class); /** * This is function server resource * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param resourceRequest * @param resourceResponse * @throws IOException * @throws PortletException */ public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException, PortletException { // Get resource id String resourceId = resourceRequest.getResourceID(); // Generate captcha image and return to client if ("captcha".equals(resourceId)) { try { CaptchaUtil.serveImage(resourceRequest, resourceResponse); } catch (Exception e) { e.printStackTrace(); } return; } // Process Jason feed JSONObject jsonFeed = JSONFactoryUtil.createJSONObject(); if ("fetchDonViHanhChinh".equals(resourceId)) { // Get country code from URL long parentId = ParamUtil.getInteger(resourceRequest, "parentId"); // Create Jason array o bject JSONArray donViHanhChinhArray = JSONFactoryUtil.getJSONFactory().createJSONArray(); // Query all sub don vi hanh chinh using parent id List<DonViHanhChinh> donviHanhChinhList = null; donviHanhChinhList = DonViHanhChinhLocalServiceUtil.findByChaId(parentId, Constants.ACTIVATED); // Store all data to jSon object for (DonViHanhChinh donViHanhChinh : donviHanhChinhList) { donViHanhChinhArray.put(donViHanhChinh.getId() + ":" + donViHanhChinh.getTen()); } jsonFeed.put("donViHanhChinhArray", donViHanhChinhArray); } resourceResponse.setContentType("application/json"); resourceResponse.setCharacterEncoding("UTF-8"); resourceResponse.getWriter().write(jsonFeed.toString()); } /** * This is function input basic information * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param actionRequest * @param actionResponse * @throws IOException * @throws PortletException * @throws PortalException * @throws SystemException * @throws ParseException */ public void inputBasic(ActionRequest actionRequest, ActionResponse actionResponse) throws IOException, PortletException, PortalException, SystemException, ParseException { // Get the object from session Map<String, String> userRequest = (Map<String, String>) actionRequest.getPortletSession() .getAttribute("USER_REQUEST_OBJECT"); // Get all parameters from request String hoCongDan = ParamUtil.getString(actionRequest, "ho").trim().toUpperCase(); userRequest.put("HOCONGDAN", hoCongDan); String tenDem = ParamUtil.getString(actionRequest, "dem").trim().toUpperCase(); userRequest.put("TENDEM", tenDem); String tenCongDan = ParamUtil.getString(actionRequest, "ten").trim().toUpperCase(); userRequest.put("TENCONGDAN", tenCongDan); String soCmnd = ParamUtil.getString(actionRequest, "soCmnd").trim(); userRequest.put("SOCMND", soCmnd); String email = ParamUtil.getString(actionRequest, "email").trim(); userRequest.put("EMAIL", email); String ngaySinh = ParamUtil.getString(actionRequest, "ngaySinh").trim(); userRequest.put("NGAYSINH", ngaySinh); String ngayCapCmnd = ParamUtil.getString(actionRequest, "ngayCapCmnd").trim(); userRequest.put("NGAYCAPCMND", ngayCapCmnd); String gioiTinh = ParamUtil.getString(actionRequest, "gioiTinh"); if (Validator.isNotNull(gioiTinh)) { userRequest.put("IDGIOITINH", gioiTinh); } String danToc = ParamUtil.getString(actionRequest, "danToc"); if (Validator.isNotNull(danToc)) { userRequest.put("IDDANTOC", danToc); } String tonGiao = ParamUtil.getString(actionRequest, "tonGiao"); if (Validator.isNotNull(tonGiao)) { userRequest.put("IDTONGIAO", tonGiao); } String tinhThuongTru = ParamUtil.getString(actionRequest, "tinhThuongTru"); if (Validator.isNotNull(tinhThuongTru)) { userRequest.put("IDTINHTHANHTHUONGTRU", tinhThuongTru); } String huyenThuongTru = ParamUtil.getString(actionRequest, "huyenThuongTru"); if (Validator.isNotNull(huyenThuongTru)) { userRequest.put("IDQUANHUYENTHUONGTRU", huyenThuongTru); } String xaThuongTru = ParamUtil.getString(actionRequest, "xaThuongTru"); if (Validator.isNotNull(xaThuongTru)) { userRequest.put("IDPHUONGXATHUONGTRU", xaThuongTru); } String motaThuongTru = ParamUtil.getString(actionRequest, "motaThuongTru").trim(); userRequest.put("MOTADIACHITHUONGTRU", motaThuongTru); // Set the data back to session actionRequest.getPortletSession().setAttribute("USER_REQUEST_OBJECT", userRequest); // BinhNT add 2013-12-22 String reloadcapchar = ParamUtil.getString(actionRequest, "reloadcapchar").trim(); if (reloadcapchar.trim().compareTo("reloadcapchar") == 0) { String redirectUrl = ParamUtil.getString(actionRequest, "redirectUrl"); actionResponse.sendRedirect(redirectUrl); return; } // End BinhNT Add 2013-12-22 // Validate captcha if (!CheckCaptchaUtil.isTrue(actionRequest, "captcha")) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.captcha"); } // Check Ho cong dan if (Validator.isNull(hoCongDan)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.hoCongDan"); } // Check ten cong dan if (Validator.isNull(tenCongDan)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.tenCongDan"); } // Check so cmnd if (Validator.isNull(soCmnd) || !Validator.isNumber(soCmnd)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.soCmnd"); } if (soCmnd.trim().length() < 9 || soCmnd.trim().length() > 12) { SessionErrors.add(actionRequest, "err.soCmndVoPhaiNamTrongKhoangTuChinDenMuoiHaiChuSo"); } // Check email if (!Validator.isEmailAddress(email)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.email"); } // Check ngay sinh if (Validator.isNull(ngaySinh)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.ngaySinh"); } // In case there's error String redirectUrl = ParamUtil.getString(actionRequest, "redirectUrl"); if (!SessionErrors.isEmpty(actionRequest)) { actionResponse.sendRedirect(redirectUrl); return; } // Validate data against DB // Validate birth date DateFormat df = new SimpleDateFormat(DATE_FORMAT); Date birthDate = null; df.setLenient(false); try { birthDate = df.parse(ngaySinh); } catch (Exception e) { // Error never happen so this exception will be swallow } if (birthDate.compareTo(new Date()) > 0) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.ngaySinh.greaterThanCurrent"); } // // Check if in DB, there's already user request that not processed yet // if (this.requestExists(soCmnd)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.requestExists"); // } List<CongDan> congDan = CongDanLocalServiceUtil.findByEmail(email); if (congDan.size() > 0) { if (this.cmndExists(soCmnd)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.requestExists"); } // Check email if exists in CSMS cong dan if (this.emailExistsInCongDan(email)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.email.alreadyOwned"); } } if (!SessionErrors.isEmpty(actionRequest)) { actionResponse.sendRedirect(redirectUrl); return; } // Check if citizen exists or not //String maCongDan = this.citizenExists(hoCongDan, tenDem, tenCongDan, soCmnd, ngaySinh); String maCongDan = this.congdanExists(soCmnd, ngaySinh); _log.info("ma cong dan:" + maCongDan); if (Validator.isNull(maCongDan)) { _log.info("chua co thong tin trong csms_congdan"); // Redirect to input detail confirm String inputDetailDialogUrl = ParamUtil.getString(actionRequest, "inputDetailDialogUrl"); PortletConfig portletConfig = (PortletConfig) actionRequest .getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG); SessionMessages.add(actionRequest, portletConfig.getPortletName() + SessionMessages.KEY_SUFFIX_HIDE_DEFAULT_ERROR_MESSAGE); actionResponse.sendRedirect(inputDetailDialogUrl); return; } else { CongDan congDan1 = CongDanLocalServiceUtil.findByMa(maCongDan); _log.info("congDan1: " + congDan1); // Check email if exists in CSMS cong dan if (congDan1.getEmail().length() > 0) { _log.info("da co tai khoan csms_congdan"); String accountExistDialog = ParamUtil.getString(actionRequest, "accountExistDialog"); PortletConfig portletConfig = (PortletConfig) actionRequest .getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG); SessionMessages.add(actionRequest, portletConfig.getPortletName() + SessionMessages.KEY_SUFFIX_HIDE_DEFAULT_ERROR_MESSAGE); actionResponse.sendRedirect(accountExistDialog); return; } else { _log.info("chua co tai khoan trong csms_congdan"); String inputDetailDialogUrlExistInCongDan = ParamUtil.getString(actionRequest, "inputDetailDialogUrlExistInCongDan"); PortletConfig portletConfig = (PortletConfig) actionRequest .getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG); SessionMessages.add(actionRequest, portletConfig.getPortletName() + SessionMessages.KEY_SUFFIX_HIDE_DEFAULT_ERROR_MESSAGE); actionResponse.sendRedirect(inputDetailDialogUrlExistInCongDan); return; } } // Generate authentication code // String authCode = AuthenticateCodeUtil.generateAuthCode(); // // // Insert data to yeu cau dang ky cong dan // this.createAccountRequest(maCongDan, authCode, userRequest, actionRequest); // // String accountCreationUrl = ParamUtil.getString(actionRequest, "accountCreationUrl"); // // accountCreationUrl = accountCreationUrl.replace("DUMMY_AUTH_CODE", authCode); // // // Send email here // this.sendAccountConfirmationEmail(hoCongDan, tenDem, tenCongDan, accountCreationUrl, email); // // // Redirect to success page // String accountRegisterSuccessUrl = ParamUtil.getString(actionRequest, "accountRegisterSuccessUrl"); // // // Remove object in session // actionRequest.getPortletSession().removeAttribute("USER_REQUEST_OBJECT"); // // PortletConfig portletConfig = (PortletConfig)actionRequest.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG); // SessionMessages.add(actionRequest, portletConfig.getPortletName() + SessionMessages.KEY_SUFFIX_HIDE_DEFAULT_ERROR_MESSAGE); // // // Redirect to account register success page // actionResponse.sendRedirect(accountRegisterSuccessUrl); } /** * This is function input detail information about cong dan * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param actionRequest * @param actionResponse * @throws IOException * @throws PortletException * @throws PortalException * @throws SystemException * @throws ParseException */ public void inputDetail(ActionRequest actionRequest, ActionResponse actionResponse) throws IOException, PortletException, PortalException, SystemException, ParseException { // Get the object from session Map<String, String> userRequest = (Map<String, String>) actionRequest.getPortletSession() .getAttribute("USER_REQUEST_OBJECT"); // Get all parameters from request String hoCongDan = ParamUtil.getString(actionRequest, "ho").trim().toUpperCase(); userRequest.put("HOCONGDAN", hoCongDan); String tenDem = ParamUtil.getString(actionRequest, "dem").trim().toUpperCase(); userRequest.put("TENDEM", tenDem); String tenCongDan = ParamUtil.getString(actionRequest, "ten").trim().toUpperCase(); userRequest.put("TENCONGDAN", tenCongDan); String soCmnd = ParamUtil.getString(actionRequest, "soCmnd").trim(); userRequest.put("SOCMND", soCmnd); String ngayCapCmnd = ParamUtil.getString(actionRequest, "ngayCapCmnd").trim(); userRequest.put("NGAYCAPCMND", ngayCapCmnd); String noiCapCmnd = ParamUtil.getString(actionRequest, "noiCapCmnd").trim(); if (Validator.isNotNull(noiCapCmnd)) { userRequest.put("IDNOICAPCMND", noiCapCmnd); } String email = ParamUtil.getString(actionRequest, "email").trim(); userRequest.put("EMAIL", email); // String soHoChieu = ParamUtil.getString(actionRequest, "soHoChieu").trim(); // userRequest.put("SOHOCHIEU", soHoChieu); // // String ngayCapHoChieu = ParamUtil.getString(actionRequest, "ngayCapHoChieu"); // userRequest.put("NGAYCAPHOCHIEU", ngayCapHoChieu); // // String noiCapHoChieu = ParamUtil.getString(actionRequest, "noiCapHoChieu").trim(); // // If the data is not submitted from client, keep the original value from the object in session // if ( Validator.isNotNull(noiCapHoChieu)) { // userRequest.put("IDNOICAPHOCHIEU", noiCapHoChieu); // } // // String ngayHetHanHoChieu = ParamUtil.getString(actionRequest, "ngayHetHanHoChieu"); // userRequest.put("NGAYHETHANHOCHIEU", ngayHetHanHoChieu); // // String ghiChuHoChieu = ParamUtil.getString(actionRequest, "ghiChuHoChieu").trim(); // userRequest.put("GHICHUHOCHIEU", ghiChuHoChieu); String gioiTinh = ParamUtil.getString(actionRequest, "gioiTinh"); if (Validator.isNotNull(gioiTinh)) { userRequest.put("IDGIOITINH", gioiTinh); } String danToc = ParamUtil.getString(actionRequest, "danToc"); if (Validator.isNotNull(danToc)) { userRequest.put("IDDANTOC", danToc); } String tonGiao = ParamUtil.getString(actionRequest, "tonGiao"); if (Validator.isNotNull(tonGiao)) { userRequest.put("IDTONGIAO", tonGiao); } String quocTich = ParamUtil.getString(actionRequest, "quocTich"); if (Validator.isNotNull(quocTich)) { userRequest.put("IDQUOCTICH", String.valueOf(org.oep.cmon.Constants.VIETNAM)); } String ngaySinh = ParamUtil.getString(actionRequest, "ngaySinh"); userRequest.put("NGAYSINH", ngaySinh); // String dtCoDinh = ParamUtil.getString(actionRequest, "dtCoDinh").trim(); // userRequest.put("DIENTHOAICODINH", dtCoDinh); // // String dtDiDong = ParamUtil.getString(actionRequest, "dtDiDong").trim(); // userRequest.put("DIENTHOAIDIDONG", dtDiDong); // // String trinhDoHocVan = ParamUtil.getString(actionRequest, "trinhDoHocVan"); // if ( Validator.isNotNull(trinhDoHocVan)) { // userRequest.put("IDTRINHDOHOCVAN", trinhDoHocVan); // } // // String soBhyt = ParamUtil.getString(actionRequest, "soBhyt").trim(); // userRequest.put("SOBAOHIEMYTE", soBhyt); // // String ngheNghiep = ParamUtil.getString(actionRequest, "ngheNghiep"); // if ( Validator.isNotNull(ngheNghiep)) { // userRequest.put("IDNGHENGHIEP", ngheNghiep); // } // // String trinhDoChuyenMon = ParamUtil.getString(actionRequest, "trinhDoChuyenMon"); // if ( Validator.isNotNull(trinhDoChuyenMon)) { // userRequest.put("IDTRINHDOCHUYENMON", trinhDoChuyenMon); // } // // String tinhTrangHonNhan = ParamUtil.getString(actionRequest, "tinhTrangHonNhan"); // if ( Validator.isNotNull(tinhTrangHonNhan)) { // userRequest.put("IDTINHTRANGHONNHAN", tinhTrangHonNhan); // } // String tinhNoiSinh = ParamUtil.getString(actionRequest, "tinhNoiSinh"); // if ( Validator.isNotNull(tinhNoiSinh)) { // userRequest.put("IDTINHTHANHNOISINH", tinhNoiSinh); // } // // String huyenNoiSinh = ParamUtil.getString(actionRequest, "huyenNoiSinh"); // if ( Validator.isNotNull(huyenNoiSinh)) { // userRequest.put("IDQUANHUYENNOISINH", huyenNoiSinh); // } // // String xaNoiSinh = ParamUtil.getString(actionRequest, "xaNoiSinh"); // if ( Validator.isNotNull(xaNoiSinh)) { // userRequest.put("IDPHUONGXANOISINH", xaNoiSinh); // } // // String motaNoisinh = ParamUtil.getString(actionRequest, "motaNoisinh").trim(); // userRequest.put("MOTADIACHINOISINH", motaNoisinh); String tinhThuongTru = ParamUtil.getString(actionRequest, "tinhThuongTru"); if (Validator.isNotNull(tinhThuongTru)) { userRequest.put("IDTINHTHANHTHUONGTRU", tinhThuongTru); } String huyenThuongTru = ParamUtil.getString(actionRequest, "huyenThuongTru"); if (Validator.isNotNull(huyenThuongTru)) { userRequest.put("IDQUANHUYENTHUONGTRU", huyenThuongTru); } String xaThuongTru = ParamUtil.getString(actionRequest, "xaThuongTru"); if (Validator.isNotNull(xaThuongTru)) { userRequest.put("IDPHUONGXATHUONGTRU", xaThuongTru); } String motaThuongTru = ParamUtil.getString(actionRequest, "motaThuongTru").trim(); userRequest.put("MOTADIACHITHUONGTRU", motaThuongTru); // // String tinhHienTai = ParamUtil.getString(actionRequest, "tinhHienTai"); // if ( Validator.isNotNull(tinhHienTai)) { // userRequest.put("IDTINHTHANHHIENTAI", tinhHienTai); // } // // String huyenHienTai = ParamUtil.getString(actionRequest, "huyenHienTai"); // if ( Validator.isNotNull(huyenHienTai)) { // userRequest.put("IDQUANHUYENHIENTAI", huyenHienTai); // } // // String xaHienTai = ParamUtil.getString(actionRequest, "xaHienTai"); // if ( Validator.isNotNull(xaHienTai)) { // userRequest.put("IDPHUONGXAHIENTAI", xaHienTai); // } // String motaDiachiHienTai = ParamUtil.getString(actionRequest, "motaDiachiHienTai").trim(); // userRequest.put("MOTADIACHIHIENTAI", motaDiachiHienTai); // // String soHoKhau = ParamUtil.getString(actionRequest, "soHoKhau").trim(); // userRequest.put("SOHOKHAU", soHoKhau); // // String chuHo = ParamUtil.getString(actionRequest, "chuHo"); // userRequest.put("CHUHO", chuHo); // // String mstCaNhan = ParamUtil.getString(actionRequest, "mstCaNhan").trim(); // userRequest.put("MASOTHUECANHAN", mstCaNhan); // // String quanHeChuHo = ParamUtil.getString(actionRequest, "quanHeChuHo"); // if ( Validator.isNotNull(quanHeChuHo)) { // userRequest.put("IDQUANHE", quanHeChuHo); // } // Set the data back to session actionRequest.getPortletSession().setAttribute("USER_REQUEST_OBJECT", userRequest); PortletConfig portletConfig = (PortletConfig) actionRequest .getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG); SessionMessages.add(actionRequest, portletConfig.getPortletName() + SessionMessages.KEY_SUFFIX_HIDE_DEFAULT_ERROR_MESSAGE); // BinhNT add 2013-12-22 String reloadcapchar = ParamUtil.getString(actionRequest, "reloadcapchar").trim(); if (reloadcapchar.trim().compareTo("reloadcapchar") == 0) { String redirectUrl = ParamUtil.getString(actionRequest, "redirectUrl"); actionResponse.sendRedirect(redirectUrl); return; } // // End BinhNT Add 2013-12-22 // Validate captcha if (!CheckCaptchaUtil.isTrue(actionRequest, "captcha")) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.captcha"); } // Check Ho cong dan if (Validator.isNull(hoCongDan)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.hoCongDan"); } // Check ten cong dan if (Validator.isNull(tenCongDan)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.tenCongDan"); } // Check so cmnd if (Validator.isNull(soCmnd) || !Validator.isNumber(soCmnd)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.soCmnd"); } // Check ngay cap CMND if (Validator.isNull(ngayCapCmnd)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.ngayCapCmnd"); } long noiCapCmnd1 = ParamUtil.getLong(actionRequest, "noiCapCmnd"); // Check noi cap cmnd if (noiCapCmnd1 == 0) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.noiCapCmnd"); } // Check email // if (Validator.isNull(email)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.email"); // } if (soCmnd.trim().length() < 9 || soCmnd.trim().length() > 12) { SessionErrors.add(actionRequest, "err.soCmndVoPhaiNamTrongKhoangTuChinDenMuoiHaiChuSo"); } // Check email if (!Validator.isEmailAddress(email)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.email"); } // Check gioi tinh if (Validator.isNull(gioiTinh)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.gioiTinh"); } // Check dan toc // if (Validator.isNull(danToc)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.danToc"); // } // // // Check ton giao // if (Validator.isNull(tonGiao)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.tonGiao"); // } // // // Check quoc tich // if (Validator.isNull(quocTich)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.quocTich"); // } // // Check ngay sinh if (Validator.isNull(ngaySinh)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.ngaySinh"); } // Check tinh trang hon nhan // if (Validator.isNull(tinhTrangHonNhan)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.tinhTrangHonNhan"); // } // // // Check tinh noi sinh // if (Validator.isNull(tinhNoiSinh)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.tinhNoiSinh"); // } // // // Check huyen noi sinh // if (Validator.isNull(huyenNoiSinh)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.huyenNoiSinh"); // } // // // Check phuong xa noi sinh // if (Validator.isNull(xaNoiSinh)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.xaNoiSinh"); // } // Check tinh thuong tru if (Validator.isNull(tinhThuongTru)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.tinhThuongTru"); } // Check huyen thuong tru if (Validator.isNull(huyenThuongTru)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.huyenThuongTru"); } // Check xa thuong tru if (Validator.isNull(xaThuongTru)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.xaThuongTru"); } // // // Check tinh noi o hien tai // if (Validator.isNull(tinhHienTai)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.tinhHienTai"); // } // // // Check huyen hien tai // if (Validator.isNull(huyenHienTai)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.huyenHienTai"); // } // // // Check xa hien tai // if (Validator.isNull(xaHienTai)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.xaHienTai"); // } // Check so ho khau // if (Validator.isNull(soHoKhau)) { // //SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.soHoKhau"); // } // Check chu ho // if (Validator.isNull(chuHo)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.chuHo"); // } // // // Check quan he voi chu ho // if (Validator.isNull(quanHeChuHo)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.quanHeChuHo"); // } // Check mo ta dia chi noi sinh // if (Validator.isNull(motaNoisinh)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.motaNoiSinh"); // } // Check mo ta dia chi thuong tru if (Validator.isNull(motaThuongTru)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.motaThuongTru"); } // Check mo ta dia chi hien tai // if (Validator.isNull(motaDiachiHienTai)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.motaDiachiHienTai"); // } // In case there's error String redirectUrl = ParamUtil.getString(actionRequest, "redirectUrl"); if (!SessionErrors.isEmpty(actionRequest)) { actionResponse.sendRedirect(redirectUrl); return; } // Check data against DB // Validate birth date DateFormat df = new SimpleDateFormat(DATE_FORMAT); Date birthDate = null; df.setLenient(false); try { birthDate = df.parse(ngaySinh); } catch (Exception e) { // Error never happen so this exception will be swallow } if (birthDate.compareTo(new Date()) > 0) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.ngaySinh.greaterThanCurrent"); } // Check if in DB, there's already user request that not processed yet // if ( this.requestExists(soCmnd)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.requestExists"); // } List<CongDan> congDan = CongDanLocalServiceUtil.findByEmail(email); if (congDan.size() > 0) { if (this.cmndExists(soCmnd)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.requestExists"); } // Check email if exists in CSMS cong dan if (this.emailExistsInCongDan(email)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.email.alreadyOwned"); } } if (!SessionErrors.isEmpty(actionRequest)) { actionResponse.sendRedirect(redirectUrl); return; } // Check if citizen exists or not //String maCongDan = this.citizenExists(hoCongDan, tenDem, tenCongDan, soCmnd, ngaySinh); String maCongDan = this.congdanExists(soCmnd, ngaySinh); // Generate authentication code //String authCode = AuthenticateCodeUtil.generateAuthCode(); String authCode = ParamUtil.getString(actionRequest, "authCode"); // Update yeu cau dang ky to DB //long reqId = this.createUserRequest(maCongDan, authCode, userRequest, actionRequest); this.createAccountRequest(maCongDan, authCode, userRequest, actionRequest); // Update profile picture //this.updateAnhChanDung(reqId, actionRequest); actionRequest.getPortletSession().removeAttribute("PROFILE_PIC"); actionRequest.getPortletSession().removeAttribute("USER_REQUEST_OBJECT"); String accountCreationUrl = ParamUtil.getString(actionRequest, "accountCreationUrl"); accountCreationUrl = accountCreationUrl.replace("DUMMY_AUTH_CODE", authCode); accountCreationUrl.replace("Userregistrationportlet_WAR_cmonappportlet", ""); String uri = actionRequest.getScheme() + "://" + actionRequest.getServerName(); int port = actionRequest.getServerPort(); String portUrl = String.valueOf(port); String friendlyUrl = null; if (portUrl.equals("80")) { friendlyUrl = uri + "/web/guest/home?p_p_id=Userregistrationportlet_WAR_cmonappportlet&jspPage=" + URLEncoder.encode("/html/portlet/userreg/account_creation.jsp", "UTF-8") + "&authCode=" + authCode; } else { friendlyUrl = uri + ":" + portUrl + "/web/guest/home?p_p_id=Userregistrationportlet_WAR_cmonappportlet&jspPage=" + URLEncoder.encode("/html/portlet/userreg/account_creation.jsp", "UTF-8") + "&authCode=" + authCode; } // Send email and redirect if (Validator.isNotNull(maCongDan)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.email.alreadyOwned"); // Send email here //this.sendAccountConfirmationEmail(hoCongDan, tenDem, tenCongDan, accountCreationUrl, email, uri); // Redirect to success page //String accountRegisterSuccessUrl = ParamUtil.getString(actionRequest, "accountRegisterSuccessUrl"); // Redirect to account register success page // actionResponse.sendRedirect(accountRegisterSuccessUrl); //return; } // Send email incase of register both citizen and account //this.sendCitizenConfirmationEmail(hoCongDan, tenDem, tenCongDan, friendlyUrl, email, uri); String friendlyUrl1 = ParamUtil.getString(actionRequest, "friendlyUrl"); this.sendCitizenConfirmationEmail(hoCongDan, tenDem, tenCongDan, friendlyUrl1, email, uri, actionRequest); // Redirect to success URL String citizenRegisterSuccessUrl = ParamUtil.getString(actionRequest, "citizenRegisterSuccessUrl"); actionResponse.sendRedirect(citizenRegisterSuccessUrl); //actionResponse.setRenderParameter("jspPage", citizenRegisterSuccessUrl); //actionResponse.setRenderParameter("emailCongDan", email); } /** * Update anh chan dung * * @param reqId * @param actionRequest * @throws SystemException * @throws PortalException */ // private void updateAnhChanDung(long reqId, ActionRequest actionRequest) throws SystemException, PortalException { // byte[] imgBytes = (byte[])actionRequest.getPortletSession().getAttribute("PROFILE_PIC"); // // if ( imgBytes == null || imgBytes.length < 1 ){ // return; // } // // AnhChanDungYeuCauDangKyCongDan anh = AnhChanDungYeuCauDangKyCongDanLocalServiceUtil.getAnhChanDungYeuCauDangKyCongDan(reqId); // // anh.setAnhChanDung(imgBytes); // // AnhChanDungYeuCauDangKyCongDanLocalServiceUtil.updateAnhChanDungYeuCauDangKyCongDan(anh); // } /** * This is function create user request * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param maCongDan * @param authCode * @param userRequest * @param actionRequest * @throws PortalException * @throws SystemException * @throws ParseException * @return long */ private long createUserRequest(String maCongDan, String authCode, Map<String, String> userRequest, ActionRequest actionRequest) throws PortalException, SystemException, ParseException { YeuCauDangKyCongDan yeuCau = new YeuCauDangKyCongDanClp(); yeuCau.setId(CounterLocalServiceUtil.increment(CSMS_YEUCAUDANGKYCONGDAN_SEQUENCE)); String ho = userRequest.get("HOCONGDAN"); yeuCau.setHoCongDan(ho); String tenDem = userRequest.get("TENDEM"); yeuCau.setTenDem(tenDem); String ten = userRequest.get("TENCONGDAN"); yeuCau.setTenCongDan(ten); StringBuilder fullName = new StringBuilder(); fullName.append(ho); if (!Validator.isNull(tenDem)) { if (fullName.length() > 0) { fullName.append(" "); } fullName.append(tenDem); } if (!Validator.isNull(ten)) { if (fullName.length() > 0) { fullName.append(" "); } fullName.append(ten); } yeuCau.setHoVaTen(fullName.toString()); yeuCau.setSoCmnd(userRequest.get("SOCMND")); DateFormat df = new SimpleDateFormat(DATE_FORMAT); df.setLenient(false); yeuCau.setNgayCapCmnd(df.parse(userRequest.get("NGAYCAPCMND"))); yeuCau.setIDNoiCapCmnd(Long.parseLong(userRequest.get("IDNOICAPCMND"))); yeuCau.setGhiChuCmnd(userRequest.get("GHICHUCMND")); yeuCau.setEmail(userRequest.get("EMAIL")); yeuCau.setSoHoChieu(userRequest.get("SOHOCHIEU")); if (Validator.isNotNull(userRequest.get("NGAYCAPHOCHIEU"))) { yeuCau.setNgayCapHoChieu(df.parse(userRequest.get("NGAYCAPHOCHIEU"))); } yeuCau.setIDNoiCapHoChieu((Long.parseLong(userRequest.get("IDNOICAPHOCHIEU")))); if (Validator.isNotNull(userRequest.get("NGAYHETHANHOCHIEU"))) { yeuCau.setNgayHetHanHoChieu(df.parse(userRequest.get("NGAYHETHANHOCHIEU"))); } yeuCau.setGhiChuHoChieu(userRequest.get("GHICHUHOCHIEU")); yeuCau.setGioiTinh(Integer.parseInt(userRequest.get("IDGIOITINH"))); yeuCau.setIDDanToc(Long.parseLong(userRequest.get("IDDANTOC"))); yeuCau.setIDTonGiao(Long.parseLong(userRequest.get("IDTONGIAO"))); yeuCau.setIDQuocTich(Long.parseLong(userRequest.get("IDQUOCTICH"))); yeuCau.setNgaySinh(df.parse(userRequest.get("NGAYSINH"))); yeuCau.setDienThoaiCoDinh(userRequest.get("DIENTHOAICODINH")); yeuCau.setDienThoaiDiDong(userRequest.get("DIENTHOAIDIDONG")); yeuCau.setIDTrinhDoHocVan(Long.parseLong(userRequest.get("IDTRINHDOHOCVAN"))); yeuCau.setSoBaoHiemYte(userRequest.get("SOBAOHIEMYTE")); yeuCau.setMaSoThueCaNhan(userRequest.get("MASOTHUECANHAN")); yeuCau.setIDNgheNghiep(Long.parseLong(userRequest.get("IDNGHENGHIEP"))); yeuCau.setIDTrinhDoChuyenMon(Long.parseLong(userRequest.get("IDTRINHDOCHUYENMON"))); yeuCau.setTinhTrangHonNhan(Long.parseLong(userRequest.get("IDTINHTRANGHONNHAN"))); yeuCau.setIDTinhThanhNoiSinh(Long.parseLong(userRequest.get("IDTINHTHANHNOISINH"))); yeuCau.setIDQuanHuyenNoiSinh(Long.parseLong(userRequest.get("IDQUANHUYENNOISINH"))); yeuCau.setIDPhuongXaNoiSinh(Long.parseLong(userRequest.get("IDPHUONGXANOISINH"))); yeuCau.setMoTaDiaChiNoiSinh(userRequest.get("MOTADIACHINOISINH")); yeuCau.setIDTinhThanhThuongTru(Long.parseLong(userRequest.get("IDTINHTHANHTHUONGTRU"))); yeuCau.setIDQuanHuyenThuongTru(Long.parseLong(userRequest.get("IDQUANHUYENTHUONGTRU"))); yeuCau.setIDPhuongXaThuongTru(Long.parseLong(userRequest.get("IDPHUONGXATHUONGTRU"))); yeuCau.setMoTaDiaChiThuongTru(userRequest.get("MOTADIACHITHUONGTRU")); yeuCau.setIDTinhThanhHienTai(Long.parseLong(userRequest.get("IDTINHTHANHHIENTAI"))); yeuCau.setIDQuanHuyenHienTai(Long.parseLong(userRequest.get("IDQUANHUYENHIENTAI"))); yeuCau.setIDPhuongXaHienTai(Long.parseLong(userRequest.get("IDPHUONGXAHIENTAI"))); yeuCau.setMoTaDiaChiHienTai(userRequest.get("MOTADIACHIHIENTAI")); yeuCau.setSoHoKhau(userRequest.get("SOHOKHAU")); yeuCau.setChuHo(Integer.parseInt(userRequest.get("CHUHO"))); yeuCau.setIDQuanHe(Long.parseLong(userRequest.get("IDQUANHE"))); yeuCau.setTrangThaiYeuCau(0); // Endorsed if (Validator.isNull(maCongDan)) { yeuCau.setLoaiYeuCau(ACCOUNT_AND_CITIZEN_TYPE); // 0: register citizen and account } else { yeuCau.setLoaiYeuCau(ACCOUNT_ONLY_TYPE); // 1: Generate account immediately } yeuCau.setTrangThaiYeuCau(0); // 0: Newly yeuCau.setXoa(0); Date currentDate = new Date(); yeuCau.setNgayYeuCau(currentDate); yeuCau.setNgayTao(currentDate); yeuCau.setNgaySua(currentDate); User currentUser = PortalUtil.getUser(actionRequest); if (currentUser != null) { yeuCau.setNguoiTao(currentUser.getFullName()); yeuCau.setNguoiSua(currentUser.getFullName()); } else { yeuCau.setNguoiTao("DUMMY"); yeuCau.setNguoiSua("DUMMY"); } yeuCau.setMaCongDan(maCongDan); yeuCau.setMaXacNhan(authCode); // Insert to DB YeuCauDangKyCongDanLocalServiceUtil.addYeuCauDangKyCongDan(yeuCau); return yeuCau.getId(); } /** * This is function create user request * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param ho * @param dem * @param ten * @param url * @param email * @param uri * @throws IOException */ private void sendAccountConfirmationEmail(String ho, String dem, String ten, String url, String email, String uri) throws IOException { // Send email AccountCreationRequestMail mail = new AccountCreationRequestMail(); mail.setEmail(email); mail.setUrl(url); mail.setUri(uri); mail.setFullName(ho + StringPool.SPACE + dem + StringPool.SPACE + ten); // Send the email mail.send(); } /** * This is function send citizen confirmation email * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param ho * @param dem * @param ten * @param url * @param email * @param uri * @param request * @throws IOException */ private void sendCitizenConfirmationEmail(String ho, String dem, String ten, String url, String email, String uri, ActionRequest request) throws IOException { // Send email CitizenCreationRequestMail mail = new CitizenCreationRequestMail(); mail.setEmail(email); mail.setUrl(url); mail.setUri(uri); mail.setFullName(ho + StringPool.SPACE + dem + StringPool.SPACE + ten); // Send the email mail.send(email, request); } /** * This is function insert account request * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param maCongDan * @param authCode * @param userRequest * @param request * @throws SystemException * @throws ParseException * @throws PortalException */ private void createAccountRequest(String maCongDan, String authCode, Map<String, String> userRequest, ActionRequest request) throws SystemException, ParseException, PortalException { YeuCauDangKyCongDan yeuCau = new YeuCauDangKyCongDanClp(); yeuCau.setId(CounterLocalServiceUtil.increment(CSMS_YEUCAUDANGKYCONGDAN_SEQUENCE)); Date currentDate = new Date(); yeuCau.setNgayYeuCau(currentDate); String ho = userRequest.get("HOCONGDAN"); yeuCau.setHoCongDan(ho); String tenDem = userRequest.get("TENDEM"); yeuCau.setTenDem(tenDem); String ten = userRequest.get("TENCONGDAN"); yeuCau.setTenCongDan(ten); StringBuilder fullName = new StringBuilder(); fullName.append(ho); if (!Validator.isNull(tenDem)) { if (fullName.length() > 0) { fullName.append(" "); } fullName.append(tenDem); } if (!Validator.isNull(ten)) { if (fullName.length() > 0) { fullName.append(" "); } fullName.append(ten); } yeuCau.setHoVaTen(fullName.toString()); yeuCau.setSoCmnd(userRequest.get("SOCMND")); yeuCau.setEmail(userRequest.get("EMAIL")); DateFormat df = new SimpleDateFormat(DATE_FORMAT); df.setLenient(false); Date birthDay = df.parse(userRequest.get("NGAYSINH")); yeuCau.setNgaySinh(birthDay); yeuCau.setLoaiYeuCau(ACCOUNT_AND_CITIZEN_TYPE); // 1: Generate account immediately yeuCau.setTrangThaiYeuCau(0); // 0: Newly yeuCau.setXoa(0); yeuCau.setNgayTao(currentDate); yeuCau.setNgaySua(currentDate); User currentUser = PortalUtil.getUser(request); if (currentUser != null) { yeuCau.setNguoiTao(currentUser.getFullName()); yeuCau.setNguoiSua(currentUser.getFullName()); } else { yeuCau.setNguoiTao("DUMMY"); yeuCau.setNguoiSua("DUMMY"); } yeuCau.setMaCongDan(maCongDan); yeuCau.setMaXacNhan(authCode); // ngaySinh - String String ngayCapCmnd = ParamUtil.getString(request, "ngayCapCmnd").trim(); yeuCau.setNgayCapCmnd(FormatUtil.parseStringToDate(ngayCapCmnd)); // soCmnd - String long noiCapCmnd = ParamUtil.getLong(request, "noiCapCmnd"); yeuCau.setIDNoiCapCmnd(noiCapCmnd); // gioiTinh - String int gioiTinh = ParamUtil.getInteger(request, "gioiTinh"); yeuCau.setGioiTinh(gioiTinh); // gioiTinh - String long danToc = ParamUtil.getLong(request, "danToc"); yeuCau.setIDDanToc(danToc); // tonGiao - String long tonGiao = ParamUtil.getLong(request, "tonGiao"); yeuCau.setIDTonGiao(tonGiao); yeuCau.setIDQuocTich(org.oep.cmon.Constants.VIETNAM); // tinhThuongTru - String long tinhThuongTru = ParamUtil.getLong(request, "tinhThuongTru"); yeuCau.setIDTinhThanhThuongTru(tinhThuongTru); // huyenThuongTru - String long huyenThuongTru = ParamUtil.getLong(request, "huyenThuongTru"); yeuCau.setIDQuanHuyenThuongTru(huyenThuongTru); // xaThuongTru - String long xaThuongTru = ParamUtil.getLong(request, "xaThuongTru"); yeuCau.setIDPhuongXaThuongTru(xaThuongTru); // motaThuongTru - String String motaThuongTru = ParamUtil.getString(request, "motaThuongTru").trim(); yeuCau.setMoTaDiaChiThuongTru(motaThuongTru); // Insert to DB YeuCauDangKyCongDanLocalServiceUtil.addYeuCauDangKyCongDan(yeuCau); } /** * This is function check if cong dan exixts * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param ho * @param dem * @param ten * @param soCmnd * @param ngaySinh * @throws ParseException * @return String */ private String citizenExists(String ho, String dem, String ten, String soCmnd, String ngaySinh) throws ParseException { DateFormat df = new SimpleDateFormat(DATE_FORMAT); df.setLenient(false); Date birthDay = df.parse(ngaySinh); ho = ho.toUpperCase(); dem = dem.toUpperCase(); ten = ten.toUpperCase(); // Check in database if there's existing person with the same birth day and province code DynamicQuery queryCongDan = DynamicQueryFactoryUtil.forClass(CongDan.class); queryCongDan = queryCongDan.add(PropertyFactoryUtil.forName("ngaySinh").eq(birthDay)); //queryCongDan = queryCongDan.add(PropertyFactoryUtil.forName("ho").eq(ho)); //queryCongDan = queryCongDan.add(PropertyFactoryUtil.forName("dem").eq(dem)); //queryCongDan = queryCongDan.add(PropertyFactoryUtil.forName("ten").eq(ten)); queryCongDan = queryCongDan.add(PropertyFactoryUtil.forName("soCmnd").eq(soCmnd)); List<CongDan> results = null; try { results = CongDanLocalServiceUtil.dynamicQuery(queryCongDan); } catch (SystemException e) { e.printStackTrace(); } if (results == null || results.size() < 1) { return StringPool.BLANK; } // Return the id return (results.get(0)).getMa(); } /** * This is function check if cong dan exixts * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param soCmnd * @param ngaySinh * @throws ParseException * @return String */ private String congdanExists(String soCmnd, String ngaySinh) throws ParseException { DateFormat df = new SimpleDateFormat(DATE_FORMAT); df.setLenient(false); Date birthDay = df.parse(ngaySinh); // Check in database if there's existing person with the same birth day and province code DynamicQuery queryCongDan = DynamicQueryFactoryUtil.forClass(CongDan.class); queryCongDan = queryCongDan.add(PropertyFactoryUtil.forName("ngaySinh").eq(birthDay)); queryCongDan = queryCongDan.add(PropertyFactoryUtil.forName("soCmnd").eq(soCmnd)); List<CongDan> results = null; try { results = CongDanLocalServiceUtil.dynamicQuery(queryCongDan); } catch (SystemException e) { e.printStackTrace(); } if (results == null || results.size() < 1) { return StringPool.BLANK; } // Return the id return (results.get(0)).getMa(); } /** * This is function check if email exixts * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new ** @param ho * @param dem * @param ten * @param soCmnd * @param ngaySinh * @param email * @throws SystemException * @return boolean */ private boolean emailExists(String ho, String dem, String ten, String soCmnd, String ngaySinh, String email) throws SystemException { if (Validator.isNull(email)) { return false; } // Query all cong dan with email List<CongDan> congDanLst = CongDanLocalServiceUtil.findByEmail(email); // Get the first one if (congDanLst.size() < 1) { return false; } ho = ho.toUpperCase(); dem = dem.toUpperCase(); ten = ten.toUpperCase(); CongDan congDan = congDanLst.get(0); DateFormat df = new SimpleDateFormat(DATE_FORMAT); String ngaySinhCd = df.format(congDan.getNgaySinh()); // Check if email exists if (email.equals(congDan.getEmail())) { // Check if email is owned by another person or not if (ho.equals(congDan.getHo()) && dem.equals(congDan.getDem()) && ten.equals(congDan.getTen()) && soCmnd.equals(congDan.getSoCmnd()) && ngaySinh.equals(ngaySinhCd)) { return false; } else { return true; } } return false; } /** * This is function check if email exixts in CongDan * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param email * @throws SystemException * @return boolean */ private boolean emailExistsInCongDan(String email) throws SystemException { if (Validator.isNull(email)) { return false; } // Query all cong dan with email List<CongDan> congDanLst = CongDanLocalServiceUtil.findByEmail(email); // Get the first one if (congDanLst.size() < 1) { return false; } CongDan congDan = congDanLst.get(0); _log.info("email trong csms_congdan:" + congDan.getEmail()); // Check if email exists if (email.equals(congDan.getEmail())) { // Check if email is owned by another person or not return true; } return false; } /** * This is function check request registration user already exists * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param soCmnd * @throws SystemException * @return boolean */ private boolean requestExists(String soCmnd) { // Query code request using keyword DynamicQuery query = DynamicQueryFactoryUtil.forClass(YeuCauDangKyCongDan.class); query = query.add(PropertyFactoryUtil.forName("TrangThaiYeuCau").eq(0)); query = query.add(PropertyFactoryUtil.forName("SoCmnd").eq(soCmnd)); List<YeuCauDangKyCongDan> results = null; try { results = YeuCauDangKyCongDanLocalServiceUtil.dynamicQuery(query); } catch (SystemException e) { e.printStackTrace(); } if (results != null && results.size() > 0) { return true; } return false; } /** * This is function check request registration user already exists * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param soCmnd * @return boolean */ private boolean cmndExists(String soCmnd) { // // Query code request using keyword // DynamicQuery query = DynamicQueryFactoryUtil.forClass(CongDan.class); // // query = query.add( PropertyFactoryUtil.forName("TrangThaiYeuCau").eq(0)); // // query = query.add( PropertyFactoryUtil.forName("SoCmnd").eq(soCmnd)); // _log.info("query: "+query); // // List<CongDan> results = null; // // // try { // results = CongDanLocalServiceUtil.dynamicQuery(query); // _log.info("query: "+query); // } catch (SystemException e) { // e.printStackTrace(); // } // // if ( results != null && results.size() > 0){ // return true; // } // // return false; if (Validator.isNull(soCmnd)) { return false; } // Query all cong dan with email List<CongDan> congDanLst = null; try { congDanLst = CongDanLocalServiceUtil.findByCMND(soCmnd); } catch (SystemException e) { // TODO Auto-generated catch block e.printStackTrace(); } // Get the first one if (congDanLst.size() < 1) { return false; } CongDan congDan = congDanLst.get(0); _log.info("so smnd trong csms_congdan:" + congDan.getSoCmnd()); // Check if email exists if (soCmnd.equals(congDan.getSoCmnd())) { // Check if email is owned by another person or not return true; } return false; } /** * This is function upload avatar method * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param actionRequest * @param actionResponse * @throws Exception */ public void uploadAvatar(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest); File file = uploadRequest.getFile("file"); byte[] imgBytes = ScaleImageUtil.scaleImage(file, 160, 160); // Store to session actionRequest.getPortletSession().setAttribute("PROFILE_PIC", imgBytes); actionResponse.setRenderParameter("jspPage", "/html/portlet/userreg/upload_avatar.jsp"); } /** * This is function get avatar method * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param actionRequest * @param actionResponse * @throws IOException * @throws PortletException */ public void getAvatar(ActionRequest actionRequest, ActionResponse actionResponse) throws IOException, PortletException { // Get image from session byte[] imgBytes = (byte[]) actionRequest.getPortletSession().getAttribute("PROFILE_PIC"); HttpServletResponse resp = PortalUtil.getHttpServletResponse(actionResponse); resp.setContentType("application/jpg"); ServletResponseUtil.write(resp, imgBytes); } /** * This is function Endorse * This function will handle event when user click to a link in mail * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param actionRequest * @param actionResponse * @throws Exception */ public void endorse(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { String jspErrPage = "/html/portlet/userreg/err_page.jsp"; String jspSuccessPage = "/html/portlet/userreg/success_page.jsp"; String authCode = ParamUtil.getString(actionRequest, "authCode"); // Check parameter if (Validator.isNull(authCode)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.endorse.err.request.notExists"); } // Check if yeu cau exists in DB List<YeuCauDangKyCongDan> yeuCauLst = YeuCauDangKyCongDanLocalServiceUtil.findByMaXacNhan(authCode); if (yeuCauLst.size() < 1) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.endorse.err.request.notExists"); } // Take the first record YeuCauDangKyCongDan yeuCau = yeuCauLst.get(0); // // Check if this request already processed // if ( yeuCau.getTrangThaiYeuCau() > 0) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.endorse.err.request.notExists"); // } // // // Redirect // if ( !SessionErrors.isEmpty(actionRequest)) { // // actionResponse.setRenderParameter("jspPage", jspErrPage); // // return; // } // Check loai yeu cau int type = yeuCau.getLoaiYeuCau(); if (type == ACCOUNT_AND_CITIZEN_TYPE) { yeuCau.setTrangThaiYeuCau(1); // 1: Email confirmed // Update the request YeuCauDangKyCongDanLocalServiceUtil.updateYeuCauDangKyCongDan(yeuCau); // Redirect actionResponse.setRenderParameter("jspPage", jspSuccessPage); //actionResponse.sendRedirect(jspSuccessPage); actionResponse.setRenderParameter("type", "0"); actionResponse.setRenderParameter("authCode", authCode); //return; } // Generate random password for user // String password = AuthenticateCodeUtil.generateAuthCode().toLowerCase(); // // EndorsementBs endorse = new EndorsementBs(actionRequest); // // String ho = yeuCau.getHoCongDan(); // String dem = yeuCau.getTenDem(); // String ten = yeuCau.getTenCongDan(); // // String fullName = ho + StringPool.SPACE + dem +StringPool.SPACE + ten; // String email = yeuCau.getEmail(); // Create LDAP user first // if ( ! endorse.createLDAPEntry(fullName, email, password)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.endorse.err.ldap"); // // actionResponse.setRenderParameter("jspPage", jspErrPage); // // return; // } // Create portal user // long userId = endorse.createPortalCitizenUser(yeuCau, password); // // DateFormat df = new SimpleDateFormat(DATE_FORMAT); // // String maCongDan = this.citizenExists(ho, dem, ten, yeuCau.getSoCmnd(), df.format(yeuCau.getNgaySinh())); // // Create citizen // endorse.createCitizen(yeuCau, userId, maCongDan); // // // Create data on cmon_taikhoan nguoidung // endorse.createTaiKhoan(userId, fullName, email, password); // // endorse.sendEmail(fullName, email, password); // // // Update flag // yeuCau.setTrangThaiYeuCau(2); // 2: Endorsed // // YeuCauDangKyCongDanLocalServiceUtil.updateYeuCauDangKyCongDan(yeuCau); // // // Redirect // actionResponse.setRenderParameter("jspPage", jspSuccessPage); // actionResponse.setRenderParameter("type", "1"); } /** * This is function save YeuCauDangKyCongDan * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param actionRequest * @param httpReq * @throws NumberFormatException * @throws Exception */ public void saveYeuCauDangKyCongDan(ActionRequest actionRequest, ActionResponse httpReq) throws NumberFormatException, Exception { String soCmnd = ParamUtil.getString(actionRequest, "soCmnd").trim(); String ngaySinh = ParamUtil.getString(actionRequest, "ngaySinh").trim(); // email - String String email = ParamUtil.getString(actionRequest, "email").trim(); // ho - String String ho = ParamUtil.getString(actionRequest, "ho").trim(); // email - String String dem = ParamUtil.getString(actionRequest, "dem").trim(); // ho - String String ten = ParamUtil.getString(actionRequest, "ten").trim(); if (validatorsYeuCauDangKyCongDan(actionRequest)) { saveYeuCauDangKyCongDanToDB(actionRequest, httpReq); String maCongDan = this.congdanExists(soCmnd, ngaySinh); // Generate authentication code String authCode = AuthenticateCodeUtil.generateAuthCode(); String accountCreationUrl = ParamUtil.getString(actionRequest, "accountCreationUrl"); accountCreationUrl = accountCreationUrl.replace("DUMMY_AUTH_CODE", authCode); String uri = actionRequest.getScheme() + "://" + actionRequest.getServerName(); // Send email and redirect if (Validator.isNotNull(maCongDan)) { // Send email here this.sendAccountConfirmationEmail(ho, dem, ten, accountCreationUrl, email, uri); // Redirect to success page String accountRegisterSuccessUrl = ParamUtil.getString(actionRequest, "accountRegisterSuccessUrl"); // Redirect to account register success page httpReq.sendRedirect(accountRegisterSuccessUrl); return; } // Send email incase of register both citizen and account this.sendCitizenConfirmationEmail(ho, dem, ten, accountCreationUrl, email, uri, actionRequest); // Redirect to success URL String citizenRegisterSuccessUrl = ParamUtil.getString(actionRequest, "citizenRegisterSuccessUrl"); httpReq.sendRedirect(citizenRegisterSuccessUrl); } else { httpReq.setRenderParameter("jspPage", "/html/portlet/userreg/input_detail_exist_congdan.jsp"); } PortletConfig portletConfig = (PortletConfig) actionRequest .getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG); SessionMessages.add(actionRequest, portletConfig.getPortletName() + SessionMessages.KEY_SUFFIX_HIDE_DEFAULT_ERROR_MESSAGE); } /** * This is function validator YeuCauDangKyCongDan * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param actionRequest * @throws SystemException * @return boolean */ private static boolean validatorsYeuCauDangKyCongDan(ActionRequest actionRequest) throws SystemException { boolean valid = true; // Validate captcha if (!CheckCaptchaUtil.isTrue(actionRequest, "captcha")) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.captcha"); valid = false; } // Check Ho cong dan String ho = ParamUtil.getString(actionRequest, "ho").trim(); if (Validator.isNull(ho)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.hoCongDan"); valid = false; } // Check ten cong dan String ten = ParamUtil.getString(actionRequest, "ten").trim(); if (Validator.isNull(ten)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.tenCongDan"); valid = false; } // Check so cmnd String soCmnd = ParamUtil.getString(actionRequest, "soCmnd").trim(); if (Validator.isNull(soCmnd) || !Validator.isNumber(soCmnd)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.soCmnd"); valid = false; } // Check ngay cap CMND String ngayCapCmnd = ParamUtil.getString(actionRequest, "ngayCapCmnd").trim(); if (Validator.isNull(ngayCapCmnd)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.ngayCapCmnd"); valid = false; } // Check noi cap cmnd long noiCapCmnd = ParamUtil.getLong(actionRequest, "noiCapCmnd"); if (noiCapCmnd == 0) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.noiCapCmnd"); } // Check email // if (Validator.isNull(email)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.email"); // } if (soCmnd.trim().length() < 9 || soCmnd.trim().length() > 12) { SessionErrors.add(actionRequest, "err.soCmndVoPhaiNamTrongKhoangTuChinDenMuoiHaiChuSo"); valid = false; } // Check email String email = ParamUtil.getString(actionRequest, "email").trim(); if (!Validator.isEmailAddress(email)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.email"); valid = false; } // // Check gioi tinh // if (Validator.isNull(gioiTinh)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.gioiTinh"); // } // Check ngay sinh String ngaySinh = ParamUtil.getString(actionRequest, "ngaySinh").trim(); if (Validator.isNull(ngaySinh)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.ngaySinh"); valid = false; } String tinhThuongTru = ParamUtil.getString(actionRequest, "tinhThuongTru"); String huyenThuongTru = ParamUtil.getString(actionRequest, "huyenThuongTru"); String xaThuongTru = ParamUtil.getString(actionRequest, "xaThuongTru"); String motaThuongTru = ParamUtil.getString(actionRequest, "motaThuongTru").trim(); if (Validator.isNull(motaThuongTru)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.motaThuongTru"); valid = false; } if (Validator.isNull(tinhThuongTru)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.tinhThuongTru"); valid = false; } // Check huyen thuong tru if (Validator.isNull(huyenThuongTru)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.huyenThuongTru"); valid = false; } // Check xa thuong tru if (Validator.isNull(xaThuongTru)) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.xaThuongTru"); valid = false; } // Check data against DB // Validate birth date DateFormat df = new SimpleDateFormat(DATE_FORMAT); Date birthDate = null; df.setLenient(false); try { birthDate = df.parse(ngaySinh); } catch (Exception e) { // Error never happen so this exception will be swallow } if (birthDate.compareTo(new Date()) > 0) { SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.ngaySinh.greaterThanCurrent"); valid = false; } // Check if in DB, there's already user request that not processed yet // if ( this.requestExists(soCmnd)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.requestExists"); // } // // // Check email if exists in CSMS cong dan // if ( this.emailExistsInCongDan(email)) { // SessionErrors.add(actionRequest, "vn.dtt.cmon.userreg.form.input.err.email.alreadyOwned"); // } if (!valid) { FormatUtil.setParams(actionRequest); Iterator<String> error = SessionErrors.iterator(actionRequest); while (error.hasNext()) { _log.info("validate false :" + error.next()); } } return valid; } /** * This is function save YeuCauDangKyCongDan * Version: 1.0 * * History: * DATE AUTHOR DESCRIPTION * ------------------------------------------------- * 3-March-2013 Nam Dinh Create new * @param resourceRequest * @param httpReq * @throws NumberFormatException * @throws Exception * @return YeuCauDangKyCongDan */ public static YeuCauDangKyCongDan saveYeuCauDangKyCongDanToDB(ActionRequest resourceRequest, ActionResponse httpReq) throws NumberFormatException, Exception { long idYeuCauDangKyCongDan = ParamUtil.getLong(resourceRequest, "yeuCauDangKyCongDanId"); YeuCauDangKyCongDan yeuCauDangKyCongDan = null; if (idYeuCauDangKyCongDan > 0) { yeuCauDangKyCongDan = YeuCauDangKyCongDanLocalServiceUtil .fetchYeuCauDangKyCongDan(idYeuCauDangKyCongDan); } else { yeuCauDangKyCongDan = new YeuCauDangKyCongDanClp(); yeuCauDangKyCongDan.setId(CounterLocalServiceUtil.increment(CSMS_YEUCAUDANGKYCONGDAN_SEQUENCE)); } // email - String String email = ParamUtil.getString(resourceRequest, "email").trim(); yeuCauDangKyCongDan.setEmail(email); // ho - String String ho = ParamUtil.getString(resourceRequest, "ho").trim(); yeuCauDangKyCongDan.setHoCongDan(ho); // email - String String dem = ParamUtil.getString(resourceRequest, "dem").trim(); yeuCauDangKyCongDan.setTenDem(dem); // ho - String String ten = ParamUtil.getString(resourceRequest, "ten").trim(); yeuCauDangKyCongDan.setTenCongDan(ten); // ngaySinh - String String ngaySinh = ParamUtil.getString(resourceRequest, "ngaySinh").trim(); yeuCauDangKyCongDan.setNgaySinh(FormatUtil.parseStringToDate(ngaySinh)); // soCmnd - String String soCmnd = ParamUtil.getString(resourceRequest, "soCmnd").trim(); yeuCauDangKyCongDan.setSoCmnd(soCmnd); // ngaySinh - String String ngayCapCmnd = ParamUtil.getString(resourceRequest, "ngayCapCmnd").trim(); yeuCauDangKyCongDan.setNgayCapCmnd(FormatUtil.parseStringToDate(ngayCapCmnd)); // soCmnd - String long noiCapCmnd = ParamUtil.getLong(resourceRequest, "noiCapCmnd"); yeuCauDangKyCongDan.setIDNoiCapCmnd(noiCapCmnd); // gioiTinh - String int gioiTinh = ParamUtil.getInteger(resourceRequest, "gioiTinh"); yeuCauDangKyCongDan.setGioiTinh(gioiTinh); // gioiTinh - String long danToc = ParamUtil.getLong(resourceRequest, "danToc"); yeuCauDangKyCongDan.setIDDanToc(danToc); // tonGiao - String long tonGiao = ParamUtil.getLong(resourceRequest, "tonGiao"); yeuCauDangKyCongDan.setIDTonGiao(tonGiao); // tinhThuongTru - String long tinhThuongTru = ParamUtil.getLong(resourceRequest, "tinhThuongTru"); yeuCauDangKyCongDan.setIDTinhThanhThuongTru(tinhThuongTru); // huyenThuongTru - String long huyenThuongTru = ParamUtil.getLong(resourceRequest, "huyenThuongTru"); yeuCauDangKyCongDan.setIDQuanHuyenThuongTru(huyenThuongTru); // xaThuongTru - String long xaThuongTru = ParamUtil.getLong(resourceRequest, "xaThuongTru"); yeuCauDangKyCongDan.setIDPhuongXaThuongTru(xaThuongTru); // motaThuongTru - String String motaThuongTru = ParamUtil.getString(resourceRequest, "motaThuongTru").trim(); yeuCauDangKyCongDan.setMoTaDiaChiThuongTru(motaThuongTru); if (idYeuCauDangKyCongDan > 0) { yeuCauDangKyCongDan = YeuCauDangKyCongDanLocalServiceUtil .updateYeuCauDangKyCongDan(yeuCauDangKyCongDan); } else { yeuCauDangKyCongDan = YeuCauDangKyCongDanLocalServiceUtil.addYeuCauDangKyCongDan(yeuCauDangKyCongDan); } return yeuCauDangKyCongDan; } }