org.opencps.api.service.impl.ApiServiceServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for org.opencps.api.service.impl.ApiServiceServiceImpl.java

Source

/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package org.opencps.api.service.impl;

import org.opencps.api.service.base.ApiServiceServiceBaseImpl;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.opencps.api.service.ApiServiceLocalServiceUtil;
import org.opencps.api.service.base.ApiServiceServiceBaseImpl;
import org.opencps.backend.message.SendToEngineMsg;
import org.opencps.dossiermgt.NoSuchDossierPartException;
import org.opencps.dossiermgt.bean.ProcessOrderBean;
import org.opencps.dossiermgt.model.Dossier;
import org.opencps.dossiermgt.model.DossierFile;
import org.opencps.dossiermgt.model.DossierPart;
import org.opencps.dossiermgt.model.DossierTemplate;
import org.opencps.dossiermgt.model.ServiceConfig;
import org.opencps.dossiermgt.service.DossierFileLocalServiceUtil;
import org.opencps.dossiermgt.service.DossierLocalServiceUtil;
import org.opencps.dossiermgt.service.DossierPartLocalServiceUtil;
import org.opencps.dossiermgt.service.DossierTemplateLocalServiceUtil;
import org.opencps.dossiermgt.service.ServiceConfigLocalServiceUtil;
import org.opencps.processmgt.NoSuchProcessOrderException;
import org.opencps.processmgt.model.ProcessOrder;
import org.opencps.processmgt.model.ProcessWorkflow;
import org.opencps.processmgt.search.ProcessOrderDisplayTerms;
import org.opencps.processmgt.service.ProcessOrderLocalServiceUtil;
import org.opencps.processmgt.service.ProcessWorkflowLocalServiceUtil;
import org.opencps.servicemgt.NoSuchServiceInfoException;
import org.opencps.servicemgt.model.ServiceInfo;
import org.opencps.servicemgt.service.ServiceInfoLocalServiceUtil;
import org.opencps.usermgt.portlet.UserMgtEditProfilePortlet;
import org.opencps.util.DLFolderUtil;
import org.opencps.util.DateTimeUtil;
import org.opencps.util.PortletConstants;

import com.liferay.portal.NoSuchUserException;
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.JSONException;
import com.liferay.portal.kernel.json.JSONFactoryUtil;
import com.liferay.portal.kernel.json.JSONObject;
import com.liferay.portal.kernel.jsonwebservice.JSONWebService;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.messaging.Message;
import com.liferay.portal.kernel.messaging.MessageBusUtil;
import com.liferay.portal.kernel.repository.model.FileEntry;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.model.User;
import com.liferay.portal.security.ac.AccessControlled;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portal.service.ServiceContextThreadLocal;
import com.liferay.portal.service.UserLocalServiceUtil;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.documentlibrary.model.DLFolder;
import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil;
import com.liferay.util.portlet.PortletProps;

/**
 * The implementation of the api service remote service.
 *
 * <p>
 * All custom service methods should be put in this class. Whenever methods are added, rerun ServiceBuilder to copy their definitions into the {@link org.opencps.api.service.ApiServiceService} interface.
 *
 * <p>
 * This is a remote service. Methods of this service are expected to have security checks based on the propagated JAAS credentials because this service can be accessed remotely.
 * </p>
 *
 * @author trungdk
 * @see org.opencps.api.service.base.ApiServiceServiceBaseImpl
 * @see org.opencps.api.service.ApiServiceServiceUtil
 */
public class ApiServiceServiceImpl extends ApiServiceServiceBaseImpl {
    /*
     * NOTE FOR DEVELOPERS:
     *
     * Never reference this interface directly. Always use {@link org.opencps.api.service.ApiServiceServiceUtil} to access the api service remote service.
     */
    @JSONWebService(value = "dossiers", method = "GET")
    public JSONObject searchDossierByUserAssignProcessOrder(String username) throws SystemException {
        JSONObject resultObj = JSONFactoryUtil.createJSONObject();
        long userId = 0;
        try {
            User user = UserLocalServiceUtil.getUserByScreenName(getUser().getCompanyId(), username);
            if (user != null) {
                userId = user.getUserId();
            }
        } catch (PortalException e) {
            // TODO Auto-generated catch block

        } catch (SystemException e) {
            // TODO Auto-generated catch block

        }

        //try {
        SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil._VN_DATE_TIME_FORMAT);
        /*
        int count = dossierLocalService
           .countDossierByUserAssignProcessOrder(username);
        List<Dossier> dossiers = dossierLocalService
           .searchDossierByUserAssignProcessOrder(username, 0, count);
        */
        int serviceInfoId = 0;
        int processStepId = 0;

        int count = ProcessOrderLocalServiceUtil.countProcessOrder(serviceInfoId, processStepId, userId, userId);
        List<ProcessOrderBean> processOrders = ProcessOrderLocalServiceUtil.searchProcessOrder(serviceInfoId,
                processStepId, userId, userId, 0, count, null);
        List<Dossier> dossiers = new ArrayList<Dossier>();
        for (ProcessOrderBean pd : processOrders) {
            try {
                dossiers.add(DossierLocalServiceUtil.getDossier(pd.getDossierId()));
            } catch (PortalException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        JSONArray resultArr = JSONFactoryUtil.createJSONArray();
        for (Dossier d : dossiers) {
            userId = d.getUserId();
            JSONObject dossierObj = JSONFactoryUtil.createJSONObject();
            dossierObj.put("oid", d.getOid());
            ServiceInfo serviceInfo = null;
            try {
                serviceInfo = ServiceInfoLocalServiceUtil.getServiceInfo(d.getServiceInfoId());
                dossierObj.put("serviceNo", serviceInfo.getServiceNo());
                dossierObj.put("serviceName", serviceInfo.getServiceName());
            } catch (NoSuchServiceInfoException e) {
                dossierObj.put("serviceNo", "");
                dossierObj.put("serviceName", "");
            } catch (PortalException e) {
                // TODO Auto-generated catch block
                dossierObj.put("serviceNo", "");
                dossierObj.put("serviceName", "");
            }
            dossierObj.put("subjectName", d.getSubjectName());
            dossierObj.put("address", d.getAddress());
            if (d.getSubmitDatetime() != null) {
                dossierObj.put("submitDatetime", sdf.format(d.getSubmitDatetime()));
            }
            if (d.getReceiveDatetime() != null) {
                dossierObj.put("receiveDatetime", sdf.format(d.getReceiveDatetime()));
            }
            dossierObj.put("receptionNo", d.getReceptionNo());
            if (d.getEstimateDatetime() != null) {
                dossierObj.put("estimateDatetime", d.getEstimateDatetime());
            }
            dossierObj.put("dossierStatus", d.getDossierStatus());
            dossierObj.put("delayStatus", d.getDelayStatus());
            resultArr.put(dossierObj);
        }

        resultObj.put("statusCode", "Success");
        resultObj.put("data", resultArr);
        try {
            ServiceContext serviceContext = new ServiceContext();
            serviceContext.setUserId(getUser().getUserId());
            serviceContext.setScopeGroupId(getUser().getGroupId());
            serviceContext.setCompanyId(getUser().getCompanyId());

            String ipAddress = PortalUtil.getComputerAddress();

            ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(), "02", ipAddress, "",
                    "{ 'username': '" + username + "' }", "success", serviceContext);
        } catch (PortalException pe) {

        }
        /*} catch (NoSuchUserException e) {
           resultObj.put("statusCode", "UserNotFound");
           String ipAddress = PortalUtil.getComputerAddress();
           try {
        ServiceContext serviceContext = new ServiceContext();
        serviceContext.setUserId(getUser().getUserId());
        serviceContext.setScopeGroupId(getUser().getGroupId());
        serviceContext.setCompanyId(getUser().getCompanyId());
        ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(),
              "02", ipAddress, "", "{ 'username': '" + username
                    + "' }", "error", serviceContext);
           } catch (PortalException pe) {
           }
        }*/
        return resultObj;
    }

    @JSONWebService(value = "dossiers", method = "GET")
    public JSONObject searchDossierByProcessStepAndUser(String processno, String stepno, String username) {
        JSONObject resultObj = JSONFactoryUtil.createJSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil._VN_DATE_TIME_FORMAT);
        /*
        int count = dossierLocalService.countDossierByP_S_U(processno, stepno,
        username);
        List<Dossier> dossiers = dossierLocalService.searchDossierByP_S_U(
        processno, stepno, username, 0, count);
        */
        try {
            int count = dossierLocalService.countDossierByP_PS_U(processno, stepno, username);
            List<Dossier> dossiers = dossierLocalService.searchDossierByP_PS_U(processno, stepno, username, 0,
                    count);
            JSONArray resultArr = JSONFactoryUtil.createJSONArray();
            for (Dossier d : dossiers) {
                JSONObject dossierObj = JSONFactoryUtil.createJSONObject();
                dossierObj.put("oid", d.getOid());
                ServiceInfo serviceInfo = null;
                try {
                    serviceInfo = ServiceInfoLocalServiceUtil.getServiceInfo(d.getServiceInfoId());
                    dossierObj.put("serviceNo", serviceInfo.getServiceNo());
                    dossierObj.put("serviceName", serviceInfo.getServiceName());
                } catch (NoSuchServiceInfoException e) {
                    dossierObj.put("serviceNo", "");
                    dossierObj.put("serviceName", "");
                } catch (PortalException e) {
                    // TODO Auto-generated catch block
                    dossierObj.put("serviceNo", "");
                    dossierObj.put("serviceName", "");
                } catch (SystemException e) {
                    // TODO Auto-generated catch block

                }
                dossierObj.put("subjectName", d.getSubjectName());
                dossierObj.put("address", d.getAddress());
                if (d.getSubmitDatetime() != null) {
                    dossierObj.put("submitDatetime", sdf.format(d.getSubmitDatetime()));
                }
                if (d.getReceiveDatetime() != null) {
                    dossierObj.put("receiveDatetime", sdf.format(d.getReceiveDatetime()));
                }
                dossierObj.put("receptionNo", d.getReceptionNo());
                if (d.getEstimateDatetime() != null) {
                    dossierObj.put("estimateDatetime", d.getEstimateDatetime());
                }
                dossierObj.put("dossierStatus", d.getDossierStatus());
                dossierObj.put("delayStatus", d.getDelayStatus());
                resultArr.put(dossierObj);
            }

            resultObj.put("statusCode", "Success");
            resultObj.put("data", resultArr);

            try {
                ServiceContext serviceContext = new ServiceContext();
                serviceContext.setUserId(getUser().getUserId());
                serviceContext.setScopeGroupId(getUser().getGroupId());
                serviceContext.setCompanyId(getUser().getCompanyId());
                String ipAddress = PortalUtil.getComputerAddress();

                JSONObject params = JSONFactoryUtil.createJSONObject();
                params.put("processno", processno);
                params.put("stepno", stepno);
                params.put("username", username);

                ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(), "01", ipAddress, "",
                        params.toString(), "success", serviceContext);
            } catch (SystemException se) {

            } catch (PortalException pe) {

            }
        } catch (NoSuchUserException e) {
            resultObj.put("statusCode", "UserNotFound");
        }

        return resultObj;
    }

    @JSONWebService(value = "dossiers", method = "GET")
    public JSONObject getByoid(String oid) {
        JSONObject jsonObject = JSONFactoryUtil.createJSONObject();
        Dossier dossier;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil._VN_DATE_TIME_FORMAT);
            dossier = dossierLocalService.getByoid(oid);
            if (dossier != null) {
                jsonObject.put("oid", dossier.getOid());
                ServiceInfo serviceInfo = null;
                try {
                    serviceInfo = ServiceInfoLocalServiceUtil.getServiceInfo(dossier.getServiceInfoId());
                    jsonObject.put("serviceNo", serviceInfo.getServiceNo());
                    jsonObject.put("serviceName", serviceInfo.getServiceName());
                } catch (NoSuchServiceInfoException e) {
                    jsonObject.put("serviceNo", "");
                    jsonObject.put("serviceName", "");
                } catch (PortalException e) {
                    // TODO Auto-generated catch block
                    jsonObject.put("serviceNo", "");
                    jsonObject.put("serviceName", "");
                }
                jsonObject.put("govAgencyCode", dossier.getGovAgencyCode());
                jsonObject.put("govAgencyName", dossier.getGovAgencyName());
                jsonObject.put("subjectName", dossier.getSubjectName());
                jsonObject.put("address", dossier.getAddress());
                jsonObject.put("cityCode", dossier.getCityCode());
                jsonObject.put("cityName", dossier.getCityName());
                jsonObject.put("districtCode", dossier.getDistrictCode());
                jsonObject.put("districtName", dossier.getDistrictName());
                jsonObject.put("wardCode", dossier.getWardCode());
                jsonObject.put("wardName", dossier.getWardName());
                jsonObject.put("contactName", dossier.getContactName());
                jsonObject.put("contactTelNo", dossier.getContactTelNo());
                jsonObject.put("contactEmail", dossier.getContactEmail());
                jsonObject.put("note", dossier.getNote());
                if (dossier.getSubmitDatetime() != null) {
                    jsonObject.put("submitDatetime", sdf.format(dossier.getSubmitDatetime()));
                }
                if (dossier.getReceiveDatetime() != null) {
                    jsonObject.put("receiveDatetime", sdf.format(dossier.getReceiveDatetime()));
                }
                jsonObject.put("receptionNo", dossier.getReceptionNo());
                if (dossier.getEstimateDatetime() != null) {
                    jsonObject.put("estimateDatetime", sdf.format(dossier.getEstimateDatetime()));
                }
                if (dossier.getFinishDatetime() != null) {
                    jsonObject.put("finishDatetime", sdf.format(dossier.getFinishDatetime()));
                }
                jsonObject.put("dossierStatus", dossier.getDossierStatus());
                jsonObject.put("delayStatus", dossier.getDelayStatus());

                List<DossierFile> dossierFiles = DossierFileLocalServiceUtil
                        .getDossierFileByDossierId(dossier.getDossierId());
                JSONArray dfArr = JSONFactoryUtil.createJSONArray();

                for (DossierFile df : dossierFiles) {
                    JSONObject jsonDossierFile = JSONFactoryUtil.createJSONObject();
                    jsonDossierFile.put("dossierFileOid", df.getOid());
                    try {
                        DossierPart dpart = DossierPartLocalServiceUtil.getDossierPart(df.getDossierPartId());
                        jsonDossierFile.put("dossierPartNo", dpart.getPartNo());
                    } catch (NoSuchDossierPartException e) {

                    } catch (PortalException e) {
                        // TODO Auto-generated catch block

                    }
                    jsonDossierFile.put("dossierFileName", df.getDisplayName());
                    jsonDossierFile.put("templateFileNo", df.getTemplateFileNo());
                    jsonDossierFile.put("dossierFileNo", df.getDossierFileNo());
                    if (df.getFileEntryId() > 0) {
                        System.out.println("FILE ENTRY==============" + df.getFileEntryId());
                        FileEntry fileEntry;
                        try {
                            fileEntry = DLAppLocalServiceUtil.getFileEntry(df.getFileEntryId());
                            jsonDossierFile.put("dossierFullFileName",
                                    df.getDisplayName() + "." + fileEntry.getExtension());

                            String url = PortletProps.get("VIRTUAL_HOST") + ":" + PortletProps.get("VIRTUAL_PORT")
                                    + "/documents/" + fileEntry.getGroupId() + StringPool.SLASH
                                    + fileEntry.getFolderId() + StringPool.SLASH + fileEntry.getTitle()
                                    + "?version=" + fileEntry.getVersion();

                            jsonDossierFile.put("dossierFileURL", url);

                        } catch (PortalException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    } else {
                        jsonDossierFile.put("dossierFileContent", df.getFormData());
                        jsonDossierFile.put("dossierFileURL", "");
                    }

                    if (df.getDossierFileDate() != null) {
                        jsonDossierFile.put("dossierFileDate", sdf.format(df.getDossierFileDate()));
                    }
                    dfArr.put(jsonDossierFile);
                }

                jsonObject.put("dossierFiles", dfArr);
                System.out.println("COME HERE IN GET DOSSIER BY OID==========");
                try {
                    ServiceContext serviceContext = new ServiceContext();
                    serviceContext.setUserId(getUser().getUserId());
                    serviceContext.setScopeGroupId(getUser().getGroupId());
                    serviceContext.setCompanyId(getUser().getCompanyId());
                    String ipAddress = PortalUtil.getComputerAddress();

                    JSONObject params = JSONFactoryUtil.createJSONObject();
                    params.put("oid", oid);

                    ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(), "03", ipAddress, "",
                            params.toString(), "success", serviceContext);
                } catch (SystemException se) {
                    _log.error(se);
                } catch (PortalException pe) {
                    _log.error(pe);
                }
            } else {
                jsonObject.put("statusCode", "DossierNotFound");
                _log.info("COME HERE===============");
                try {
                    ServiceContext serviceContext = new ServiceContext();
                    serviceContext.setUserId(getUser().getUserId());
                    serviceContext.setScopeGroupId(getUser().getGroupId());
                    serviceContext.setCompanyId(getUser().getCompanyId());
                    String ipAddress = PortalUtil.getComputerAddress();

                    JSONObject params = JSONFactoryUtil.createJSONObject();
                    params.put("oid", oid);

                    ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(), "03", ipAddress, "",
                            params.toString(), "error", serviceContext);
                } catch (SystemException se) {
                    _log.error(se);
                } catch (PortalException pe) {
                    _log.error(pe);
                }
            }
        } catch (SystemException e) {
            // TODO Auto-generated catch block
            jsonObject.put("statusCode", "DossierNotFound");
            _log.info("COME HERE===============");
            try {
                ServiceContext serviceContext = new ServiceContext();
                serviceContext.setUserId(getUser().getUserId());
                serviceContext.setScopeGroupId(getUser().getGroupId());
                serviceContext.setCompanyId(getUser().getCompanyId());
                String ipAddress = PortalUtil.getComputerAddress();

                JSONObject params = JSONFactoryUtil.createJSONObject();
                params.put("oid", oid);

                ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(), "03", ipAddress, "",
                        params.toString(), "error", serviceContext);
            } catch (SystemException se) {
                _log.error(se);
            } catch (PortalException pe) {
                _log.error(pe);
            }

        }

        return jsonObject;
    }

    @JSONWebService(value = "dossierfile", method = "POST")
    public JSONObject addDossierFile(String oid, String dossierfile) {
        JSONObject resultObj = JSONFactoryUtil.createJSONObject();
        System.out.println("DOSSIER FILE CONTENT==============" + dossierfile);
        try {
            JSONObject dossierfileObj = JSONFactoryUtil.createJSONObject(dossierfile);
            String dossierFileOid = dossierfileObj.getString("dossierFileOid");
            String dossierPartNo = dossierfileObj.getString("dossierPartNo");
            String dossierFileContent = dossierfileObj.getString("dossierFileContent");
            String dossierFileURL = dossierfileObj.getString("dossierFileURL");
            String templateFileNo = dossierfileObj.getString("templateFileNo");
            String dossierFileName = dossierfileObj.getString("dossierFileName");
            String dossierFileNo = dossierfileObj.getString("dossierFileNo");
            String dossierFileDate = dossierfileObj.getString("dossierFileDate");
            DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date fileDate = null;
            try {
                fileDate = formatter.parse(dossierFileDate);
            } catch (ParseException pe) {
                fileDate = new Date();
            }
            System.out.println("DOSSIER FILE OID===============" + dossierFileOid);
            System.out.println("DOSSIER FILE URL===============" + dossierFileURL);
            if (dossierFileOid.equals("")) {
                // Add new dossier file
                if (dossierFileURL.equals("")) {
                    System.out.println("ADD NEW DOSSIER FILE=============");
                    Dossier dossier = null;
                    DossierFile dossierFile = null;
                    DossierPart dossierPart = null;
                    try {
                        dossier = DossierLocalServiceUtil.getByoid(oid);
                        if (dossier == null) {
                            resultObj.put("statusCode", "DossierNotFound");
                            return resultObj;
                        }
                        long dossierId = dossier.getDossierId();

                        ServiceContext serviceContext = new ServiceContext();
                        try {
                            dossier = DossierLocalServiceUtil.getDossier(dossierId);

                            dossierPart = DossierPartLocalServiceUtil.getDossierPartByTFN_PN(templateFileNo,
                                    dossierPartNo);

                            serviceContext.setUserId(dossier.getUserId());
                            serviceContext.setScopeGroupId(dossier.getGroupId());
                            serviceContext.setCompanyId(dossier.getCompanyId());

                            dossierFile = DossierFileLocalServiceUtil.addDossierFile(dossier.getUserId(), dossierId,
                                    dossierPart.getDossierpartId(), dossierPart.getTemplateFileNo(),
                                    StringPool.BLANK, 0, 0, dossier.getUserId(), dossier.getOwnerOrganizationId(),
                                    dossierFileName, dossierFileContent, 0,
                                    PortletConstants.DOSSIER_FILE_MARK_UNKNOW, 1, dossierFileNo, fileDate, 1,
                                    PortletConstants.DOSSIER_FILE_SYNC_STATUS_NOSYNC, serviceContext);

                            try {
                                serviceContext = new ServiceContext();
                                serviceContext.setUserId(getUser().getUserId());
                                serviceContext.setScopeGroupId(getUser().getGroupId());
                                serviceContext.setCompanyId(getUser().getCompanyId());

                                String ipAddress = PortalUtil.getComputerAddress();
                                JSONObject params = JSONFactoryUtil.createJSONObject();
                                params.put("oid", oid);
                                params.put("dossierfile", dossierfile);
                                ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(), "04", ipAddress, "",
                                        params.toString(), "success", serviceContext);
                            } catch (SystemException se) {

                            } catch (PortalException pe) {

                            }
                        } catch (NoSuchDossierPartException nsd) {
                            resultObj.put("statusCode", "CanNotUpdate");
                            return resultObj;
                        } catch (Exception e) {
                            resultObj.put("statusCode", "CanNotUpdate");
                            return resultObj;
                        }
                    } catch (SystemException ee) {
                        // TODO Auto-generated catch block
                        resultObj.put("statusCode", "DossierNotFound");
                        return resultObj;

                    }
                } else if (dossierFileContent.equals("") || dossierFileContent.equals("{}")) {
                    System.out.println("ADD NEW DOSSIER FILE FROM FILE URL=============");
                    try {
                        URL fileURL = new URL(dossierFileURL);
                        InputStream is = fileURL.openStream();
                        long size = is.available();
                        /*
                        ServiceContext serviceContext = ServiceContextThreadLocal
                              .getServiceContext();
                        */
                        ServiceContext serviceContext = new ServiceContext();

                        Dossier dossier = null;
                        DossierFile dossierFile = null;
                        DossierPart dossierPart = null;
                        try {
                            System.out.println("GET DOSSIER FOLDER=============");
                            dossier = DossierLocalServiceUtil.getByoid(oid);
                            if (dossier == null) {
                                resultObj.put("statusCode", "DossierNotFound");
                                return resultObj;
                            }
                            long dossierId = dossier.getDossierId();
                            serviceContext.setScopeGroupId(dossier.getGroupId());
                            serviceContext.setCompanyId(dossier.getCompanyId());
                            serviceContext.setUserId(dossier.getUserId());

                            DLFolder dossierFolder = DLFolderUtil.getDossierFolder(serviceContext.getScopeGroupId(),
                                    dossier.getUserId(), dossier.getCounter(), serviceContext);
                            dossierPart = DossierPartLocalServiceUtil.getDossierPartByTFN_PN(templateFileNo,
                                    dossierPartNo);
                            System.out.println("ADD DOSSIER FILE FROM URL=============");
                            DossierFileLocalServiceUtil.addDossierFile(dossier.getUserId(), dossierId,
                                    dossierPart.getDossierpartId(), dossierPart.getTemplateFileNo(),
                                    StringPool.BLANK, 0L, 0L, dossier.getUserId(), dossier.getOwnerOrganizationId(),
                                    dossierFileName, StringPool.BLANK,
                                    dossierFile != null ? dossierFile.getFileEntryId() : 0,
                                    PortletConstants.DOSSIER_FILE_MARK_UNKNOW, 1, dossierFileNo, fileDate, 1,
                                    PortletConstants.DOSSIER_FILE_SYNC_STATUS_NOSYNC, dossierFolder.getFolderId(),
                                    dossierFileNo, "", dossierFileName, StringPool.BLANK, StringPool.BLANK, is,
                                    size, serviceContext);
                            try {
                                serviceContext = new ServiceContext();
                                serviceContext.setUserId(getUser().getUserId());
                                serviceContext.setScopeGroupId(getUser().getGroupId());
                                serviceContext.setCompanyId(getUser().getCompanyId());

                                String ipAddress = PortalUtil.getComputerAddress();
                                JSONObject params = JSONFactoryUtil.createJSONObject();
                                params.put("oid", oid);
                                params.put("dossierfile", dossierfile);
                                ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(), "04", ipAddress, "",
                                        params.toString(), "success", serviceContext);
                            } catch (SystemException se) {

                            } catch (PortalException pe) {

                            }

                        } catch (SystemException e) {
                            resultObj.put("statusCode", "CanNotUpdate");
                            return resultObj;
                        } catch (PortalException e) {
                            // TODO Auto-generated catch block
                            resultObj.put("statusCode", "CanNotUpdate");
                            return resultObj;
                        }

                    } catch (MalformedURLException e) {
                        // TODO Auto-generated catch block

                    } catch (IOException e) {
                        // TODO Auto-generated catch block

                    }

                }
            } else {
                if (dossierFileURL.equals("")) {
                    DossierFile dossierFile = null;
                    try {
                        dossierFile = DossierFileLocalServiceUtil.getByOid(dossierFileOid);
                        DossierPart dossierPart = null;
                        Dossier dossier = null;
                        try {
                            dossier = DossierLocalServiceUtil.getByoid(oid);
                            long dossierId = dossier.getDossierId();

                            ServiceContext serviceContext = new ServiceContext();
                            try {
                                dossier = DossierLocalServiceUtil.getDossier(dossierId);

                                dossierPart = DossierPartLocalServiceUtil.getDossierPartByPartNo(dossierPartNo);

                                serviceContext.setUserId(dossier.getUserId());

                                DossierFileLocalServiceUtil.addDossierFile(dossier.getUserId(), dossierId,
                                        dossierPart.getDossierpartId(), dossierPart.getTemplateFileNo(),
                                        StringPool.BLANK, 0, 0, dossier.getUserId(),
                                        dossier.getOwnerOrganizationId(), dossierFileName, dossierFileContent,
                                        dossierFile != null ? dossierFile.getFileEntryId() : 0,
                                        PortletConstants.DOSSIER_FILE_MARK_UNKNOW, 1, dossierFileNo, new Date(), 1,
                                        PortletConstants.DOSSIER_FILE_SYNC_STATUS_NOSYNC, serviceContext);
                                try {
                                    serviceContext = new ServiceContext();
                                    serviceContext.setUserId(getUser().getUserId());
                                    serviceContext.setScopeGroupId(getUser().getGroupId());
                                    serviceContext.setCompanyId(getUser().getCompanyId());

                                    String ipAddress = PortalUtil.getComputerAddress();
                                    JSONObject params = JSONFactoryUtil.createJSONObject();
                                    params.put("oid", oid);
                                    params.put("dossierfile", dossierfile);
                                    ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(), "04", ipAddress,
                                            "", params.toString(), "success", serviceContext);
                                } catch (SystemException se) {

                                } catch (PortalException pe) {

                                }

                            } catch (Exception e) {

                            }
                        } catch (SystemException ee) {
                            // TODO Auto-generated catch block

                        }

                    } catch (SystemException e) {
                        // TODO Auto-generated catch block

                    }

                } else {
                    try {
                        DossierFile dossierFile = null;
                        dossierFile = DossierFileLocalServiceUtil.getByOid(dossierFileOid);
                        URL fileURL = new URL(dossierFileURL);
                        InputStream is = fileURL.openStream();
                        long size = is.available();
                        ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();
                        Dossier dossier = null;
                        DossierPart dossierPart = null;

                        System.out.println("GET DOSSIER FOLDER=============");
                        dossier = DossierLocalServiceUtil.getByoid(oid);
                        long dossierId = dossier.getDossierId();
                        DLFolder dossierFolder = DLFolderUtil.getDossierFolder(serviceContext.getScopeGroupId(),
                                dossier.getUserId(), dossier.getCounter(), serviceContext);
                        dossierPart = DossierPartLocalServiceUtil.getDossierPartByPartNo(dossierPartNo);
                        System.out.println("ADD DOSSIER FILE FROM URL=============");
                        DossierFileLocalServiceUtil.addDossierFile(dossier.getUserId(), dossierId,
                                dossierPart.getDossierpartId(), dossierPart.getTemplateFileNo(), StringPool.BLANK,
                                0L, 0L, dossier.getUserId(), dossier.getOwnerOrganizationId(), dossierFileName,
                                StringPool.BLANK, dossierFile != null ? dossierFile.getFileEntryId() : 0,
                                PortletConstants.DOSSIER_FILE_MARK_UNKNOW, 1, dossierFileNo, new Date(), 1,
                                PortletConstants.DOSSIER_FILE_SYNC_STATUS_NOSYNC, dossierFolder.getFolderId(),
                                dossierFileNo, "", dossierFileName, StringPool.BLANK, StringPool.BLANK, is, size,
                                serviceContext);

                        try {
                            serviceContext = new ServiceContext();
                            serviceContext.setUserId(getUser().getUserId());
                            serviceContext.setScopeGroupId(getUser().getGroupId());
                            serviceContext.setCompanyId(getUser().getCompanyId());

                            String ipAddress = PortalUtil.getComputerAddress();
                            JSONObject params = JSONFactoryUtil.createJSONObject();
                            params.put("oid", oid);
                            params.put("dossierfile", dossierfile);
                            ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(), "04", ipAddress, "",
                                    params.toString(), "success", serviceContext);
                        } catch (SystemException se) {

                        } catch (PortalException pe) {

                        }
                    } catch (SystemException e) {
                        // TODO Auto-generated catch block

                    } catch (MalformedURLException e) {
                        // TODO Auto-generated catch block

                    } catch (IOException e) {
                        // TODO Auto-generated catch block

                    } catch (NoSuchDossierPartException e) {
                        // TODO Auto-generated catch block

                    } catch (PortalException e) {
                        // TODO Auto-generated catch block

                    }

                }
            }
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            // e.printStackTrace();
            try {
                ServiceContext serviceContext = new ServiceContext();
                serviceContext.setUserId(getUser().getUserId());
                serviceContext.setScopeGroupId(getUser().getGroupId());
                serviceContext.setCompanyId(getUser().getCompanyId());

                String ipAddress = PortalUtil.getComputerAddress();
                JSONObject params = JSONFactoryUtil.createJSONObject();
                params.put("oid", oid);
                params.put("dossierfile", dossierfile);
                ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(), "04", ipAddress, "",
                        params.toString(), "error", serviceContext);
            } catch (SystemException se) {
                resultObj.put("statusCode", "CanNotUpdate");
                return resultObj;

            } catch (PortalException pe) {
                resultObj.put("statusCode", "CanNotUpdate");
                return resultObj;

            }

            resultObj.put("statusCode", "CanNotUpdate");
            return resultObj;
        }

        /*
         * Dossier dossier = null; DossierFile dossierFile = null; DossierPart
         * dossierPart = null; try { dossier =
         * DossierLocalServiceUtil.getByoid(oid); long dossierId =
         * dossier.getDossierId();
         * 
         * ServiceContext serviceContext = new ServiceContext(); try { dossier =
         * DossierLocalServiceUtil .getDossier(dossierId);
         * 
         * dossierPart = DossierPartLocalServiceUtil
         * .getDossierPart(dossierPartId);
         * serviceContext.setUserId(dossier.getUserId());
         * 
         * DossierFileLocalServiceUtil .addDossierFile(dossier.getUserId(),
         * dossierId, dossierPartId, dossierPart .getTemplateFileNo(),
         * StringPool.BLANK, 0, 0, dossier.getUserId(),
         * dossier.getOwnerOrganizationId(), "Form mu alpaca", formData, 0,
         * PortletConstants.DOSSIER_FILE_MARK_UNKNOW, 1, "FILE0001", new Date(),
         * 1, PortletConstants.DOSSIER_FILE_SYNC_STATUS_NOSYNC, serviceContext
         * );
         * 
         * 
         * } catch (Exception e) {
         * 
         * }
         * 
         * resultObj.put("success", true); } catch (SystemException e1) { //
         * TODO Auto-generated catch block e1.printStackTrace(); }
         */
        resultObj.put("statusCode", "Success");
        return resultObj;
    }

    @JSONWebService(value = "processorder", method = "POST")
    public JSONObject nextStep(String oid, String actioncode, String username) {
        JSONObject resultObj = JSONFactoryUtil.createJSONObject();
        Dossier dossier = null;
        long userId = 0;

        try {
            // insert log received

            // message = success
        } catch (Exception e) {
            // message = error
        }

        // insert log return

        //send json message 

        try {
            dossier = DossierLocalServiceUtil.getByoid(oid);
            userId = dossier.getUserId();
        } catch (SystemException e) {
            resultObj.put("statusCode", "DossierNotFound");
            return resultObj;
        }
        try {
            System.out.println("PROCESS ORDER============" + dossier.getDossierId());
            ProcessOrder processOrder = ProcessOrderLocalServiceUtil.getProcessOrder(dossier.getDossierId(), 0);
            User user = UserLocalServiceUtil.getUserByScreenName(dossier.getCompanyId(), username);
            // int processWorkflowId = Integer.parseInt(actioncode);
            ProcessWorkflow processWorkflow = ProcessWorkflowLocalServiceUtil.getByActionCode(actioncode);
            Message message = new Message();
            System.out.println("AUTO EVENT=============" + processWorkflow.getAutoEvent());
            System.out.println("AUTO EVENT=============" + processWorkflow.getActionName());
            System.out.println("AUTO EVENT=============" + processWorkflow.getDeadlinePattern());
            if (Validator.isNotNull(processWorkflow.getAutoEvent())) {
                message.put(ProcessOrderDisplayTerms.EVENT, processWorkflow.getAutoEvent());
            } else {
                message.put(ProcessOrderDisplayTerms.PROCESS_WORKFLOW_ID, processWorkflow.getProcessWorkflowId());
            }
            message.put(ProcessOrderDisplayTerms.ACTION_NOTE, "Chuyn trng thi");
            message.put(ProcessOrderDisplayTerms.PROCESS_STEP_ID, processOrder.getProcessStepId());
            message.put(ProcessOrderDisplayTerms.ASSIGN_TO_USER_ID, 0);
            message.put(ProcessOrderDisplayTerms.SERVICE_PROCESS_ID, processOrder.getServiceProcessId());
            message.put(ProcessOrderDisplayTerms.PAYMENTVALUE, 0);
            /*
            message.put(ProcessOrderDisplayTerms.PROCESS_WORKFLOW_ID,
                  processWorkflow.getProcessWorkflowId());
            */
            message.put(ProcessOrderDisplayTerms.ACTION_USER_ID, user.getUserId());

            message.put(ProcessOrderDisplayTerms.PROCESS_ORDER_ID, processOrder.getProcessOrderId());
            message.put(ProcessOrderDisplayTerms.FILE_GROUP_ID, 0);
            message.put(ProcessOrderDisplayTerms.DOSSIER_ID, dossier.getDossierId());

            message.put(ProcessOrderDisplayTerms.GROUP_ID, dossier.getGroupId());

            message.put(ProcessOrderDisplayTerms.COMPANY_ID, dossier.getCompanyId());

            SendToEngineMsg sendToEngineMsg = new SendToEngineMsg();

            // sendToEngineMsg.setAction(WebKeys.ACTION);
            sendToEngineMsg.setActionNote("Chuyn trng thi");
            sendToEngineMsg.setAssignToUserId(0);
            sendToEngineMsg.setActionUserId(user.getUserId());
            sendToEngineMsg.setDossierId(dossier.getDossierId());
            sendToEngineMsg.setFileGroupId(0);
            sendToEngineMsg.setPaymentValue(GetterUtil.getDouble(0));
            sendToEngineMsg.setProcessOrderId(processOrder.getProcessOrderId());
            /*
            sendToEngineMsg.setProcessWorkflowId(processWorkflow
                  .getProcessWorkflowId());
            */
            sendToEngineMsg.setReceptionNo(
                    Validator.isNotNull(dossier.getReceptionNo()) ? dossier.getReceptionNo() : StringPool.BLANK);
            sendToEngineMsg.setSignature(0);
            if (Validator.isNotNull(processWorkflow.getAutoEvent())) {
                sendToEngineMsg.setEvent(processWorkflow.getAutoEvent());
            } else {
                sendToEngineMsg.setProcessWorkflowId(processWorkflow.getProcessWorkflowId());
            }
            message.put("msgToEngine", sendToEngineMsg);
            System.out.println("BEFORE SEND============" + message);
            MessageBusUtil.sendMessage("opencps/backoffice/engine/destination", message);
            resultObj.put("statusCode", "Success");
            ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();
            serviceContext.setUserId(getUser().getUserId());
            serviceContext.setScopeGroupId(getUser().getGroupId());
            serviceContext.setCompanyId(getUser().getCompanyId());

            String ipAddress = PortalUtil.getComputerAddress();
            JSONObject params = JSONFactoryUtil.createJSONObject();
            params.put("oid", oid);
            params.put("actioncode", actioncode);
            params.put("username", username);

            ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(), "05", ipAddress, "", params.toString(),
                    "success", serviceContext);
        } catch (SystemException e) {
            // TODO Auto-generated catch block
            resultObj.put("statusCode", "ActionNotFound");
            ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();
            serviceContext.setUserId(userId);
            String ipAddress = PortalUtil.getComputerAddress();
            JSONObject params = JSONFactoryUtil.createJSONObject();
            params.put("oid", oid);
            params.put("actioncode", actioncode);
            params.put("username", username);

            try {
                ApiServiceLocalServiceUtil.addApiService(userId, "05", ipAddress, "", params.toString(), "error",
                        serviceContext);
            } catch (SystemException se) {

            }
        } catch (NoSuchProcessOrderException e) {
            // TODO Auto-generated catch block
            resultObj.put("statusCode", "ActionNotFound");

            try {
                ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();
                serviceContext.setUserId(getUser().getUserId());
                serviceContext.setScopeGroupId(getUser().getGroupId());
                serviceContext.setCompanyId(getUser().getCompanyId());

                String ipAddress = PortalUtil.getComputerAddress();
                JSONObject params = JSONFactoryUtil.createJSONObject();
                params.put("oid", oid);
                params.put("actioncode", actioncode);
                params.put("username", username);
                ApiServiceLocalServiceUtil.addApiService(userId, "05", ipAddress, "", params.toString(), "error",
                        serviceContext);
            } catch (SystemException se) {

            } catch (PortalException pe) {

            }
        } catch (PortalException e) {
            // TODO Auto-generated catch block
            resultObj.put("statusCode", "ActionNotFound");
            ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();
            serviceContext.setUserId(userId);
            String ipAddress = PortalUtil.getComputerAddress();
            JSONObject params = JSONFactoryUtil.createJSONObject();
            params.put("oid", oid);
            params.put("actioncode", actioncode);
            params.put("username", username);

            try {
                ApiServiceLocalServiceUtil.addApiService(userId, "05", ipAddress, "", params.toString(), "error",
                        serviceContext);
            } catch (SystemException se) {

            }

        }
        return resultObj;
    }

    @JSONWebService(value = "processorder", method = "POST")
    public JSONObject nextStep(String oid, String actioncode, String actionnote, String username) {
        JSONObject resultObj = JSONFactoryUtil.createJSONObject();
        Dossier dossier = null;
        long userId = 0;
        try {
            dossier = DossierLocalServiceUtil.getByoid(oid);
            userId = dossier.getUserId();
        } catch (SystemException e) {
            resultObj.put("statusCode", "DossierNotFound");
            return resultObj;
        }
        try {
            System.out.println("PROCESS ORDER============" + dossier.getDossierId());
            ProcessOrder processOrder = ProcessOrderLocalServiceUtil.getProcessOrder(dossier.getDossierId(), 0);
            User user = UserLocalServiceUtil.getUserByScreenName(dossier.getCompanyId(), username);
            // int processWorkflowId = Integer.parseInt(actioncode);
            ProcessWorkflow processWorkflow = ProcessWorkflowLocalServiceUtil.getByActionCode(actioncode);
            if (processWorkflow == null) {
                resultObj.put("statusCode", "ActionNotFound");
                return resultObj;
            }
            Message message = new Message();
            if (Validator.isNotNull(processWorkflow.getAutoEvent())) {
                message.put(ProcessOrderDisplayTerms.EVENT, processWorkflow.getAutoEvent());
            } else {
                message.put(ProcessOrderDisplayTerms.PROCESS_WORKFLOW_ID, processWorkflow.getProcessWorkflowId());
            }
            message.put(ProcessOrderDisplayTerms.ACTION_NOTE, actionnote);
            message.put(ProcessOrderDisplayTerms.PROCESS_STEP_ID, processOrder.getProcessStepId());
            message.put(ProcessOrderDisplayTerms.ASSIGN_TO_USER_ID, 0);
            message.put(ProcessOrderDisplayTerms.SERVICE_PROCESS_ID, processOrder.getServiceProcessId());
            message.put(ProcessOrderDisplayTerms.PAYMENTVALUE, 0);
            /*
            message.put(ProcessOrderDisplayTerms.PROCESS_WORKFLOW_ID,
                  processWorkflow.getProcessWorkflowId());
            */
            message.put(ProcessOrderDisplayTerms.ACTION_USER_ID, user.getUserId());

            message.put(ProcessOrderDisplayTerms.PROCESS_ORDER_ID, processOrder.getProcessOrderId());
            message.put(ProcessOrderDisplayTerms.FILE_GROUP_ID, 0);
            message.put(ProcessOrderDisplayTerms.DOSSIER_ID, dossier.getDossierId());

            message.put(ProcessOrderDisplayTerms.GROUP_ID, dossier.getGroupId());

            message.put(ProcessOrderDisplayTerms.COMPANY_ID, dossier.getCompanyId());

            SendToEngineMsg sendToEngineMsg = new SendToEngineMsg();

            // sendToEngineMsg.setAction(WebKeys.ACTION);
            sendToEngineMsg.setActionNote(actionnote);
            sendToEngineMsg.setAssignToUserId(0);
            sendToEngineMsg.setActionUserId(user.getUserId());
            sendToEngineMsg.setDossierId(dossier.getDossierId());
            sendToEngineMsg.setFileGroupId(0);
            sendToEngineMsg.setPaymentValue(GetterUtil.getDouble(0));
            sendToEngineMsg.setProcessOrderId(processOrder.getProcessOrderId());
            /*
            sendToEngineMsg.setProcessWorkflowId(processWorkflow
                  .getProcessWorkflowId());
            */
            sendToEngineMsg.setReceptionNo(
                    Validator.isNotNull(dossier.getReceptionNo()) ? dossier.getReceptionNo() : StringPool.BLANK);
            sendToEngineMsg.setSignature(0);
            if (Validator.isNotNull(processWorkflow.getAutoEvent())) {
                sendToEngineMsg.setEvent(processWorkflow.getAutoEvent());
            } else {
                sendToEngineMsg.setProcessWorkflowId(processWorkflow.getProcessWorkflowId());
            }

            message.put("msgToEngine", sendToEngineMsg);
            System.out.println("BEFORE SEND============" + message);
            MessageBusUtil.sendMessage("opencps/backoffice/engine/destination", message);
            resultObj.put("statusCode", "Success");
            ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();
            serviceContext.setUserId(getUser().getUserId());
            serviceContext.setScopeGroupId(getUser().getGroupId());
            serviceContext.setCompanyId(getUser().getCompanyId());

            String ipAddress = PortalUtil.getComputerAddress();
            JSONObject params = JSONFactoryUtil.createJSONObject();
            params.put("oid", oid);
            params.put("actioncode", actioncode);
            params.put("username", username);

            ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(), "05", ipAddress, "", params.toString(),
                    "success", serviceContext);
        } catch (SystemException e) {
            // TODO Auto-generated catch block
            resultObj.put("statusCode", "ActionNotFound");
            ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();
            serviceContext.setUserId(userId);
            String ipAddress = PortalUtil.getComputerAddress();
            JSONObject params = JSONFactoryUtil.createJSONObject();
            params.put("oid", oid);
            params.put("actioncode", actioncode);
            params.put("username", username);

            try {
                ApiServiceLocalServiceUtil.addApiService(userId, "05", ipAddress, "", params.toString(), "error",
                        serviceContext);
            } catch (SystemException se) {

            }
        } catch (NoSuchProcessOrderException e) {
            // TODO Auto-generated catch block
            resultObj.put("statusCode", "ActionNotFound");

            try {
                ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();
                serviceContext.setUserId(getUser().getUserId());
                serviceContext.setScopeGroupId(getUser().getGroupId());
                serviceContext.setCompanyId(getUser().getCompanyId());

                String ipAddress = PortalUtil.getComputerAddress();
                JSONObject params = JSONFactoryUtil.createJSONObject();
                params.put("oid", oid);
                params.put("actioncode", actioncode);
                params.put("username", username);
                ApiServiceLocalServiceUtil.addApiService(userId, "05", ipAddress, "", params.toString(), "error",
                        serviceContext);
            } catch (SystemException se) {

            } catch (PortalException pe) {

            }
        } catch (PortalException e) {
            // TODO Auto-generated catch block
            resultObj.put("statusCode", "ActionNotFound");
            ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();
            serviceContext.setUserId(userId);
            String ipAddress = PortalUtil.getComputerAddress();
            JSONObject params = JSONFactoryUtil.createJSONObject();
            params.put("oid", oid);
            params.put("actioncode", actioncode);
            params.put("username", username);

            try {
                ApiServiceLocalServiceUtil.addApiService(userId, "05", ipAddress, "", params.toString(), "error",
                        serviceContext);
            } catch (SystemException se) {

            }

        }
        return resultObj;
    }

    @JSONWebService(value = "dossiers", method = "GET")
    public JSONObject searchDossierByDS_RD_SN_U(String dossierstatus, String serviceno, String fromdate,
            String todate, String username) throws SystemException {
        JSONObject resultObj = JSONFactoryUtil.createJSONObject();
        long userId = 0;
        SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil._VN_DATE_TIME_FORMAT);
        int count = dossierLocalService.countDossierByDS_RD_SN_U(dossierstatus, serviceno, fromdate, todate,
                username);
        List<Dossier> dossiers = dossierLocalService.searchDossierByDS_RD_SN_U(dossierstatus, serviceno, fromdate,
                todate, username, 0, count);
        JSONArray resultArr = JSONFactoryUtil.createJSONArray();
        for (Dossier d : dossiers) {
            userId = d.getUserId();
            JSONObject dossierObj = JSONFactoryUtil.createJSONObject();
            dossierObj.put("oid", d.getOid());
            ServiceInfo serviceInfo = null;
            try {
                serviceInfo = ServiceInfoLocalServiceUtil.getServiceInfo(d.getServiceInfoId());
                dossierObj.put("serviceNo", serviceInfo.getServiceNo());
                dossierObj.put("serviceName", serviceInfo.getServiceName());
            } catch (NoSuchServiceInfoException e) {
                dossierObj.put("serviceNo", "");
                dossierObj.put("serviceName", "");
            } catch (PortalException e) {
                // TODO Auto-generated catch block
                dossierObj.put("serviceNo", "");
                dossierObj.put("serviceName", "");
            }
            dossierObj.put("subjectName", d.getSubjectName());
            dossierObj.put("address", d.getAddress());
            if (d.getSubmitDatetime() != null) {
                dossierObj.put("submitDatetime", sdf.format(d.getSubmitDatetime()));
            }
            if (d.getReceiveDatetime() != null) {
                dossierObj.put("receiveDatetime", sdf.format(d.getReceiveDatetime()));
            }
            dossierObj.put("receptionNo", d.getReceptionNo());
            if (d.getEstimateDatetime() != null) {
                dossierObj.put("estimateDatetime", d.getEstimateDatetime());
            }
            dossierObj.put("dossierStatus", d.getDossierStatus());
            dossierObj.put("delayStatus", d.getDelayStatus());
            resultArr.put(dossierObj);
        }

        resultObj.put("statusCode", "Success");
        resultObj.put("data", resultArr);
        try {
            ServiceContext serviceContext = new ServiceContext();
            serviceContext.setUserId(getUser().getUserId());
            serviceContext.setScopeGroupId(getUser().getGroupId());
            serviceContext.setCompanyId(getUser().getCompanyId());

            String ipAddress = PortalUtil.getComputerAddress();

            ApiServiceLocalServiceUtil.addApiService(getUser().getUserId(), "02", ipAddress, "",
                    "{ 'username': '" + username + "' }", "success", serviceContext);
        } catch (PortalException pe) {

        }

        return resultObj;
    }

    private Log _log = LogFactoryUtil.getLog(ApiServiceServiceImpl.class.getName());
}