org.oep.cmon.portlet.admin.congchuc.action.CongChucPortlet.java Source code

Java tutorial

Introduction

Here is the source code for org.oep.cmon.portlet.admin.congchuc.action.CongChucPortlet.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.admin.congchuc.action;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import javax.servlet.http.HttpServletResponse;

import org.oep.cmon.portlet.admin.congchuc.utils.CongChucUtils;
import org.oep.cmon.portlet.admin.congchuc.utils.LiferayUtils;
import org.oep.cmon.portlet.taocongdan.business.TaoCongDanBusiness;
import org.oep.cmon.util.Helpers;
import org.oep.sharedservice.cmon.Constants;

import org.oep.cmon.dao.cc.model.ChucVu;
import org.oep.cmon.dao.cc.model.CongChuc;
import org.oep.cmon.dao.cc.model.CongChucClp;
import org.oep.cmon.dao.cc.service.ChucVuLocalServiceUtil;
import org.oep.cmon.dao.cc.service.CongChucLocalServiceUtil;
import org.oep.cmon.dao.nsd.model.NguoiDung2VaiTro;
import org.oep.cmon.dao.nsd.model.NguoiDung2VaiTroClp;
import org.oep.cmon.dao.nsd.model.TaiKhoanNguoiDung;
import org.oep.cmon.dao.nsd.model.TaiKhoanNguoiDungClp;
import org.oep.cmon.dao.nsd.model.VaiTro;
import org.oep.cmon.dao.nsd.service.NguoiDung2VaiTroLocalServiceUtil;
import org.oep.cmon.dao.nsd.service.TaiKhoanNguoiDungLocalServiceUtil;
import org.oep.cmon.dao.nsd.service.VaiTroLocalServiceUtil;
import org.oep.cmon.dao.qlhc.model.CapCoQuanQuanLy;
import org.oep.cmon.dao.qlhc.model.ChucVu2VaiTro;
import org.oep.cmon.dao.qlhc.model.CoQuanQuanLy;
import org.oep.cmon.dao.qlhc.model.CoQuanQuanLyClp;
import org.oep.cmon.dao.qlhc.model.DonViHanhChinh;
import org.oep.cmon.dao.qlhc.service.CapCoQuanQuanLyLocalServiceUtil;
import org.oep.cmon.dao.qlhc.service.ChucVu2VaiTroLocalServiceUtil;
import org.oep.cmon.dao.qlhc.service.CoQuanQuanLyLocalServiceUtil;
import org.oep.cmon.dao.qlhc.service.DonViHanhChinhLocalServiceUtil;
import org.oep.cmon.dao.thamso.service.ThamSoLocalServiceUtil;

import com.liferay.counter.service.CounterLocalServiceUtil;
import com.liferay.portal.kernel.dao.orm.Criterion;
import com.liferay.portal.kernel.dao.orm.DynamicQuery;
import com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil;
import com.liferay.portal.kernel.dao.orm.RestrictionsFactoryUtil;
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.servlet.SessionErrors;
import com.liferay.portal.kernel.servlet.SessionMessages;
import com.liferay.portal.kernel.util.ContentTypes;
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.kernel.util.WebKeys;
import com.liferay.portal.model.User;
import com.liferay.portal.service.UserLocalServiceUtil;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.PortalUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;

/**
 * This is class CongChucPortlet
 * Version: 1.0
 *  
 * History: 
 *   DATE        AUTHOR      DESCRIPTION 
 *  ------------------------------------------------- 
 *  3-March-2013  Nam Dinh    Create new
 */
public class CongChucPortlet extends MVCPortlet {
    private String createCoQuanQuanLyJSP = "/html/portlet/admin/congchuc/coquanquanly/add.jsp";
    private String detailCoQuanQuanLyJSP = "/html/portlet/admin/congchuc/coquanquanly/details.jsp";
    // cong chuc view
    private static String PageEditCongChuc = "/html/portlet/admin/congchuc/congchuc/add.jsp";
    private static String PageDetailCongChuc = "/html/portlet/admin/congchuc/congchuc/details.jsp";
    private static String PagePopupCoQuanQuanLy = "/html/portlet/admin/congchuc/congchuc/popupcoquanquanly.jsp";
    private static String PageResetPassword = "/html/portlet/admin/congchuc/congchuc/resetpassword.jsp";
    private static String pageQuyenCongChuc = "/html/portlet/admin/congchuc/congchuc/listvaitro.jsp";
    // error view
    private static String PageError = "/html/portlet/admin/congchuc/pageerror.jsp";

    /**
     * This is function search CoQuanQuanLy
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void searchCoQuanQuanLy(ActionRequest request, ActionResponse response) throws Exception {
        String searchInputText = ParamUtil.getString(request, "searchInputText", "");
        String parentId = ParamUtil.getString(request, "parentId", "");
        Long chaId = null;
        if (!parentId.equals("")) {
            chaId = Long.valueOf(parentId);
        }
        List<CoQuanQuanLy> listCoQuanQuanLy = new ArrayList<CoQuanQuanLy>();
        if (searchInputText.equals("")) {
            listCoQuanQuanLy = CoQuanQuanLyLocalServiceUtil.findByParentId(chaId, 0);
        } else {
            listCoQuanQuanLy = CongChucUtils.searchCoQuanQuanLyByMaOrTen(searchInputText, 0);
        }
        request.setAttribute("listCoQuanQuanLy", listCoQuanQuanLy);
        request.setAttribute("searchInputText", searchInputText);
        request.setAttribute("parentId", parentId);
    }

    /**
     * This is  function search CoQuanQuanLy popup
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void searchCoQuanQuanLyPopup(ActionRequest request, ActionResponse response) throws Exception {
        String chucVuId = ParamUtil.getString(request, "chucVuId", "");
        String coQuanQuanLyId = ParamUtil.getString(request, "coQuanQuanLyId", "");
        String searchInputText = ParamUtil.getString(request, "searchInputText", "");
        String[] strcqqlids = request.getParameterValues("strcqqlids[]");
        if (strcqqlids != null) {
            boolean insertOk = true;
            ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
            User user = themeDisplay.getUser();
            ChucVu chucVu = ChucVuLocalServiceUtil.fetchChucVu(Long.valueOf(chucVuId));
            List<ChucVu2VaiTro> listChucVu2VaiTro = ChucVu2VaiTroLocalServiceUtil
                    .findByIdChucVuAndIdCoQuanQuanLy(Long.valueOf(chucVuId), Long.valueOf(coQuanQuanLyId), 0);
            long[] vaitroids = new long[listChucVu2VaiTro.size()];
            for (int i = 0; i < listChucVu2VaiTro.size(); i++) {
                vaitroids[i] = listChucVu2VaiTro.get(i).getVaiTroId();
            }
            for (int i = 0; i < strcqqlids.length; i++) {
                CoQuanQuanLy coQuanQuanLy = CoQuanQuanLyLocalServiceUtil
                        .fetchCoQuanQuanLy(Long.valueOf(strcqqlids[i]));
                if (chucVu != null && coQuanQuanLy != null && user != null) {
                    boolean subInsert = CongChucUtils.ganChucVuToCoQuanQuanLy(chucVu, vaitroids, coQuanQuanLy,
                            user);
                    if (!subInsert) {
                        insertOk = false;
                    }
                }
            }
            if (insertOk) {
                SessionMessages.add(request, "createChucVuSuccess");
            } else {
                SessionErrors.add(request, "addChucVuError");
            }

        }
        List<CoQuanQuanLy> listCoQuanQuanLy = new ArrayList<CoQuanQuanLy>();
        listCoQuanQuanLy = CongChucUtils.searchCoQuanQuanLyByMaOrTen(searchInputText, 0);

        request.setAttribute("chucVuId", chucVuId);
        request.setAttribute("coQuanQuanLyId", coQuanQuanLyId);
        request.setAttribute("listCoQuanQuanLy", listCoQuanQuanLy);
        request.setAttribute("searchInputText", searchInputText);
        response.setRenderParameter("jspPage", "/html/portlet/admin/congchuc/coquanquanly/addchucvutocqql.jsp");
    }

    /**
     * This is  function create CoQuanQuanLy
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void createCoQuanQuanLy(ActionRequest request, ActionResponse response) throws Exception {
        String searchInputText = ParamUtil.getString(request, "searchInputText", "");
        String parentId = ParamUtil.getString(request, "parentId", "");
        List<CoQuanQuanLy> listCoQuanQuanLy = CongChucUtils.searchCoQuanQuanLyByMaOrTen("", 0);
        List<CapCoQuanQuanLy> listCapCoQuanQuanLy = CapCoQuanQuanLyLocalServiceUtil.findByTrangThai(0);
        String idTinh = ThamSoLocalServiceUtil.getValue("DANANG");
        Map<String, String> userRequest = new HashMap<String, String>();
        userRequest.put("idTinh", idTinh);

        request.setAttribute("searchInputText", searchInputText);
        request.setAttribute("parentId", parentId);
        request.setAttribute("listCoQuanQuanLy", listCoQuanQuanLy);
        request.setAttribute("listCapCoQuanQuanLy", listCapCoQuanQuanLy);
        request.setAttribute("CQQL_OBJECT", userRequest);
        request.setAttribute("type", "add");
        response.setRenderParameter("jspPage", createCoQuanQuanLyJSP);
    }

    /**
     * This is  function edit CoQuanQuanLy
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void editCoQuanQuanLy(ActionRequest request, ActionResponse response) throws Exception {
        String searchInputText = ParamUtil.getString(request, "searchInputText", "");
        String parentId = ParamUtil.getString(request, "parentId", "");
        long coQuanQuanLyId = ParamUtil.getLong(request, "coQuanQuanLyId", 0l);
        List<CoQuanQuanLy> listCoQuanQuanLy = CongChucUtils.searchCoQuanQuanLyByMaOrTen("", 0);
        List<CapCoQuanQuanLy> listCapCoQuanQuanLy = CapCoQuanQuanLyLocalServiceUtil.findByTrangThai(0);
        if (coQuanQuanLyId > 0) {
            CoQuanQuanLy coQuanQuanLy = CoQuanQuanLyLocalServiceUtil.fetchCoQuanQuanLy(coQuanQuanLyId);
            Map<String, String> userRequest = new HashMap<String, String>();
            if (coQuanQuanLy != null) {
                userRequest = CongChucUtils.getMapCQQLFromCQQL(coQuanQuanLy);
            }
            request.setAttribute("CQQL_OBJECT", userRequest);
        }
        request.setAttribute("searchInputText", searchInputText);
        request.setAttribute("parentId", parentId);
        request.setAttribute("listCoQuanQuanLy", listCoQuanQuanLy);
        request.setAttribute("listCapCoQuanQuanLy", listCapCoQuanQuanLy);
        request.setAttribute("type", "edit");
        response.setRenderParameter("jspPage", createCoQuanQuanLyJSP);
    }

    /**
     * This is  function save CoQuanQuanLy
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void saveCoQuanQuanLy(ActionRequest request, ActionResponse response) throws Exception {
        String type = ParamUtil.getString(request, "type", "");
        String searchInputText = ParamUtil.getString(request, "searchInputText", "");
        String parentId = ParamUtil.getString(request, "parentId", "");
        List<String> errors = CongChucUtils.validCoQuanQuanLy(request);
        Map<String, String> userRequest = CongChucUtils.getMapCQQLFromRequest(request);
        if (errors.isEmpty()) {
            request.setAttribute("searchInputText", URLDecoder.decode(searchInputText, StringPool.UTF8));
            if (type.equals("add")) {
                try {
                    CongChucUtils.insertCoQuanQuanLy(userRequest, request);
                    SessionMessages.add(request, "coquanquanly.success.create");
                } catch (Exception e) {
                    response.setRenderParameter("jspPage", PageError);
                }

            } else {
                try {
                    CongChucUtils.updateCoQuanQuanLy(userRequest, request);
                    SessionMessages.add(request, "coquanquanly.success.update");
                } catch (Exception e) {
                    response.setRenderParameter("jspPage", PageError);
                }
            }
        } else {
            for (int i = 0; i < errors.size(); i++) {
                SessionErrors.add(request, errors.get(i));
            }
            List<CapCoQuanQuanLy> listCapCoQuanQuanLy = CapCoQuanQuanLyLocalServiceUtil.findByTrangThai(0);
            request.setAttribute("CQQL_OBJECT", userRequest);
            request.setAttribute("listCapCoQuanQuanLy", listCapCoQuanQuanLy);
            request.setAttribute("searchInputText", searchInputText);
            response.setRenderParameter("jspPage", createCoQuanQuanLyJSP);
        }
        request.setAttribute("type", type);
        request.setAttribute("parentId", parentId);
    }

    /**
     * This is  function delete CoQuanQuanLy
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void deleteCoQuanQuanLy(ActionRequest request, ActionResponse response) throws Exception {
        long id = ParamUtil.getLong(request, "coQuanQuanLyId");
        String searchInputText = URLDecoder.decode(ParamUtil.getString(request, "searchInputText", ""),
                StringPool.UTF8);
        String parentId = ParamUtil.getString(request, "parentId", "");

        request.setAttribute("searchInputText", searchInputText);
        request.setAttribute("parentId", parentId);
        List<CoQuanQuanLy> lst = CoQuanQuanLyLocalServiceUtil.findByParentId(id, 0);
        List<CongChuc> lcc = CongChucLocalServiceUtil.listCongChuc(id, "", 0, 1);
        if (lst.size() > 0) {
            SessionErrors.add(request, "coquanquanly.err.childExists");
            return;
        }
        if (lcc.size() > 0) {
            SessionErrors.add(request, "coquanquanly.err.congChucExists");
            return;
        }

        try {
            List<ChucVu2VaiTro> listChucVu2VaiTro = ChucVu2VaiTroLocalServiceUtil.findByIdCoQuanQuanLy(id);
            for (int i = 0; i < listChucVu2VaiTro.size(); i++) {
                ChucVu2VaiTroLocalServiceUtil.deleteChucVu2VaiTro(listChucVu2VaiTro.get(i));
            }
            CongChucUtils.delete(id);
            SessionMessages.add(request, "coquanquanly.success.delete");
        } catch (Exception e) {
            e.printStackTrace();
            SessionErrors.add(request, "coquanquanly.err.unKnown");
            return;
        }
    }

    /**
     * This is  function CoQuanQuanLy detail
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     * @throws PortletException
     */
    public void detailCoQuanQuanLy(ActionRequest request, ActionResponse response) throws Exception {
        String searchInputText = ParamUtil.getString(request, "searchInputText", "");
        String parentId = ParamUtil.getString(request, "parentId", "");
        long coQuanQuanLyId = ParamUtil.getLong(request, "coQuanQuanLyId", 0);
        if (coQuanQuanLyId > 0) {
            CoQuanQuanLy coQuanQuanLy = CoQuanQuanLyLocalServiceUtil.fetchCoQuanQuanLy(coQuanQuanLyId);
            request.setAttribute("coQuanQuanLy", coQuanQuanLy);
        }
        request.setAttribute("searchInputText", searchInputText);
        request.setAttribute("parentId", parentId);
        response.setRenderParameter("jspPage", detailCoQuanQuanLyJSP);
    }

    /**
     * This is  function list ChucVuCoQuanQuanLy
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void listChucVuCoQuanQuanLy(ActionRequest request, ActionResponse response) throws Exception {
        String coQuanQuanLyId = ParamUtil.getString(request, "coQuanQuanLyId", "");
        String parentId = ParamUtil.getString(request, "parentId", "");
        String searchInputText = ParamUtil.getString(request, "searchInputText", "");
        if (!coQuanQuanLyId.equals("")) {
            Set<Long> setChucVuId = new HashSet<Long>();
            List<ChucVu2VaiTro> listChucVu2VaiTro = ChucVu2VaiTroLocalServiceUtil
                    .findByIdCoQuanQuanLyAndDaXoa(Long.valueOf(coQuanQuanLyId), 0);
            for (int i = 0; i < listChucVu2VaiTro.size(); i++) {
                setChucVuId.add(listChucVu2VaiTro.get(i).getChucVuId());
            }
            request.setAttribute("setChucVuId", setChucVuId);
            request.setAttribute("listChucVu2VaiTro", listChucVu2VaiTro);
        }
        request.setAttribute("coQuanQuanLyId", coQuanQuanLyId);
        request.setAttribute("parentId", parentId);
        request.setAttribute("searchInputText", searchInputText);
        response.setRenderParameter("jspPage", "/html/portlet/admin/congchuc/coquanquanly/listchucvu.jsp");
    }

    /**
     * This is  function create ChucVu
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void createChucVu(ActionRequest request, ActionResponse response) throws Exception {
        String coQuanQuanLyId = ParamUtil.getString(request, "coQuanQuanLyId", "");
        String parentId = ParamUtil.getString(request, "parentId", "");
        String searchInputText = ParamUtil.getString(request, "searchInputText", "");
        List<ChucVu> listChucVu = ChucVuLocalServiceUtil.findTrangThai(0);
        List<VaiTro> listVaiTro = VaiTroLocalServiceUtil.findByTrangThai(0);
        request.setAttribute("parentId", parentId);
        request.setAttribute("searchInputText", searchInputText);
        request.setAttribute("coQuanQuanLyId", coQuanQuanLyId);
        request.setAttribute("listChucVu", listChucVu);
        request.setAttribute("listVaiTro", listVaiTro);
        response.setRenderParameter("jspPage", "/html/portlet/admin/congchuc/coquanquanly/addchucvu.jsp");
    }

    /**
     * This is  function edit ChucVu
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void editChucVu(ActionRequest request, ActionResponse response) throws Exception {
        long coQuanQuanLyId = ParamUtil.getLong(request, "coQuanQuanLyId", 0l);
        long chucVuId = ParamUtil.getLong(request, "chucVuId", 0l);
        String parentId = ParamUtil.getString(request, "parentId", "");
        String searchInputText = ParamUtil.getString(request, "searchInputText", "");
        List<ChucVu2VaiTro> listChucVu2VaiTro = ChucVu2VaiTroLocalServiceUtil
                .findByIdChucVuAndIdCoQuanQuanLy(chucVuId, coQuanQuanLyId, 0);
        List<ChucVu> listChucVu = ChucVuLocalServiceUtil.findTrangThai(0);
        List<VaiTro> listVaiTro = VaiTroLocalServiceUtil.findByTrangThai(0);
        request.setAttribute("parentId", parentId);
        request.setAttribute("searchInputText", searchInputText);
        request.setAttribute("coQuanQuanLyId", coQuanQuanLyId);
        request.setAttribute("chucVuId", chucVuId);
        request.setAttribute("listChucVu2VaiTro", listChucVu2VaiTro);
        request.setAttribute("listChucVu", listChucVu);
        request.setAttribute("listVaiTro", listVaiTro);
        response.setRenderParameter("jspPage", "/html/portlet/admin/congchuc/coquanquanly/addchucvu.jsp");
    }

    /**
     * This is  function save ChucVu
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void saveChucVu(ActionRequest request, ActionResponse response) throws Exception {
        boolean insertOk = false;
        long coQuanQuanLyId = ParamUtil.getLong(request, "coquanquanlyid", 0l);
        long chucVuId = ParamUtil.getLong(request, "chucvuid", 0l);
        String parentId = ParamUtil.getString(request, "parentId", "");
        String searchInputText = ParamUtil.getString(request, "searchInputText", "");
        String[] strVaiTroIds = request.getParameterValues("vaitroids");
        long[] vaiTroIds = new long[strVaiTroIds.length];
        User user = PortalUtil.getUser(request);
        ChucVu chucVu = ChucVuLocalServiceUtil.fetchChucVu(chucVuId);
        CoQuanQuanLy coQuanQuanLy = CoQuanQuanLyLocalServiceUtil.fetchCoQuanQuanLy(coQuanQuanLyId);
        for (int i = 0; i < strVaiTroIds.length; i++) {
            vaiTroIds[i] = Long.parseLong(strVaiTroIds[i]);
        }
        if (user != null && chucVu != null && coQuanQuanLy != null) {
            insertOk = CongChucUtils.ganChucVuToCoQuanQuanLy(chucVu, vaiTroIds, coQuanQuanLy, user);
        }
        if (user == null) {
            SessionErrors.add(request, "not.login.error");
        }
        if (insertOk) {
            SessionMessages.add(request, "createChucVuSuccess");
        } else {
            SessionErrors.add(request, "addChucVuError");
        }
        if (coQuanQuanLyId != 0l) {
            Set<Long> setChucVuId = new HashSet<Long>();
            List<ChucVu2VaiTro> listChucVu2VaiTro = ChucVu2VaiTroLocalServiceUtil
                    .findByIdCoQuanQuanLyAndDaXoa(coQuanQuanLyId, 0);
            for (int i = 0; i < listChucVu2VaiTro.size(); i++) {
                setChucVuId.add(listChucVu2VaiTro.get(i).getChucVuId());
            }
            request.setAttribute("setChucVuId", setChucVuId);
            request.setAttribute("listChucVu2VaiTro", listChucVu2VaiTro);
        }
        request.setAttribute("parentId", parentId);
        request.setAttribute("searchInputText", searchInputText);
        request.setAttribute("coQuanQuanLyId", coQuanQuanLyId);
        response.setRenderParameter("jspPage", "/html/portlet/admin/congchuc/coquanquanly/listchucvu.jsp");
    }

    /**
     * This is  function delete ChucVu
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void deleteChucVu(ActionRequest request, ActionResponse response) throws Exception {
        boolean deleteOk = false;
        long coQuanQuanLyId = ParamUtil.getLong(request, "coQuanQuanLyId", 0l);
        long chucVuId = ParamUtil.getLong(request, "chucVuId", 0l);
        String parentId = ParamUtil.getString(request, "parentId", "");
        String searchInputText = ParamUtil.getString(request, "searchInputText", "");
        ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
        User user = themeDisplay.getUser();
        ChucVu chucVu = ChucVuLocalServiceUtil.fetchChucVu(chucVuId);
        CoQuanQuanLy coQuanQuanLy = CoQuanQuanLyLocalServiceUtil.fetchCoQuanQuanLy(coQuanQuanLyId);
        if (user != null && chucVu != null && coQuanQuanLy != null) {
            deleteOk = CongChucUtils.xoaChucVuToCoQuanQuanLy(chucVu, coQuanQuanLy, user);
        }
        if (deleteOk) {
            SessionMessages.add(request, "deleteChucVuSuccess");
        } else {
            SessionErrors.add(request, "deleteChucVuError");
        }
        if (coQuanQuanLyId != 0l) {
            Set<Long> setChucVuId = new HashSet<Long>();
            List<ChucVu2VaiTro> listChucVu2VaiTro = ChucVu2VaiTroLocalServiceUtil
                    .findByIdCoQuanQuanLyAndDaXoa(coQuanQuanLyId, 0);
            for (int i = 0; i < listChucVu2VaiTro.size(); i++) {
                setChucVuId.add(listChucVu2VaiTro.get(i).getChucVuId());
            }
            request.setAttribute("setChucVuId", setChucVuId);
            request.setAttribute("listChucVu2VaiTro", listChucVu2VaiTro);
        }
        request.setAttribute("parentId", parentId);
        request.setAttribute("searchInputText", searchInputText);
        request.setAttribute("coQuanQuanLyId", coQuanQuanLyId);
        response.setRenderParameter("jspPage", "/html/portlet/admin/congchuc/coquanquanly/listchucvu.jsp");
    }

    /**
     * This is  function get DonViHanhChinh by Id
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param resourceRequest
     * @param httlReq
     * @throws Exception
     * @throws NumberFormatException
     */
    public void getDonViHanhChinhById(ActionRequest resourceRequest, ActionResponse httpReq)
            throws NumberFormatException, Exception {

        String id = ParamUtil.getString(resourceRequest, "id");

        // Process Jason feed
        JSONObject jsonFeed = JSONFactoryUtil.createJSONObject();
        JSONArray _name = JSONFactoryUtil.getJSONFactory().createJSONArray();
        JSONArray _id = JSONFactoryUtil.getJSONFactory().createJSONArray();

        // Danh sach don vi hanh chinh
        List<DonViHanhChinh> dsDVHC = findDonViHanhChinhByChaId(Long.parseLong(id));

        for (DonViHanhChinh item : dsDVHC) {
            _id.put(item.getId());
            _name.put(item.getTen());
        }
        jsonFeed.put("id", _id);
        jsonFeed.put("name", _name);

        HttpServletResponse resourceResponse = PortalUtil.getHttpServletResponse(httpReq);

        resourceResponse.setContentType("application/json");
        resourceResponse.setCharacterEncoding("UTF-8");
        resourceResponse.getWriter().write(jsonFeed.toString());
        resourceResponse.getWriter().close();
    }

    /**
     * This is  function find DonViHanhChinh by ChaId
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param chaId
     * @return List<DonViHanhChinh>
     */
    @SuppressWarnings("unchecked")
    private List<DonViHanhChinh> findDonViHanhChinhByChaId(long chaId) {
        // Query code request using keyword
        DynamicQuery query = DynamicQueryFactoryUtil.forClass(DonViHanhChinh.class);

        // This is a test line for display all request if there's no search
        // criteria
        Criterion criteriaTrangThai = RestrictionsFactoryUtil.eq("daXoa", 0);
        Criterion criteriaChaId = RestrictionsFactoryUtil.eq("chaId", chaId);

        // Define search criteria
        query = query.add(criteriaChaId).add(criteriaTrangThai);

        try {
            return DonViHanhChinhLocalServiceUtil.dynamicQuery(query);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return new ArrayList<DonViHanhChinh>();
    }

    // cong chuc module actions
    /**
     * This is  function search list CongChuc
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void searchListCongChuc(ActionRequest request, ActionResponse response) throws Exception {
        long coQuanQuanLyId = ParamUtil.getLong(request, "coQuanQuanLyId", 0);
        String maOrTenOrEmail = ParamUtil.getString(request, "maOrTenOrEmail", "");
        String tab = ParamUtil.getString(request, "tab", "CC");
        List<CongChuc> listCongChuc = CongChucLocalServiceUtil.listCongChuc(coQuanQuanLyId, maOrTenOrEmail, 0, 10);
        int total = CongChucLocalServiceUtil.countListCongChuc(coQuanQuanLyId, maOrTenOrEmail);
        request.setAttribute("listCongChuc", listCongChuc);
        request.setAttribute("total", total);
        request.setAttribute("maOrTenOrEmail", maOrTenOrEmail);
        request.setAttribute("coQuanQuanLyId", coQuanQuanLyId);
        request.setAttribute("tab", tab);
    }

    /**
     * This is  function CongChuc detail
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param actionRequest
     * @param actionResponse
     * @throws IOException
     * @throws PortletException
     * @throws NumberFormatException
     * @throws SystemException 
     */
    public void detailCongChuc(ActionRequest actionRequest, ActionResponse actionResponse)
            throws IOException, PortletException, NumberFormatException, SystemException {
        String congChucId = ParamUtil.getString(actionRequest, "congChucId");
        String coQuanQuanLyId = ParamUtil.getString(actionRequest, "coQuanQuanLyId", "");
        String maOrTenOrEmail = ParamUtil.getString(actionRequest, "maOrTenOrEmail", "");
        CongChuc congChuc = CongChucLocalServiceUtil.fetchCongChuc(Long.valueOf(congChucId));
        if (congChuc != null) {
            TaiKhoanNguoiDung taiKhoan = TaiKhoanNguoiDungLocalServiceUtil
                    .fetchTaiKhoanNguoiDung(congChuc.getTaiKhoanNguoiDungId());
            CoQuanQuanLy coQuanQuanLy = CoQuanQuanLyLocalServiceUtil
                    .fetchCoQuanQuanLy(congChuc.getCoQuanQuanLyId());
            actionRequest.setAttribute("taiKhoan", taiKhoan);
            actionRequest.setAttribute("coQuanQuanLy", coQuanQuanLy);
        }
        actionRequest.setAttribute("coQuanQuanLyId", String.valueOf(coQuanQuanLyId));
        actionRequest.setAttribute("maOrTenOrEmail", maOrTenOrEmail);
        actionRequest.setAttribute("congChuc", congChuc);
        actionResponse.setRenderParameter("jspPage", PageDetailCongChuc);
    }

    /**
     * This is  function create CongChuc
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param actionRequest
     * @param actionResponse
     * @throws Exception
     */
    public void createCongChuc(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
        long coQuanQuanLyId = ParamUtil.getLong(actionRequest, "coQuanQuanLyId", 0);
        String maOrTenOrEmail = ParamUtil.getString(actionRequest, "maOrTenOrEmail", "");
        CoQuanQuanLy coQuanQuanLy = new CoQuanQuanLyClp();
        if (coQuanQuanLyId > 0) {
            coQuanQuanLy = CoQuanQuanLyLocalServiceUtil.fetchCoQuanQuanLy(coQuanQuanLyId);
        }
        actionRequest.setAttribute("coQuanQuanLyId", String.valueOf(coQuanQuanLyId));
        actionRequest.setAttribute("maOrTenOrEmail", maOrTenOrEmail);
        actionRequest.setAttribute("coQuanQuanLy", coQuanQuanLy);
        actionResponse.setRenderParameter("jspPage", PageEditCongChuc);
    }

    /**
     * This is  function edit CongChuc
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param actionRequest
     * @param actionResponse
     * @throws IOException
     * @throws PortletException
     * @throws NumberFormatException
     * @throws SystemException
     */
    public void editCongChuc(ActionRequest actionRequest, ActionResponse actionResponse)
            throws IOException, PortletException, NumberFormatException, SystemException {
        String congChucId = ParamUtil.getString(actionRequest, "congChucId");
        long coQuanQuanLyId = ParamUtil.getLong(actionRequest, "coQuanQuanLyId", 0);
        String maOrTenOrEmail = ParamUtil.getString(actionRequest, "maOrTenOrEmail", "");
        CongChuc congChuc = CongChucLocalServiceUtil.fetchCongChuc(Long.valueOf(congChucId));
        if (congChuc != null) {
            TaiKhoanNguoiDung taiKhoan = TaiKhoanNguoiDungLocalServiceUtil
                    .fetchTaiKhoanNguoiDung(congChuc.getTaiKhoanNguoiDungId());
            CoQuanQuanLy coQuanQuanLy = CoQuanQuanLyLocalServiceUtil
                    .fetchCoQuanQuanLy(congChuc.getCoQuanQuanLyId());
            actionRequest.setAttribute("taiKhoan", taiKhoan);
            actionRequest.setAttribute("coQuanQuanLy", coQuanQuanLy);
        }
        actionRequest.setAttribute("coQuanQuanLyId", String.valueOf(coQuanQuanLyId));
        actionRequest.setAttribute("maOrTenOrEmail", maOrTenOrEmail);
        actionRequest.setAttribute("congChuc", congChuc);
        actionResponse.setRenderParameter("jspPage", PageEditCongChuc);
    }

    /**
     * This is  function save CongChuc
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param actionRequest
     * @param actionResponse
     * @throws Exception
     */
    public void saveCongChuc(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
        String coQuanQuanLyId = ParamUtil.getString(actionRequest, "coQuanQuanLyId", "");
        String maOrTenOrEmail = ParamUtil.getString(actionRequest, "maOrTenOrEmail", "");
        String emailForm = ParamUtil.getString(actionRequest, "email", "");
        String tab = ParamUtil.getString(actionRequest, "tab", "CC");

        long id = ParamUtil.getLong(actionRequest, "id", 0);
        User currentUser = PortalUtil.getUser(actionRequest);
        if (currentUser == null) {
            SessionErrors.add(actionRequest, "not.login.error");
        }
        CongChuc congChuc = null;
        if (id > 0) {
            congChuc = CongChucLocalServiceUtil.fetchCongChuc(id);
        } else {
            congChuc = new CongChucClp();
        }
        try {
            congChuc = this.getCongChucFormHtml(congChuc, actionRequest);
        } catch (Exception e1) {
            e1.printStackTrace();
        }

        TaiKhoanNguoiDung taiKhoan = new TaiKhoanNguoiDungClp();

        CoQuanQuanLy coQuanQuanLy = CoQuanQuanLyLocalServiceUtil.fetchCoQuanQuanLy(congChuc.getCoQuanQuanLyId());
        ChucVu chucVu = null;
        if (congChuc.getChucVuId() > 0) {
            chucVu = ChucVuLocalServiceUtil.getChucVu(congChuc.getChucVuId());
        }
        List<String> errors = CongChucUtils.validCongChuc(actionRequest);
        if (errors.isEmpty() && currentUser != null) {
            String password = (ParamUtil.getString(actionRequest, "password", ""));
            String rePassword = ParamUtil.getString(actionRequest, "rePassword", "");
            String email = (ParamUtil.getString(actionRequest, "email", ""));
            boolean flag = true;
            if (id == 0) {
                //truong hop them moi
                flag = LiferayUtils.addUser(congChuc.getHoVaTen(), email, password, rePassword,
                        currentUser.getUserId(), currentUser.getCompanyId());

                if (flag) {
                    User user = UserLocalServiceUtil.getUserByEmailAddress(currentUser.getCompanyId(), email);
                    try {
                        String loaiDoiTuongId = ThamSoLocalServiceUtil.getValue("LDT_CANBO");
                        taiKhoan.setId(
                                CounterLocalServiceUtil.increment(TaoCongDanBusiness.TAIKHOANNGUOIDUNG_SEQUENCE));
                        taiKhoan.setTaiKhoanNguoiDungId(user.getUserId());
                        taiKhoan.setNgayTao(new Date());
                        taiKhoan.setNguoiTao(currentUser.getFullName());
                        taiKhoan.setTenNguoiDung(congChuc.getHoVaTen());
                        taiKhoan.setTenDangNhap(email);
                        taiKhoan.setLoaiDoiTuongId(Long.valueOf(loaiDoiTuongId));
                        taiKhoan.setEmail(email);
                        taiKhoan.setMatKhau(CongChucUtils.md5(password));
                        taiKhoan.setTrangThai(1);
                        TaiKhoanNguoiDung taiKhoanResult = TaiKhoanNguoiDungLocalServiceUtil
                                .addTaiKhoanNguoiDung(taiKhoan);
                        if (taiKhoanResult != null) {
                            try {
                                congChuc.setId(CounterLocalServiceUtil.increment("cmon_congchuc"));
                                congChuc.setNgayTao(new Date());
                                congChuc.setTaiKhoanNguoiDungId(taiKhoanResult.getId());
                                congChuc.setNguoiTao(currentUser.getFullName());
                                CongChuc congChucReturn = CongChucLocalServiceUtil.addCongChuc(congChuc);
                                if (chucVu != null) {
                                    CongChucUtils.ganChucVuToCanBo(congChucReturn, coQuanQuanLy, chucVu);
                                }
                                SessionMessages.add(actionRequest, "insert.success");
                                actionRequest.setAttribute("coQuanQuanLyId", String.valueOf(coQuanQuanLyId));
                                actionRequest.setAttribute("maOrTenOrEmail",
                                        URLDecoder.decode(maOrTenOrEmail, StringPool.UTF8));
                                actionRequest.setAttribute("tab", tab);
                            } catch (Exception e) {
                                TaiKhoanNguoiDungLocalServiceUtil.deleteTaiKhoanNguoiDung(taiKhoanResult);
                                UserLocalServiceUtil.deleteUser(user);
                                actionResponse.setRenderParameter("jspPage", PageError);
                                return;
                            }

                        }
                    } catch (Exception e) {
                        UserLocalServiceUtil.deleteUser(user);
                        actionResponse.setRenderParameter("jspPage", PageError);
                        return;
                    }
                } else {
                    actionResponse.setRenderParameter("jspPage", PageError);
                    return;
                }
            } else {
                //Truong hop chinh sua
                try {
                    taiKhoan = TaiKhoanNguoiDungLocalServiceUtil
                            .fetchTaiKhoanNguoiDung(congChuc.getTaiKhoanNguoiDungId());
                    User user = UserLocalServiceUtil.fetchUser(taiKhoan.getTaiKhoanNguoiDungId());
                    if (user == null) {
                        LiferayUtils.addUser(congChuc.getHoVaTen(), email, "huynq", "huynq",
                                currentUser.getUserId(), currentUser.getCompanyId());
                        user = UserLocalServiceUtil.getUserByEmailAddress(currentUser.getCompanyId(),
                                taiKhoan.getEmail());
                    } else {
                        user.setFirstName(congChuc.getHoVaTen());
                        user.setEmailAddress(email);
                        user.setModifiedDate(new Date());
                        UserLocalServiceUtil.updateUser(user);
                    }
                    CongChuc currentCongChuc = CongChucLocalServiceUtil.fetchCongChuc(id);
                    if (chucVu != null) {
                        CongChucUtils.xoaChucVuToCanBo(currentCongChuc, CoQuanQuanLyLocalServiceUtil
                                .fetchCoQuanQuanLy(currentCongChuc.getCoQuanQuanLyId()));
                        CongChucUtils.ganChucVuToCanBo(congChuc, coQuanQuanLy, chucVu);
                    } else {
                        CongChucUtils.xoaChucVuToCanBo(currentCongChuc, CoQuanQuanLyLocalServiceUtil
                                .fetchCoQuanQuanLy(currentCongChuc.getCoQuanQuanLyId()));
                    }
                    taiKhoan.setNgaySua(new Date());
                    taiKhoan.setNguoiSua(currentUser.getFullName());
                    taiKhoan.setTenNguoiDung(congChuc.getHoVaTen());
                    taiKhoan.setTenDangNhap(email);
                    taiKhoan.setEmail(email);
                    taiKhoan.setTaiKhoanNguoiDungId(user.getUserId());
                    TaiKhoanNguoiDung taiKhoanResult = TaiKhoanNguoiDungLocalServiceUtil
                            .updateTaiKhoanNguoiDung(taiKhoan);
                    congChuc.setNgaySua(new Date());
                    congChuc.setTaiKhoanNguoiDungId(taiKhoanResult.getId());
                    congChuc.setNguoiSua(currentUser.getFullName());
                    CongChucLocalServiceUtil.updateCongChuc(congChuc);
                    SessionMessages.add(actionRequest, "update.success");
                    actionRequest.setAttribute("coQuanQuanLyId", String.valueOf(coQuanQuanLyId));
                    actionRequest.setAttribute("maOrTenOrEmail",
                            URLDecoder.decode(maOrTenOrEmail, StringPool.UTF8));
                    actionRequest.setAttribute("tab", tab);
                } catch (Exception e) {
                    actionResponse.setRenderParameter("jspPage", PageError);
                    return;
                }

            }
        } else {
            for (int i = 0; i < errors.size(); i++) {
                SessionErrors.add(actionRequest, errors.get(i));
            }
            actionRequest.setAttribute("coQuanQuanLyId", String.valueOf(coQuanQuanLyId));
            actionRequest.setAttribute("maOrTenOrEmail", maOrTenOrEmail);
            actionRequest.setAttribute("emailForm", emailForm);
            actionRequest.setAttribute("congChuc", congChuc);
            actionRequest.setAttribute("taiKhoan", taiKhoan);
            actionRequest.setAttribute("coQuanQuanLy", coQuanQuanLy);
            actionResponse.setRenderParameter("jspPage", PageEditCongChuc);
        }
    }

    /**
     * This is  function delete CongChuc
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param actionRequest
     * @param actionResponse
     * @throws UnsupportedEncodingException
     */
    public void deleteCongChuc(ActionRequest actionRequest, ActionResponse actionResponse)
            throws UnsupportedEncodingException {
        String congChucId = ParamUtil.getString(actionRequest, "congChucId");
        String tab = ParamUtil.getString(actionRequest, "tab", "CC");
        String coQuanQuanLyId = ParamUtil.getString(actionRequest, "coQuanQuanLyId", "");
        String maOrTenOrEmail = URLDecoder.decode(ParamUtil.getString(actionRequest, "maOrTenOrEmail", ""),
                StringPool.UTF8);
        try {
            CongChuc congChuc = CongChucLocalServiceUtil.fetchCongChuc(Long.valueOf(congChucId));
            if (congChuc != null) {
                TaiKhoanNguoiDung taiKhoan = TaiKhoanNguoiDungLocalServiceUtil
                        .fetchTaiKhoanNguoiDung(congChuc.getTaiKhoanNguoiDungId());
                if (taiKhoan != null) {
                    User user = UserLocalServiceUtil.fetchUser(taiKhoan.getTaiKhoanNguoiDungId());
                    if (user != null) {
                        CongChucLocalServiceUtil.deleteCongChuc(congChuc);
                        List<NguoiDung2VaiTro> listNguoiDung2VaiTro = NguoiDung2VaiTroLocalServiceUtil
                                .findByTaiKhoanNguoiDungID(taiKhoan.getId(), 0);
                        for (int i = 0; i < listNguoiDung2VaiTro.size(); i++) {
                            NguoiDung2VaiTroLocalServiceUtil.deleteNguoiDung2VaiTro(listNguoiDung2VaiTro.get(i));
                        }
                        TaiKhoanNguoiDungLocalServiceUtil.deleteTaiKhoanNguoiDung(taiKhoan);
                        UserLocalServiceUtil.deleteUser(user);
                        SessionMessages.add(actionRequest, "delete.success");
                    } else {
                        SessionErrors.add(actionRequest, "delete.error");
                    }
                } else {
                    SessionErrors.add(actionRequest, "delete.error");
                }
            } else {
                SessionErrors.add(actionRequest, "delete.error");
            }
        } catch (Exception e) {
            actionResponse.setRenderParameter("jspPage", PageError);
            return;
        }
        actionRequest.setAttribute("coQuanQuanLyId", String.valueOf(coQuanQuanLyId));
        actionRequest.setAttribute("maOrTenOrEmail", maOrTenOrEmail);
        actionRequest.setAttribute("tab", tab);
    }

    /**
     * This is  function Popup CoQuanQuanLy
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param actionRequest
     * @param actionResponse
     * @throws Exception
     */
    public void popupCoQuanQuanLy(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
        String coQuanQuanLyId = ParamUtil.getString(actionRequest, "coQuanQuanLyId", "");
        String maOrTen = ParamUtil.getString(actionRequest, "maOrTen", "");
        int currentTransPage = ParamUtil.getInteger(actionRequest, "currentTransPage", 0);

        actionRequest.setAttribute("coQuanQuanLyId", coQuanQuanLyId);
        actionResponse.setRenderParameter("jspPage", PagePopupCoQuanQuanLy);
        actionResponse.setRenderParameter("maOrTen", maOrTen);
        actionResponse.setRenderParameter("currentTransPage", String.valueOf(currentTransPage));
    }

    /**
     * This is  function get data ChucVu
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param actionRequest
     * @param actionResponse
     * @throws IOException
     * @throws PortletException
     * @throws NumberFormatException
     * @throws SystemException
     */
    public void getDataChucVu(ActionRequest actionRequest, ActionResponse actionResponse)
            throws IOException, PortletException, NumberFormatException, SystemException {
        String coQuanQuanLyId = ParamUtil.getString(actionRequest, "coQuanQuanLyId");
        JSONArray rows = JSONFactoryUtil.getJSONFactory().createJSONArray();
        List<ChucVu> listChucVu = new ArrayList<ChucVu>();
        if (!Helpers.isEmpty(coQuanQuanLyId)) {
            listChucVu = ChucVuLocalServiceUtil.findByCoQuanQuanLy(Long.valueOf(coQuanQuanLyId), 0);
        }

        for (ChucVu item : listChucVu) {
            JSONObject obj = JSONFactoryUtil.getJSONFactory().createJSONObject();
            obj.put("id", item.getId());
            obj.put("name", item.getTen());
            rows.put(obj);
        }

        HttpServletResponse resourceResponse = PortalUtil.getHttpServletResponse(actionResponse);
        resourceResponse.setContentType(ContentTypes.APPLICATION_JSON);
        resourceResponse.setCharacterEncoding(StringPool.UTF8);
        resourceResponse.getWriter().write(rows.toString());
        resourceResponse.getWriter().close();
    }

    /**
     * This is  function reset password
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param actionRequest
     * @param actionResponse
     * @throws Exception
     */
    public void resetPassword(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
        String congChucId = ParamUtil.getString(actionRequest, "congChucId", "");
        CongChuc congChuc = null;
        if (!Helpers.isEmpty(congChucId)) {
            congChuc = CongChucLocalServiceUtil.fetchCongChuc(Long.valueOf(congChucId));
        } else {
            actionResponse.setRenderParameter("jspPage", PageError);
        }
        actionRequest.setAttribute("congChuc", congChuc);
        actionResponse.setRenderParameter("jspPage", PageResetPassword);
    }

    /**
     * This is  function save password
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param actionRequest
     * @param actionResponse
     * @throws Exception
     */
    public void saveResetPassword(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
        String password = ParamUtil.getString(actionRequest, "password", "");
        String rePassword = ParamUtil.getString(actionRequest, "rePassword", "");
        long taiKhoanId = ParamUtil.getLong(actionRequest, "taiKhoanId", 0);
        CongChuc congChuc = CongChucLocalServiceUtil.fetchByTaiKhoanNguoiDung(taiKhoanId);
        boolean valid = true;
        if (Validator.isNull(ParamUtil.getString(actionRequest, "password"))) {
            SessionErrors.add(actionRequest, "empty.password");
            valid = false;
        }
        if (Validator.isNull(ParamUtil.getString(actionRequest, "rePassword"))) {
            SessionErrors.add(actionRequest, "empty.repassword");
            valid = false;
        }
        if (Validator.isNotNull(ParamUtil.getString(actionRequest, "rePassword"))
                && Validator.isNotNull(ParamUtil.getString(actionRequest, "password"))) {
            if (!ParamUtil.getString(actionRequest, "rePassword")
                    .equals(ParamUtil.getString(actionRequest, "password"))) {
                SessionErrors.add(actionRequest, "missmatch.password");
                valid = false;
            }
        }
        if (valid) {
            TaiKhoanNguoiDung taiKhoan = TaiKhoanNguoiDungLocalServiceUtil.fetchTaiKhoanNguoiDung(taiKhoanId);
            taiKhoan.setMatKhau(CongChucUtils.md5(password));
            TaiKhoanNguoiDungLocalServiceUtil.updateTaiKhoanNguoiDung(taiKhoan);
            boolean changeOk = LiferayUtils.changePassword(taiKhoan.getTaiKhoanNguoiDungId(), password, rePassword);
            if (changeOk) {
                SessionMessages.add(actionRequest, "change.success");
            } else {
                SessionErrors.add(actionRequest, "change.error");
            }
        }
        actionRequest.setAttribute("congChuc", congChuc);
        actionResponse.setRenderParameter("jspPage", PageResetPassword);
    }

    /**
     * This is  function get CongChuc from Html
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param congChuc
     * @param actionRequest
     * @throws Exception
     */
    private CongChuc getCongChucFormHtml(CongChuc congChuc, ActionRequest actionRequest) throws Exception {
        congChuc.setHoVaTen(ParamUtil.getString(actionRequest, "hoVaTen", ""));
        congChuc.setMa(ParamUtil.getString(actionRequest, "ma", ""));
        if (Validator.isNotNull(ParamUtil.getString(actionRequest, "ngaySinh"))) {
            congChuc.setNgaySinh(ParamUtil.getDate(actionRequest, "ngaySinh", new SimpleDateFormat("dd/MM/yyyy")));
        } else {
            congChuc.setNgaySinh(null);
        }
        congChuc.setGioiTinhId(ParamUtil.getLong(actionRequest, "gioiTinh", 0));
        congChuc.setCoQuanQuanLyId(ParamUtil.getLong(actionRequest, "cqqlId", 0));
        congChuc.setChucVuId(ParamUtil.getLong(actionRequest, "chucVuId", 0));
        if (Validator.isNotNull(ParamUtil.getString(actionRequest, "ngayCapCmnd"))) {
            congChuc.setNgayCapCmnd(
                    ParamUtil.getDate(actionRequest, "ngayCapCmnd", new SimpleDateFormat("dd/MM/yyyy")));
        } else {
            congChuc.setNgayCapCmnd(null);
        }
        congChuc.setSoCmnd(ParamUtil.getString(actionRequest, "soCmnd", ""));
        congChuc.setNoiCapCmnd(ParamUtil.getString(actionRequest, "noiCapCmnd", ""));
        return congChuc;
    }

    /**
     * This is  function role of CongChuc
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void quyenCongChuc(ActionRequest request, ActionResponse response) throws Exception {
        long congChucId = ParamUtil.get(request, "congChucId", 0l);
        String coQuanQuanLyId = ParamUtil.getString(request, "coQuanQuanLyId", "");
        String maOrTenOrEmail = ParamUtil.getString(request, "maOrTenOrEmail", "");
        CongChuc congChuc = CongChucLocalServiceUtil.fetchCongChuc(congChucId);
        TaiKhoanNguoiDung taiKhoanNguoiDung = null;
        try {
            taiKhoanNguoiDung = TaiKhoanNguoiDungLocalServiceUtil
                    .getTaiKhoanNguoiDung(congChuc.getTaiKhoanNguoiDungId());
        } catch (Exception e) {
        }
        List<ChucVu2VaiTro> listChucVu2VaiTro = null;
        if (congChuc.getChucVuId() != 0) {
            listChucVu2VaiTro = ChucVu2VaiTroLocalServiceUtil
                    .findByIdChucVuAndIdCoQuanQuanLy(congChuc.getChucVuId(), congChuc.getCoQuanQuanLyId(), 0);
        }
        List<NguoiDung2VaiTro> listNguoiDung2VaiTro = NguoiDung2VaiTroLocalServiceUtil
                .findByTaiKhoanNguoiDungID(taiKhoanNguoiDung.getId(), Constants.ACTIVATED);
        request.setAttribute("congChucId", congChucId);
        request.setAttribute("maOrTenOrEmail", maOrTenOrEmail);
        request.setAttribute("coQuanQuanLyId", coQuanQuanLyId);
        request.setAttribute("listChucVu2VaiTro", listChucVu2VaiTro);
        request.setAttribute("listNguoiDung2VaiTro", listNguoiDung2VaiTro);
        response.setRenderParameter("jspPage", pageQuyenCongChuc);
    }

    /**
     * This is  function save role popup
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void searchVaiTroPopup(ActionRequest request, ActionResponse response) throws Exception {
        String congChucId = ParamUtil.getString(request, "congChucId", "");
        String searchInputText = ParamUtil.getString(request, "searchInputText", "");
        String[] strVaiTroIds = request.getParameterValues("strVaiTroIds[]");
        if (strVaiTroIds != null) {
            boolean insertOk = true;
            User user = PortalUtil.getUser(request);
            CongChuc congChuc = CongChucLocalServiceUtil.fetchCongChuc(Long.valueOf(congChucId));
            TaiKhoanNguoiDung taiKhoanNguoiDung = TaiKhoanNguoiDungLocalServiceUtil
                    .fetchTaiKhoanNguoiDung(congChuc.getTaiKhoanNguoiDungId());
            long[] vaitroids = new long[strVaiTroIds.length];
            for (int i = 0; i < strVaiTroIds.length; i++) {
                vaitroids[i] = Long.valueOf(strVaiTroIds[i]);
            }
            for (int i = 0; i < vaitroids.length; i++) {
                NguoiDung2VaiTro nguoiDung2VaiTro = new NguoiDung2VaiTroClp();
                nguoiDung2VaiTro.setId(CounterLocalServiceUtil.increment(NguoiDung2VaiTro.class.getName()));
                nguoiDung2VaiTro.setNgayTao(new Date());
                if (user != null) {
                    nguoiDung2VaiTro.setNguoiTao(user.getFullName());
                } else {
                    nguoiDung2VaiTro.setNguoiTao("ADMIN");
                }
                nguoiDung2VaiTro.setDaXoa(0);
                nguoiDung2VaiTro.setVaiTroId(vaitroids[i]);
                nguoiDung2VaiTro.setTaiKhoanNguoiDungId(taiKhoanNguoiDung.getId());
                NguoiDung2VaiTroLocalServiceUtil.addNguoiDung2VaiTro(nguoiDung2VaiTro);
            }
            insertOk = CongChucUtils.ganQuyenToCanBo(congChuc, vaitroids);
            if (insertOk) {
                SessionMessages.add(request, "addVaiTroSuccess");
                request.setAttribute("submited", 1);
            } else {
                for (int i = 0; i < vaitroids.length; i++) {
                    NguoiDung2VaiTro nguoiDung2VaiTro = NguoiDung2VaiTroLocalServiceUtil
                            .findByVaiTroIDAndTaiKhoanNguoiDungId(vaitroids[i], taiKhoanNguoiDung.getId(), 0);
                    NguoiDung2VaiTroLocalServiceUtil.deleteNguoiDung2VaiTro(nguoiDung2VaiTro);
                }
                SessionErrors.add(request, "addVaiTroError");
            }

        }
        List<VaiTro> listVaiTro = new ArrayList<VaiTro>();
        listVaiTro = CongChucUtils.searchVaiTroByTen(searchInputText, 0);
        request.setAttribute("congChucId", congChucId);
        request.setAttribute("listVaiTro", listVaiTro);
        request.setAttribute("searchInputText", searchInputText);
        response.setRenderParameter("jspPage", "/html/portlet/admin/congchuc/congchuc/addvaitrotocanbo.jsp");
    }

    /**
     * This is  function delete VaiTro to CanBo
     * Version: 1.0
     *  
     * History: 
     *   DATE        AUTHOR      DESCRIPTION 
     *  ------------------------------------------------- 
     *  3-March-2013  Nam Dinh    Create new
     * @param request
     * @param response
     * @throws Exception
     */
    public void deleteVaiTroToCanBo(ActionRequest request, ActionResponse response) throws Exception {
        String coQuanQuanLyId = ParamUtil.getString(request, "coQuanQuanLyId", "");
        String maOrTenOrEmail = ParamUtil.getString(request, "maOrTenOrEmail", "");
        boolean deleteOk = false;
        long congChucId = ParamUtil.getLong(request, "congChucId", 0);
        long vaiTroId = ParamUtil.getLong(request, "vaiTroId", 0);

        CongChuc congChuc = CongChucLocalServiceUtil.fetchCongChuc(congChucId);
        TaiKhoanNguoiDung taiKhoanNguoiDung = null;
        try {
            taiKhoanNguoiDung = TaiKhoanNguoiDungLocalServiceUtil
                    .getTaiKhoanNguoiDung(congChuc.getTaiKhoanNguoiDungId());
        } catch (Exception e) {
        }
        NguoiDung2VaiTro nguoiDung2VaiTro = NguoiDung2VaiTroLocalServiceUtil
                .findByVaiTroIDAndTaiKhoanNguoiDungId(vaiTroId, taiKhoanNguoiDung.getId(), 0);
        if (nguoiDung2VaiTro != null) {
            deleteOk = CongChucUtils.xoaQuyenToCanBo(congChuc, vaiTroId);
            if (deleteOk) {
                NguoiDung2VaiTroLocalServiceUtil.deleteNguoiDung2VaiTro(nguoiDung2VaiTro);
            }
        }
        List<ChucVu2VaiTro> listChucVu2VaiTro = null;
        if (congChuc.getChucVuId() != 0) {
            listChucVu2VaiTro = ChucVu2VaiTroLocalServiceUtil
                    .findByIdChucVuAndIdCoQuanQuanLy(congChuc.getChucVuId(), congChuc.getCoQuanQuanLyId(), 0);
        }
        List<NguoiDung2VaiTro> listNguoiDung2VaiTro = NguoiDung2VaiTroLocalServiceUtil
                .findByTaiKhoanNguoiDungID(taiKhoanNguoiDung.getId(), Constants.ACTIVATED);

        if (deleteOk) {
            SessionMessages.add(request, "deleteVaiTroSuccess");
        } else {
            SessionErrors.add(request, "deleteVaiTroError");
        }
        request.setAttribute("congChucId", congChucId);
        request.setAttribute("maOrTenOrEmail", maOrTenOrEmail);
        request.setAttribute("coQuanQuanLyId", coQuanQuanLyId);
        request.setAttribute("listChucVu2VaiTro", listChucVu2VaiTro);
        request.setAttribute("listNguoiDung2VaiTro", listNguoiDung2VaiTro);
        response.setRenderParameter("jspPage", pageQuyenCongChuc);
    }
}