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;
     }
 }
Example #2
0
        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;
			}
		}
Example #3
0
		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;
			}
		}
Example #4
0
 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;
     }
 }
Example #5
0
		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;
		}
Example #6
0
        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;
            }
        }
Example #7
0
        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;
            }
        }
Example #8
0
		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;
			}
		}
Example #9
0
 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;
     }
 }
Example #10
0
		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;
			}
		}
Example #11
0
		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;
		}
Example #12
0
 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;
     }
 }
Example #13
0
 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;
     }
 }
Example #14
0
 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;
     }
 }
Example #15
0
        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;
            }
        }
Example #16
0
		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;
			}
		}
Example #17
0
        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;
            }
        }
Example #18
0
		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;
			}
		}
Example #19
0
        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;
            }
        }
Example #20
0
		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;
			}
		}
Example #21
0
 private DocumentoRepository getDocumentoRepository()
 {
     return _documentoRepository ?? (_documentoRepository = new DocumentoRepository(_info, _windsorRepository));
 }
Example #22
0
		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;
			}
		}