public DocumentInfo GetDocumentoById(int id) { try { var documentInfo = new DocumentInfo(); var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); var item = daoFactory.GetPagamentoDao().Find(id, false); if (item != null) { if (!string.IsNullOrEmpty(item.Documento)) { documentInfo.BodyText = item.Documento; documentInfo.FileExtension = ".rtf"; documentInfo.FileName = ContabilitaHelper.GetFileName("Bonifico", item.ScadenzaRiferimento.SpesaRiferimento.EsercizioRiferimento.CondominioRiferimento) + documentInfo.FileExtension; } else if(item.DisposizioneRiferimento != null) { if (!string.IsNullOrEmpty(item.DisposizioneRiferimento.ContenutoFile)) { documentInfo.BodyText = item.DisposizioneRiferimento.ContenutoFile; documentInfo.FileExtension = ".txt"; documentInfo.FileName = ContabilitaHelper.GetFileName("Disposizione CBI", null); } else if (item.DisposizioneRiferimento.Documento != null) { var documentoRepository = new DocumentoRepository(_info, _windsorRepository); documentInfo = documentoRepository.GetDocumentInfo(item.DisposizioneRiferimento.Documento, TipoDocumentoArchiviazione.Contratto); documentInfo.FileExtension = ".zip"; documentInfo.FileName = ContabilitaHelper.GetFileName("Disposizione CBI", null); } } } return documentInfo; } catch (Exception ex) { _log.ErrorFormat("Errore nel caricamento dei pagamenti delle Fatture/Spese - {0} - id:{1}", ex, Library.Utility.GetMethodDescription(), id); throw; } }
public ResultDocumentoDTO FillDocumentAppalto(int? idModello, Appalto appalto, UserInfo userinfo) { var windsorRep = new WindsorConfigRepository(); try { windsorRep.BeginTransaction(userinfo); var service = windsorRep.GetContainer(userinfo.Azienda).Resolve<IAppaltoService>(); var doc = service.FillDocument(idModello, appalto, userinfo.Azienda); var repoDoc = new DocumentoRepository(userinfo, windsorRep); var item = repoDoc.SetDto(doc); windsorRep.Commit(); return new ResultDocumentoDTO(item, null, false, null, null, null); } catch (InvalidDataException ex) { return new ResultDocumentoDTO(null, ex.Message, false, null, null, null); } catch (Exception ex) { _log.ErrorFormat("Errore nel salvataggio del contratto di appalto - {0} - modello:{1} - intestazione:{2} - azienda:{3}", ex, Utility.GetMethodDescription(), idModello.GetValueOrDefault(), appalto.Intestazione, userinfo.Azienda); windsorRep.Rollback(); throw; } }
public IList<DocumentoDTO> GetDocumentiByFascicolo(int idFascicolo, UserInfo userinfo) { var windsorRep = new WindsorConfigRepository(); try { windsorRep.BeginTransaction(userinfo); var repo = new DocumentoRepository(userinfo, windsorRep); var item = repo.GetDocumentiByFascicolo(idFascicolo); windsorRep.Commit(); return item; } catch (Exception ex) { _log.Error("Errore nel caricamento dei documenti: " + Utility.GetMethodDescription(), ex); windsorRep.Rollback(); throw; } }
public IList<DocumentoDTO> GetDocumentiPubbliciByFascicolo(int idFascicolo, UserInfo userinfo) { var windsorRep = new WindsorConfigRepository(); try { windsorRep.BeginTransaction(userinfo); var repo = new DocumentoRepository(userinfo, windsorRep); var item = repo.GetDocumentiPubbliciByFascicolo(idFascicolo); windsorRep.Commit(); return item; } catch (Exception ex) { _log.ErrorFormat("Errore nel caricamento dei fascicoli - {0} - fascicolo:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), idFascicolo, userinfo.Azienda); windsorRep.Rollback(); throw; } }
public bool DeleteDocumento(int idDocumento, UserInfo userinfo) { var retryCount = 10; var success = false; var windsorRep = new WindsorConfigRepository(); var item = false; while (retryCount >= 0 && !success) { try { windsorRep.BeginTransaction(userinfo); var repo = new DocumentoRepository(userinfo, windsorRep); item = repo.CancelDocumento(idDocumento); windsorRep.Commit(); success = true; } catch (Exception ex) { _log.ErrorFormat("Errore nella eliminazione del documento - TENTATIVO:{0} - {1} - idDocumento:{2} - azienda:{3} - number:{4}", ex, (11 - retryCount), Utility.GetMethodDescription(), idDocumento, userinfo.Azienda, getExceptionId(ex)); windsorRep.Rollback(); if (!isRetryException(ex)) throw; // Add delay here if you wish. System.Threading.Thread.Sleep(1000 * (11 - retryCount)); retryCount--; _log.InfoFormat("Eliminazione del documento - INIZIO TENTATIVO:{0} - {1} - idDocumento:{2} - azienda:{3}", (11 - retryCount), Utility.GetMethodDescription(), idDocumento, userinfo.Azienda); } } if (!success) windsorRep.Rollback(); return item; }
public RisultatoInvioMessaggioAllegati InvioMessaggioPersonalizzatoPersone(MotivoMessaggio motivoMessaggio, IList<PersonaMessaggioDTO> persone, string mittente, string emailRapportino, IList<int> documentiAllegati, IList<DocumentInfo> allegatiNuovi, TipoMessaggio tipo, int? idModello, ParametriStampaUnione parametri, ParametriInvioLettera parametriInvioLettera, bool aggiornaContatti, int? idCondominio, int azienda) { try { var result = new List<RisultatoInvioMessaggio>(); var messaggioInviato = new DocumentInfo(); if (persone.Count > 0) { IMessageService service = null; var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); Condominio condominio = null; if (idCondominio > 0) condominio = daoFactory.GetCondominioDao().Find(idCondominio.GetValueOrDefault(), false); switch (tipo) { case TipoMessaggio.Fax: service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.fax"); break; case TipoMessaggio.Email: service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.email"); break; case TipoMessaggio.Sms: service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.sms"); break; case TipoMessaggio.Lettera: service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.lettera"); break; case TipoMessaggio.Manuale: service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.manuale"); break; } // Recupero l'eventuale modello di lettera (solo per Fax, Email o Lettera tradizionale) ModelloLettera modello = null; if (idModello != null) modello = daoFactory.GetModelloLetteraDao().GetById(idModello.Value, false); var personaService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IPersonaService>(); var modelloLetteraService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IModelloLetteraService>(); // ========================================================================================= // Allegati // ========================================================================================= var allegatiMessaggio = new List<DocumentInfo>(); var documentoRepository = new DocumentoRepository(_info, _windsorRepository); foreach (var idDocumento in documentiAllegati) { var documento = daoFactory.GetDocumentoDao().Find(idDocumento, false); if (documento != null) { var tipoDocumento = TipoDocumentoArchiviazione.Contratto; if (documento.SpesaRiferimento != null) tipoDocumento = TipoDocumentoArchiviazione.FatturaPassiva; var docInfo = documentoRepository.GetDocumentInfo(idDocumento, tipoDocumento); // Se è un file word lo conveerto in PDF if (tipo != TipoMessaggio.Manuale && (docInfo.FileExtension == ".doc" || docInfo.FileExtension == ".docx")) { var doc = new Document(new MemoryStream(docInfo.Body)); var pdfStream = new MemoryStream(); doc.Save(pdfStream, SaveFormat.Pdf); docInfo.Body = pdfStream.ToArray(); docInfo.FileExtension = ".pdf"; } allegatiMessaggio.Add(docInfo); } } // ========================================================================================= // Allegati Nuovi // ========================================================================================= var allegatiNuoviAry = allegatiNuovi.ToArray(); for (var i = 0; i < allegatiNuoviAry.Length; i++) { var documentMessage = getDocumentService().SaveDocument(allegatiNuovi[i].Body, allegatiNuoviAry[i].FileName, allegatiNuoviAry[i].FileExtension, null, _info.Azienda); if (documentMessage.Documento != null) { var checksum = documentMessage.Documento.Checksum; allegatiNuoviAry[i].FileId = checksum; byte[] body = null; var fileExtension = string.Empty; var fileName = string.Empty; if (tipo != TipoMessaggio.Manuale && (allegatiNuoviAry[i].FileExtension == ".doc" || allegatiNuoviAry[i].FileExtension == ".docx" || allegatiNuoviAry[i].FileExtension == ".rtf")) { try { var doc = new Document(new MemoryStream(allegatiNuovi[i].Body)); var pdfStream = new MemoryStream(); doc.Save(pdfStream, SaveFormat.Pdf); body = pdfStream.ToArray(); fileExtension = ".pdf"; fileName = allegatiNuoviAry[i].FileName; } catch (Exception ex) { _log.WarnFormat("Errore nella conversione del file in pdf - {0} - fileName:{1} - fileExtension:{2} - fileId:{3}", ex, Utility.GetMethodDescription(), allegatiNuoviAry[i].FileName, allegatiNuoviAry[i].FileExtension, allegatiNuoviAry[i].FileId); } } // Se la conversione non è stata eseguita o è fallita prendo il file originale if (body == null) { body = allegatiNuovi[i].Body; fileExtension = allegatiNuovi[i].FileExtension; fileName = allegatiNuovi[i].FileName; } var index = fileName.LastIndexOf("."); if (index > -1) fileName = fileName.Substring(0, index); var documento = new DocumentInfo { Body = body, FileId = checksum, FileName = fileName, FileExtension = fileExtension }; allegatiMessaggio.Insert(0, documento); } } // ========================================================================================= // Per ogni persona invio il messaggio // ========================================================================================= foreach (var personaMessaggio in persone) { var allegatiInvio = allegatiMessaggio.ToList(); var persona = daoFactory.GetPersonaDao().Find(personaMessaggio.ID, false); if (persona != null) { parametri.IdPersonaAttiva = persona.ID; parametri.Importo = personaMessaggio.Importo; if(idCondominio != null) parametri.IdCondominio = idCondominio.Value; var contattiCollection = new ContattoCollection(persona.Contatti); var contattoFax = contattiCollection.GetFirstContatto<Fax>(); if (contattoFax != null) parametri.FaxDestinatario = contattoFax.Valore; var messaggioPrincipale = personaMessaggio.TestoMessaggio; parametri.Body = messaggioPrincipale; switch (tipo) { case TipoMessaggio.Fax: case TipoMessaggio.Lettera: case TipoMessaggio.Email: case TipoMessaggio.Manuale: // ---------------------------------------------------------------- // Modello RTF stampa unione // ---------------------------------------------------------------- if(modello != null) { var documentoStampaUnione = modelloLetteraService.GetLetteraCompilata(idModello.GetValueOrDefault(), parametri); // Salvo il documento nel file system var documentMessage = getDocumentService().SaveDocument(documentoStampaUnione.Body, documentoStampaUnione.FileName + documentoStampaUnione.FileExtension, documentoStampaUnione.FileExtension, null, _info.Azienda); if (documentMessage.Documento != null) { var checksumModello = documentMessage.Documento.Checksum; documentoStampaUnione.FileId = checksumModello; allegatiInvio.Insert(0, documentoStampaUnione); } } // ---------------------------------------------------------------- // Documento principale (es. lettera di sollecito, subentro ecc...) // ---------------------------------------------------------------- if (personaMessaggio.DocumentoMessaggio != null) { // Salvo il documento nel file system var documentMessage = getDocumentService().SaveDocument(personaMessaggio.DocumentoMessaggio, personaMessaggio.NomeMessaggio + ".pdf", ".pdf", null, _info.Azienda); if (documentMessage.Documento != null) { var checksumFax = documentMessage.Documento.Checksum; allegatiInvio.Insert(0, new DocumentInfo(personaMessaggio.DocumentoMessaggio, checksumFax, personaMessaggio.NomeMessaggio, ".pdf") { Length = personaMessaggio.DocumentoMessaggio.Length }); } } break; } var destinatari = personaService.GetContattiSelezionatiByTipo(persone.Where(item => item.ID == persona.ID).ToList(), tipo); if (service != null) result.AddRange(service.InvioMessaggio(azienda, personaMessaggio, condominio, parametri.IdUnitaImmobiliare, parametri.IdFornitore, parametri.IdResponsabile, parametri.IdIncaricatoAttivita, motivoMessaggio, personaMessaggio.OggettoMessaggio, messaggioPrincipale, destinatari, mittente, emailRapportino, allegatiInvio, parametriInvioLettera)); } } if (parametriInvioLettera.AccodaMessaggio || parametriInvioLettera.ApriFileGenerato) { var zipFile = service.FinalizzaMessaggio(parametri.Oggetto, parametriInvioLettera.AccodaMessaggio, azienda); if (parametriInvioLettera.ApriFileGenerato) messaggioInviato = zipFile; } } else result.Add(new RisultatoInvioMessaggio(string.Empty, null, false, "Non è presente nessun destinatario", new DocumentInfo())); // ======================================== // Aggiorno i contatti // ======================================== if (aggiornaContatti) { var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); foreach (var personaMessaggio in persone) { var persona = daoFactory.GetPersonaDao().Find(personaMessaggio.ID, false); if (persona != null) { var contattoRepository = new ContattoRepository(persona, _info, _windsorRepository); foreach (var contattoDTO in personaMessaggio.Contatti) { contattoDTO.Stato = "U"; contattoRepository.ManageDomainEntity(contattoDTO, true); } } } } return new RisultatoInvioMessaggioAllegati(result, null, messaggioInviato); } catch (Exception ex) { _log.ErrorFormat("Errore durante l'invio del messaggio - {0} - idAzienda:{1}", ex, Utility.GetMethodDescription(), azienda); throw; } }
public RisultatoInvioMessaggioAllegati InvioMessaggioPersone(MotivoMessaggio motivoMessaggio, string oggetto, string messaggio, IList<PersonaMessaggioDTO> persone, Dictionary<int, BindingList<ContattoDTO>> contatti, string mittente, string emailRapportino, IList<DocumentoMessaggioDTO> allegati, IList<DocumentInfo> allegatiNuovi, TipoMessaggio tipo, int? idModello, ParametriStampaUnione parametri, ParametriInvioLettera parametriInvioLettera, bool aggiornaContatti, int? idCondominio, int azienda) { try { var result = new List<RisultatoInvioMessaggio>(); var allegatiResult = new List<DocumentInfo>(); var messaggioInviato = new DocumentInfo(); if (persone.Count > 0) { var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); var archiviazioneService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IArchiviazioneOtticaService>(); var converter = _windsorRepository.GetContainer(_info.Azienda).Resolve<IConverter>(); Condominio condominio = null; if (idCondominio > 0) condominio = daoFactory.GetCondominioDao().Find(idCondominio.GetValueOrDefault(), false); IMessageService service = null; switch (tipo) { case TipoMessaggio.Fax: service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.fax"); break; case TipoMessaggio.Email: service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.email"); break; case TipoMessaggio.Sms: service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.sms"); break; case TipoMessaggio.Lettera: service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.lettera"); break; case TipoMessaggio.Manuale: service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMessageService>("messageservice.manuale"); break; } var personaService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IPersonaService>(); ModelloLettera modello = null; if (idModello != null) modello = daoFactory.GetModelloLetteraDao().GetById(idModello.Value, false); // ========================================================================================= // Allegati // ========================================================================================= var allegatiMessaggio = new List<DocumentInfo>(allegati.Count() + 1); var documentoRepository = new DocumentoRepository(_info, _windsorRepository); foreach (var idDocumento in allegati) { Documento documento = null; if(idDocumento.Id != null) documento = daoFactory.GetDocumentoDao().Find(idDocumento.Id.Value, false); if (documento != null) { var tipoDocumento = TipoDocumentoArchiviazione.Contratto; if (documento.SpesaRiferimento != null) tipoDocumento = TipoDocumentoArchiviazione.FatturaPassiva; var docInfo = documentoRepository.GetDocumentInfo(idDocumento.Id.Value, tipoDocumento); if (docInfo.Body != null) { allegatiMessaggio.Add(docInfo); allegatiResult.Add(docInfo); } else _log.ErrorFormat("Tentativo di allegare documento vuoto - {0} - documento:{1}", Utility.GetMethodDescription(), documento.ID); } else if(documento == null && idDocumento.IdSpesa != null) { var spesa = daoFactory.GetSpesaDao().Find(idDocumento.IdSpesa.Value, false); var identificativoArchiviazione = archiviazioneService.GetIdentificativoArchiviazione(spesa, false); var docInfo = documentoRepository.GetDocumentBody(identificativoArchiviazione, TipoDocumentoArchiviazione.FatturaPassiva); if (docInfo.Body != null) allegatiMessaggio.Add(docInfo); else _log.ErrorFormat("Tentativo di allegare documento vuoto - {0} - spesa:{1}", Utility.GetMethodDescription(), idDocumento.IdSpesa); } } // ========================================================================================= // Allegati Nuovi // ========================================================================================= var allegatiNuoviAry = allegatiNuovi.ToArray(); for (var i = 0; i < allegatiNuoviAry.Length; i++) { if (string.IsNullOrEmpty(allegatiNuoviAry[i].BodyText)) { var allegatiElaborati = elaboraAllegato(allegatiNuoviAry[i], null, parametri, tipo, converter, azienda); if (allegatiElaborati != null) { allegatiMessaggio.Add(allegatiElaborati.Value.AllegatoDaInviare); allegatiResult.Add(allegatiElaborati.Value.AllegatoResult); } } } // ========================================================================================= // Non è presente nessuna stampa unione // ========================================================================================= if ((modello == null || !modello.StampaUnione) && !isStampaUnione(oggetto, messaggio)) { if (modello != null && (tipo == TipoMessaggio.Fax || tipo == TipoMessaggio.Lettera || tipo == TipoMessaggio.Manuale || tipo == TipoMessaggio.Email)) { var modelloLetteraService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IModelloLetteraService>(); var documento = modelloLetteraService.GetLettera(idModello.Value); documento.FileName = "Documento Allegato"; if (tipo != TipoMessaggio.Manuale) { var doc = new Document(new MemoryStream(documento.Body)); var pdfStream = new MemoryStream(); doc.Save(pdfStream, SaveFormat.Pdf); documento.Body = pdfStream.ToArray(); documento.FileExtension = ".pdf"; } allegatiMessaggio.Insert(0, documento); allegatiResult.Add(documento); } IList<PersonaMessaggioDTO> personeMessaggio = new List<PersonaMessaggioDTO>(); foreach (var personaMessaggio in persone) { IList<ContattoDTO> contattiPersona = new List<ContattoDTO>(); if (contatti.ContainsKey(personaMessaggio.ID)) contattiPersona = contatti[personaMessaggio.ID]; personaMessaggio.Contatti = contattiPersona; personeMessaggio.Add(personaMessaggio); } var destinatari = personaService.GetContattiSelezionatiByTipo(personeMessaggio, tipo); if (destinatari.Count > 0) { if (service != null) { var risultatoInvio = service.InvioMessaggio(azienda, null, null, parametri.IdUnitaImmobiliare, parametri.IdFornitore, parametri.IdResponsabile, parametri.IdIncaricatoAttivita, motivoMessaggio, oggetto, messaggio, destinatari, mittente, emailRapportino, allegatiMessaggio, parametriInvioLettera).ToArray(); // In questo caso lo storico deve essere creato ora per ogni persona foreach (var personaMessaggio in persone) { var persona = daoFactory.GetPersonaDao().Find(personaMessaggio.ID, false); if (persona != null) { var storicoMessaggio = getMessaggisticaService().StoricizzaMessaggio(persona, condominio, risultatoInvio[0], motivoMessaggio, oggetto, messaggio, destinatari, mittente, emailRapportino, allegatiMessaggio, tipo); if (storicoMessaggio != null) { for (var i = 0; i < risultatoInvio.Length; i++) risultatoInvio[i].IdMessaggio = storicoMessaggio.ID; } } } if (parametriInvioLettera.AccodaMessaggio || parametriInvioLettera.ApriFileGenerato) { var zipFile = service.FinalizzaMessaggio(oggetto, parametriInvioLettera.AccodaMessaggio, azienda); if (parametriInvioLettera.ApriFileGenerato) messaggioInviato = zipFile; } result.AddRange(risultatoInvio); } } else result.Add(new RisultatoInvioMessaggio(string.Empty, null, false, "Non è presente nessun destinatario", new DocumentInfo())); } // ========================================================================================= // E' presente stampa unione con modello oppure direttamente nel testo // ========================================================================================= else { Delivery delivery = null; foreach (var personaMessaggio in persone) { var allegatiInvio = allegatiMessaggio.ToList(); var persona = daoFactory.GetPersonaDao().Find(personaMessaggio.ID, false); if (persona != null) { var modelloLetteraService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IModelloLetteraService>(); parametri.IdPersonaAttiva = personaMessaggio.ID; parametri.Importo = personaMessaggio.Importo; parametri.IdUnitaImmobiliare = personaMessaggio.IdUnitaImmobiliare; if (idCondominio != null) parametri.IdCondominio = idCondominio.Value; var faxDestinatario = string.Empty; if (tipo == TipoMessaggio.Fax && contatti.ContainsKey(persona.ID) && contatti[persona.ID].Count > 0) faxDestinatario = contatti[persona.ID].FirstOrDefault().Valore; if (string.IsNullOrEmpty(faxDestinatario)) { var contattiCollection = new ContattoCollection(persona.Contatti); var contattoFax = contattiCollection.GetFirstContatto<Fax>(); if (contattoFax != null) faxDestinatario = contattoFax.Valore; } parametri.FaxDestinatario = faxDestinatario; // Se è definita una persona da contattare nella stampa unione deve essere usata quest'ultima var idPersonaStampaUnione = persona.ID; if (parametri.IdPersonaRichiedente != null) idPersonaStampaUnione = parametri.IdPersonaRichiedente.GetValueOrDefault(); var parametriStampaUnione = new ParametriStampaUnione(idPersonaStampaUnione, parametri.IdUnitaImmobiliare, parametri.IdResponsabile, parametri.IdIncaricatoAttivita, parametri.IdFornitore, idCondominio, null, personaMessaggio.TipoIndirizzo, personaMessaggio.Importo, null, null, null, parametri.TelefonoDaContattare, null, null, null, null, null, parametri.IdPersonaRichiedente, null, null, parametri.Descrizione, null, null, null, null, null, null) { IdAssemblea = parametri.IdAssemblea }; var messaggioPrincipale = getMessaggisticaService().ApplicaStampaUnione(messaggio, parametriStampaUnione, _info.Azienda); var oggettoPrincipale = getMessaggisticaService().ApplicaStampaUnione(oggetto, parametriStampaUnione, _info.Azienda); parametri.Oggetto = oggettoPrincipale; parametri.TipoIndirizzo = personaMessaggio.TipoIndirizzo; // ------------------------------------------------------------------------ //allegatiInvio //devo processare gli allegati nuovi che hanno bodytext non nullo //questi doc possono avere tag di stampa unione per persona // ========================================================================================= // Allegati Nuovi // ========================================================================================= allegatiNuoviAry = allegatiNuovi.ToArray(); for (var i = 0; i < allegatiNuoviAry.Length; i++) { if (!string.IsNullOrEmpty(allegatiNuoviAry[i].BodyText)) { var allegatiElaborati = elaboraAllegato(allegatiNuoviAry[i], persona, parametri, tipo, converter, azienda); if (allegatiElaborati != null) { allegatiInvio.Insert(0, allegatiElaborati.Value.AllegatoDaInviare); allegatiResult.Add(allegatiElaborati.Value.AllegatoResult); } } } // ------------------------------------------------------------------------ // ------------------------------------------------------------------------ // Modello allegato presente // ------------------------------------------------------------------------ if (idModello != null) { var documentoStampaUnione = modelloLetteraService.GetLetteraCompilata(idModello.Value, parametri); switch (tipo) { case TipoMessaggio.Fax: case TipoMessaggio.Lettera: case TipoMessaggio.Email: case TipoMessaggio.Manuale: // Se l'invio è manuale con generazione creazione un unico file PDF non deve essere creato un nuovo documento con il modello selezionato var checkSumDocumento = string.Empty; if(tipo != TipoMessaggio.Manuale || parametriInvioLettera.Aggregazione == AggregazioneDocumentiEnum.DocumentiSeparati) { var documentMessage = getDocumentService().SaveDocument(documentoStampaUnione.Body, documentoStampaUnione.FileName, ".rtf", null, _info.Azienda); if(documentMessage.Documento != null) checkSumDocumento = documentMessage.Documento.Checksum; } else if (documentoStampaUnione.Body != null) checkSumDocumento = Utility.GetFileChecksum(documentoStampaUnione.Body); if (!string.IsNullOrEmpty(checkSumDocumento)) { var body = documentoStampaUnione.Body; var fileExtension = documentoStampaUnione.FileExtension; if (tipo != TipoMessaggio.Manuale) { var doc = new Document(new MemoryStream(documentoStampaUnione.Body)); var pdfStream = new MemoryStream(); doc.Save(pdfStream, SaveFormat.Pdf); body = pdfStream.ToArray(); fileExtension = ".pdf"; } var documento = new DocumentInfo { Body = body, FileId = checkSumDocumento, FileName = checkSumDocumento, FileExtension = fileExtension }; allegatiInvio.Insert(0, documento); if (tipo != TipoMessaggio.Manuale || !parametriInvioLettera.ApriFileGenerato) allegatiResult.Add(documento); } break; } } IList<ContattoDTO> contattiPersona = new List<ContattoDTO>(); if (contatti.ContainsKey(personaMessaggio.ID)) contattiPersona = contatti[personaMessaggio.ID]; var personeMessaggio = new List<PersonaMessaggioDTO>(1) { new PersonaMessaggioDTO { ID = personaMessaggio.ID, Contatti = contattiPersona, } }; var destinatari = personaService.GetContattiSelezionatiByTipo(personeMessaggio, tipo); if (service != null) { int? idDelivery = null; if (delivery != null) idDelivery = delivery.Id; var resultMessage = service.InvioMessaggio(azienda, new PersonaMessaggioDTO {ID = persona.ID, IdDelivery = idDelivery}, condominio, parametri.IdUnitaImmobiliare, parametri.IdFornitore, parametri.IdResponsabile, parametri.IdIncaricatoAttivita, motivoMessaggio, oggettoPrincipale, messaggioPrincipale, destinatari, mittente, emailRapportino, allegatiInvio, parametriInvioLettera); if (resultMessage.Count > 0) { delivery = daoFactory.GetDeliveryPoDao().Find(resultMessage[0].IdDelivery, false); result.AddRange(resultMessage); } } } } if (parametriInvioLettera.AccodaMessaggio || parametriInvioLettera.ApriFileGenerato) { var zipFile = service.FinalizzaMessaggio(oggetto, parametriInvioLettera.AccodaMessaggio, azienda); if (parametriInvioLettera.ApriFileGenerato) messaggioInviato = zipFile; } } } else result.Add(new RisultatoInvioMessaggio(string.Empty, null, false, "Non è presente nessun destinatario", new DocumentInfo())); // ======================================== // Aggiorno i contatti // ======================================== if(aggiornaContatti) { var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); foreach (var kvp in contatti) { var persona = daoFactory.GetPersonaDao().Find(kvp.Key, false); if(persona != null) { var contattoRepository = new ContattoRepository(persona, _info, _windsorRepository); foreach (var contattoDTO in kvp.Value) { var contatto = persona.Contatti.FirstOrDefault(item => item.Valore == contattoDTO.Valore); if (contatto != null) contattoDTO.ID = contatto.ID; contattoDTO.Stato = "U"; contattoRepository.ManageDomainEntity(contattoDTO, true); } } } } return new RisultatoInvioMessaggioAllegati(result, allegatiResult, messaggioInviato); } catch (Exception ex) { _log.ErrorFormat("Errore durante l'invio del messaggio - {0} - idAzienda:{1} - oggetto:{2}", ex, Utility.GetMethodDescription(), azienda, oggetto); throw; } }
public IList<DocumentoDTO> GetDataSourceDocumentoByUnitaImmobiliare(int id, UserInfo userinfo) { var windsorRep = new WindsorConfigRepository(); try { windsorRep.BeginTransaction(userinfo); var repo = new DocumentoRepository(userinfo, windsorRep); var item = repo.GetDataSourceDocumentoByUnitaImmobiliare(id); windsorRep.Commit(); return item; } catch (Exception ex) { _log.ErrorFormat("Errore nella lettura dei documenti di una unità immobiliare - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), id, userinfo.Azienda); windsorRep.Rollback(); throw; } }
public string AggiornaDocumenti(IList<DocumentoDTO> documenti, UserInfo userinfo) { var windsorRep = new WindsorConfigRepository(); try { windsorRep.BeginTransaction(userinfo); var repo = new DocumentoRepository(userinfo, windsorRep); var item = repo.AggiornaDocumenti(documenti); windsorRep.Commit(); return item; } catch (Exception ex) { _log.ErrorFormat("Errore nell'aggiornamento dei documenti - {0} - azienda:{1}", ex, userinfo.Azienda); windsorRep.Rollback(); throw; } }
public IList<DocumentoDTO> GetDocumentiByAttivitaMessaggio(int idMessaggio, UserInfo userinfo) { var windsorRep = new WindsorConfigRepository(); try { windsorRep.BeginTransaction(userinfo); var repo = new DocumentoRepository(userinfo, windsorRep); var item = repo.GetDocumentiByAttivitaMessaggio(idMessaggio); windsorRep.Commit(); return item; } catch (Exception ex) { _log.ErrorFormat("Errore nella lettura di un messaggio di attività - {0} - idMessaggio:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), idMessaggio, userinfo.Azienda); windsorRep.Rollback(); throw; } }
public IList<DocumentoDTO> GetDataSourceDocumentoCondominio(int idCondominio, UserInfo userinfo) { var retryCount = 5; var success = false; var windsorRep = new WindsorConfigRepository(); IList<DocumentoDTO> item = null; while (retryCount >= 0 && !success) { try { windsorRep.BeginTransaction(userinfo); var repo = new DocumentoRepository(userinfo, windsorRep); item = repo.GetDataSourceDocumentoCondominio(idCondominio); windsorRep.Commit(); success = true; } catch (Exception ex) { _log.ErrorFormat("Errore nella lettura dei documenti di un condominio - TENTATIVO:{0} - {1} - condominio:{2} - azienda:{3} - number:{4}", ex, (6 - retryCount), Utility.GetMethodDescription(), idCondominio, userinfo.Azienda, getExceptionId(ex)); windsorRep.Rollback(); if (!isRetryException(ex)) throw; // Add delay here if you wish. System.Threading.Thread.Sleep(1000 * (6 - retryCount)); retryCount--; _log.InfoFormat("Lettura dei documenti di un condominio - INIZIO TENTATIVO:{0} - {1} - condominio:{2} - azienda:{3}", (6 - retryCount), Utility.GetMethodDescription(), idCondominio, userinfo.Azienda); } } if (!success) windsorRep.Rollback(); return item; }
public DocumentoDTO GetDocumentoByIdentificativo(string id, UserInfo userinfo) { var windsorRep = new WindsorConfigRepository(); try { windsorRep.BeginTransaction(userinfo); var repo = new DocumentoRepository(userinfo, windsorRep); var item = repo.GetByIdentificativo(id); windsorRep.Commit(); return item; } catch (Exception ex) { _log.ErrorFormat("Errore nella lettura di un documento - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), id, userinfo.Azienda); windsorRep.Rollback(); throw; } }
public string SetCacheDocumento(int id, bool cache, UserInfo userinfo) { var windsorRep = new WindsorConfigRepository(); try { windsorRep.BeginTransaction(userinfo); var repo = new DocumentoRepository(userinfo, windsorRep); var item = repo.SetCache(id, cache); windsorRep.Commit(); return item; } catch (Exception ex) { _log.ErrorFormat("Errore nella clear della cache di un documento - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), id, userinfo.Azienda); windsorRep.Rollback(); throw; } }
public ResultDocumentiDTO GetDocumentiPubbliciByFilter(DocumentoFilter filter, UserInfo userinfo) { var windsorRep = new WindsorConfigRepository(); try { windsorRep.BeginTransaction(userinfo); var repo = new DocumentoRepository(userinfo, windsorRep); var item = repo.GetDocumentiPubbliciByFilter(filter); windsorRep.Commit(); return item; } catch (Exception ex) { _log.ErrorFormat("Errore nel caricamento dei documenti - {0} - azienda:{2}", ex, Utility.GetMethodDescription(), userinfo.Azienda); windsorRep.Rollback(); throw; } }
public DocumentInfo GetLogoRtfEsercizio(int idAzienda) { try { var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); var azienda = daoFactory.GetAziendaDao().GetById(idAzienda, false); var docRep = new DocumentoRepository(_info, _windsorRepository); return docRep.GetDocumentInfo(azienda.LogoRtfReportEsercizio, TipoDocumentoArchiviazione.Contratto); } catch (Exception ex) { _log.ErrorFormat("Errore nel caricamento del logo RTF ESERCIZIO dell'azienda - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), _info.Azienda); throw; } }
public ResultDocumentiDTO GetDocumentiByFilter(DocumentoFilter filter, UserInfo userinfo) { var windsorRep = new WindsorConfigRepository(); try { windsorRep.BeginTransaction(userinfo); var service = windsorRep.GetContainer(userinfo.Azienda).Resolve<IRicercaDocumentiService>(); var lista = service.GetDocumentiByFilter(filter); var listaDto = new List<DocumentoDTO>(lista.Documenti.Count); var rep = new DocumentoRepository(userinfo, windsorRep); foreach (var doc in lista.Documenti) { try { listaDto.Add(rep.GetByDomainEntity(doc)); } catch (Exception ex) { _log.ErrorFormat("Errore durante la lettura dei documenti per filtro - {0} - id:{1}", ex, Utility.GetMethodDescription(), doc.ID); throw; } } windsorRep.Commit(); return new ResultDocumentiDTO(listaDto, lista.TotaleDocumenti); } catch (Exception ex) { _log.ErrorFormat("Errore durante la lettura dei documenti per filtro - {0} - condominio:{1}", ex, Utility.GetMethodDescription(), filter.CodiceCondominio); windsorRep.Rollback(); throw; } }
public DocumentInfo GetFirmaAmministratore(int idAzienda) { try { var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); var azienda = daoFactory.GetAziendaDao().GetById(idAzienda, false); var docRep = new DocumentoRepository(_info, _windsorRepository); return docRep.GetDocumentInfo(azienda.FirmaAmministratore, TipoDocumentoArchiviazione.Contratto); } catch (Exception ex) { _log.ErrorFormat("Errore nel caricamento della firma dell'Amministratore - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), idAzienda); throw; } }
public int? SetDocumento(DocumentoDTO documento, UserInfo userinfo) { var windsorRep = new WindsorConfigRepository(); try { windsorRep.BeginTransaction(userinfo); var repo = new DocumentoRepository(userinfo, windsorRep); var item = repo.ManageDomainEntity(documento, userinfo.Azienda); windsorRep.Commit(); return item; } catch (Exception ex) { _log.ErrorFormat("Errore durante il salvataggio del documento - {0} - id:{1}", ex, Utility.GetMethodDescription(), documento.ID); windsorRep.Rollback(); throw; } }
public IList<DocumentoDTO> GetAllegatiByMessaggio(int idStoricoMessaggio) { try { var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); var storicoMessaggio = daoFactory.GetStoricoMessaggioDao().Find(idStoricoMessaggio, false); var listaDto = new List<DocumentoDTO>(); if (storicoMessaggio != null) { var repository = new DocumentoRepository(_info, _windsorRepository); foreach (var storicoMessaggioAllegato in storicoMessaggio.Allegati) { var documentoDto = repository.GetByIdentificativo(storicoMessaggioAllegato.CheckSumAllegato); if(documentoDto.ID == 0) { documentoDto.Checksum = storicoMessaggioAllegato.CheckSumAllegato; documentoDto.FileName = storicoMessaggioAllegato.NomeFile; documentoDto.FileExtension = storicoMessaggioAllegato.EstensioneFile; documentoDto.DataCreazione = storicoMessaggioAllegato.DataInserimento.GetValueOrDefault(); } listaDto.Add(documentoDto); } } return listaDto; } catch (Exception ex) { _log.Error(string.Format("Errore durante la lettura degli allegati di un messaggio - {0} - messaggio:{1} - idAzienda:{2}", Utility.GetMethodDescription(), idStoricoMessaggio, _info.Azienda), ex); throw; } }
public ResultDocumentoDTO SetDocumentoFascicoloConArchiviazione(string descrizione, int idFascicolo, int idCondominio, DateTime? data, int? idFornitore, bool visibileCondomino, UserInfo userinfo) { var windsorRep = new WindsorConfigRepository(); try { windsorRep.BeginTransaction(userinfo); var rep = new DocumentoRepository(userinfo, windsorRep); var item = rep.SalvaDocumentoFascicolo(idFascicolo, descrizione, idCondominio, data, idFornitore, visibileCondomino); windsorRep.Commit(); return item; } catch (Exception ex) { _log.ErrorFormat("Errore durante il salvataggio del documento - ARCHIVIAZIONE - {0} - idFascicolo:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), idFascicolo, userinfo.Azienda); windsorRep.Rollback(); throw; } }
private DocumentoRepository getDocumentoRepository() { return _documentoRepository ?? (_documentoRepository = new DocumentoRepository(_info, _windsorRepository)); }
public IList<DocumentoDTO> GetDocumentiDaArchiviareByAzienda(UserInfo userinfo, IList<int> idCondomini) { var windsorRep = new WindsorConfigRepository(); try { windsorRep.BeginTransaction(userinfo); var rep = new DocumentoRepository(userinfo, windsorRep); var item = rep.GetDocumentiDaArchiviareByAzienda(userinfo.Azienda, idCondomini); windsorRep.Commit(); return item; } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la lettura dei documenti da archiviare - {0} - azienda:{1} - condomini:{2}", ex, Utility.GetMethodDescription(), userinfo.Azienda, idCondomini.Aggregate(string.Empty, (current, id) => current + (id + ", "))); windsorRep.Rollback(); throw; } }