string costruisciNuovoOggetto(SchedaDocumento sd, SUAPPratica.RiepilogoPraticaSUAP riepilogoPratica ) { try { if (riepilogoPratica == null) return null; if (riepilogoPratica.struttura == null) return null; List<string> nomiProcList = new List<string>(); List<string> mailentiList = new List<string>(); string procedimentoCompleto = string.Empty; string procedimento = ""; foreach (SUAPPratica.AdempimentoSUAP struttura in riepilogoPratica.struttura) { procedimentoCompleto = struttura.nome; string[] nomiProcedimento = procedimentoCompleto.Replace("++", "§").Split('§'); foreach (string np in nomiProcedimento) nomiProcList.Add(np.Trim()); foreach (SUAPPratica.EstremiEnte EnteConinvoto in struttura.entecoinvolto) mailentiList.Add(EnteConinvoto.pec); } string mailDest = getMailDestinatarioPredisposto(sd); if (!String.IsNullOrEmpty(mailDest)) { bool found = false; if (nomiProcList.Count == mailentiList.Count) { int counter = 0; foreach (string email in mailentiList) { if (email.ToUpper().Trim() == mailDest.ToUpper().Trim()) { found = true; break; } counter++; } if (nomiProcList.Count > counter) { if (found) procedimento = nomiProcList[counter]; } if (found == false) procedimento = procedimentoCompleto; } else { procedimento = procedimentoCompleto; } } else { procedimento = procedimentoCompleto; } string impresa = ""; string ImpiantoProduttivo = ""; if (riepilogoPratica.intestazione != null) { if (riepilogoPratica.intestazione.impresa != null) if (!String.IsNullOrEmpty(riepilogoPratica.intestazione.impresa.ragionesociale)) impresa = riepilogoPratica.intestazione.impresa.ragionesociale; ImpiantoProduttivo = ComponiIndirizzo(riepilogoPratica.intestazione.impiantoproduttivo.indirizzo); } String retval = String.Format("{0} | {1} | {2}", procedimento, impresa, ImpiantoProduttivo); return retval; } catch (Exception e) { logger.DebugFormat("Errore creando oggetto per docnumber {0} err {1} stk {2}", sd.docNumber, e.Message, e.StackTrace); } return null; }
public bool ImportSuapEnteXMLIntoTemplate(InfoUtente infoUtente, Ruolo ruoloUtente, SchedaDocumento schedaDoc, byte[] xmlcontent) { string xml = System.Text.UTF8Encoding.UTF8.GetString(xmlcontent); string xsdFile = AppDomain.CurrentDomain.BaseDirectory + "XML/pratica_suap-1.0.1.xsd"; if (File.Exists(xsdFile)) { BusinessLogic.report.ProtoASL.ReportXML.XmlValidator xmlV = new report.ProtoASL.ReportXML.XmlValidator (); bool esito = xmlV.ValidateXmlString (xml,xsdFile,null); if (!esito) { logger.DebugFormat("Validazione *.SUAP.XML fallita: {0}", xmlV.ValidationErrors); return false; } } String[] TipologiaSUAPENTE = new String[] { "Procedimento", // 0 "Tipo procedimento", // 1 "Tipo intervento", // 2 "Codice pratica", // 3 "Impresa", // 4 "Codice REA", // 5 "Legale Rappresentante", // 6 "Dichiarante", // 7 "Domicilio elettronico", // 8 "Impianto produttivo", // 9 "Procura speciale", //10 "Allegati"}; //11 //Reperire una tipologia di tipo "SUAP" DocsPaVO.ProfilazioneDinamica.Templates templatesuap = BusinessLogic.ProfilazioneDinamica.ProfilazioneDocumenti.getTemplateByDescrizione(_nomeTemplate, infoUtente.idAmministrazione); // se esiste il valore ID_TIPO_ATTO allora è censita e esiste if (String.IsNullOrEmpty(templatesuap.ID_TIPO_ATTO)) return false; string nuovoOggetto =null; try { SUAPPratica.RiepilogoPraticaSUAP riep = SUAPPratica.RiepilogoPraticaSUAP.Deserialize(xml); string procedimento = ComponiProcedimento(riep.struttura); string tipoProcedimento = riep.intestazione.oggettocomunicazione.tipoprocedimento.ToString(); string tipoIntervento = riep.intestazione.oggettocomunicazione.tipointervento.ToString(); string codicePratica = riep.intestazione.codicepratica; string impresa = ComponiImpresa(riep.intestazione.impresa); string codiceREA = riep.intestazione.impresa.codiceREA.Value; string legaleRapp = ComponiLegaleRapp(riep.intestazione.impresa.legalerappresentante); string Dichiarante = ComponiDichiarante(riep.intestazione.dichiarante); string domicilioElettronico = riep.intestazione.domicilioelettronico; string ImpiantoProduttivo = ComponiIndirizzo(riep.intestazione.impiantoproduttivo.indirizzo); string procuraSpeciale = riep.intestazione.procuraspeciale.nomefile; string allegati = ComponiAllegati(riep.struttura); popolaValoreTipologiaGenerico(templatesuap, TipologiaSUAPENTE[0], procedimento); popolaValoreTipologiaGenerico(templatesuap, TipologiaSUAPENTE[1], tipoProcedimento); popolaValoreTipologiaGenerico(templatesuap, TipologiaSUAPENTE[2], tipoIntervento); popolaValoreTipologiaGenerico(templatesuap, TipologiaSUAPENTE[3], codicePratica ); popolaValoreTipologiaGenerico(templatesuap, TipologiaSUAPENTE[4], impresa ); popolaValoreTipologiaGenerico(templatesuap, TipologiaSUAPENTE[5], codiceREA); popolaValoreTipologiaGenerico(templatesuap, TipologiaSUAPENTE[6], legaleRapp); popolaValoreTipologiaGenerico(templatesuap, TipologiaSUAPENTE[7], Dichiarante); popolaValoreTipologiaGenerico(templatesuap, TipologiaSUAPENTE[8], domicilioElettronico); popolaValoreTipologiaGenerico(templatesuap, TipologiaSUAPENTE[9], ImpiantoProduttivo); popolaValoreTipologiaGenerico(templatesuap, TipologiaSUAPENTE[10], procuraSpeciale); popolaValoreTipologiaGenerico(templatesuap, TipologiaSUAPENTE[11], allegati); nuovoOggetto = costruisciNuovoOggetto(schedaDoc, riep); } catch (Exception e) { logger.ErrorFormat("Errore facendo il parsing di: *.suap.xml {0} {1}", e.Message, e.StackTrace); return false; } //Associare il template alla scheda documento schedaDoc.template = templatesuap; schedaDoc.tipologiaAtto = new TipologiaAtto { descrizione = templatesuap.DESCRIZIONE, systemId = templatesuap.ID_TIPO_ATTO }; schedaDoc.daAggiornareTipoAtto = true; if (!String.IsNullOrEmpty(nuovoOggetto)) { schedaDoc.oggetto.descrizione = nuovoOggetto; schedaDoc.oggetto.daAggiornare = true; } //Salvare il documento bool daAggiornareUffRef; SchedaDocumento retval = BusinessLogic.Documenti.DocSave.save(infoUtente, schedaDoc, false, out daAggiornareUffRef, ruoloUtente); //non ha salvato if (retval == null) return false; //Tornare True o false a seconda dell'Esito return true; }