public Documento FillDocument(int? idModello, Appalto appalto, int idAzienda) { Documento result = null; if (idModello > 0 || appalto.TipoContratto > 0) { _appalto = appalto; if (idModello == null) { var modello = _daoFactory.GetTipoContrattoDao().GetById(appalto.TipoContratto, false).ModelloLettera; if (modello != null) idModello = modello.ID; } if (idModello != null) { var rtf = Conversione.ToString(_modelloLetteraservice.GetLettera(idModello.Value).Body); var azienda = _daoFactory.GetAziendaDao().GetById(idAzienda, false); var merge = new MergeDocument(rtf, false); merge.Execute("nomeStudio", azienda.Descrizione); if (azienda.Amministratore != null) merge.Execute("amministratore", string.Format("{0} {1}", azienda.Amministratore.PersonaRiferimento.Nome, azienda.Amministratore.PersonaRiferimento.Cognome)); if (azienda.IndirizzoSede != null) { merge.Execute("indirizzoStudio", azienda.IndirizzoSede.Indirizzo); if (azienda.IndirizzoSede.Comune != null) merge.Execute("comuneStudio", azienda.IndirizzoSede.Comune.Descrizione); } merge.Execute("descrizioneAllegato1", appalto.DescrizioneStabile); if (DateTimeFormatInfo.CurrentInfo != null) merge.Execute("meseAnno", DateTimeFormatInfo.CurrentInfo.GetMonthName(appalto.DataAppalto.GetValueOrDefault().Month) + " " + appalto.DataAppalto.GetValueOrDefault().Year); merge.Execute("intestazioneCondominio", appalto.Intestazione); merge.Execute("dataInizioLavori", appalto.DataInizioLavori.GetValueOrDefault().ToShortDateString()); merge.Execute("descrizioneCompletaCondominio", appalto.DescrizioneStabile); merge.Execute("descrizioneAppaltatore", appalto.Appaltatore); merge.Execute("indirizzoAppaltatore", appalto.IndirizzoAppaltatore); merge.Execute("comuneAppaltatore", appalto.ComuneAppaltatore); merge.Execute("partitaIvaAppaltatore", appalto.PartitaIvaAppaltatore); merge.Execute("codiceFiscaleAppaltatore", appalto.CodiceFiscaleAppaltatore); merge.Execute("registroImprese", appalto.RegistroImprese); merge.Execute("inailPat", appalto.InailPat); merge.Execute("inailIdentificativo", appalto.InailIdentificativo); merge.Execute("descrizionePolizza", appalto.CompagniaAssicurativa + " - " + appalto.AgenziaAssicurativa); merge.Execute("compagniaAssicurativa", appalto.CompagniaAssicurativa + " - " + appalto.AgenziaAssicurativa); merge.Execute("numeroPolizza", appalto.NumeroPolizza); merge.Execute("importoAppaltoCifre", appalto.ImportoAppalto.GetValueOrDefault().ToString("c")); merge.Execute("importoAppaltoLettere", CifreLettere.CalcolaLettere(appalto.ImportoAppalto.GetValueOrDefault())); merge.Execute("descrizioneImporto", appalto.DescrizioneImportoAppalto); merge.Execute("impPenCifre", appalto.ImportoPenalitaAppalto.GetValueOrDefault().ToString("c")); merge.Execute("impPenLettere", CifreLettere.CalcolaLettere(appalto.ImportoPenalitaAppalto.GetValueOrDefault())); merge.Execute("giorniFineLavoriCifre", appalto.GiorniFineLavori.GetValueOrDefault().ToString("#,##0")); merge.Execute("giorniFineLavoriLettere", CifreLettere.CalcolaLettere(Convert.ToDecimal(appalto.GiorniFineLavori.GetValueOrDefault()))); merge.Execute("pagamento", appalto.ModalitaPagamento); merge.Execute("descrizioneLavori", appalto.DescrizioneLavori); var descrizioneAllegato = string.Empty; if (appalto.Allegati != null && appalto.Allegati.Length > 0) descrizioneAllegato = appalto.Allegati.Aggregate(descrizioneAllegato, (current, t) => current + (t + Environment.NewLine)); merge.Execute("descrizioneAllegato", descrizioneAllegato); merge.Execute("oggettoAppalto", appalto.OggettoAppalto); try { // TODO: Da rivedere per evitare di scrivere il file temporaneo var filePath = Path.GetTempPath() + "Appalto_" + _appalto.TipoContratto + ".rtf"; try { var bytes = merge.GetRtf(); var documentoMessage = _saveAppalto.Save(appalto, bytes, "Appalto_" + appalto.TipoContratto + ".rtf"); if (documentoMessage.Documento != null) { result = documentoMessage.Documento; } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato nel metodo: {0} - filePath.{1} - modello:{2}", ex, Utility.GetMethodDescription(), filePath, idModello.GetValueOrDefault()); } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato nel metodo: {0} - modello:{1}", ex, Utility.GetMethodDescription(), idModello.GetValueOrDefault()); } } else { throw new InvalidDataException("Per il tipo di contratto selezionato non è definito nessun modello di appalto"); } } return result; }