org.oep.cmon.portlet.hosotructiep.HoSoTrucTiepPortlet.java Source code

Java tutorial

Introduction

Here is the source code for org.oep.cmon.portlet.hosotructiep.HoSoTrucTiepPortlet.java

Source

/*
 * 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.portlet.hosotructiep;

import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import javax.portlet.ResourceRequest;

import org.apache.commons.lang.StringUtils;
import org.oep.cmon.Constants;
import org.oep.cmon.dao.beans.congdan.CongDanImpl;
import org.oep.cmon.dao.beans.thongtinhoso.ThongTinHoSoImpl;
import org.oep.cmon.portlet.canbo2nhomthuctuc.CB2NTTFields;
import org.oep.cmon.portlet.cmon.TiepNhanHoSoPortlet;
import org.oep.cmon.portlet.hosolienthong.HSLTFields;
import org.oep.cmon.portlet.ipmslist.business.FormOfflineBusiness;
import org.oep.cmon.util.EgovUtil;
import org.oep.cmon.util.MaSoBienNhanUtil;
import org.oep.egovcore.language.BusinessMessagerUtil;
import org.oep.egovcore.portlet.AjaxResponse;
import org.oep.egovcore.util.DateTimeUtil;
import org.oep.egovcore.util.LiferayURL;
import org.oep.egovcore.util.VNNumberUtil;
import org.oep.egovcore.validate.Validator;
import org.oep.egovcore.validate.term.IsFilled;
import org.oep.egovcore.validate.term.IsNumber;
import org.oep.egovcore.validate.term.IsSelected;
import org.oep.egovcore.validate.term.datetime.IsDayMonthYear;
import org.oep.egovcore.validate.util.DateTimePairValidator;
import org.oep.sharedservice.cmon.provider.form.FormServiceImpl;

import org.oep.cmon.dao.beans.giaytodinhkemhoso.GiayToDinhKemHoSo;
import org.oep.cmon.dao.beans.thongtinhoso.ThongTinHoSo;
import org.oep.cmon.dao.beans.thongtinthutuc2coquan.ThongTinThuTuc2CoQuan;
import org.oep.cmon.dao.cc.model.CongChuc;
import org.oep.cmon.dao.cc.model.CongChuc2NhomThuTuc;
import org.oep.cmon.dao.cc.service.ChucVuLocalServiceUtil;
import org.oep.cmon.dao.cc.service.CongChuc2NhomThuTucLocalServiceUtil;
import org.oep.cmon.dao.cc.service.CongChucLocalServiceUtil;
import org.oep.cmon.dao.cd.model.CongDan;
import org.oep.cmon.dao.cd.service.CongDanLocalServiceUtil;
import org.oep.cmon.dao.dvc.model.ThuTucHanhChinh;
import org.oep.cmon.dao.dvc.service.ThuTucHanhChinhLocalServiceUtil;
import org.oep.cmon.dao.hosohcc.model.HoSoTTHCCong;
import org.oep.cmon.dao.hosohcc.model.HoSoTTHCCongClp;
import org.oep.cmon.dao.hosohcc.service.FileDinhKemLocalServiceUtil;
import org.oep.cmon.dao.hosohcc.service.HoSoTTHCCongLocalServiceUtil;
import org.oep.cmon.dao.qlhc.model.CoQuanQuanLy;
import org.oep.cmon.dao.qlhc.service.CoQuanQuanLyLocalServiceUtil;
import org.oep.cmon.dao.ttthanhtoan.model.ThongTinThanhToan;
import org.oep.cmon.dao.ttthanhtoan.model.ThongTinThanhToanClp;
import org.oep.cmon.dao.ttthanhtoan.service.ThongTinThanhToanLocalServiceUtil;
import org.oep.egovcore.sqlutil.QueryResult;

import com.liferay.counter.service.CounterLocalServiceUtil;
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.upload.UploadPortletRequest;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.util.PortalUtil;

/**
 * This is class HoSoTrucTiepPortlet
 * Version: 1.0
 *  
 * History: 
 *   DATE        AUTHOR      DESCRIPTION 
 *  ------------------------------------------------- 
 *  3-March-2013  Nam Dinh    Create new
 */
public class HoSoTrucTiepPortlet extends TiepNhanHoSoPortlet {

    /**
     * This is function serveThongTinHoSoThuTuc
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param ajaxResponse
     * @throws Exception
     */
    @Override
    public void serveThongTinHoSoThuTuc(ResourceRequest request, AjaxResponse ajaxResponse) throws Exception {

        long thuTucId = ParamUtil.getLong(request, HoSoFields.thuTucHanhChinhId),
                coQuanId = ParamUtil.getLong(request, HoSoFields.coQuanQuanLyId),
                hoSoId = ParamUtil.getLong(request, HoSoFields.hoSoId);

        boolean laBoSung = ParamUtil.getBoolean(request, HoSoFields.laBoSung);

        JSONObject thongTinThuTucJSON = null;
        JSONArray dsGiayToJSON = null;

        if (laBoSung) {
            HoSoTTHCCong hoSo = HoSoTTHCCongLocalServiceUtil.fetchHoSoTTHCCong(hoSoId);
            List<GiayToDinhKemHoSo> ds = FileDinhKemLocalServiceUtil.getDSGiayToKhiBoSungHoSo(hoSo);
            ThongTinHoSo thongTinHoSo = new ThongTinHoSoImpl(hoSo);
            thongTinThuTucJSON = HoSoJSON.thuTucCuaHoSo(thongTinHoSo);
            dsGiayToJSON = HoSoJSON.dsGiayToDinhKemHoSo(ds);
        } else {

            ThongTinThuTuc2CoQuan info = ThuTucHanhChinhLocalServiceUtil.fetchThongTinThuTuc2CoQuan(thuTucId,
                    coQuanId);

            List<GiayToDinhKemHoSo> ds = FileDinhKemLocalServiceUtil.getDSGiayToKhiTiepNhanHoSo(thuTucId);

            CongChuc canBo = EgovUtil.getCongChucDaDangNhap(PortalUtil.getUserId(request));

            boolean duocPhepEditCongDan = false;

            if (info != null) {
                CongChuc2NhomThuTuc cauHinh = CongChuc2NhomThuTucLocalServiceUtil
                        .fetchByCongChucAndNhomThuTuc(canBo.getId(), info.getNhomThuTucId());

                if (cauHinh != null) {
                    duocPhepEditCongDan = (cauHinh.getDuocPhepEditCongDan() == 1);
                }
            }

            thongTinThuTucJSON = HoSoJSON.thuTuc2CoQuan(info);
            thongTinThuTucJSON.put(CB2NTTFields.duocPhepEditCongDan, duocPhepEditCongDan);
            dsGiayToJSON = HoSoJSON.dsGiayToDinhKemHoSo(ds);
        }

        ajaxResponse.send(HoSoFields.thongTinThuTuc, thongTinThuTucJSON).send(HoSoFields.dsGiayToQuyDinh,
                dsGiayToJSON);
        ;
    }

    /**
     * This is function searchCongDan
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param ajaxResponse
     * @throws Exception
     */
    public void searchCongDan(ResourceRequest request, AjaxResponse ajaxResponse) throws Exception {
        QueryResult<org.oep.cmon.dao.beans.congdan.CongDan> queryResult = CongDanLocalServiceUtil.search(request);
        JSONArray dsCongDanJSON = JSONFactoryUtil.createJSONArray();
        for (org.oep.cmon.dao.beans.congdan.CongDan congDanBean : queryResult.getResult()) {
            dsCongDanJSON.put(HoSoJSON.congDan(congDanBean));
        }
        ajaxResponse.sendSearchResult(queryResult, dsCongDanJSON);
    }

    /**
     * This is function processTiepNhanTrucTiep
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param ajaxResponse
     * @throws Exception
     */
    public void processTiepNhanTrucTiep(UploadPortletRequest request, AjaxResponse ajaxResponse) throws Exception {

        if (!_validate(request, ajaxResponse)) {
            return;
        }

        // Luu thong tin tiep nhan truc tiep
        _saveInfo(request);

        long hoSoId = (Long) request.getAttribute(HSLTFields.hoSoId);
        int trangThaiHoSo = (Integer) request.getAttribute(HSLTFields.trangThaiHoSo);
        String maUngDung = (String) request.getAttribute(HSLTFields.maUngDung);

        // Upload file dinh kem
        _upload(request, hoSoId, trangThaiHoSo, maUngDung);

        // Chuyen den trang chi tiet giay bien nhan
        LiferayURL inBienNhanURL = HoSoBusinessUtil.getURLInBienNhan(request)
                .setParameter(HoSoFields.hoSoId, request.getAttribute(HoSoFields.hoSoId))
                .setParameter("backURL", ParamUtil.getString(request, "backURL"));

        ajaxResponse.redirect(inBienNhanURL.toString());
    }

    /**
     * This is function _saveInfo
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @throws PortalException
     * @throws SystemException
     */
    private void _saveInfo(UploadPortletRequest request) throws PortalException, SystemException {

        long hoSoId = ParamUtil.getLong(request, HoSoFields.hoSoId);
        boolean isNew = (hoSoId == 0L);

        ThuTucHanhChinh tthc = ThuTucHanhChinhLocalServiceUtil
                .fetchThuTucHanhChinh(ParamUtil.getLong(request, HoSoFields.thuTucHanhChinhId));
        CoQuanQuanLy cqql = CoQuanQuanLyLocalServiceUtil
                .fetchCoQuanQuanLy(ParamUtil.getLong(request, HoSoFields.coQuanQuanLyId));
        String email = PortalUtil.getUser(request).getEmailAddress();

        Date now = DateTimeUtil.getDateTimeNow();
        Date ngayNhanHoSo = DateTimeUtil.getRequestDate(request, HoSoFields.ngayNhanHoSo,
                HoSoFields.gioPhutNhanHoSo);
        if (ngayNhanHoSo == null) {
            ngayNhanHoSo = now;
        }

        HoSoTTHCCong hoSo = null;
        int trangThaiHoSo = Constants.HOSO_TTHC_CONG_TRANG_THAI_HOSO_MOI_TIEP_NHAN;
        String maUngDung;

        if (isNew) {
            String maSoBienNhan = MaSoBienNhanUtil.get(cqql.getMaCapSoBienNhan(), tthc.getMaDNG(), false);
            maUngDung = new FormServiceImpl().getMaUngDungTheoQuyTrinh(tthc.getId());
            long dvhcId = ParamUtil.getLong(request, HoSoFields.xaThuongTruId);
            if (dvhcId == 0L) {
                dvhcId = ParamUtil.getLong(request, HoSoFields.huyenThuongTruId);
            }
            long canBoTiepNhanId = ParamUtil.getLong(request, HoSoFields.canBoTiepNhanId);
            CongChuc canBoTiepNhan = CongChucLocalServiceUtil.fetchCongChuc(canBoTiepNhanId);

            CongDan congDanNop = CongDanLocalServiceUtil
                    .fetchCongDan(ParamUtil.getLong(request, HoSoFields.nguoiNopHoSoCongDanId));
            org.oep.cmon.dao.beans.congdan.CongDan nguoiNop = new CongDanImpl(congDanNop);

            int lePhi = (int) VNNumberUtil.toNum(ParamUtil.getString(request, HoSoFields.lePhiHoSo));
            int phi = (int) VNNumberUtil.toNum(ParamUtil.getString(request, HoSoFields.phiHoSo));

            hoSo = new HoSoTTHCCongClp();
            hoSoId = CounterLocalServiceUtil.increment(FormOfflineBusiness.CMON_HOSOTTHCCONG_SEQUENCE);
            hoSo.setId(hoSoId);
            hoSo.setMaSoHoSo(Long.toString(System.currentTimeMillis()));
            hoSo.setMaSoBienNhan(maSoBienNhan);
            hoSo.setNgayTao(now);
            hoSo.setNgaySua(now);
            hoSo.setNguoiTao(email);
            hoSo.setDaXoa(Constants.ACTIVE);
            hoSo.setThuTucHanhChinhId(tthc.getId());
            hoSo.setTenThuTucHanhChinh(tthc.getTen());
            hoSo.setMaUngDung(maUngDung);
            hoSo.setLoaiHoSo(Constants.LOAI_HO_SO_TRUC_TIEP);
            hoSo.setCongDanNopId(nguoiNop.getCongDanId());
            hoSo.setHoTenNguoiNopHoSo(ParamUtil.getString(request, HoSoFields.hoTenNguoiNopHoSo).trim());
            hoSo.setDiaChiThuongTruNguoiNop(ParamUtil.getString(request, HoSoFields.diaChiThuongTru).trim());
            hoSo.setDiaChiThuongTruNguoiNopId(dvhcId);
            hoSo.setSoDienThoaiCoDinhNguoiNop(ParamUtil.getString(request, HoSoFields.dienThoaiCoDinh).trim());
            hoSo.setSoDienThoaiDiDongNguoiNop(ParamUtil.getString(request, HoSoFields.dienThoaiDiDong).trim());
            hoSo.setEmailNguoiNop(ParamUtil.getString(request, HoSoFields.email).trim());
            hoSo.setChuSoHuu(ParamUtil.getString(request, HoSoFields.chuSoHuu).trim());
            hoSo.setDiaChiChuHoSo(ParamUtil.getString(request, HoSoFields.diaChiChuHoSo).trim());
            hoSo.setNgayNopHoSo(ngayNhanHoSo);
            hoSo.setNgayNopHoSoGoc(ngayNhanHoSo);
            hoSo.setNgayNhanHoSo(ngayNhanHoSo);
            hoSo.setCanBoTiepNhanId(canBoTiepNhanId);
            hoSo.setCanBoXuLyHienThoiId(canBoTiepNhanId);
            hoSo.setTenCanBoTiepNhan(canBoTiepNhan.getHoVaTen());
            hoSo.setChucVuCanBoTiepNhan(ChucVuLocalServiceUtil.getChucVu(canBoTiepNhan.getChucVuId()).getTen());
            hoSo.setLePhi(lePhi);
            hoSo.setPhiHoSo(phi);
            hoSo.setTrangThaiHoSo(trangThaiHoSo);
            hoSo.setNgayHenTraKetQua(
                    DateTimeUtil.getRequestDate(request, HoSoFields.ngayHenTraHoSo, HoSoFields.gioPhutHenTraHoSo));
            hoSo.setCoQuanTiepNhanId(cqql.getId());
            hoSo.setTenCoQuanTiepNhan(cqql.getTen());
            hoSo.setSoBoHoSo(ParamUtil.getInteger(request, HoSoFields.soBoHoSo));
            hoSo.setSoNgayXuLy(ParamUtil.getLong(request, HoSoFields.soNgayXuLy));
            hoSo.setMoTaThanhPhanHoSo(ParamUtil.getString(request, HoSoFields.moTaGiayToKhac));
            hoSo.setLienKetThanhPhanHoSo(ParamUtil.getString(request, HoSoFields.lienKetGiayToKhac));
            hoSo.setGhiChuGiayToDinhKem(ParamUtil.getString(request, HoSoFields.ghiChuFileDinhKem));
            hoSo.setGioiTinh((int) canBoTiepNhan.getGioiTinhId());
            hoSo.setDaDangKyNhanSMS(ParamUtil.getInteger(request, HoSoFields.daDangKyNhanSMS));
            hoSo.setDaDangKyChuyenPhatNhanh(ParamUtil.getInteger(request, HoSoFields.daDangKyChuyenPhatNhanh));
            HoSoTTHCCongLocalServiceUtil.addHoSoTTHCCong(hoSo);

            // Luu phi va le phi
            ThongTinThanhToan thanhToan = new ThongTinThanhToanClp();
            thanhToan.setId(CounterLocalServiceUtil.increment(ThongTinThanhToan.class.getName()));
            thanhToan.setHoSoTTHCCongId(hoSoId);
            thanhToan.setTaiKhoanNguoiDungNhanId(canBoTiepNhan.getTaiKhoanNguoiDungId());
            thanhToan.setTaiKhoanNguoiDungNopId(nguoiNop.getTaiKhoanNguoiDungId(false));
            thanhToan.setLoaiThanhToan(Constants.ThongTinThanhToan.HINHTHUC_TIENMAT);
            thanhToan.setTenNguoiNopTien(nguoiNop.getHoTenDayDu());
            thanhToan.setTenCanBoNhanTien(canBoTiepNhan.getHoVaTen());
            thanhToan.setXacNhan(1);
            thanhToan.setNgayThuTien(ngayNhanHoSo);
            thanhToan.setNgayXacNhan(ngayNhanHoSo);
            thanhToan.setNgayTao(now);
            thanhToan.setNguoiTao(email);
            thanhToan.setLoaiPhi(Constants.ThongTinThanhToan.LE_PHI);
            thanhToan.setSoTien(lePhi);
            ThongTinThanhToanLocalServiceUtil.addThongTinThanhToan(thanhToan);

            if (phi > 0) {
                thanhToan = new ThongTinThanhToanClp();
                thanhToan.setId(CounterLocalServiceUtil.increment(ThongTinThanhToan.class.getName()));
                thanhToan.setHoSoTTHCCongId(hoSoId);
                thanhToan.setTaiKhoanNguoiDungNhanId(canBoTiepNhan.getTaiKhoanNguoiDungId());
                thanhToan.setTaiKhoanNguoiDungNopId(nguoiNop.getTaiKhoanNguoiDungId(false));
                thanhToan.setLoaiThanhToan(Constants.ThongTinThanhToan.HINHTHUC_TIENMAT);
                thanhToan.setTenNguoiNopTien(nguoiNop.getHoTenDayDu());
                thanhToan.setTenCanBoNhanTien(canBoTiepNhan.getHoVaTen());
                thanhToan.setXacNhan(1);
                thanhToan.setNgayThuTien(ngayNhanHoSo);
                thanhToan.setNgayXacNhan(ngayNhanHoSo);
                thanhToan.setNgayTao(now);
                thanhToan.setNguoiTao(email);
                thanhToan.setLoaiPhi(Constants.ThongTinThanhToan.PHI);
                thanhToan.setSoTien(phi);
                ThongTinThanhToanLocalServiceUtil.addThongTinThanhToan(thanhToan);
            }

            // Cap nhat du lieu cong dan neu duoc phep
            if (ParamUtil.getInteger(request, CB2NTTFields.duocPhepEditCongDan) != 0) {

                congDanNop.setSoCmnd(ParamUtil.getString(request, HoSoFields.soCMND).trim());
                congDanNop.setNgaySinh(DateTimeUtil.getRequestDate(request, HoSoFields.ngaySinh));
                congDanNop.setGioiTinh(ParamUtil.getInteger(request, HoSoFields.gioiTinh));
                congDanNop.setDienThoaiCoDinh(ParamUtil.getString(request, HoSoFields.dienThoaiCoDinh).trim());
                congDanNop.setDienThoaiDiDong(ParamUtil.getString(request, HoSoFields.dienThoaiDiDong).trim());
                congDanNop.setEmail(ParamUtil.getString(request, HoSoFields.email).trim());
                congDanNop.setDiaChiThuongTru(ParamUtil.getString(request, HoSoFields.diaChiThuongTru).trim());
                congDanNop.setDiaChiThuongTruTinhId(ParamUtil.getLong(request, HoSoFields.tinhThuongTruId));
                congDanNop.setDiaChiThuongTruHuyenId(ParamUtil.getLong(request, HoSoFields.huyenThuongTruId));

                long xaThuongTruId = ParamUtil.getLong(request, HoSoFields.xaThuongTruId);
                if (xaThuongTruId != 0L) {
                    congDanNop.setDiaChiThuongTruXaId(xaThuongTruId);
                }

                String hoTen = ParamUtil.getString(request, HoSoFields.hoTenNguoiNopHoSo).trim().replaceAll(" +",
                        StringPool.SPACE);
                String[] arr = hoTen.split(StringPool.SPACE);

                if (arr.length == 2) {
                    congDanNop.setHo(arr[0]);
                    congDanNop.setTen(arr[1]);
                } else if (arr.length > 2) {
                    congDanNop.setHo(arr[0]);
                    congDanNop.setTen(arr[arr.length - 1]);
                    congDanNop.setDem(
                            StringUtils.join(Arrays.copyOfRange(arr, 1, arr.length - 1), StringPool.SPACE).trim());
                } else {
                    congDanNop.setTen(arr[0]);
                    congDanNop.setHo(StringPool.SPACE);
                }

                congDanNop.setNgaySua(now);
                congDanNop.setNguoiSua(email);

                CongDanLocalServiceUtil.updateCongDan(congDanNop);
            }

            // Bo sung ho so   
        } else {
            hoSo = HoSoTTHCCongLocalServiceUtil.fetchHoSoTTHCCong(hoSoId);
            maUngDung = hoSo.getMaUngDung();
            hoSo.setNguoiSua(email);
            hoSo.setNgaySua(now);

            trangThaiHoSo = (hoSo.getTrangThaiHoSo() == Constants.HOSO_TTHC_CONG_TRANG_THAI_HOSO_MOI_TIEP_NHAN)
                    ? Constants.HOSO_TTHC_CONG_TRANG_THAI_HOSO_MOI_TIEP_NHAN
                    : Constants.HOSO_TTHC_CONG_TRANG_THAI_HOSO_DANG_XU_LY;

            hoSo.setTrangThaiHoSo(trangThaiHoSo);
            hoSo.setNgayBoSung(now);
            hoSo.setNgayHenTraKetQua(
                    DateTimeUtil.getRequestDate(request, HoSoFields.ngayHenTraHoSo, HoSoFields.gioPhutHenTraHoSo));
            hoSo.setSoBoHoSo(ParamUtil.getInteger(request, HoSoFields.soBoHoSo));
            hoSo.setSoNgayXuLy(ParamUtil.getLong(request, HoSoFields.soNgayXuLy));
            hoSo.setGhiChu(ParamUtil.getString(request, HoSoFields.ghiChuBoSung));
            hoSo.setGhiChuGiayToDinhKem(ParamUtil.getString(request, HoSoFields.ghiChuFileDinhKem));
            hoSo.setMoTaThanhPhanHoSo(ParamUtil.getString(request, HoSoFields.moTaGiayToKhac));
            hoSo.setLienKetThanhPhanHoSo(ParamUtil.getString(request, HoSoFields.lienKetGiayToKhac));
            hoSo.setDaDangKyNhanSMS(ParamUtil.getInteger(request, HoSoFields.daDangKyNhanSMS));
            hoSo.setDaDangKyChuyenPhatNhanh(ParamUtil.getInteger(request, HoSoFields.daDangKyChuyenPhatNhanh));
            HoSoTTHCCongLocalServiceUtil.updateHoSoTTHCCong(hoSo);
        }

        request.setAttribute(HoSoFields.hoSoId, hoSoId);
        request.setAttribute(HoSoFields.trangThaiHoSo, trangThaiHoSo);
        request.setAttribute(HoSoFields.maUngDung, maUngDung);
    }

    /**
     * This is function _validate
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param ajaxResponse
     * @throws IOException
     * @throws SystemException
     * @return boolean
     */
    private boolean _validate(UploadPortletRequest request, AjaxResponse ajaxResponse)
            throws IOException, SystemException {
        Validator validator = new Validator(request, BusinessMessagerUtil.forPrefix(request, _PREFIX));
        IsSelected chuaChon = new IsSelected();
        IsFilled chuaNhap = new IsFilled();
        IsNumber laSo = new IsNumber();

        if (validator.check(chuaChon, HoSoFields.nguoiNopHoSoCongDanId, "nguoiNopHoSo")) {
            validator.check(chuaNhap, HoSoFields.hoTenNguoiNopHoSo);
            validator.check(new IsDayMonthYear(), HoSoFields.ngaySinh);
            validator.check(chuaChon.setDefault(-1L), HoSoFields.gioiTinh);
            validator.check(chuaNhap, HoSoFields.diaChiThuongTru);
            validator.check(chuaChon.setDefault(0L), HoSoFields.tinhThuongTruId);
            validator.check(chuaChon, HoSoFields.huyenThuongTruId);
        }

        validator.check(chuaChon, HoSoFields.thuTucHanhChinhId);
        validator.check(chuaNhap, HoSoFields.chuSoHuu);

        if (!"on".equals(ParamUtil.getString(request, HoSoFields.laNguoiNop))) {
            validator.check(chuaNhap, HoSoFields.diaChiChuHoSo);
        }

        validator.check(laSo.setZeroCompareMark(IsNumber.GT0), HoSoFields.soBoHoSo);
        validator.check(laSo.setZeroCompareMark(IsNumber.GTE0), HoSoFields.soNgayXuLy);

        DateTimePairValidator.forDayAndHourMinute(validator, HoSoFields.ngayNhanHoSo, HoSoFields.gioPhutNhanHoSo,
                HoSoFields.ngayHenTraHoSo, HoSoFields.gioPhutHenTraHoSo, true);

        // Validate upload tiep nhan
        _validateUpload(request, validator);

        return ajaxResponse.sendValidateResult(validator);
    }

    private static final String _PREFIX = "field";
    protected static Log _log = LogFactoryUtil.getLog(HoSoTrucTiepPortlet.class);
}