From 812f66324a03f03f1716f14948dfbeb4a6b9c59d Mon Sep 17 00:00:00 2001 From: Salvatore La Manna Date: Thu, 29 Oct 2020 14:33:41 +0100 Subject: [PATCH] Miglioramenti a sostituzione documenti --- .../it/mwg/sismica/bo/util/AllegatiUtil.java | 487 ++++++ .../portlet/SismicaAdministrationPortlet.java | 343 +---- .../html/sismica_administration/view.jsp | 11 +- .../fe/portlet/SoggettiPraticaPortlet.java | 1321 +++++++++-------- 4 files changed, 1226 insertions(+), 936 deletions(-) create mode 100644 liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/mwg/sismica/bo/util/AllegatiUtil.java diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/mwg/sismica/bo/util/AllegatiUtil.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/mwg/sismica/bo/util/AllegatiUtil.java new file mode 100644 index 00000000..2416379b --- /dev/null +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/mwg/sismica/bo/util/AllegatiUtil.java @@ -0,0 +1,487 @@ +package it.mwg.sismica.bo.util; + +import it.tref.liferay.portos.bo.model.Collaudo; +import it.tref.liferay.portos.bo.model.Delega; +import it.tref.liferay.portos.bo.model.DettPratica; +import it.tref.liferay.portos.bo.model.DocPratica; +import it.tref.liferay.portos.bo.model.FineLavori; +import it.tref.liferay.portos.bo.model.IntPratica; +import it.tref.liferay.portos.bo.model.Pagamento; +import it.tref.liferay.portos.bo.model.Soggetto; +import it.tref.liferay.portos.bo.service.ConfigurazioneLocalServiceUtil; +import it.tref.liferay.portos.bo.service.DettPraticaLocalServiceUtil; +import it.tref.liferay.portos.bo.service.DocPraticaLocalServiceUtil; +import it.tref.liferay.portos.bo.service.PagamentoLocalServiceUtil; +import it.tref.liferay.portos.bo.service.SoggettoLocalServiceUtil; +import it.tref.liferay.portos.bo.service.SoggettoServiceUtil; +import it.tref.liferay.portos.bo.shared.bean.FirmeBean; +import it.tref.liferay.portos.bo.shared.bean.FirmeDetail; +import it.tref.liferay.portos.bo.shared.util.ConfigurazioneConstants; +import it.tref.liferay.portos.bo.shared.util.DocumentiPraticaUtil; +import it.tref.liferay.portos.bo.shared.util.FirmeUtil; +import it.tref.liferay.portos.bo.shared.util.TipoSoggettoUtil; +import it.tref.liferay.portos.bo.util.PraticaUtil; +import it.tref.liferay.portos.bo.util.ValidazionePraticaUtil; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; + +import org.apache.commons.codec.digest.DigestUtils; + +import com.liferay.portal.kernel.exception.PortalException; +import com.liferay.portal.kernel.exception.SystemException; +import com.liferay.portal.kernel.log.Log; +import com.liferay.portal.kernel.log.LogFactoryUtil; +import com.liferay.portal.kernel.repository.model.FileEntry; +import com.liferay.portal.kernel.repository.model.Folder; +import com.liferay.portal.kernel.servlet.SessionErrors; +import com.liferay.portal.kernel.upload.UploadPortletRequest; +import com.liferay.portal.kernel.util.FileUtil; +import com.liferay.portal.kernel.util.MimeTypesUtil; +import com.liferay.portal.kernel.util.ParamUtil; +import com.liferay.portal.kernel.util.StringPool; +import com.liferay.portal.kernel.util.Validator; +import com.liferay.portal.model.User; +import com.liferay.portal.security.permission.ActionKeys; +import com.liferay.portal.service.ServiceContext; +import com.liferay.portal.service.ServiceContextFactory; +import com.liferay.portal.service.UserLocalServiceUtil; +import com.liferay.portal.util.PortalUtil; +import com.liferay.portlet.documentlibrary.NoSuchFolderException; +import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil; + +public class AllegatiUtil { + private final static Log _log = LogFactoryUtil.getLog(AllegatiUtil.class); + + public static void sostituisciDL(ActionRequest actionRequest, ActionResponse actionResponse) + throws Exception { + List esito = new ArrayList<>(); + String className = ParamUtil.getString(actionRequest, "className"); + actionResponse.setRenderParameter("className", className); + + long classPK = ParamUtil.getLong(actionRequest, "classPK"); + actionResponse.setRenderParameter("classPK", String.valueOf(classPK)); + + UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest); + String sourceFileName = uploadRequest.getFileName("file"); + File file = uploadRequest.getFile("file"); + byte[] bytes = FileUtil.getBytes(file); + + if (Validator.isNull(bytes)) { + esito.add("Nessun file allegato"); + } else { + Date date = new Date(); + if (className.equals(DocPratica.class.getName())) { + esito.addAll(sostituisciAllegatoDocPratica(classPK, sourceFileName, bytes, date)); + } else if (className.equals(Pagamento.class.getName())) { + esito.addAll(sostituisciAllegatoPagamento(classPK, sourceFileName, bytes)); + } else if (className.equals(Soggetto.class.getName())) { + esito.addAll(sostituisciAllegatoSoggetto(classPK, sourceFileName, bytes, date)); + } else { + esito.add("Operazione " + className + " non implementata"); + } + } + actionResponse.setRenderParameter("esito", esito.toArray(new String[esito.size()])); + } + + private static List sostituisciAllegatoSoggetto(long soggettoId, String sourceFileName, + byte[] bytes, Date date) throws PortalException, SystemException, IOException { + + List esito = new ArrayList<>(); + Soggetto soggetto = null; + try { + soggetto = SoggettoLocalServiceUtil.getSoggetto(soggettoId); + } catch (PortalException e) { + esito.add("Errore: " + e.getMessage()); + return esito; + } + long docPraticaId = soggetto.getFileVariazioneId(); + if (Validator.isNull(docPraticaId)) { + esito.add("Il soggetto " + soggettoId + " non ha un'allegato da sostituire"); + return esito; + } + + long companyId = soggetto.getCompanyId(); + long userId = soggetto.getUserId(); + + DocPratica docPratica = null; + try { + docPratica = DocPraticaLocalServiceUtil.getDocPratica(docPraticaId); + } catch (PortalException e) { + } + if (Validator.isNull(docPratica)) { + esito.add("Ricreo docPratica " + docPraticaId); + + docPratica = DocPraticaLocalServiceUtil.createDocPratica(docPraticaId); + User user = UserLocalServiceUtil.getUser(userId); + + docPratica.setClassName(Soggetto.class.getName()); + docPratica.setClassPk(soggettoId); + docPratica.setCompanyId(companyId); + docPratica.setCreateDate(date); + docPratica.setDescLong(sourceFileName); + docPratica.setGroupId(soggetto.getGroupId()); + docPratica.setIntPraticaId(soggetto.getIntPraticaId()); + docPratica.setJsonFirmatari(FirmeUtil.serialize(new FirmeBean())); + docPratica.setModifiedDate(date); + docPratica.setTipologia(DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_VARIAZIONE_SOGGETTO); + docPratica.setUserId(userId); + docPratica.setUserName(user.getFullName()); + docPratica.setVersion("0"); + } + DocPraticaLocalServiceUtil.updateDocPratica(docPratica); + esito.addAll(sostituisciAllegatoDocPratica(docPraticaId, sourceFileName, bytes, date)); + return esito; + } + + private static List sostituisciAllegatoDocPratica(long docPraticaId, String sourceFileName, + byte[] bytes, Date date) throws SystemException, PortalException, IOException { + + List esito = new ArrayList<>(); + DocPratica docPratica = DocPraticaLocalServiceUtil.getDocPratica(docPraticaId); + + long companyId = docPratica.getCompanyId(); + long userId = docPratica.getUserId(); + ServiceContext serviceContext = getServiceContext(companyId, docPratica.getGroupId(), userId); + + long dettPraticaId = getDettPraticaId(docPratica.getIntPraticaId()); + Folder folder = getFolder(PraticaUtil.getFolderName(dettPraticaId), serviceContext); + + String title = getTitle(docPratica, sourceFileName, date); + FileEntry fileEntry = addOrUpdateFileEntry(docPratica.getDlFileEntryId(), folder, userId, + sourceFileName, title, sourceFileName, bytes, serviceContext); + + docPratica.setDlFileEntryId(fileEntry.getFileEntryId()); + + String sha256 = DigestUtils.sha256Hex(bytes); + docPratica.setSha256(sha256); + + // Sostituzione delle firme digitali con quelle presenti nel file + FirmeBean firmeBean = FirmeUtil.deserialize(docPratica.getJsonFirmatari()); + Set firmeFile = new HashSet<>(); + firmeFile.addAll(ValidazionePraticaUtil.gatherSignatures(sourceFileName, bytes, companyId, null)); + List firmeDigitali = new ArrayList<>(); + for (String firmaFile : firmeFile) { + firmeDigitali.add(new FirmeDetail(firmaFile.toLowerCase(), date)); + esito.add("Trovata firma di " + firmaFile); + } + firmeBean.setFirmeDigitali(firmeDigitali); + docPratica.setJsonFirmatari(FirmeUtil.serialize(firmeBean)); + + DocPraticaLocalServiceUtil.updateDocPratica(docPratica); + esito.add("DocPratica " + docPraticaId + ": aggiornato fileEntry " + fileEntry.getFileEntryId() + + ", sha256=" + sha256); + return esito; + } + + private static List sostituisciAllegatoPagamento(long pagamentoId, String sourceFileName, + byte[] bytes) throws SystemException, PortalException, IOException { + + List esito = new ArrayList<>(); + Pagamento pagamento = PagamentoLocalServiceUtil.getPagamento(pagamentoId); + + Date now = new Date(); + + long userId = pagamento.getUserId(); + + ServiceContext serviceContext = getServiceContext(pagamento.getCompanyId(), pagamento.getGroupId(), + userId); + + long dettPraticaId = getDettPraticaId(pagamento.getIntPraticaId()); + Folder folder = getFolder(PraticaUtil.getFolderName(dettPraticaId), serviceContext); + + String title = now.getTime() + "_pagamento_manuale_" + pagamento.getPagamentoId() + + StringPool.UNDERLINE + sourceFileName; + + FileEntry fileEntry = addOrUpdateFileEntry(pagamento.getFileEntryId(), folder, userId, + sourceFileName, title, StringPool.BLANK, bytes, serviceContext); + + pagamento.setFileEntryId(fileEntry.getFileEntryId()); + PagamentoLocalServiceUtil.updatePagamento(pagamento); + esito.add("Pagamento " + pagamentoId + ": aggiunto file " + fileEntry.getFileEntryId() + + StringPool.BLANK + title); + return esito; + } + + private static long getDettPraticaId(long intPraticaId) throws SystemException { + DettPratica dettPratica = DettPraticaLocalServiceUtil.getLastEditableByIntPratica(intPraticaId); + if (Validator.isNull(dettPratica)) { + List list = DettPraticaLocalServiceUtil.findByIntPraticaId(intPraticaId); + dettPratica = list.get(list.size() - 1); + } + return dettPratica.getPrimaryKey(); + } + + private static ServiceContext getServiceContext(long companyId, long groupId, long userId) { + ServiceContext serviceContext = new ServiceContext(); + serviceContext.setCompanyId(companyId); + serviceContext.setScopeGroupId(groupId); + serviceContext.setUserId(userId); + serviceContext.setGroupPermissions(new String[] { ActionKeys.VIEW }); + return serviceContext; + } + + private static Folder getFolder(String folderName, ServiceContext serviceContext) throws PortalException, + SystemException { + Folder folder = null; + + long parentFolderId = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong( + serviceContext.getCompanyId(), ConfigurazioneConstants.ATTACHMENT_FOLDER_ID); + Folder parentFolder = DLAppLocalServiceUtil.getFolder(parentFolderId); + long repositoryId = parentFolder.getRepositoryId(); + + try { + folder = DLAppLocalServiceUtil.getFolder(repositoryId, parentFolderId, folderName); + } catch (NoSuchFolderException e) { + folder = DLAppLocalServiceUtil.addFolder(serviceContext.getUserId(), repositoryId, + parentFolderId, folderName, StringPool.BLANK, serviceContext); + } + return folder; + } + + private static String getTitle(DocPratica docPratica, String sourceFileName, Date date) { + String className = DocPratica.class.getName(); + String tipologia = docPratica.getTipologia(); + + if (IntPratica.class.getName().equals(className)) { + if (tipologia.equalsIgnoreCase(DocumentiPraticaUtil.TIPOLOGIA_ALLEGATO_ANNULLAMENTO_FASCICOLO)) { + sourceFileName = date.getTime() + "_annullamento_" + docPratica.getIntPraticaId() + + StringPool.UNDERLINE + sourceFileName; + } + } else { + sourceFileName = tipologia + StringPool.UNDERLINE + sourceFileName; + } + return sourceFileName; + } + + private static FileEntry addOrUpdateFileEntry(long fileEntryId, Folder folder, long userId, + String sourceFileName, String title, String description, byte[] bytes, + ServiceContext serviceContext) throws SystemException, PortalException { + String mimeType = MimeTypesUtil.getContentType(sourceFileName); + FileEntry fileEntry = null; + try { + fileEntry = DLAppLocalServiceUtil.getFileEntry(fileEntryId); + fileEntry = DLAppLocalServiceUtil.updateFileEntry(userId, fileEntry.getFileEntryId(), + sourceFileName, mimeType, title, description, StringPool.BLANK, false, bytes, + serviceContext); + } catch (PortalException e) { + fileEntry = DLAppLocalServiceUtil.addFileEntry(userId, folder.getRepositoryId(), + folder.getFolderId(), sourceFileName, mimeType, title, description, StringPool.BLANK, + bytes, serviceContext); + } + return fileEntry; + } + + public void sostituisciDL2(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { + + long userId = 0; + String title = null; + String description = null; + String mimeType = null; + String changeLog = StringPool.BLANK; + FileEntry fileEntry = null; + Date now = new Date(); + long companyId = 0; + long groupId = 0; + long defaultFolderId = 0; + Folder defaultFolder = null; + String folderName = null; + byte[] bytes = null; + long folderId = 0; + long repositoryId = 0; + ServiceContext serviceContext = new ServiceContext(); + + String className = ParamUtil.getString(actionRequest, "className"); + Long idOggetto = ParamUtil.getLong(actionRequest, "classPK"); + + UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest); + String sourceFileName = uploadRequest.getFileName("file"); + File file = uploadRequest.getFile("file"); + Folder folder = null; + + switch (className) { + case "it.tref.liferay.portos.bo.model.DocPratica": + DocPratica pratica = DocPraticaLocalServiceUtil.getDocPratica(idOggetto); + userId = pratica.getUserId(); + companyId = pratica.getCompanyId(); + groupId = pratica.getGroupId(); + + serviceContext.setCompanyId(companyId); + serviceContext.setScopeGroupId(groupId); + serviceContext.setUserId(userId); + + defaultFolderId = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong(companyId, + ConfigurazioneConstants.ATTACHMENT_FOLDER_ID); + defaultFolder = DLAppLocalServiceUtil.getFolder(defaultFolderId); + folderName = PraticaUtil.getFolderName(pratica.getClassPk()); + folderId = defaultFolder.getFolderId(); + repositoryId = defaultFolder.getRepositoryId(); + + try { + folder = DLAppLocalServiceUtil.getFolder(repositoryId, folderId, folderName); + } catch (NoSuchFolderException e) { + folder = DLAppLocalServiceUtil.addFolder(userId, repositoryId, folderId, folderName, + StringPool.BLANK, serviceContext); + } + + bytes = FileUtil.getBytes(file); + title = pratica.getTipologia() + StringPool.UNDERLINE + sourceFileName; + description = sourceFileName; + mimeType = MimeTypesUtil.getContentType(sourceFileName); + + try { + fileEntry = DLAppLocalServiceUtil.getFileEntry(pratica.getDlFileEntryId()); + fileEntry = DLAppLocalServiceUtil.updateFileEntry(userId, fileEntry.getFileEntryId(), + now.getTime() + "_" + sourceFileName, mimeType, title, description, changeLog, false, + bytes, serviceContext); + } catch (PortalException e) { + fileEntry = DLAppLocalServiceUtil.addFileEntry(userId, folder.getRepositoryId(), + folder.getFolderId(), now.getTime() + "_" + sourceFileName, mimeType, title, + description, changeLog, bytes, serviceContext); + } + + pratica.setDlFileEntryId(fileEntry.getFileEntryId()); + pratica.setSha256(DigestUtils.sha256Hex(bytes)); + DocPraticaLocalServiceUtil.updateDocPratica(pratica); + break; + + case "it.tref.liferay.portos.bo.model.Pagamento": + Pagamento pagamento = PagamentoLocalServiceUtil.getPagamento(idOggetto); + userId = pagamento.getUserId(); + companyId = pagamento.getCompanyId(); + groupId = pagamento.getGroupId(); + + serviceContext.setCompanyId(companyId); + serviceContext.setScopeGroupId(groupId); + serviceContext.setUserId(userId); + + defaultFolderId = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong(companyId, + ConfigurazioneConstants.ATTACHMENT_FOLDER_ID); + defaultFolder = DLAppLocalServiceUtil.getFolder(defaultFolderId); + folderName = PraticaUtil.getFolderName(pagamento.getClassPk()); + folderId = defaultFolder.getFolderId(); + repositoryId = defaultFolder.getRepositoryId(); + + try { + folder = DLAppLocalServiceUtil.getFolder(repositoryId, folderId, folderName); + } catch (NoSuchFolderException e) { + folder = DLAppLocalServiceUtil.addFolder(userId, repositoryId, folderId, folderName, + StringPool.BLANK, serviceContext); + } + + bytes = FileUtil.getBytes(file); + title = now.getTime() + StringPool.UNDERLINE + "pagamento_manuale" + StringPool.UNDERLINE + + pagamento.getPagamentoId() + StringPool.UNDERLINE + sourceFileName; + description = StringPool.BLANK; + mimeType = MimeTypesUtil.getContentType(sourceFileName); + + try { + fileEntry = DLAppLocalServiceUtil.getFileEntry(pagamento.getFileEntryId()); + fileEntry = DLAppLocalServiceUtil.updateFileEntry(userId, fileEntry.getFileEntryId(), + now.getTime() + "_" + sourceFileName, mimeType, title, description, changeLog, false, + bytes, serviceContext); + } catch (PortalException e) { + fileEntry = DLAppLocalServiceUtil.addFileEntry(userId, folder.getRepositoryId(), + folder.getFolderId(), now.getTime() + "_" + sourceFileName, mimeType, title, + description, changeLog, bytes, serviceContext); + } + + pagamento.setFileEntryId(fileEntry.getFileEntryId()); + PagamentoLocalServiceUtil.updatePagamento(pagamento); + break; + + case "var_soggetti_no_docpratica": + Soggetto soggetto = SoggettoLocalServiceUtil.getSoggetto(idOggetto); + DettPratica dettPratica = DettPraticaLocalServiceUtil.getDettPratica(soggetto.getDettPraticaId()); + long intPraticaId = dettPratica.getIntPraticaId(); + serviceContext = ServiceContextFactory.getInstance(Soggetto.class.getName(), actionRequest); + + byte[] content = null; + String jsonFirmatari = ""; + boolean isSigned = false; + FirmeBean firmeBean = new FirmeBean(); + + User user = UserLocalServiceUtil.getUser(serviceContext.getUserId()); + + if (!firmeBean.allSignatures().contains(user.getScreenName())) { + jsonFirmatari = FirmeUtil.addFirma(firmeBean, user.getScreenName()); + } else { + jsonFirmatari = FirmeUtil.serialize(firmeBean); + } + + if (file.exists()) { + + if (Validator.isNotNull(sourceFileName) && file != null) { + // validazione: solo alcune estensioni + String ext = FileUtil.getExtension(sourceFileName); + if (!ext.equalsIgnoreCase("p7m") && !ext.equalsIgnoreCase("pdf")) { + SessionErrors.add(actionRequest, + "error.geniocivilefe.variazione-soggetto.allegato.ext.valid"); + } + // lunghezza fissata a 200 + if (sourceFileName.length() > 200) { + SessionErrors.add(actionRequest, + "error.geniocivilefe.variazione-soggetto.allegato.length.valid"); + } + } else if (!TipoSoggettoUtil.COMMITTENTE.equalsIgnoreCase(soggetto.getTipologiaSoggetto())) { + SessionErrors.add(actionRequest, + "error.geniocivilefe.variazione-soggetto.allegato.is.request"); + } + + if (!SessionErrors.isEmpty(actionRequest)) { + throw new SystemException("error.geniocivilefe.variazione-soggetto.allegato"); + } else if (file != null) { + content = FileUtil.getBytes(file); + } + + } + + if (TipoSoggettoUtil.COMMITTENTE.equals(soggetto.getTipologiaSoggetto())) { + String[] titolare = new String[] { dettPratica.getCodiceFiscaleDelegatoCommittente() }; + isSigned = ValidazionePraticaUtil.isAllegatoSignedBySubjects(sourceFileName, content, + serviceContext.getCompanyId(), Arrays.asList(titolare), jsonFirmatari); + } else { + List soggettiValidi = SoggettoServiceUtil.getValidTmpByIntPratica(intPraticaId); + List codiciFiscaliValidi = new ArrayList(); + for (Soggetto valido : soggettiValidi) { + if (!codiciFiscaliValidi.contains(valido.getCodiceFiscale()) + && !valido.getCodiceFiscale().equalsIgnoreCase(soggetto.getCodiceFiscale())) { + codiciFiscaliValidi.add(valido.getCodiceFiscale()); + } + } + isSigned = ValidazionePraticaUtil.isAllegatoSignedBySubjectsAndPerson(sourceFileName, + content, serviceContext.getCompanyId(), codiciFiscaliValidi, + soggetto.getCodiceFiscale(), jsonFirmatari); + } + + if (isSigned) { + userId = PortalUtil.getUserId(actionRequest); + + try { + SoggettoServiceUtil.allegaFileModifica(soggetto.getSoggettoId(), userId, intPraticaId, + content, sourceFileName, jsonFirmatari, serviceContext); + } catch (PortalException e) { + _log.error(e, e); + throw e; + } + } + + break; + + default: + + break; + + } + + } +} diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/portlet/SismicaAdministrationPortlet.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/portlet/SismicaAdministrationPortlet.java index 1f27a0fb..338028b9 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/portlet/SismicaAdministrationPortlet.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/bo/portlet/SismicaAdministrationPortlet.java @@ -1,33 +1,12 @@ package it.tref.liferay.portos.bo.portlet; -import it.mwg.sismica.bo.util.PuliziaDatabase; +import it.mwg.sismica.bo.util.AllegatiUtil; import it.mwg.sismica.bo.util.SismicaUtil; import it.mwg.sismica.bo.util.SorteggioPraticaUtil; -import it.tref.liferay.portos.bo.model.ControlloPratica; -import it.tref.liferay.portos.bo.model.DettPratica; -import it.tref.liferay.portos.bo.model.DocPratica; -import it.tref.liferay.portos.bo.model.Pagamento; -import it.tref.liferay.portos.bo.model.Soggetto; -import it.tref.liferay.portos.bo.service.ConfigurazioneLocalServiceUtil; import it.tref.liferay.portos.bo.service.ConfigurazioneServiceUtil; -import it.tref.liferay.portos.bo.service.DettPraticaLocalServiceUtil; -import it.tref.liferay.portos.bo.service.DocPraticaLocalServiceUtil; import it.tref.liferay.portos.bo.service.IntPraticaLocalServiceUtil; -import it.tref.liferay.portos.bo.service.PagamentoLocalServiceUtil; -import it.tref.liferay.portos.bo.service.SoggettoLocalServiceUtil; -import it.tref.liferay.portos.bo.service.SoggettoServiceUtil; -import it.tref.liferay.portos.bo.shared.bean.FirmeBean; -import it.tref.liferay.portos.bo.shared.util.ConfigurazioneConstants; -import it.tref.liferay.portos.bo.shared.util.FirmeUtil; -import it.tref.liferay.portos.bo.shared.util.TipoSoggettoUtil; -import it.tref.liferay.portos.bo.util.PraticaUtil; -import it.tref.liferay.portos.bo.util.ValidazionePraticaUtil; - -import java.io.File; -import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -35,31 +14,16 @@ import java.util.Map; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; -import org.apache.commons.codec.digest.DigestUtils; - import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; -import com.liferay.portal.kernel.repository.model.FileEntry; -import com.liferay.portal.kernel.repository.model.Folder; -import com.liferay.portal.kernel.servlet.SessionErrors; -import com.liferay.portal.kernel.upload.UploadPortletRequest; -import com.liferay.portal.kernel.util.HttpUtil; -import com.liferay.portal.kernel.util.MimeTypesUtil; import com.liferay.portal.kernel.util.ParamUtil; -import com.liferay.portal.kernel.util.FileUtil; -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.ServiceContext; import com.liferay.portal.service.ServiceContextFactory; -import com.liferay.portal.service.UserLocalServiceUtil; import com.liferay.portal.theme.ThemeDisplay; -import com.liferay.portal.util.PortalUtil; -import com.liferay.portlet.documentlibrary.NoSuchFolderException; -import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil; import com.liferay.util.bridges.mvc.MVCPortlet; /** @@ -67,11 +31,10 @@ import com.liferay.util.bridges.mvc.MVCPortlet; */ public class SismicaAdministrationPortlet extends MVCPortlet { - private static final Log _log = LogFactoryUtil - .getLog(SismicaAdministrationPortlet.class); + private static final Log _log = LogFactoryUtil.getLog(SismicaAdministrationPortlet.class); - public void mostraConfigurazione(ActionRequest actionRequest, - ActionResponse actionResponse) throws SystemException { + public void mostraConfigurazione(ActionRequest actionRequest, ActionResponse actionResponse) + throws SystemException { List esito = new ArrayList(); esito.add("

Env

"); @@ -80,313 +43,75 @@ public class SismicaAdministrationPortlet extends MVCPortlet { } esito.add("

Properties

"); - for (Map.Entry entry : System.getProperties() - .entrySet()) { + for (Map.Entry entry : System.getProperties().entrySet()) { esito.add(entry.getKey() + "=" + entry.getValue()); } - actionResponse.setRenderParameter("esito", - esito.toArray(new String[esito.size()])); + actionResponse.setRenderParameter("esito", esito.toArray(new String[esito.size()])); } - public void generaDocumenti(ActionRequest actionRequest, - ActionResponse actionResponse) { - ThemeDisplay td = (ThemeDisplay) actionRequest - .getAttribute(WebKeys.THEME_DISPLAY); + public void generaDocumenti(ActionRequest actionRequest, ActionResponse actionResponse) { + ThemeDisplay td = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY); List esito = new ArrayList<>(); try { esito = SismicaUtil.generaDocumenti(td.getCompanyId()); } catch (PortalException | SystemException e) { esito.add("Errore durante l'invio " + e.getMessage()); } - actionResponse.setRenderParameter("esito", - esito.toArray(new String[esito.size()])); + actionResponse.setRenderParameter("esito", esito.toArray(new String[esito.size()])); } -<<<<<<< HEAD - public void sostituisciDL(ActionRequest actionRequest, ActionResponse actionResponse) - throws SystemException, PortalException, IOException { -======= public void sostituisciDL(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { - SismicaUtil.sostituisciDL(actionRequest, actionResponse); - ->>>>>>> 096838dd46c4f289d1b3f53893c6727c14619a1e - long userId = 0; - String title = null; - String description = null; - String mimeType = null; - String changeLog = StringPool.BLANK; - FileEntry fileEntry = null; - Date now = new Date(); - long companyId = 0; - long groupId = 0; - long defaultFolderId = 0; - Folder defaultFolder = null; - String folderName = null; - byte[] bytes = null; - long folderId = 0; - long repositoryId = 0; - ServiceContext serviceContext = new ServiceContext(); - - String className = ParamUtil.getString(actionRequest, "className"); - Long idOggetto = ParamUtil.getLong(actionRequest, "classPK"); - - UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest); - String sourceFileName = uploadRequest.getFileName("file"); - File file = uploadRequest.getFile("file"); - Folder folder = null; - - switch(className){ - case "it.tref.liferay.portos.bo.model.DocPratica": - DocPratica pratica = DocPraticaLocalServiceUtil.getDocPratica(idOggetto); - userId = pratica.getUserId(); - companyId = pratica.getCompanyId(); - groupId = pratica.getGroupId(); - - serviceContext.setCompanyId(companyId); - serviceContext.setScopeGroupId(groupId); - serviceContext.setUserId(userId); - - defaultFolderId = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong(companyId, ConfigurazioneConstants.ATTACHMENT_FOLDER_ID); - defaultFolder = DLAppLocalServiceUtil.getFolder(defaultFolderId); - folderName = PraticaUtil.getFolderName(pratica.getClassPk()); - folderId = defaultFolder.getFolderId(); - repositoryId = defaultFolder.getRepositoryId(); - - try { - folder = DLAppLocalServiceUtil.getFolder(repositoryId, folderId, folderName); - } catch (NoSuchFolderException e) { - folder = DLAppLocalServiceUtil.addFolder(userId, repositoryId, folderId, folderName, - StringPool.BLANK, serviceContext); - } - - bytes = FileUtil.getBytes(file); - title = pratica.getTipologia() + StringPool.UNDERLINE + sourceFileName; - description = sourceFileName; - mimeType = MimeTypesUtil.getContentType(sourceFileName); - - try { - fileEntry = DLAppLocalServiceUtil.getFileEntry(pratica.getDlFileEntryId()); - fileEntry = DLAppLocalServiceUtil.updateFileEntry(userId, fileEntry.getFileEntryId(), - now.getTime() + "_" + sourceFileName, mimeType, title, description, changeLog, false, bytes, - serviceContext); - } catch (PortalException e) { - fileEntry = DLAppLocalServiceUtil.addFileEntry(userId, folder.getRepositoryId(), folder.getFolderId(), now.getTime() + "_" + sourceFileName, - mimeType, title, description, changeLog, bytes, serviceContext); - } - - pratica.setDlFileEntryId(fileEntry.getFileEntryId()); - pratica.setSha256(DigestUtils.sha256Hex(bytes)); - DocPraticaLocalServiceUtil.updateDocPratica(pratica); - break; - - case "it.tref.liferay.portos.bo.model.Pagamento": - Pagamento pagamento = PagamentoLocalServiceUtil.getPagamento(idOggetto); - userId = pagamento.getUserId(); - companyId = pagamento.getCompanyId(); - groupId = pagamento.getGroupId(); - - serviceContext.setCompanyId(companyId); - serviceContext.setScopeGroupId(groupId); - serviceContext.setUserId(userId); - - defaultFolderId = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong(companyId, ConfigurazioneConstants.ATTACHMENT_FOLDER_ID); - defaultFolder = DLAppLocalServiceUtil.getFolder(defaultFolderId); - folderName = PraticaUtil.getFolderName(pagamento.getClassPk()); - folderId = defaultFolder.getFolderId(); - repositoryId = defaultFolder.getRepositoryId(); - - try { - folder = DLAppLocalServiceUtil.getFolder(repositoryId, folderId, folderName); - } catch (NoSuchFolderException e) { - folder = DLAppLocalServiceUtil.addFolder(userId, repositoryId, folderId, folderName, - StringPool.BLANK, serviceContext); - } - - bytes = FileUtil.getBytes(file); - title = now.getTime() + StringPool.UNDERLINE + "pagamento_manuale" + StringPool.UNDERLINE - + pagamento.getPagamentoId() + StringPool.UNDERLINE + sourceFileName; - description = StringPool.BLANK; - mimeType = MimeTypesUtil.getContentType(sourceFileName); - - try { - fileEntry = DLAppLocalServiceUtil.getFileEntry(pagamento.getFileEntryId()); - fileEntry = DLAppLocalServiceUtil.updateFileEntry(userId, fileEntry.getFileEntryId(), - now.getTime() + "_" + sourceFileName, mimeType, title, description, changeLog, false, bytes, - serviceContext); - } catch (PortalException e) { - fileEntry = DLAppLocalServiceUtil.addFileEntry(userId, folder.getRepositoryId(), folder.getFolderId(), now.getTime() + "_" + sourceFileName, - mimeType, title, description, changeLog, bytes, serviceContext); - } - - pagamento.setFileEntryId(fileEntry.getFileEntryId()); - PagamentoLocalServiceUtil.updatePagamento(pagamento); - break; - - case "var_soggetti_no_docpratica": - Soggetto soggetto = SoggettoLocalServiceUtil.getSoggetto(idOggetto); - DettPratica dettPratica = DettPraticaLocalServiceUtil.getDettPratica(soggetto.getDettPraticaId()); - long intPraticaId = dettPratica.getIntPraticaId(); - serviceContext = ServiceContextFactory.getInstance(Soggetto.class.getName(), actionRequest); - - byte[] content = null; - String jsonFirmatari = ""; - boolean isSigned = false; - FirmeBean firmeBean = new FirmeBean(); - - - User user = UserLocalServiceUtil.getUser(serviceContext.getUserId()); - - if (!firmeBean.allSignatures().contains(user.getScreenName())) { - jsonFirmatari = FirmeUtil.addFirma(firmeBean, user.getScreenName()); - } else { - jsonFirmatari = FirmeUtil.serialize(firmeBean); - } - - if (file.exists()) { - - if (Validator.isNotNull(sourceFileName) && file != null) { - // validazione: solo alcune estensioni - String ext = FileUtil.getExtension(sourceFileName); - if (!ext.equalsIgnoreCase("p7m") - && !ext.equalsIgnoreCase("pdf")) { - SessionErrors - .add(actionRequest, - "error.geniocivilefe.variazione-soggetto.allegato.ext.valid"); - } - // lunghezza fissata a 200 - if (sourceFileName.length() > 200) { - SessionErrors - .add(actionRequest, - "error.geniocivilefe.variazione-soggetto.allegato.length.valid"); - } - } else if (!TipoSoggettoUtil.COMMITTENTE - .equalsIgnoreCase(soggetto.getTipologiaSoggetto())) { - SessionErrors - .add(actionRequest, - "error.geniocivilefe.variazione-soggetto.allegato.is.request"); - } - - if (!SessionErrors.isEmpty(actionRequest)) { - throw new SystemException( - "error.geniocivilefe.variazione-soggetto.allegato"); - } else if (file != null) { - content = FileUtil.getBytes(file); - } - - } - - if (TipoSoggettoUtil.COMMITTENTE.equals(soggetto - .getTipologiaSoggetto())) { - String[] titolare = new String[] { dettPratica - .getCodiceFiscaleDelegatoCommittente() }; - isSigned = ValidazionePraticaUtil.isAllegatoSignedBySubjects( - sourceFileName, content, serviceContext.getCompanyId(), - Arrays.asList(titolare), jsonFirmatari); - } else { - List soggettiValidi = SoggettoServiceUtil - .getValidTmpByIntPratica(intPraticaId); - List codiciFiscaliValidi = new ArrayList(); - for (Soggetto valido : soggettiValidi) { - if (!codiciFiscaliValidi - .contains(valido.getCodiceFiscale()) - && !valido.getCodiceFiscale().equalsIgnoreCase( - soggetto.getCodiceFiscale())) { - codiciFiscaliValidi.add(valido.getCodiceFiscale()); - } - } - isSigned = ValidazionePraticaUtil - .isAllegatoSignedBySubjectsAndPerson(sourceFileName, - content, serviceContext.getCompanyId(), - codiciFiscaliValidi, - soggetto.getCodiceFiscale(), jsonFirmatari); - } - - if(isSigned){ - userId = PortalUtil.getUserId(actionRequest); - - try { - SoggettoServiceUtil.allegaFileModifica(soggetto.getSoggettoId(), userId, intPraticaId, content, sourceFileName, jsonFirmatari, - serviceContext); - } catch (PortalException e) { - _log.error(e, e); - throw e; - } - } - - break; - - default: - - break; - - } - + AllegatiUtil.sostituisciDL(actionRequest, actionResponse); } - public void resetFirme(ActionRequest actionRequest, - ActionResponse actionResponse) { - ThemeDisplay td = (ThemeDisplay) actionRequest - .getAttribute(WebKeys.THEME_DISPLAY); - String numeroProgetto = ParamUtil.getString(actionRequest, - "numeroProgetto"); + public void resetFirme(ActionRequest actionRequest, ActionResponse actionResponse) { + ThemeDisplay td = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY); + String numeroProgetto = ParamUtil.getString(actionRequest, "numeroProgetto"); List esito = new ArrayList<>(); try { esito = SismicaUtil.resetFirme(td.getCompanyId(), numeroProgetto); } catch (SystemException | PortalException e) { esito.add("Errore durante l'invio " + e.getMessage()); } - actionResponse.setRenderParameter("esito", - esito.toArray(new String[esito.size()])); + actionResponse.setRenderParameter("esito", esito.toArray(new String[esito.size()])); } - public void reIndexFasciolo(ActionRequest actionRequest, - ActionResponse actionResponse) throws PortalException, - SystemException { + public void reIndexFasciolo(ActionRequest actionRequest, ActionResponse actionResponse) + throws PortalException, SystemException { - ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest - .getAttribute(WebKeys.THEME_DISPLAY); + ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY); long intPraticaId = ParamUtil.getLong(actionRequest, "intPraticaId"); if (Validator.isNotNull(intPraticaId)) { - IntPraticaLocalServiceUtil.reIndexFasciolo(intPraticaId, - themeDisplay.getCompanyId()); + IntPraticaLocalServiceUtil.reIndexFasciolo(intPraticaId, themeDisplay.getCompanyId()); } - String numeroProgetto = ParamUtil.getString(actionRequest, - "numeroProgetto"); + String numeroProgetto = ParamUtil.getString(actionRequest, "numeroProgetto"); if (Validator.isNotNull(numeroProgetto)) { - IntPraticaLocalServiceUtil.reIndexFasciolo(numeroProgetto, - themeDisplay.getCompanyId()); + IntPraticaLocalServiceUtil.reIndexFasciolo(numeroProgetto, themeDisplay.getCompanyId()); } } - public void reIndexFascicoli(ActionRequest actionRequest, - ActionResponse actionResponse) { - ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest - .getAttribute(WebKeys.THEME_DISPLAY); + public void reIndexFascicoli(ActionRequest actionRequest, ActionResponse actionResponse) { + ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY); List esito = null; esito = SismicaUtil.reIndexFascicoli(themeDisplay.getCompanyId()); if (esito != null) - actionResponse.setRenderParameter("esito", - esito.toArray(new String[esito.size()])); + actionResponse.setRenderParameter("esito", esito.toArray(new String[esito.size()])); } - public void lanciaSorteggio(ActionRequest actionRequest, - ActionResponse actionResponse) { - ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest - .getAttribute(WebKeys.THEME_DISPLAY); + public void lanciaSorteggio(ActionRequest actionRequest, ActionResponse actionResponse) { + ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY); List esito = null; _log.info("Sorteggio lanciato manualmente"); try { - esito = SorteggioPraticaUtil.sorteggio(themeDisplay.getCompanyId(), - new Date()); + esito = SorteggioPraticaUtil.sorteggio(themeDisplay.getCompanyId(), new Date()); } catch (PortalException | SystemException e) { _log.error("error", e); } if (esito != null) - actionResponse.setRenderParameter("esito", - esito.toArray(new String[esito.size()])); + actionResponse.setRenderParameter("esito", esito.toArray(new String[esito.size()])); } public void testInterno(ActionRequest actionRequest, ActionResponse actionResponse) @@ -401,22 +126,18 @@ public class SismicaAdministrationPortlet extends MVCPortlet { SismicaUtil.inviaAvviso(actionRequest, actionResponse); } - public void salvaDataProssimoSorteggio(ActionRequest actionRequest, - ActionResponse actionResponse) throws PortalException, - SystemException { + public void salvaDataProssimoSorteggio(ActionRequest actionRequest, ActionResponse actionResponse) + throws PortalException, SystemException { - ServiceContext serviceContext = ServiceContextFactory - .getInstance(actionRequest); + ServiceContext serviceContext = ServiceContextFactory.getInstance(actionRequest); serviceContext.setScopeGroupId(-1L); serviceContext.setCompanyId(serviceContext.getCompanyId()); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - Date dataProssimoSorteggio = ParamUtil.getDate(actionRequest, - "dataProssimoSorteggio", sdf); + Date dataProssimoSorteggio = ParamUtil.getDate(actionRequest, "dataProssimoSorteggio", sdf); - ConfigurazioneServiceUtil.storeConfig( - "conf.geniocivile.sorteggio.data.prossimo.sorteggio", + ConfigurazioneServiceUtil.storeConfig("conf.geniocivile.sorteggio.data.prossimo.sorteggio", sdf.format(dataProssimoSorteggio), serviceContext); } diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/html/sismica_administration/view.jsp b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/html/sismica_administration/view.jsp index 0f75843c..2b784668 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/html/sismica_administration/view.jsp +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/html/sismica_administration/view.jsp @@ -134,7 +134,7 @@ String dataProssimoSorteggio = <% String tipoAvviso = ParamUtil.getString(renderRequest, "tipoAvviso", ""); - String numeroProgetto = ParamUtil.getString(renderRequest, "numeroProgetto", ""); + String numeroProgetto = ParamUtil.getString(renderRequest, "numeroProgetto", ""); %>
Invia avviso
@@ -162,6 +162,7 @@ String dataProssimoSorteggio = <% String oggetto = ParamUtil.getString(renderRequest, "tipoAvviso", ""); + long classPK = ParamUtil.getLong(renderRequest, "classPK", 0); %>
@@ -176,13 +177,11 @@ String dataProssimoSorteggio = value="<%=DocPratica.class.getName()%>"> - - + - + "> diff --git a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/fe/portlet/SoggettiPraticaPortlet.java b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/fe/portlet/SoggettiPraticaPortlet.java index 07e37f8e..866784f2 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/fe/portlet/SoggettiPraticaPortlet.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-fe-portlet/docroot/WEB-INF/src/it/tref/liferay/portos/fe/portlet/SoggettiPraticaPortlet.java @@ -58,626 +58,709 @@ import javax.portlet.PortletException; import javax.portlet.ResourceRequest; import javax.portlet.ResourceResponse; - public class SoggettiPraticaPortlet extends MVCPortlet { - private static Log _log = LogFactoryUtil.getLog(SoggettiPraticaPortlet.class); - - - public void deleteSoggetto(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { - - try { - long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); - - SoggettoServiceUtil.deleteSoggetto(soggettoId); - - } catch (PortalException | SystemException e) { - _log.error(e, e); - throw e; - } - - } - - public void invalidaSoggetto(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { - - try { - long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); - long dettPraticaIdRimozione = ParamUtil.getLong(actionRequest, "dettPraticaId"); - - SoggettoLocalServiceUtil.invalidaSoggetto(soggettoId, dettPraticaIdRimozione); - - } catch (PortalException | SystemException e) { - _log.error(e, e); - throw e; - } - } - - public void validaSoggetto(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { - - try { - long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); - long dettPraticaId = ParamUtil.getLong(actionRequest, "dettPraticaId"); - - SoggettoLocalServiceUtil.validaSoggetto(soggettoId, dettPraticaId); - - } catch (PortalException | SystemException e) { - _log.error(e, e); - throw e; - } - } - - public void makePrincipale(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { - - try { - long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); - long dettPraticaId = ParamUtil.getLong(actionRequest, "dettPraticaId"); - Soggetto soggetto = SoggettoServiceUtil.getSoggetto(soggettoId); - SoggettoServiceUtil.updatePrincipale(dettPraticaId, soggetto.getCodiceFiscale(), soggetto.getTipologiaSoggetto()); - - } catch (PortalException | SystemException e) { - _log.error(e, e); - throw e; - } - } - - public void removePrincipale(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { - - try { - long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); - Soggetto soggetto = SoggettoServiceUtil.getSoggetto(soggettoId); - long dettPraticaId = ParamUtil.getLong(actionRequest, "dettPraticaId"); - DettPraticaServiceUtil.updatePrincipale(dettPraticaId, StringPool.BLANK, soggetto.getTipologiaSoggetto()); - - } catch (PortalException | SystemException e) { - _log.error(e, e); - throw e; - } - } - - // public void updateSoggetto(ActionRequest actionRequest, ActionResponse actionResponse) throws - // Exception { - // - // boolean requiredDoc = ParamUtil.getBoolean(actionRequest, "requiredDoc"); - // long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); - // - // long dettPraticaId = ParamUtil.getLong(actionRequest, "dettPraticaId"); - // long intPraticaId = ParamUtil.getLong(actionRequest, "intPraticaId"); - // String tipologiaSoggetto = ParamUtil.getString(actionRequest, "tipologiaSoggetto"); - // String nome = ParamUtil.getString(actionRequest, "nome"); - // String cognome = ParamUtil.getString(actionRequest, "cognome"); - // String codiceFiscale = ParamUtil.getString(actionRequest, "codiceFiscale"); - // if (Validator.isNotNull(ParamUtil.getString(actionRequest, "codiceFiscaleDitta"))) { - // codiceFiscale = ParamUtil.getString(actionRequest, "codiceFiscaleDitta"); - // } else { - // codiceFiscale = ParamUtil.getString(actionRequest, "codiceFiscalePersone"); - // } - // boolean isSigned = false; - // String sourceFileName = StringPool.BLANK; - // byte[] content = null; - // String jsonFirmatari = ""; - // - // if (requiredDoc) { - // UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest); - // ServiceContext serviceContext = ServiceContextFactory.getInstance(uploadRequest); - // sourceFileName = uploadRequest.getFileName("docFile"); - // File file = uploadRequest.getFile("docFile"); - // boolean applicaFirma = ParamUtil.getBoolean(actionRequest, "applicaFirma"); - // - // try { - // if (Validator.isNotNull(sourceFileName) && file != null) { - // // validazione: solo alcune estensioni - // String ext = FileUtil.getExtension(sourceFileName); - // if (!ext.equalsIgnoreCase("p7m") && !ext.equalsIgnoreCase("pdf")) { - // SessionErrors.add(actionRequest, "error.geniocivilefe.variazione-soggetto.allegato.ext.valid"); - // } - // // lunghezza fissata a 200 - // if (sourceFileName.length() > 200) { - // SessionErrors.add(actionRequest, - // "error.geniocivilefe.variazione-soggetto.allegato.length.valid"); - // } - // } else { - // SessionErrors.add(actionRequest, - // "error.geniocivilefe.variazione-soggetto.allegato.is.request"); - // } - // - // if (!SessionErrors.isEmpty(actionRequest)) { - // throw new SystemException("error.geniocivilefe.variazione-soggetto.allegato"); - // } else { - // content = FileUtil.getBytes(file); - // // Per poter completare l'aggiunta di un soggetto è necessario allegare file firmato dal - // // nuovo soggetto e almeno uno dei soggetti già inseriti nella pratica. - // // SOLO nel caso in cui il soggetto che viene inserito è di tipo COMMITTENTE, la sua firma - // // sul file allegato NON è OBBLIGATORIA; inoltre la firma OBBLIGATORIA che deve essere - // // presente sul file allegato è SOLO quella del TITOLARE DIGITALE DELLA PRATICA. - // if (TipoSoggettoUtil.COMMITTENTE.equals(tipologiaSoggetto)) { - // DettPratica dettPratica = DettPraticaLocalServiceUtil.getDettPratica(dettPraticaId); - // String[] titolare = new String[] {dettPratica.getCodiceFiscaleDelegatoCommittente()}; - // isSigned = - // ValidazionePraticaUtil.isAllegatoSignedBySubjects(sourceFileName, content, - // serviceContext.getCompanyId(), Arrays.asList(titolare)); - // } else { - // List soggettiValidi = SoggettoServiceUtil.getValidTmpByIntPratica(intPraticaId); - // List codiciFiscaliValidi = new ArrayList(); - // for (Soggetto soggetto : soggettiValidi) { - // if (!codiciFiscaliValidi.contains(soggetto.getCodiceFiscale())) { - // codiciFiscaliValidi.add(soggetto.getCodiceFiscale()); - // } - // } - // - // isSigned = - // ValidazionePraticaUtil.isAllegatoSignedBySubjectsAndPerson(sourceFileName, content, - // serviceContext.getCompanyId(), codiciFiscaliValidi, codiceFiscale); - // } - // - // FirmeBean firmeBean = new FirmeBean(); - // if (applicaFirma) { - // User user = UserLocalServiceUtil.getUser(serviceContext.getUserId()); - // jsonFirmatari = FirmeUtil.addFirma(firmeBean, user.getScreenName()); - // } else { - // jsonFirmatari = FirmeUtil.serialize(firmeBean); - // } - // - // if (!isSigned) { - // SessionErrors.add(actionRequest, - // "error.geniocivilefe.variazione-soggetto.add.file.non.firmato"); - // throw new SystemException("error.geniocivilefe.variazione-soggetto.add.file.non.firmato"); - // } - // - // } - // - // } catch (Exception e) { - // SessionErrors.add(actionRequest, "error.geniocivilefe.variazione-soggetto"); - // String redirectURL = ParamUtil.getString(actionRequest, "errorUrl"); - // redirectURL = - // HttpUtil.addParameter(redirectURL, actionResponse.getNamespace() + "isEditable", - // String.valueOf(true)); - // - // actionResponse.sendRedirect(redirectURL); - // return; - // } - // - // } - // - // String codiceFiscaleDelegato = ParamUtil.getString(actionRequest, "codiceFiscaleDelegato"); - // Date dataNascita = - // ParamUtil.getDate(actionRequest, "dataNascita", - // DateFormatFactoryUtil.getDate(actionRequest.getLocale())); - // String comuneNascita = ParamUtil.getString(actionRequest, "comuneNascita"); - // String comuneDomicilio = ParamUtil.getString(actionRequest, "comuneDomicilio"); - // String provinciaDomicilio = ParamUtil.getString(actionRequest, "provinciaDomicilio"); - // String viaDomicilio = ParamUtil.getString(actionRequest, "viaDomicilio"); - // String numeroCivicoDomicilio = ParamUtil.getString(actionRequest, "numeroCivicoDomicilio"); - // String capDomicilio = ParamUtil.getString(actionRequest, "capDomicilio"); - // String domicilioExtra = ParamUtil.getString(actionRequest, "domicilioExtra"); - // String comune = ParamUtil.getString(actionRequest, "comune"); - // String provincia = ParamUtil.getString(actionRequest, "provincia"); - // String via = ParamUtil.getString(actionRequest, "via"); - // String numeroCivico = ParamUtil.getString(actionRequest, "numeroCivico"); - // String cap = ParamUtil.getString(actionRequest, "cap"); - // String denominazione = ParamUtil.getString(actionRequest, "denominazione"); - // String sedeLegale = ParamUtil.getString(actionRequest, "sedeLegale"); - // String legaleRap = ParamUtil.getString(actionRequest, "legaleRap"); - // Date dataNascitaRap = - // ParamUtil.getDate(actionRequest, "dataNascitaRap", - // DateFormatFactoryUtil.getDate(actionRequest.getLocale())); - // String comuneNascitaRap = ParamUtil.getString(actionRequest, "comuneNascitaRap"); - // String viaRap = ParamUtil.getString(actionRequest, "viaRap"); - // String numeroCivicoRap = ParamUtil.getString(actionRequest, "numeroCivicoRap"); - // String capRap = ParamUtil.getString(actionRequest, "capRap"); - // String provinciaRap = ParamUtil.getString(actionRequest, "provinciaRap"); - // String comuneRap = ParamUtil.getString(actionRequest, "comuneRap"); - // String albo = ParamUtil.getString(actionRequest, "albo"); - // String regAlbo = ParamUtil.getString(actionRequest, "regAlbo"); - // String provinciaAlbo = ParamUtil.getString(actionRequest, "provinciaAlbo"); - // String numIscrAlbo = ParamUtil.getString(actionRequest, "numIscrAlbo"); - // String telefono = ParamUtil.getString(actionRequest, "telefono"); - // String fax = ParamUtil.getString(actionRequest, "fax"); - // String email = ParamUtil.getString(actionRequest, "email"); - // boolean aggiuntivo = ParamUtil.getBoolean(actionRequest, "aggiuntivo"); - // boolean rimosso = ParamUtil.getBoolean(actionRequest, "rimosso"); - // String ambitoAttivita = ParamUtil.getString(actionRequest, "ambitoAttivita"); - // String ambitoProfessioneDitta = ParamUtil.getString(actionRequest, "ambitoProfessioneDitta"); - // String ambitoProfessioneAltro = ParamUtil.getString(actionRequest, "ambitoProfessioneAltro"); - // String ambitoProfessione = - // Validator.isNotNull(ambitoProfessioneDitta) ? ambitoProfessioneDitta : ambitoProfessioneAltro; - // long intPraticaIdRimozione = ParamUtil.getLong(actionRequest, "intPraticaIdRimozione"); - // long dettPraticaIdRimozione = ParamUtil.getLong(actionRequest, "dettPraticaIdRimozione"); - // // Date dtDataRimozione = - // // ParamUtil.getDate(actionRequest, "dtDataRimozione", - // // DateFormatFactoryUtil.getDate(actionRequest.getLocale()); - // - // ServiceContext serviceContext = ServiceContextFactory.getInstance(Soggetto.class.getName(), - // actionRequest); - // - // long userId = PortalUtil.getUserId(actionRequest); - // - // try { - // - // actionResponse.setRenderParameter("mvcPath", "html/soggettipratica/edit_soggetto.jsp"); - // if (soggettoId == 0) { - // if (isSigned) { - // SoggettoLocalServiceUtil.addSoggettoValidatedByFile(userId, dettPraticaId, intPraticaId, nome, - // cognome, - // codiceFiscale, codiceFiscaleDelegato, dataNascita, comuneNascita, comuneDomicilio, - // provinciaDomicilio, - // viaDomicilio, numeroCivicoDomicilio, capDomicilio, domicilioExtra, comune, provincia, via, - // numeroCivico, - // cap, denominazione, sedeLegale, legaleRap, dataNascitaRap, comuneNascitaRap, viaRap, - // numeroCivicoRap, - // capRap, provinciaRap, comuneRap, albo, regAlbo, provinciaAlbo, numIscrAlbo, telefono, fax, - // email, - // tipologiaSoggetto, aggiuntivo, rimosso, ambitoAttivita, ambitoProfessione, - // intPraticaIdRimozione, - // dettPraticaIdRimozione, null, 0L, content, sourceFileName, jsonFirmatari, serviceContext); - // } else { - // SoggettoLocalServiceUtil.addSoggetto(userId, dettPraticaId, intPraticaId, nome, cognome, - // codiceFiscale, - // codiceFiscaleDelegato, dataNascita, comuneNascita, comuneDomicilio, provinciaDomicilio, - // viaDomicilio, - // numeroCivicoDomicilio, capDomicilio, domicilioExtra, comune, provincia, via, numeroCivico, cap, - // denominazione, sedeLegale, legaleRap, dataNascitaRap, comuneNascitaRap, viaRap, - // numeroCivicoRap, capRap, - // provinciaRap, comuneRap, albo, regAlbo, provinciaAlbo, numIscrAlbo, telefono, fax, email, - // tipologiaSoggetto, aggiuntivo, rimosso, ambitoAttivita, ambitoProfessione, - // intPraticaIdRimozione, - // dettPraticaIdRimozione, null, 0L, serviceContext); - // } - // } else { - // if (isSigned) { - // SoggettoLocalServiceUtil.updateSoggettoValidatedByFile(userId, soggettoId, dettPraticaId, - // intPraticaId, nome, - // cognome, codiceFiscale, codiceFiscaleDelegato, dataNascita, comuneNascita, comuneDomicilio, - // provinciaDomicilio, viaDomicilio, numeroCivicoDomicilio, capDomicilio, domicilioExtra, comune, - // provincia, - // via, numeroCivico, cap, denominazione, sedeLegale, legaleRap, dataNascitaRap, comuneNascitaRap, - // viaRap, - // numeroCivicoRap, capRap, provinciaRap, comuneRap, albo, regAlbo, provinciaAlbo, numIscrAlbo, - // telefono, - // fax, email, tipologiaSoggetto, aggiuntivo, rimosso, ambitoAttivita, ambitoProfessione, - // intPraticaIdRimozione, dettPraticaIdRimozione, null, 0L, content, sourceFileName, - // jsonFirmatari, - // serviceContext); - // } else { - // SoggettoLocalServiceUtil.updateSoggetto(userId, soggettoId, dettPraticaId, intPraticaId, nome, - // cognome, - // codiceFiscale, codiceFiscaleDelegato, dataNascita, comuneNascita, comuneDomicilio, - // provinciaDomicilio, - // viaDomicilio, numeroCivicoDomicilio, capDomicilio, domicilioExtra, comune, provincia, via, - // numeroCivico, - // cap, denominazione, sedeLegale, legaleRap, dataNascitaRap, comuneNascitaRap, viaRap, - // numeroCivicoRap, - // capRap, provinciaRap, comuneRap, albo, regAlbo, provinciaAlbo, numIscrAlbo, telefono, fax, - // email, - // tipologiaSoggetto, aggiuntivo, rimosso, ambitoAttivita, ambitoProfessione, - // intPraticaIdRimozione, - // dettPraticaIdRimozione, null, 0L, serviceContext); - // } - // } - // PortalUtil.copyRequestParameters(actionRequest, actionResponse); - // } catch (PortalException e) { - // _log.error(e, e); - // - // throw e; - // } - // } - - public void updateSoggetto(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { - - boolean requiredDoc = ParamUtil.getBoolean(actionRequest, "requiredDoc"); - long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); - - long dettPraticaId = ParamUtil.getLong(actionRequest, "dettPraticaId"); - long intPraticaId = ParamUtil.getLong(actionRequest, "intPraticaId"); - String tipologiaSoggetto = ParamUtil.getString(actionRequest, "tipologiaSoggetto"); - String nome = ParamUtil.getString(actionRequest, "nome"); - String cognome = ParamUtil.getString(actionRequest, "cognome"); - String codiceFiscale = ParamUtil.getString(actionRequest, "codiceFiscale"); - if (Validator.isNotNull(ParamUtil.getString(actionRequest, "codiceFiscaleDitta"))) { - codiceFiscale = ParamUtil.getString(actionRequest, "codiceFiscaleDitta"); - } else { - codiceFiscale = ParamUtil.getString(actionRequest, "codiceFiscalePersone"); - } - - String codiceFiscaleDelegato = ParamUtil.getString(actionRequest, "codiceFiscaleDelegato"); - Date dataNascita = - ParamUtil.getDate(actionRequest, "dataNascita", DateFormatFactoryUtil.getDate(actionRequest.getLocale())); - String provinciaNascita = ParamUtil.getString(actionRequest, "provinciaNascita"); - String comuneNascita = ParamUtil.getString(actionRequest, "comuneNascita"); - String comuneDomicilio = ParamUtil.getString(actionRequest, "comuneDomicilio"); - String comuneDomicilioEstero = ParamUtil.getString(actionRequest, "comuneDomicilioEstero"); - String provinciaDomicilio = ParamUtil.getString(actionRequest, "provinciaDomicilio"); - String viaDomicilio = ParamUtil.getString(actionRequest, "viaDomicilio"); - String numeroCivicoDomicilio = ParamUtil.getString(actionRequest, "numeroCivicoDomicilio"); - String capDomicilio = ParamUtil.getString(actionRequest, "capDomicilio"); - String domicilioExtra = ParamUtil.getString(actionRequest, "domicilioExtra"); - String comune = ParamUtil.getString(actionRequest, "comune"); - String comuneEstero = ParamUtil.getString(actionRequest, "comuneEstero"); - String provincia = ParamUtil.getString(actionRequest, "provincia"); - String via = ParamUtil.getString(actionRequest, "via"); - String numeroCivico = ParamUtil.getString(actionRequest, "numeroCivico"); - String cap = ParamUtil.getString(actionRequest, "cap"); - String denominazione = ParamUtil.getString(actionRequest, "denominazione"); - String sedeLegale = ParamUtil.getString(actionRequest, "sedeLegale"); - String legaleRap = ParamUtil.getString(actionRequest, "legaleRap"); - Date dataNascitaRap = - ParamUtil.getDate(actionRequest, "dataNascitaRap", DateFormatFactoryUtil.getDate(actionRequest.getLocale())); - String provinciaNascitaRap = ParamUtil.getString(actionRequest, "provinciaNascitaRap"); - String comuneNascitaRap = ParamUtil.getString(actionRequest, "comuneNascitaRap"); - String viaRap = ParamUtil.getString(actionRequest, "viaRap"); - String numeroCivicoRap = ParamUtil.getString(actionRequest, "numeroCivicoRap"); - String capRap = ParamUtil.getString(actionRequest, "capRap"); - String provinciaRap = ParamUtil.getString(actionRequest, "provinciaRap"); - String comuneRap = ParamUtil.getString(actionRequest, "comuneRap"); - String comuneRapEstero = ParamUtil.getString(actionRequest, "comuneRapEstero"); - String albo = ParamUtil.getString(actionRequest, "albo"); - String alboDescr = ParamUtil.getString(actionRequest, "alboDescr"); - String regAlbo = ParamUtil.getString(actionRequest, "regAlbo"); - String provinciaAlbo = ParamUtil.getString(actionRequest, "provinciaAlbo"); - String numIscrAlbo = ParamUtil.getString(actionRequest, "numIscrAlbo"); - String fax = ParamUtil.getString(actionRequest, "fax"); - - String telefonoResidenza = ParamUtil.getString(actionRequest, "telefonoResidenza"); - String telefono = - Validator.isNotNull(telefonoResidenza) ? telefonoResidenza : ParamUtil.getString(actionRequest, - "telefonoGiuridico"); - - String emailResidenza = ParamUtil.getString(actionRequest, "emailResidenza"); - String email = - Validator.isNotNull(emailResidenza) ? emailResidenza : ParamUtil.getString(actionRequest, "emailGiuridica"); - - - boolean aggiuntivo = ParamUtil.getBoolean(actionRequest, "aggiuntivo"); - boolean rimosso = ParamUtil.getBoolean(actionRequest, "rimosso"); - String ambitoAttivita = ParamUtil.getString(actionRequest, "ambitoAttivita"); - String ambitoProfessioneDitta = ParamUtil.getString(actionRequest, "ambitoProfessioneDitta"); - String ambitoProfessioneAltro = ParamUtil.getString(actionRequest, "ambitoProfessioneAltro"); - String ambitoProfessione = - Validator.isNotNull(ambitoProfessioneDitta) ? ambitoProfessioneDitta : ambitoProfessioneAltro; - long intPraticaIdRimozione = ParamUtil.getLong(actionRequest, "intPraticaIdRimozione"); - long dettPraticaIdRimozione = ParamUtil.getLong(actionRequest, "dettPraticaIdRimozione"); - // Date dtDataRimozione = - // ParamUtil.getDate(actionRequest, "dtDataRimozione", - // DateFormatFactoryUtil.getDate(actionRequest.getLocale()); - long soggettoSostituitoId = ParamUtil.getLong(actionRequest, "soggettoSostituitoId"); - - ServiceContext serviceContext = ServiceContextFactory.getInstance(Soggetto.class.getName(), actionRequest); - - long userId = PortalUtil.getUserId(actionRequest); - - try { - actionResponse.setRenderParameter("mvcPath", "html/soggettipratica/edit_soggetto.jsp"); - - boolean tmp = false; - if (requiredDoc) { - tmp = true; - } - Soggetto soggetto = null; - if (soggettoId == 0) { - soggetto = - SoggettoServiceUtil.addSoggetto(userId, dettPraticaId, intPraticaId, nome, cognome, codiceFiscale, - codiceFiscaleDelegato, dataNascita, provinciaNascita, comuneNascita, comuneDomicilio, - comuneDomicilioEstero, provinciaDomicilio, viaDomicilio, numeroCivicoDomicilio, capDomicilio, - domicilioExtra, comune, comuneEstero, provincia, via, numeroCivico, cap, denominazione, sedeLegale, - legaleRap, dataNascitaRap, provinciaNascitaRap, comuneNascitaRap, viaRap, numeroCivicoRap, capRap, - provinciaRap, comuneRap, comuneEstero, albo, alboDescr, regAlbo, provinciaAlbo, numIscrAlbo, telefono, - fax, email, tipologiaSoggetto, aggiuntivo, rimosso, ambitoAttivita, ambitoProfessione, - intPraticaIdRimozione, dettPraticaIdRimozione, null, soggettoSostituitoId, 0L, tmp, serviceContext); - } else { - soggetto = - SoggettoServiceUtil.updateSoggetto(userId, soggettoId, dettPraticaId, intPraticaId, nome, cognome, - codiceFiscale, codiceFiscaleDelegato, dataNascita, provinciaNascita, comuneNascita, comuneDomicilio, - comuneDomicilioEstero, provinciaDomicilio, viaDomicilio, numeroCivicoDomicilio, capDomicilio, - domicilioExtra, comune, comuneEstero, provincia, via, numeroCivico, cap, denominazione, sedeLegale, - legaleRap, dataNascitaRap, provinciaNascitaRap, comuneNascitaRap, viaRap, numeroCivicoRap, capRap, - provinciaRap, comuneRap, comuneEstero, albo, alboDescr, regAlbo, provinciaAlbo, numIscrAlbo, telefono, - fax, email, tipologiaSoggetto, aggiuntivo, rimosso, ambitoAttivita, ambitoProfessione, - intPraticaIdRimozione, dettPraticaIdRimozione, null, soggettoSostituitoId, 0L, tmp, serviceContext); - } - PortalUtil.copyRequestParameters(actionRequest, actionResponse); - actionResponse.setRenderParameter("soggettoId", String.valueOf(soggetto.getSoggettoId())); - actionResponse.setRenderParameter("closePopup", String.valueOf(true)); - } catch (PortalException e) { - _log.error(e, e); - - throw e; - } - } - - public void updateAllegatoSoggetto(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { - - long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); - Soggetto soggetto = SoggettoLocalServiceUtil.getSoggetto(soggettoId); - - long dettPraticaId = ParamUtil.getLong(actionRequest, "dettPraticaId"); - DettPratica dettPratica = DettPraticaLocalServiceUtil.getDettPratica(dettPraticaId); - long intPraticaId = dettPratica.getIntPraticaId(); - ServiceContext serviceContext = ServiceContextFactory.getInstance(Soggetto.class.getName(), actionRequest); - - String sourceFileName = StringPool.BLANK; - byte[] content = null; - String jsonFirmatari = ""; - boolean isSigned = false; - - boolean applicaFirma = ParamUtil.getBoolean(actionRequest, "applicaFirma"); - try { - FirmeBean firmeBean = new FirmeBean(); - - if (Validator.isNotNull(soggetto.getFileVariazioneId())) { - DocPratica fileAllegato = DocPraticaLocalServiceUtil.getDocPratica(soggetto.getFileVariazioneId()); - sourceFileName = fileAllegato.getFileName(); - FileEntry attachment = DocPraticaLocalServiceUtil.getAttachment(soggetto.getFileVariazioneId()); - // content = IOUtils.toByteArray(attachment.getContentStream()); - content = FileUtil.getBytes(attachment.getContentStream()); - - firmeBean = FirmeUtil.deserialize(fileAllegato.getJsonFirmatari()); - } - - UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest); - sourceFileName = uploadRequest.getFileName("docFile"); - File file = uploadRequest.getFile("docFile"); - - User user = UserLocalServiceUtil.getUser(serviceContext.getUserId()); - if (applicaFirma && !firmeBean.allSignatures().contains(user.getScreenName())) { - jsonFirmatari = FirmeUtil.addFirma(firmeBean, user.getScreenName()); - } else { - jsonFirmatari = FirmeUtil.serialize(firmeBean); - } - - if (file.exists()) { - - if (Validator.isNotNull(sourceFileName) && file != null) { - // validazione: solo alcune estensioni - String ext = FileUtil.getExtension(sourceFileName); - if (!ext.equalsIgnoreCase("p7m") && !ext.equalsIgnoreCase("pdf")) { - SessionErrors.add(actionRequest, "error.geniocivilefe.variazione-soggetto.allegato.ext.valid"); - } - // lunghezza fissata a 200 - if (sourceFileName.length() > 200) { - SessionErrors.add(actionRequest, "error.geniocivilefe.variazione-soggetto.allegato.length.valid"); - } - } else if (!TipoSoggettoUtil.COMMITTENTE.equalsIgnoreCase(soggetto.getTipologiaSoggetto())) { - SessionErrors.add(actionRequest, "error.geniocivilefe.variazione-soggetto.allegato.is.request"); - } - - if (!SessionErrors.isEmpty(actionRequest)) { - throw new SystemException("error.geniocivilefe.variazione-soggetto.allegato"); - } else if (file != null) { - content = FileUtil.getBytes(file); - } - - } - - // Per poter completare l'aggiunta di un soggetto è necessario allegare file firmato dal - // nuovo soggetto e almeno uno dei soggetti già inseriti nella pratica. - // SOLO nel caso in cui il soggetto che viene inserito è di tipo COMMITTENTE, la sua firma - // sul file allegato NON è OBBLIGATORIA; inoltre la firma OBBLIGATORIA che deve essere - // presente sul file allegato è SOLO quella del TITOLARE DIGITALE DELLA PRATICA. - if (TipoSoggettoUtil.COMMITTENTE.equals(soggetto.getTipologiaSoggetto())) { - String[] titolare = new String[] {dettPratica.getCodiceFiscaleDelegatoCommittente()}; - isSigned = - ValidazionePraticaUtil.isAllegatoSignedBySubjects(sourceFileName, content, serviceContext.getCompanyId(), - Arrays.asList(titolare), jsonFirmatari); - } else { - List soggettiValidi = SoggettoServiceUtil.getValidTmpByIntPratica(intPraticaId); - List codiciFiscaliValidi = new ArrayList(); - for (Soggetto valido : soggettiValidi) { - if (!codiciFiscaliValidi.contains(valido.getCodiceFiscale()) - && !valido.getCodiceFiscale().equalsIgnoreCase(soggetto.getCodiceFiscale())) { - codiciFiscaliValidi.add(valido.getCodiceFiscale()); - } - } - isSigned = - ValidazionePraticaUtil.isAllegatoSignedBySubjectsAndPerson(sourceFileName, content, - serviceContext.getCompanyId(), codiciFiscaliValidi, soggetto.getCodiceFiscale(), jsonFirmatari); - } - - if (!isSigned) { - if (TipoSoggettoUtil.COMMITTENTE.equals(soggetto.getTipologiaSoggetto())) { - SessionErrors.add(actionRequest, "error.geniocivilefe.variazione-soggetto.add.file.non.firmato.committente"); - throw new SystemException("error.geniocivilefe.variazione-soggetto.add.file.non.firmato.committente"); - } else { - SessionErrors.add(actionRequest, "error.geniocivilefe.variazione-soggetto.add.file.non.firmato"); - throw new SystemException("error.geniocivilefe.variazione-soggetto.add.file.non.firmato"); - } - } - - } catch (Exception e) { - SessionErrors.add(actionRequest, "error.geniocivilefe.variazione-soggetto"); - String redirectURL = ParamUtil.getString(actionRequest, "errorUrl"); - actionResponse.sendRedirect(redirectURL); - return; - } - - long userId = PortalUtil.getUserId(actionRequest); - - try { - SoggettoServiceUtil.allegaFileModifica(soggettoId, userId, intPraticaId, content, sourceFileName, jsonFirmatari, - serviceContext); - - String successUrl = ParamUtil.getString(actionRequest, "successUrl"); - successUrl = - HttpUtil.addParameter(successUrl, actionResponse.getNamespace() + "closePopup", String.valueOf(applicaFirma)); - - actionResponse.sendRedirect(successUrl); - - } catch (PortalException e) { - _log.error(e, e); - throw e; - } - } - - @Override - public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException, - PortletException { - - String id = resourceRequest.getResourceID(); - try { - ServiceContext serviceContext = ServiceContextFactory.getInstance(resourceRequest); - if ("compilaSoggetti".equals(id)) { - long userId = ParamUtil.getLong(resourceRequest, "userId", 0l); - String codiceFiscale = ParamUtil.getString(resourceRequest, "codiceFiscale"); - String tipologiaSoggetto = ParamUtil.getString(resourceRequest, "tipologiaSoggetto"); - JSONArray jsonSoggetti = JSONFactoryUtil.createJSONArray(); - if (Validator.isNotNull(userId) && Validator.isNotNull(codiceFiscale) && Validator.isNotNull(tipologiaSoggetto)) { - OrderByComparator orderByComparator = - OrderByComparatorFactoryUtil.create("portos_bo_soggetto", "createDate", false); - List soggetti = - SoggettoLocalServiceUtil.findByUserId_CodiceFiscale_TipologiaSoggetto(userId, codiceFiscale, - tipologiaSoggetto, QueryUtil.ALL_POS, QueryUtil.ALL_POS, orderByComparator); - if (soggetti.isEmpty()) { - soggetti = - SoggettoLocalServiceUtil.findByUserId_CodiceFiscale(userId, codiceFiscale, QueryUtil.ALL_POS, - QueryUtil.ALL_POS, orderByComparator); - } - for (Soggetto soggetto : soggetti) { - JSONSerializer jsonSerializer = JSONFactoryUtil.createJSONSerializer(); - jsonSerializer.exclude("class"); - String serialized = jsonSerializer.serialize(SoggettoSoap.toSoapModel(soggetto)); - jsonSoggetti.put(serialized); - } - } - writeJSON(resourceRequest, resourceResponse, jsonSoggetti); - - } else if ("province".equals(id)) { - - JSONArray jsonArray = JSONFactoryUtil.createJSONArray(); - List province = - ProvinciaLocalServiceUtil.findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, - OrderByComparatorFactoryUtil.create("portos_bo_Provincia", "provincia", true)); - for (Provincia provincia : province) { - JSONObject jsonObject = JSONFactoryUtil.createJSONObject(); - jsonObject.put("provinciaId", provincia.getCodiceProvincia()); - jsonObject.put("descLong", provincia.getSigla() + "- " + provincia.getProvincia()); - - jsonArray.put(jsonObject); - } - writeJSON(resourceRequest, resourceResponse, jsonArray); - - } else if ("comuni".equals(id)) { - String codiceProvincia = ParamUtil.getString(resourceRequest, "provinciaId"); - JSONArray jsonArray = JSONFactoryUtil.createJSONArray(); - if (Validator.isNotNull(codiceProvincia) && Validator.isNotNull(codiceProvincia)) { - List comuni = - ComuneLocalServiceUtil.findByCompanyIdCodiceProvincia(serviceContext.getCompanyId(), codiceProvincia, - QueryUtil.ALL_POS, QueryUtil.ALL_POS, OrderByComparatorFactoryUtil.create("portos_bo_Comune", - "denominazione", true)); - for (Comune comune : comuni) { - JSONObject jsonObject = JSONFactoryUtil.createJSONObject(); - - jsonObject.put("comuneId", comune.getComuneId()); - jsonObject.put("descLong", comune.getDenominazione()); - - jsonArray.put(jsonObject); - } - } - writeJSON(resourceRequest, resourceResponse, jsonArray); - } else { - super.serveResource(resourceRequest, resourceResponse); - } - } catch (Exception e) { - _log.error(e, e); - throw new IOException(e); - } - } + private static Log _log = LogFactoryUtil.getLog(SoggettiPraticaPortlet.class); + + public void deleteSoggetto(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { + + try { + long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); + + SoggettoServiceUtil.deleteSoggetto(soggettoId); + + } catch (PortalException | SystemException e) { + _log.error(e, e); + throw e; + } + + } + + public void invalidaSoggetto(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { + + try { + long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); + long dettPraticaIdRimozione = ParamUtil.getLong(actionRequest, "dettPraticaId"); + + SoggettoLocalServiceUtil.invalidaSoggetto(soggettoId, dettPraticaIdRimozione); + + } catch (PortalException | SystemException e) { + _log.error(e, e); + throw e; + } + } + + public void validaSoggetto(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { + + try { + long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); + long dettPraticaId = ParamUtil.getLong(actionRequest, "dettPraticaId"); + + SoggettoLocalServiceUtil.validaSoggetto(soggettoId, dettPraticaId); + + } catch (PortalException | SystemException e) { + _log.error(e, e); + throw e; + } + } + + public void makePrincipale(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { + + try { + long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); + long dettPraticaId = ParamUtil.getLong(actionRequest, "dettPraticaId"); + Soggetto soggetto = SoggettoServiceUtil.getSoggetto(soggettoId); + SoggettoServiceUtil.updatePrincipale(dettPraticaId, soggetto.getCodiceFiscale(), + soggetto.getTipologiaSoggetto()); + + } catch (PortalException | SystemException e) { + _log.error(e, e); + throw e; + } + } + + public void removePrincipale(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { + + try { + long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); + Soggetto soggetto = SoggettoServiceUtil.getSoggetto(soggettoId); + long dettPraticaId = ParamUtil.getLong(actionRequest, "dettPraticaId"); + DettPraticaServiceUtil.updatePrincipale(dettPraticaId, StringPool.BLANK, + soggetto.getTipologiaSoggetto()); + + } catch (PortalException | SystemException e) { + _log.error(e, e); + throw e; + } + } + + // public void updateSoggetto(ActionRequest actionRequest, ActionResponse + // actionResponse) throws + // Exception { + // + // boolean requiredDoc = ParamUtil.getBoolean(actionRequest, "requiredDoc"); + // long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); + // + // long dettPraticaId = ParamUtil.getLong(actionRequest, "dettPraticaId"); + // long intPraticaId = ParamUtil.getLong(actionRequest, "intPraticaId"); + // String tipologiaSoggetto = ParamUtil.getString(actionRequest, + // "tipologiaSoggetto"); + // String nome = ParamUtil.getString(actionRequest, "nome"); + // String cognome = ParamUtil.getString(actionRequest, "cognome"); + // String codiceFiscale = ParamUtil.getString(actionRequest, + // "codiceFiscale"); + // if (Validator.isNotNull(ParamUtil.getString(actionRequest, + // "codiceFiscaleDitta"))) { + // codiceFiscale = ParamUtil.getString(actionRequest, "codiceFiscaleDitta"); + // } else { + // codiceFiscale = ParamUtil.getString(actionRequest, + // "codiceFiscalePersone"); + // } + // boolean isSigned = false; + // String sourceFileName = StringPool.BLANK; + // byte[] content = null; + // String jsonFirmatari = ""; + // + // if (requiredDoc) { + // UploadPortletRequest uploadRequest = + // PortalUtil.getUploadPortletRequest(actionRequest); + // ServiceContext serviceContext = + // ServiceContextFactory.getInstance(uploadRequest); + // sourceFileName = uploadRequest.getFileName("docFile"); + // File file = uploadRequest.getFile("docFile"); + // boolean applicaFirma = ParamUtil.getBoolean(actionRequest, + // "applicaFirma"); + // + // try { + // if (Validator.isNotNull(sourceFileName) && file != null) { + // // validazione: solo alcune estensioni + // String ext = FileUtil.getExtension(sourceFileName); + // if (!ext.equalsIgnoreCase("p7m") && !ext.equalsIgnoreCase("pdf")) { + // SessionErrors.add(actionRequest, + // "error.geniocivilefe.variazione-soggetto.allegato.ext.valid"); + // } + // // lunghezza fissata a 200 + // if (sourceFileName.length() > 200) { + // SessionErrors.add(actionRequest, + // "error.geniocivilefe.variazione-soggetto.allegato.length.valid"); + // } + // } else { + // SessionErrors.add(actionRequest, + // "error.geniocivilefe.variazione-soggetto.allegato.is.request"); + // } + // + // if (!SessionErrors.isEmpty(actionRequest)) { + // throw new + // SystemException("error.geniocivilefe.variazione-soggetto.allegato"); + // } else { + // content = FileUtil.getBytes(file); + // // Per poter completare l'aggiunta di un soggetto è necessario allegare + // file firmato dal + // // nuovo soggetto e almeno uno dei soggetti già inseriti nella pratica. + // // SOLO nel caso in cui il soggetto che viene inserito è di tipo + // COMMITTENTE, la sua firma + // // sul file allegato NON è OBBLIGATORIA; inoltre la firma OBBLIGATORIA + // che deve essere + // // presente sul file allegato è SOLO quella del TITOLARE DIGITALE DELLA + // PRATICA. + // if (TipoSoggettoUtil.COMMITTENTE.equals(tipologiaSoggetto)) { + // DettPratica dettPratica = + // DettPraticaLocalServiceUtil.getDettPratica(dettPraticaId); + // String[] titolare = new String[] + // {dettPratica.getCodiceFiscaleDelegatoCommittente()}; + // isSigned = + // ValidazionePraticaUtil.isAllegatoSignedBySubjects(sourceFileName, + // content, + // serviceContext.getCompanyId(), Arrays.asList(titolare)); + // } else { + // List soggettiValidi = + // SoggettoServiceUtil.getValidTmpByIntPratica(intPraticaId); + // List codiciFiscaliValidi = new ArrayList(); + // for (Soggetto soggetto : soggettiValidi) { + // if (!codiciFiscaliValidi.contains(soggetto.getCodiceFiscale())) { + // codiciFiscaliValidi.add(soggetto.getCodiceFiscale()); + // } + // } + // + // isSigned = + // ValidazionePraticaUtil.isAllegatoSignedBySubjectsAndPerson(sourceFileName, + // content, + // serviceContext.getCompanyId(), codiciFiscaliValidi, codiceFiscale); + // } + // + // FirmeBean firmeBean = new FirmeBean(); + // if (applicaFirma) { + // User user = UserLocalServiceUtil.getUser(serviceContext.getUserId()); + // jsonFirmatari = FirmeUtil.addFirma(firmeBean, user.getScreenName()); + // } else { + // jsonFirmatari = FirmeUtil.serialize(firmeBean); + // } + // + // if (!isSigned) { + // SessionErrors.add(actionRequest, + // "error.geniocivilefe.variazione-soggetto.add.file.non.firmato"); + // throw new + // SystemException("error.geniocivilefe.variazione-soggetto.add.file.non.firmato"); + // } + // + // } + // + // } catch (Exception e) { + // SessionErrors.add(actionRequest, + // "error.geniocivilefe.variazione-soggetto"); + // String redirectURL = ParamUtil.getString(actionRequest, "errorUrl"); + // redirectURL = + // HttpUtil.addParameter(redirectURL, actionResponse.getNamespace() + + // "isEditable", + // String.valueOf(true)); + // + // actionResponse.sendRedirect(redirectURL); + // return; + // } + // + // } + // + // String codiceFiscaleDelegato = ParamUtil.getString(actionRequest, + // "codiceFiscaleDelegato"); + // Date dataNascita = + // ParamUtil.getDate(actionRequest, "dataNascita", + // DateFormatFactoryUtil.getDate(actionRequest.getLocale())); + // String comuneNascita = ParamUtil.getString(actionRequest, + // "comuneNascita"); + // String comuneDomicilio = ParamUtil.getString(actionRequest, + // "comuneDomicilio"); + // String provinciaDomicilio = ParamUtil.getString(actionRequest, + // "provinciaDomicilio"); + // String viaDomicilio = ParamUtil.getString(actionRequest, "viaDomicilio"); + // String numeroCivicoDomicilio = ParamUtil.getString(actionRequest, + // "numeroCivicoDomicilio"); + // String capDomicilio = ParamUtil.getString(actionRequest, "capDomicilio"); + // String domicilioExtra = ParamUtil.getString(actionRequest, + // "domicilioExtra"); + // String comune = ParamUtil.getString(actionRequest, "comune"); + // String provincia = ParamUtil.getString(actionRequest, "provincia"); + // String via = ParamUtil.getString(actionRequest, "via"); + // String numeroCivico = ParamUtil.getString(actionRequest, "numeroCivico"); + // String cap = ParamUtil.getString(actionRequest, "cap"); + // String denominazione = ParamUtil.getString(actionRequest, + // "denominazione"); + // String sedeLegale = ParamUtil.getString(actionRequest, "sedeLegale"); + // String legaleRap = ParamUtil.getString(actionRequest, "legaleRap"); + // Date dataNascitaRap = + // ParamUtil.getDate(actionRequest, "dataNascitaRap", + // DateFormatFactoryUtil.getDate(actionRequest.getLocale())); + // String comuneNascitaRap = ParamUtil.getString(actionRequest, + // "comuneNascitaRap"); + // String viaRap = ParamUtil.getString(actionRequest, "viaRap"); + // String numeroCivicoRap = ParamUtil.getString(actionRequest, + // "numeroCivicoRap"); + // String capRap = ParamUtil.getString(actionRequest, "capRap"); + // String provinciaRap = ParamUtil.getString(actionRequest, "provinciaRap"); + // String comuneRap = ParamUtil.getString(actionRequest, "comuneRap"); + // String albo = ParamUtil.getString(actionRequest, "albo"); + // String regAlbo = ParamUtil.getString(actionRequest, "regAlbo"); + // String provinciaAlbo = ParamUtil.getString(actionRequest, + // "provinciaAlbo"); + // String numIscrAlbo = ParamUtil.getString(actionRequest, "numIscrAlbo"); + // String telefono = ParamUtil.getString(actionRequest, "telefono"); + // String fax = ParamUtil.getString(actionRequest, "fax"); + // String email = ParamUtil.getString(actionRequest, "email"); + // boolean aggiuntivo = ParamUtil.getBoolean(actionRequest, "aggiuntivo"); + // boolean rimosso = ParamUtil.getBoolean(actionRequest, "rimosso"); + // String ambitoAttivita = ParamUtil.getString(actionRequest, + // "ambitoAttivita"); + // String ambitoProfessioneDitta = ParamUtil.getString(actionRequest, + // "ambitoProfessioneDitta"); + // String ambitoProfessioneAltro = ParamUtil.getString(actionRequest, + // "ambitoProfessioneAltro"); + // String ambitoProfessione = + // Validator.isNotNull(ambitoProfessioneDitta) ? ambitoProfessioneDitta : + // ambitoProfessioneAltro; + // long intPraticaIdRimozione = ParamUtil.getLong(actionRequest, + // "intPraticaIdRimozione"); + // long dettPraticaIdRimozione = ParamUtil.getLong(actionRequest, + // "dettPraticaIdRimozione"); + // // Date dtDataRimozione = + // // ParamUtil.getDate(actionRequest, "dtDataRimozione", + // // DateFormatFactoryUtil.getDate(actionRequest.getLocale()); + // + // ServiceContext serviceContext = + // ServiceContextFactory.getInstance(Soggetto.class.getName(), + // actionRequest); + // + // long userId = PortalUtil.getUserId(actionRequest); + // + // try { + // + // actionResponse.setRenderParameter("mvcPath", + // "html/soggettipratica/edit_soggetto.jsp"); + // if (soggettoId == 0) { + // if (isSigned) { + // SoggettoLocalServiceUtil.addSoggettoValidatedByFile(userId, + // dettPraticaId, intPraticaId, nome, + // cognome, + // codiceFiscale, codiceFiscaleDelegato, dataNascita, comuneNascita, + // comuneDomicilio, + // provinciaDomicilio, + // viaDomicilio, numeroCivicoDomicilio, capDomicilio, domicilioExtra, + // comune, provincia, via, + // numeroCivico, + // cap, denominazione, sedeLegale, legaleRap, dataNascitaRap, + // comuneNascitaRap, viaRap, + // numeroCivicoRap, + // capRap, provinciaRap, comuneRap, albo, regAlbo, provinciaAlbo, + // numIscrAlbo, telefono, fax, + // email, + // tipologiaSoggetto, aggiuntivo, rimosso, ambitoAttivita, + // ambitoProfessione, + // intPraticaIdRimozione, + // dettPraticaIdRimozione, null, 0L, content, sourceFileName, jsonFirmatari, + // serviceContext); + // } else { + // SoggettoLocalServiceUtil.addSoggetto(userId, dettPraticaId, intPraticaId, + // nome, cognome, + // codiceFiscale, + // codiceFiscaleDelegato, dataNascita, comuneNascita, comuneDomicilio, + // provinciaDomicilio, + // viaDomicilio, + // numeroCivicoDomicilio, capDomicilio, domicilioExtra, comune, provincia, + // via, numeroCivico, cap, + // denominazione, sedeLegale, legaleRap, dataNascitaRap, comuneNascitaRap, + // viaRap, + // numeroCivicoRap, capRap, + // provinciaRap, comuneRap, albo, regAlbo, provinciaAlbo, numIscrAlbo, + // telefono, fax, email, + // tipologiaSoggetto, aggiuntivo, rimosso, ambitoAttivita, + // ambitoProfessione, + // intPraticaIdRimozione, + // dettPraticaIdRimozione, null, 0L, serviceContext); + // } + // } else { + // if (isSigned) { + // SoggettoLocalServiceUtil.updateSoggettoValidatedByFile(userId, + // soggettoId, dettPraticaId, + // intPraticaId, nome, + // cognome, codiceFiscale, codiceFiscaleDelegato, dataNascita, + // comuneNascita, comuneDomicilio, + // provinciaDomicilio, viaDomicilio, numeroCivicoDomicilio, capDomicilio, + // domicilioExtra, comune, + // provincia, + // via, numeroCivico, cap, denominazione, sedeLegale, legaleRap, + // dataNascitaRap, comuneNascitaRap, + // viaRap, + // numeroCivicoRap, capRap, provinciaRap, comuneRap, albo, regAlbo, + // provinciaAlbo, numIscrAlbo, + // telefono, + // fax, email, tipologiaSoggetto, aggiuntivo, rimosso, ambitoAttivita, + // ambitoProfessione, + // intPraticaIdRimozione, dettPraticaIdRimozione, null, 0L, content, + // sourceFileName, + // jsonFirmatari, + // serviceContext); + // } else { + // SoggettoLocalServiceUtil.updateSoggetto(userId, soggettoId, + // dettPraticaId, intPraticaId, nome, + // cognome, + // codiceFiscale, codiceFiscaleDelegato, dataNascita, comuneNascita, + // comuneDomicilio, + // provinciaDomicilio, + // viaDomicilio, numeroCivicoDomicilio, capDomicilio, domicilioExtra, + // comune, provincia, via, + // numeroCivico, + // cap, denominazione, sedeLegale, legaleRap, dataNascitaRap, + // comuneNascitaRap, viaRap, + // numeroCivicoRap, + // capRap, provinciaRap, comuneRap, albo, regAlbo, provinciaAlbo, + // numIscrAlbo, telefono, fax, + // email, + // tipologiaSoggetto, aggiuntivo, rimosso, ambitoAttivita, + // ambitoProfessione, + // intPraticaIdRimozione, + // dettPraticaIdRimozione, null, 0L, serviceContext); + // } + // } + // PortalUtil.copyRequestParameters(actionRequest, actionResponse); + // } catch (PortalException e) { + // _log.error(e, e); + // + // throw e; + // } + // } + + public void updateSoggetto(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { + + boolean requiredDoc = ParamUtil.getBoolean(actionRequest, "requiredDoc"); + long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); + + long dettPraticaId = ParamUtil.getLong(actionRequest, "dettPraticaId"); + long intPraticaId = ParamUtil.getLong(actionRequest, "intPraticaId"); + String tipologiaSoggetto = ParamUtil.getString(actionRequest, "tipologiaSoggetto"); + String nome = ParamUtil.getString(actionRequest, "nome"); + String cognome = ParamUtil.getString(actionRequest, "cognome"); + String codiceFiscale = ParamUtil.getString(actionRequest, "codiceFiscale"); + if (Validator.isNotNull(ParamUtil.getString(actionRequest, "codiceFiscaleDitta"))) { + codiceFiscale = ParamUtil.getString(actionRequest, "codiceFiscaleDitta"); + } else { + codiceFiscale = ParamUtil.getString(actionRequest, "codiceFiscalePersone"); + } + + String codiceFiscaleDelegato = ParamUtil.getString(actionRequest, "codiceFiscaleDelegato"); + Date dataNascita = ParamUtil.getDate(actionRequest, "dataNascita", + DateFormatFactoryUtil.getDate(actionRequest.getLocale())); + String provinciaNascita = ParamUtil.getString(actionRequest, "provinciaNascita"); + String comuneNascita = ParamUtil.getString(actionRequest, "comuneNascita"); + String comuneDomicilio = ParamUtil.getString(actionRequest, "comuneDomicilio"); + String comuneDomicilioEstero = ParamUtil.getString(actionRequest, "comuneDomicilioEstero"); + String provinciaDomicilio = ParamUtil.getString(actionRequest, "provinciaDomicilio"); + String viaDomicilio = ParamUtil.getString(actionRequest, "viaDomicilio"); + String numeroCivicoDomicilio = ParamUtil.getString(actionRequest, "numeroCivicoDomicilio"); + String capDomicilio = ParamUtil.getString(actionRequest, "capDomicilio"); + String domicilioExtra = ParamUtil.getString(actionRequest, "domicilioExtra"); + String comune = ParamUtil.getString(actionRequest, "comune"); + String comuneEstero = ParamUtil.getString(actionRequest, "comuneEstero"); + String provincia = ParamUtil.getString(actionRequest, "provincia"); + String via = ParamUtil.getString(actionRequest, "via"); + String numeroCivico = ParamUtil.getString(actionRequest, "numeroCivico"); + String cap = ParamUtil.getString(actionRequest, "cap"); + String denominazione = ParamUtil.getString(actionRequest, "denominazione"); + String sedeLegale = ParamUtil.getString(actionRequest, "sedeLegale"); + String legaleRap = ParamUtil.getString(actionRequest, "legaleRap"); + Date dataNascitaRap = ParamUtil.getDate(actionRequest, "dataNascitaRap", + DateFormatFactoryUtil.getDate(actionRequest.getLocale())); + String provinciaNascitaRap = ParamUtil.getString(actionRequest, "provinciaNascitaRap"); + String comuneNascitaRap = ParamUtil.getString(actionRequest, "comuneNascitaRap"); + String viaRap = ParamUtil.getString(actionRequest, "viaRap"); + String numeroCivicoRap = ParamUtil.getString(actionRequest, "numeroCivicoRap"); + String capRap = ParamUtil.getString(actionRequest, "capRap"); + String provinciaRap = ParamUtil.getString(actionRequest, "provinciaRap"); + String comuneRap = ParamUtil.getString(actionRequest, "comuneRap"); + String comuneRapEstero = ParamUtil.getString(actionRequest, "comuneRapEstero"); + String albo = ParamUtil.getString(actionRequest, "albo"); + String alboDescr = ParamUtil.getString(actionRequest, "alboDescr"); + String regAlbo = ParamUtil.getString(actionRequest, "regAlbo"); + String provinciaAlbo = ParamUtil.getString(actionRequest, "provinciaAlbo"); + String numIscrAlbo = ParamUtil.getString(actionRequest, "numIscrAlbo"); + String fax = ParamUtil.getString(actionRequest, "fax"); + + String telefonoResidenza = ParamUtil.getString(actionRequest, "telefonoResidenza"); + String telefono = Validator.isNotNull(telefonoResidenza) ? telefonoResidenza : ParamUtil.getString( + actionRequest, "telefonoGiuridico"); + + String emailResidenza = ParamUtil.getString(actionRequest, "emailResidenza"); + String email = Validator.isNotNull(emailResidenza) ? emailResidenza : ParamUtil.getString( + actionRequest, "emailGiuridica"); + + boolean aggiuntivo = ParamUtil.getBoolean(actionRequest, "aggiuntivo"); + boolean rimosso = ParamUtil.getBoolean(actionRequest, "rimosso"); + String ambitoAttivita = ParamUtil.getString(actionRequest, "ambitoAttivita"); + String ambitoProfessioneDitta = ParamUtil.getString(actionRequest, "ambitoProfessioneDitta"); + String ambitoProfessioneAltro = ParamUtil.getString(actionRequest, "ambitoProfessioneAltro"); + String ambitoProfessione = Validator.isNotNull(ambitoProfessioneDitta) ? ambitoProfessioneDitta + : ambitoProfessioneAltro; + long intPraticaIdRimozione = ParamUtil.getLong(actionRequest, "intPraticaIdRimozione"); + long dettPraticaIdRimozione = ParamUtil.getLong(actionRequest, "dettPraticaIdRimozione"); + // Date dtDataRimozione = + // ParamUtil.getDate(actionRequest, "dtDataRimozione", + // DateFormatFactoryUtil.getDate(actionRequest.getLocale()); + long soggettoSostituitoId = ParamUtil.getLong(actionRequest, "soggettoSostituitoId"); + + ServiceContext serviceContext = ServiceContextFactory.getInstance(Soggetto.class.getName(), + actionRequest); + + long userId = PortalUtil.getUserId(actionRequest); + + try { + actionResponse.setRenderParameter("mvcPath", "html/soggettipratica/edit_soggetto.jsp"); + + boolean tmp = false; + if (requiredDoc) { + tmp = true; + } + Soggetto soggetto = null; + if (soggettoId == 0) { + soggetto = SoggettoServiceUtil.addSoggetto(userId, dettPraticaId, intPraticaId, nome, + cognome, codiceFiscale, codiceFiscaleDelegato, dataNascita, provinciaNascita, + comuneNascita, comuneDomicilio, comuneDomicilioEstero, provinciaDomicilio, + viaDomicilio, numeroCivicoDomicilio, capDomicilio, domicilioExtra, comune, + comuneEstero, provincia, via, numeroCivico, cap, denominazione, sedeLegale, + legaleRap, dataNascitaRap, provinciaNascitaRap, comuneNascitaRap, viaRap, + numeroCivicoRap, capRap, provinciaRap, comuneRap, comuneEstero, albo, alboDescr, + regAlbo, provinciaAlbo, numIscrAlbo, telefono, fax, email, tipologiaSoggetto, + aggiuntivo, rimosso, ambitoAttivita, ambitoProfessione, intPraticaIdRimozione, + dettPraticaIdRimozione, null, soggettoSostituitoId, 0L, tmp, serviceContext); + } else { + soggetto = SoggettoServiceUtil.updateSoggetto(userId, soggettoId, dettPraticaId, + intPraticaId, nome, cognome, codiceFiscale, codiceFiscaleDelegato, dataNascita, + provinciaNascita, comuneNascita, comuneDomicilio, comuneDomicilioEstero, + provinciaDomicilio, viaDomicilio, numeroCivicoDomicilio, capDomicilio, + domicilioExtra, comune, comuneEstero, provincia, via, numeroCivico, cap, + denominazione, sedeLegale, legaleRap, dataNascitaRap, provinciaNascitaRap, + comuneNascitaRap, viaRap, numeroCivicoRap, capRap, provinciaRap, comuneRap, + comuneEstero, albo, alboDescr, regAlbo, provinciaAlbo, numIscrAlbo, telefono, fax, + email, tipologiaSoggetto, aggiuntivo, rimosso, ambitoAttivita, ambitoProfessione, + intPraticaIdRimozione, dettPraticaIdRimozione, null, soggettoSostituitoId, 0L, tmp, + serviceContext); + } + PortalUtil.copyRequestParameters(actionRequest, actionResponse); + actionResponse.setRenderParameter("soggettoId", String.valueOf(soggetto.getSoggettoId())); + actionResponse.setRenderParameter("closePopup", String.valueOf(true)); + } catch (PortalException e) { + _log.error(e, e); + + throw e; + } + } + + public void updateAllegatoSoggetto(ActionRequest actionRequest, ActionResponse actionResponse) + throws Exception { + + long soggettoId = ParamUtil.getLong(actionRequest, "soggettoId"); + Soggetto soggetto = SoggettoLocalServiceUtil.getSoggetto(soggettoId); + + long dettPraticaId = ParamUtil.getLong(actionRequest, "dettPraticaId"); + DettPratica dettPratica = DettPraticaLocalServiceUtil.getDettPratica(dettPraticaId); + long intPraticaId = dettPratica.getIntPraticaId(); + ServiceContext serviceContext = ServiceContextFactory.getInstance(Soggetto.class.getName(), + actionRequest); + + String sourceFileName = StringPool.BLANK; + byte[] content = null; + String jsonFirmatari = ""; + boolean isSigned = false; + + boolean applicaFirma = ParamUtil.getBoolean(actionRequest, "applicaFirma"); + try { + FirmeBean firmeBean = new FirmeBean(); + + if (Validator.isNotNull(soggetto.getFileVariazioneId())) { + DocPratica fileAllegato = DocPraticaLocalServiceUtil.getDocPratica(soggetto + .getFileVariazioneId()); + sourceFileName = fileAllegato.getFileName(); + FileEntry attachment = DocPraticaLocalServiceUtil.getAttachment(soggetto + .getFileVariazioneId()); + // content = IOUtils.toByteArray(attachment.getContentStream()); + content = FileUtil.getBytes(attachment.getContentStream()); + + firmeBean = FirmeUtil.deserialize(fileAllegato.getJsonFirmatari()); + } + + UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest); + sourceFileName = uploadRequest.getFileName("docFile"); + File file = uploadRequest.getFile("docFile"); + + User user = UserLocalServiceUtil.getUser(serviceContext.getUserId()); + if (applicaFirma && !firmeBean.allSignatures().contains(user.getScreenName())) { + jsonFirmatari = FirmeUtil.addFirma(firmeBean, user.getScreenName()); + } else { + jsonFirmatari = FirmeUtil.serialize(firmeBean); + } + + if (file.exists()) { + + if (Validator.isNotNull(sourceFileName) && file != null) { + // validazione: solo alcune estensioni + String ext = FileUtil.getExtension(sourceFileName); + if (!ext.equalsIgnoreCase("p7m") && !ext.equalsIgnoreCase("pdf")) { + SessionErrors.add(actionRequest, + "error.geniocivilefe.variazione-soggetto.allegato.ext.valid"); + } + // lunghezza fissata a 200 + if (sourceFileName.length() > 200) { + SessionErrors.add(actionRequest, + "error.geniocivilefe.variazione-soggetto.allegato.length.valid"); + } + } else if (!TipoSoggettoUtil.COMMITTENTE.equalsIgnoreCase(soggetto.getTipologiaSoggetto())) { + SessionErrors.add(actionRequest, + "error.geniocivilefe.variazione-soggetto.allegato.is.request"); + } + + if (!SessionErrors.isEmpty(actionRequest)) { + throw new SystemException("error.geniocivilefe.variazione-soggetto.allegato"); + } else if (file != null) { + content = FileUtil.getBytes(file); + } + + } + + // Per poter completare l'aggiunta di un soggetto è necessario + // allegare file firmato dal + // nuovo soggetto e almeno uno dei soggetti già inseriti nella + // pratica. + // SOLO nel caso in cui il soggetto che viene inserito è di tipo + // COMMITTENTE, la sua firma + // sul file allegato NON è OBBLIGATORIA; inoltre la firma + // OBBLIGATORIA che deve essere + // presente sul file allegato è SOLO quella del TITOLARE DIGITALE + // DELLA PRATICA. + if (TipoSoggettoUtil.COMMITTENTE.equals(soggetto.getTipologiaSoggetto())) { + String[] titolare = new String[] { dettPratica.getCodiceFiscaleDelegatoCommittente() }; + isSigned = ValidazionePraticaUtil.isAllegatoSignedBySubjects(sourceFileName, content, + serviceContext.getCompanyId(), Arrays.asList(titolare), jsonFirmatari); + } else { + List soggettiValidi = SoggettoServiceUtil.getValidTmpByIntPratica(intPraticaId); + List codiciFiscaliValidi = new ArrayList(); + for (Soggetto valido : soggettiValidi) { + if (!codiciFiscaliValidi.contains(valido.getCodiceFiscale()) + && !valido.getCodiceFiscale().equalsIgnoreCase(soggetto.getCodiceFiscale())) { + codiciFiscaliValidi.add(valido.getCodiceFiscale()); + } + } + isSigned = ValidazionePraticaUtil.isAllegatoSignedBySubjectsAndPerson(sourceFileName, + content, serviceContext.getCompanyId(), codiciFiscaliValidi, + soggetto.getCodiceFiscale(), jsonFirmatari); + } + + if (!isSigned) { + if (TipoSoggettoUtil.COMMITTENTE.equals(soggetto.getTipologiaSoggetto())) { + SessionErrors.add(actionRequest, + "error.geniocivilefe.variazione-soggetto.add.file.non.firmato.committente"); + throw new SystemException( + "error.geniocivilefe.variazione-soggetto.add.file.non.firmato.committente"); + } else { + SessionErrors.add(actionRequest, + "error.geniocivilefe.variazione-soggetto.add.file.non.firmato"); + throw new SystemException("error.geniocivilefe.variazione-soggetto.add.file.non.firmato"); + } + } + + } catch (Exception e) { + SessionErrors.add(actionRequest, "error.geniocivilefe.variazione-soggetto"); + String redirectURL = ParamUtil.getString(actionRequest, "errorUrl"); + actionResponse.sendRedirect(redirectURL); + return; + } + + long userId = PortalUtil.getUserId(actionRequest); + + try { + SoggettoServiceUtil.allegaFileModifica(soggettoId, userId, intPraticaId, content, sourceFileName, + jsonFirmatari, serviceContext); + + String successUrl = ParamUtil.getString(actionRequest, "successUrl"); + successUrl = HttpUtil.addParameter(successUrl, actionResponse.getNamespace() + "closePopup", + String.valueOf(applicaFirma)); + + actionResponse.sendRedirect(successUrl); + + } catch (PortalException e) { + _log.error(e, e); + throw e; + } + } + + @Override + public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) + throws IOException, PortletException { + + String id = resourceRequest.getResourceID(); + try { + ServiceContext serviceContext = ServiceContextFactory.getInstance(resourceRequest); + if ("compilaSoggetti".equals(id)) { + long userId = ParamUtil.getLong(resourceRequest, "userId", 0l); + String codiceFiscale = ParamUtil.getString(resourceRequest, "codiceFiscale"); + String tipologiaSoggetto = ParamUtil.getString(resourceRequest, "tipologiaSoggetto"); + JSONArray jsonSoggetti = JSONFactoryUtil.createJSONArray(); + if (Validator.isNotNull(userId) && Validator.isNotNull(codiceFiscale) + && Validator.isNotNull(tipologiaSoggetto)) { + OrderByComparator orderByComparator = OrderByComparatorFactoryUtil.create( + "portos_bo_soggetto", "createDate", false); + List soggetti = SoggettoLocalServiceUtil + .findByUserId_CodiceFiscale_TipologiaSoggetto(userId, codiceFiscale, + tipologiaSoggetto, QueryUtil.ALL_POS, QueryUtil.ALL_POS, + orderByComparator); + if (soggetti.isEmpty()) { + soggetti = SoggettoLocalServiceUtil.findByUserId_CodiceFiscale(userId, codiceFiscale, + QueryUtil.ALL_POS, QueryUtil.ALL_POS, orderByComparator); + } + for (Soggetto soggetto : soggetti) { + JSONSerializer jsonSerializer = JSONFactoryUtil.createJSONSerializer(); + jsonSerializer.exclude("class"); + String serialized = jsonSerializer.serialize(SoggettoSoap.toSoapModel(soggetto)); + jsonSoggetti.put(serialized); + } + } + writeJSON(resourceRequest, resourceResponse, jsonSoggetti); + + } else if ("province".equals(id)) { + + JSONArray jsonArray = JSONFactoryUtil.createJSONArray(); + List province = ProvinciaLocalServiceUtil.findAll(QueryUtil.ALL_POS, + QueryUtil.ALL_POS, + OrderByComparatorFactoryUtil.create("portos_bo_Provincia", "provincia", true)); + for (Provincia provincia : province) { + JSONObject jsonObject = JSONFactoryUtil.createJSONObject(); + jsonObject.put("provinciaId", provincia.getCodiceProvincia()); + jsonObject.put("descLong", provincia.getSigla() + "- " + provincia.getProvincia()); + + jsonArray.put(jsonObject); + } + writeJSON(resourceRequest, resourceResponse, jsonArray); + + } else if ("comuni".equals(id)) { + String codiceProvincia = ParamUtil.getString(resourceRequest, "provinciaId"); + JSONArray jsonArray = JSONFactoryUtil.createJSONArray(); + if (Validator.isNotNull(codiceProvincia) && Validator.isNotNull(codiceProvincia)) { + List comuni = ComuneLocalServiceUtil.findByCompanyIdCodiceProvincia( + serviceContext.getCompanyId(), codiceProvincia, QueryUtil.ALL_POS, + QueryUtil.ALL_POS, + OrderByComparatorFactoryUtil.create("portos_bo_Comune", "denominazione", true)); + for (Comune comune : comuni) { + JSONObject jsonObject = JSONFactoryUtil.createJSONObject(); + + jsonObject.put("comuneId", comune.getComuneId()); + jsonObject.put("descLong", comune.getDenominazione()); + + jsonArray.put(jsonObject); + } + } + writeJSON(resourceRequest, resourceResponse, jsonArray); + } else { + super.serveResource(resourceRequest, resourceResponse); + } + } catch (Exception e) { + _log.error(e, e); + throw new IOException(e); + } + } }