public UserControl GetControl(string contattoMittente, ParametriStampaUnione parametriLettera, bool sceltaModello, bool showSceltaModello = true, bool modelloRequiredMail = false)
 {
     _control = new TestoMessaggioUC(contattoMittente, parametriLettera, sceltaModello, _manageDocumentService, _modelloLettera, showSceltaModello, modelloRequiredMail);
     _control.ConfirmCancel -= _control_ConfirmCancel;
     _control.ConfirmCancel += _control_ConfirmCancel;
     _control.TipoMessaggioChanged -= _control_TipoMessaggioChanged;
     _control.TipoMessaggioChanged += _control_TipoMessaggioChanged;
     return _control;
 }
Beispiel #2
0
        public InviaVerbaleUC(AssembleaDTO assemblea, CondominioDTO condominio, EsercizioDTO esercizio, Verbali verbale)
        {
            InitializeComponent();
            _assemblea = assemblea;
            _condominio = condominio;

            _verbale = verbale;

            // Tipo Assemblea
            DataSourceHelper.PopulateCombo<string, string>(cboInviaA, Conversione.EnumToList<InviaVerbaleA>());

            _mittenteLettera = getAziendaService().GetAzienda().MittenteEmailAzienda;
            _parametriLettera = new ParametriStampaUnione
            {
                IdCondominio = _condominio.ID,
                IdPersonaRichiedente = null, //occhio...controllare che cosa ci va qua...
                DataAttiva = DateTime.Now,
                ContattiDestinatario = "",
                Identificativo = "",
                IdAssemblea = _assemblea.ID,
                Body = "",
                ParametriAggiuntiviLettera = new ParametriAggiuntiviCompilazioneLettera
                {
                    BodyFormat = "RTF",
                    TipiMessaggioConsentiti =
                        new List<TipoMessaggio>() {TipoMessaggio.Email, TipoMessaggio.Fax, TipoMessaggio.Lettera, TipoMessaggio.Manuale},
                    TipoLettera = TipoModelloLetteraEnum.Assemblea
                }
            };

            _testoMessaggio = getTestoMessaggioUIService().GetControl(_mittenteLettera, _parametriLettera, false, false, true);
            getTestoMessaggioUIService().SetConfermaCaption("Invia");
            getTestoMessaggioUIService().ConfirmCancel += letteraUC_OnConfirmCancel;
            getTestoMessaggioUIService().TipoMessaggioChanged += letteraUC_OnTipoMessaggioChanged;
            getTestoMessaggioUIService().SetAmbito(MergeFieldType.Assemblea);
            splitContainer1.Panel2.Controls.Add(_testoMessaggio);
            _testoMessaggio.Dock = DockStyle.Fill;

            var oDoc = new DocumentInfo();
            oDoc.FileExtension = "pdf";
            oDoc.FileName = "Verbale assemblea";
            //var oParametri = new ParametriStampaUnione { IdAssemblea = _assemblea.ID, IdCondominio = _condominio.ID };
            string sVerbale="";
            switch (_verbale){
                case Verbali.PrimaConvocazione:
                    sVerbale = _assemblea.VerbalePrimaConvocazione; //getAssembleaService().MailMerge(_assemblea.VerbalePrimaConvocazione, _parametriLettera);
                    
                    break;
                case Verbali.SecondaConvocazione:
                    sVerbale = _assemblea.VerbaleSecondaConvocazione; //getAssembleaService().MailMerge(_assemblea.VerbaleSecondaConvocazione, _parametriLettera);
                    break;
            }
            oDoc.BodyText = sVerbale;
            getTestoMessaggioUIService().GetDocumentiNew().Add(oDoc);
            
            loadData();
        }
Beispiel #3
0
        public TestoMessaggioUC(string contattoMittente, ParametriStampaUnione parametriLettera, bool sceltaModello, IManageDocumentService manageDocumentService, IModelloLettera modelloLetteraService, bool showSceltaModello=true, bool modelloRequiredMail = false)
        {
            InitializeComponent();

            _showSceltaModello = showSceltaModello;
            _sceltaModello = sceltaModello;
            _modelloRequiredMail = modelloRequiredMail;
            _manageDocumentService = manageDocumentService;
            _modelloLetteraService = modelloLetteraService;

            _contattoMittente = contattoMittente;
            _parametriLettera = parametriLettera;
            _idCondominio = parametriLettera.IdCondominio;

            if(parametriLettera.ParametriAggiuntiviLettera.TipoLettera != TipoModelloLetteraEnum.Undefined)
                _tipoLettera = parametriLettera.ParametriAggiuntiviLettera.TipoLettera;

            inizializza();

            tipoMessaggio.ValueList = DataSourceHelper.GetValueList<TipoMessaggio>("tipoMessaggio");
            if (parametriLettera.ParametriAggiuntiviLettera.TipiMessaggioConsentiti != null)
            {
                var oItemToRemove = new List<Infragistics.Win.ValueListItem>();
                foreach (var valueItem in tipoMessaggio.ValueList.ValueListItems)
                {
                    TipoMessaggio iValue;
                    if (Enum.TryParse((string) valueItem.DataValue, true, out iValue))
                    {
                        if (!parametriLettera.ParametriAggiuntiviLettera.TipiMessaggioConsentiti.Contains(iValue))
                        {
                            oItemToRemove.Add(valueItem);
                        }
                    }
                }
                foreach (var valueItem in oItemToRemove)
                {
                    tipoMessaggio.ValueList.ValueListItems.Remove(valueItem);
                }

                tipoMessaggio.Value = parametriLettera.ParametriAggiuntiviLettera.TipiMessaggioConsentiti.Contains(TipoMessaggio.Manuale) ? TipoMessaggio.Manuale : parametriLettera.ParametriAggiuntiviLettera.TipiMessaggioConsentiti.First();
            }
            else
            {
                tipoMessaggio.Value = TipoMessaggio.Manuale;
            }

            emailRapportino.Text = _contattoMittente;
            oggetto.Text = _parametriLettera.Oggetto;

            modelloLetteraDTOBindingSource.DataSource = _modelloLetteraService.GetModelliLettera(new List<TipoModelloLetteraEnum> { _tipoLettera });
            if (_sceltaModello)
                modelliLettera.SelectedIndex = 0;

            testoRich.LoadDocumento(_parametriLettera.IdCondominio, Conversione.ToStream(_parametriLettera.Body), parametriLettera.ParametriAggiuntiviLettera.BodyFormat);
            testoSemplice.LoadData(_parametriLettera.Body, true);
        }
 public DocumentInfo GetLetteraCompilata(int idAzienda, string descrizione, ParametriStampaUnione parametri)
 {
     var testoLettera = parametri.Body;
     var azienda = _daoFactory.GetAziendaDao().GetById(idAzienda,false);
     if (descrizione == null)
     {
         descrizione = parametri.Descrizione;
     }
     return pGetLetteraCompilataBase(testoLettera, azienda, descrizione, parametri);
 }
        public DocumentInfo GetLetteraCompilata(int idModello, ParametriStampaUnione parametri)
        {
            var modelloLettera = _daoFactory.GetModelloLetteraDao().GetById(idModello, false);
            var documento = _documentService.GetDocument(modelloLettera.Checksum, modelloLettera.Azienda.ID, TipoDocumentoArchiviazione.Contratto);
            if(documento.Body == null)
                return new DocumentInfo(string.Empty, modelloLettera.Checksum, modelloLettera.Descrizione, null);

            var testoLettera = Conversione.ToString(documento.Body);

            return pGetLetteraCompilataBase(testoLettera, modelloLettera.Azienda, modelloLettera.Descrizione, parametri);
        }
Beispiel #6
0
        public InvioMessaggioUI(TipoMessaggio? defaultTipoMessaggio, string contattoMittente, ParametriStampaUnione parametriLettera)
        {
            InitializeComponent();

            _defaultTipoMessaggio = defaultTipoMessaggio;
            _contattoMittente = contattoMittente;
            _parametriLettera = parametriLettera;
            txtMessaggio.LoadDocumento(parametriLettera.IdCondominio, Conversione.ToStream(_parametriLettera.Body), "HTML");

            inizializza();
        }
Beispiel #7
0
        public TestoMessaggioUI(string contattoMittente, ParametriStampaUnione parametriLettera, bool sceltaModello, IManageDocumentService manageDocumentService, IModelloLettera modelloLetteraService)
        {
            InitializeComponent();

            _messaggioUC = new TestoMessaggioUC(contattoMittente, parametriLettera, sceltaModello, manageDocumentService, modelloLetteraService)
            {
                Dock = DockStyle.Fill
            };
            Controls.Add(_messaggioUC);
            _messaggioUC.ConfirmCancel += _messaggioUC_ConfirmCancel;

            persistWindowComponent1.UserName = Login.Instance.CurrentLogin().LoginName;
        }
        public DialogResult OpenDialogFormInvioMessaggio(TipoMessaggio? tipoMessaggio, List<int> destinatari, ModelloLetteraDTO modelloLettera, string contattoMittente, ParametriStampaUnione parametriLettera)
        {

            DialogResult result;
            using (var form = new InvioMessaggioUI(tipoMessaggio, contattoMittente, parametriLettera))
            {
                if (destinatari != null && destinatari.Count > 0)
                    form.LoadPersone(destinatari);
                if (modelloLettera != null)
                    form.LoadModello(modelloLettera);

                if (!string.IsNullOrEmpty(_customText))
                    form.ShowInserisciTestoCustom(_customText);
                if (!string.IsNullOrEmpty(_userInfoText))
                    form.ShowInserisciUserInfo(_userInfoText);

                result = form.ShowDialog();
                if (result != DialogResult.Cancel)
                {
                    _contattiSelected = form.GetContattiSelected();
                    _contattoDaContattare = form.GetContattoDaContattare();
                    _personaDaContattare = form.GetPersonaDaContattare();
                    _modelloLettera = form.GetModelloLettera();
                    _emailRapportino = form.GetEmailRapportino();
                    _testoMessaggio = form.GetTestoMessaggio();
                    _oggettoMessaggio = form.GetOggettoMessaggio();
                    _invioVeloce = form.GetInvioVeloce();
                    _messageType = form.GetMessageType();
                    _colore = form.GetColore();
                    _apriFile = form.GetApriFile();
                    _aggregazione = form.GetAggregazioneDocumenti();
                    _formatoDocumento = form.GetFormatoDocumento();
                    _accodaMessaggio = form.GetAccodaMessaggio();
                    _numeraPagine = form.GetNumeraPagine();
                    _fronteRetro = form.GetFronteRetro();
                    _primaPaginaMittente = form.GetPrimaPaginaMittente();
                    _mittente = form.GetMittente();
                    _tipoMessaggio = form.GetTipoMessaggio();
                    _documenti = form.GetDocumenti();
                    _documentiNew = form.GetDocumentiNew();
                    _parametriInvioLettera = new ParametriInvioLettera { Tipo = form.GetMessageType() };
                    _aggiornaContatti = form.GetAggiornaContatti();                     
                }
                
                form.CloseForm();
            }

            Application.DoEvents();
            return result;
        }
Beispiel #9
0
 public string MailMergeRtfText(string rtfText, ParametriStampaUnione parametriStampaUnione)
 {
     try
     {
         var result = GetServiceClient().MailMergeRtfText(rtfText, parametriStampaUnione, GetUserInfo());
         CloseService();
         return result;
     }
     catch (OutOfMemoryException)
     {
         MessageBox.Show($"La memoria disponibile non è sufficiente per la stampa del logo.{Environment.NewLine}Si consiglia di caricare un logo di dimensioni minori");
         return string.Empty;
     }
 }
        private void btnInvioMessaggioClick(object sender, EventArgs e)
        {
            int? idCondominio = null;
            if (Condominio != null)
                idCondominio = Condominio.ID;

            var parameters = new ParametriStampaUnione { Oggetto = OggettoMessaggio, IdCondominio = idCondominio, Applicazione = MotivoMessaggio.ToString(), ParametriAggiuntiviLettera = new ParametriAggiuntiviCompilazioneLettera { TipoLettera = TipoModelloLetteraEnum.Messaggistica } };
            if (getInvioMessaggioService().OpenDialogFormTestoMessaggio(null, parameters, null, new DocumentoFilter(), false) == DialogResult.Yes)
            {
                Execute("Messaggio", new AutomazioneParameters(null, getInvioMessaggioService().GetOggetto(), getInvioMessaggioService().GetTestoMessaggio()));
                var risultati = getPersonaService().InvioMessaggioPersonalizzato(
                    Condominio, 
                    MotivoMessaggio, 
                    PersoneMessaggio,
                    getInvioMessaggioService().GetMittente(),
                    getInvioMessaggioService().GetEmailRapportino(),
                    getInvioMessaggioService().GetDocumenti(),
                    getInvioMessaggioService().GetDocumentiNew(),
                    getInvioMessaggioService().GetTipoMessaggio(),
                    getInvioMessaggioService().GetModelloLettera(), 
                    parameters,
                    new ParametriInvioLettera
                        {
                            Asincrono = getInvioMessaggioService().GetInvioVeloce(), 
                            Tipo = getInvioMessaggioService().GetMessageType(), 
                            Colore = getInvioMessaggioService().GetColore(), 
                            FronteRetro = getInvioMessaggioService().GetFronteRetro(), 
                            PaginaIniziale = getInvioMessaggioService().GetPrimaPaginaMittente(),
                            AccodaMessaggio = getInvioMessaggioService().GetAccodaMessaggio(),
                            Aggregazione = getInvioMessaggioService().GetAggregazioneDocumenti(),
                            FormatoDocumento = getInvioMessaggioService().GetFormatoDocumento(),
                            ApriFileGenerato = getInvioMessaggioService().GetApriFile(),
                            RinumeraPagine = getInvioMessaggioService().GetNumeraPagine()
                        },
                    false);

                var invioRiuscito = true;
                var messaggioInvio = string.Empty;
                foreach (var risultato in risultati)
                {
                    if (!risultato.InvioRiuscito)
                        invioRiuscito = false;

                    messaggioInvio += risultato.MessaggioInvio + Environment.NewLine;
                }

                ResultInvioMessaggio(invioRiuscito, messaggioInvio);
            }
        }
        public TestoMessaggioPersoneUC(IList<PersonaContattoDTO> personeSelezionate, string contattoMittente, ParametriStampaUnione parametriLettera, bool sceltaModello, IManageDocumentService manageDocumentService, IModelloLettera modelloLetteraService)
        {
            InitializeComponent();

            _testoMessaggioUC = new TestoMessaggioUC(contattoMittente, parametriLettera, sceltaModello, manageDocumentService, modelloLetteraService)
            {
                Dock = DockStyle.Fill,
                AutoScroll = true
            };
            _testoMessaggioUC.ConfirmCancel += testoMessaggio_ConfirmCancel;
            splitContainer1.Panel2.Controls.Add(_testoMessaggioUC);

            _listaPersoneUC = new ListaPersoneUC(personeSelezionate) {Dock = DockStyle.Fill, AutoScroll = true};
            splitContainer1.Panel1.Controls.Add(_listaPersoneUC);
        }
        public InviaLetteraConvocazioneUC(AssembleaDTO assemblea, CondominioDTO condominio)
        {
            InitializeComponent();
            _assemblea = assemblea;
            _condominio = condominio;



            var mittenteLettera = getAziendaService().GetAzienda().MittenteEmailAzienda;
            _parametriLettera = new ParametriStampaUnione
            {
                IdCondominio = _condominio.ID,
                IdPersonaRichiedente = null, //occhio...controllare che cosa ci va qua...
                DataAttiva = DateTime.Now,
                ContattiDestinatario = string.Empty,
                Identificativo = string.Empty,
                IdAssemblea = _assemblea.ID,
                Body = string.Empty,
                ParametriAggiuntiviLettera = new ParametriAggiuntiviCompilazioneLettera
                {
                    BodyFormat = "RTF",
                    TipiMessaggioConsentiti = new List<TipoMessaggio> {TipoMessaggio.Email, TipoMessaggio.Fax, TipoMessaggio.Lettera, TipoMessaggio.Manuale},
                    TipoLettera = TipoModelloLetteraEnum.Assemblea
                }
            };

            var testoMessaggio = getTestoMessaggioUIService().GetControl(mittenteLettera, _parametriLettera, false, false, true);
            getTestoMessaggioUIService().SetConfermaCaption("Invia");
            getTestoMessaggioUIService().ConfirmCancel += letteraUC_OnConfirmCancel;
            getTestoMessaggioUIService().TipoMessaggioChanged += letteraUC_OnTipoMessaggioChanged;
            getTestoMessaggioUIService().SetAmbito(MergeFieldType.Assemblea);
            splitContainer1.Panel2.Controls.Add(testoMessaggio);
            testoMessaggio.Dock = DockStyle.Fill;

            var oDoc = new DocumentInfo
            {
                FileExtension = "pdf",
                FileName = "Convocazione assemblea",
                BodyText = _assemblea.LetteraConvocazione
            };
            getTestoMessaggioUIService().GetDocumentiNew().Add(oDoc);

            loadData();

            // Tipo Assemblea
            DataSourceHelper.PopulateCombo(cboTipoContatto, Conversione.EnumToList<TipoModalitaConvocazione>());
            cboTipoContatto_ValueChanged(null,null);
        }
        private DocumentInfo pGetLetteraCompilataBase(string testoLettera, Azienda azienda, string descrizione, ParametriStampaUnione parametri)
        {
            var merge = _messaggisticaService.MailMerge(testoLettera, parametri, azienda.ID);

            if (string.IsNullOrEmpty(descrizione))
                descrizione = string.Format("Documento {0:yyyy-dd-M--HH-mm-ss}", DateTime.Now);

            byte[] bytes = Conversione.ToByteArray(merge);
            return new DocumentInfo
            {
                Body = bytes,
                FileName = Conversione.ToFileName(descrizione),
                Length = bytes.Length,
                BodyText = Conversione.ToString(bytes),
                FileExtension = ".rtf"
            };
        }
 public DocumentInfo GetLetteraCompilata(int idModelloLettera, ParametriStampaUnione parametri)
 {
     try
     {
         var result = GetServiceClient().GetLetteraCompilata(idModelloLettera, parametri, GetUserInfo());
         CloseService();
         return result;
     }
     catch (OutOfMemoryException ex)
     {
         _log.WarnFormat("Errore di memoria - {0} - idModello:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
         MessageBox.Show("Il modello di lettera è troppo grande la memoria disponibile non è sufficiente per eseguire l'operazione");
         return new DocumentInfo();
     }
     catch (Exception ex)
     {
         _log.ErrorFormat("Errore inaspettato - {0} - idModello:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
         MessageBox.Show($"La funzione non può essere eseguita.{Environment.NewLine}Si prega di riprovare");
         return new DocumentInfo();
     }
 }
Beispiel #15
0
 private void letteraConvocazione_OnApplyModel(object sender, EventArgs e)
 {
     var parametri = new ParametriStampaUnione { IdCondominio = _condominio.ID, IdAssemblea = _assemblea.ID };
     _letteraConvocazioneUC.LetteraConvocazione = getModelloLetteraService().MailMerge(_letteraConvocazioneUC.LetteraConvocazione, parametri);
 }
Beispiel #16
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;
            }
        }
Beispiel #17
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;
            }
        }
        public DialogResult OpenDialogFormTestoMessaggioPersone(IList<PersonaContattoDTO> personeSelezionate, string contattoMittente, ParametriStampaUnione parametriLettera, string nomeFile, DocumentoFilter filterDocumenti, bool sceltaModello)
        {
            DialogResult result;
            using (var form = new TestoMessaggioPersoneUI(personeSelezionate, contattoMittente, parametriLettera, sceltaModello, _manageDocumentService, _modelloLetteraService))
            {
                result = form.ShowDialog();

                _modelloLettera = form.GetModelloLettera();
                _emailRapportino = form.GetEmailRapportino();
                _testoMessaggio = form.GetTestoMessaggio();
                _oggettoMessaggio = form.GetOggetto();
                _invioVeloce = form.GetInvioVeloce();
                _messageType = form.GetMessageType();
                _colore = form.GetColore();
                _apriFile = form.GetApriFile();
                _aggregazione = form.GetAggregazioneDocumenti();
                _formatoDocumento = form.GetFormatoDocumento();
                _accodaMessaggio = form.GetAccodaMessaggio();
                _numeraPagine = form.GetNumeraPagine();
                _fronteRetro = form.GetFronteRetro();
                _primaPaginaMittente = form.GetPrimaPaginaMittente();
                _mittente = form.GetMittente();
                _tipoMessaggio = form.GetTipoMessaggio();
                _documenti = form.GetDocumenti();
                _documentiNew = form.GetDocumentiNew();
                _personeSelezionate = form.GetPersoneSelezionate();
                _parametriInvioLettera = new ParametriInvioLettera { Tipo = form.GetMessageType() };
                _aggiornaContatti = false;

            }
            Application.DoEvents();
            return result;
        }
        public DialogResult OpenDialogFormInvioMessaggio(TipoMessaggio? tipoMessaggio, PersonaDTO destinatario, ModelloLetteraDTO modelloLettera, string contattoMittente, ParametriStampaUnione parametriLettera)
        {
            var destinatari = new List<PersonaDTO>();
            if(destinatario != null)
                destinatari.Add(destinatario);

            return OpenDialogFormInvioMessaggio(tipoMessaggio, destinatari, modelloLettera, contattoMittente, parametriLettera);
            //DialogResult result;
            //using (var form = new InvioMessaggioUI(tipoMessaggio, contattoMittente, parametriLettera))
            //{
            //    if (destinatario != null)
            //        form.LoadPersone(new List<int> { destinatario.ID });
            //    if (modelloLettera != null)
            //        form.LoadModello(modelloLettera);

            //    if (!string.IsNullOrEmpty(_customText))
            //        form.ShowInserisciTestoCustom(_customText);
            //    if (!string.IsNullOrEmpty(_userInfoText))
            //        form.ShowInserisciUserInfo(_userInfoText);

            //    result = form.ShowDialog();

            //    _contattiSelected = form.GetContattiSelected();
            //     _contattoDaContattare = form.GetContattoDaContattare();
            //    _personaDaContattare = form.GetPersonaDaContattare();
            //    _modelloLettera = form.GetModelloLettera();
            //    _emailRapportino = form.GetEmailRapportino();
            //    _testoMessaggio = form.GetTestoMessaggio();
            //    _oggettoMessaggio = form.GetOggettoMessaggio();
            //    _invioVeloce = form.GetInvioVeloce();
            //    _messageType = form.GetMessageType();
            //    _colore = form.GetColore();
            //    _apriFile = form.GetApriFile();
            //    _pdfUnico = form.GetPdfUnico();
            //    _accodaMessaggio = form.GetAccodaMessaggio();
            //    _numeraPagine = form.GetNumeraPagine();
            //    _fronteRetro = form.GetFronteRetro();
            //    _primaPaginaMittente = form.GetPrimaPaginaMittente();
            //    _mittente = form.GetMittente();
            //    _tipoMessaggio = form.GetTipoMessaggio();
            //    _documenti = form.GetDocumenti();
            //    _documentiNew = form.GetDocumentiNew();
            //    _parametriInvioLettera = new ParametriInvioLettera();
            //    _aggiornaContatti = form.GetAggiornaContatti(); 

            //    form.CloseForm();
            //}

            //Application.DoEvents();
            //return result;
        }
Beispiel #20
0
        public string ApplicaStampaUnione(string messaggio, ParametriStampaUnione parametriStampaUnione, int idAzienda)
        {
            try
            {
                if (!string.IsNullOrEmpty(messaggio))
                {
                    messaggio = messaggio.Replace("&gt;&gt;", string.Empty).Replace("&lt;&lt;", "$");

                    var persona = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdPersona.GetValueOrDefault(), false);
                    if(persona == null && parametriStampaUnione.IdPersonaAttiva > 0)
                        persona = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdPersonaAttiva.GetValueOrDefault(), false);

                    var condominio = _daoFactory.GetCondominioDao().Find(parametriStampaUnione.IdCondominio.GetValueOrDefault(), false);
                    var importo = parametriStampaUnione.Importo;
                    var importoTotale = parametriStampaUnione.ImportoTotale;
                    var tipoIndirizzo = parametriStampaUnione.TipoIndirizzo;

                    DatiBancariCondomini datiBancari = null;
                    if (parametriStampaUnione.IdDatiBancari > 0)
                    {
                        datiBancari = _daoFactory.GetDatiBancariCondominiDao().Find(parametriStampaUnione.IdDatiBancari.GetValueOrDefault(), false);
                        if (condominio == null)
                            condominio = datiBancari.CondominioRiferimento;
                    }
                    else if (condominio != null)
                        datiBancari = condominio.DatiBancariPrincipale;

                    //===============================================
                    // Azienda
                    //===============================================
                    var amministratore = string.Empty;
                    var codiceFiscaleAmministratore = string.Empty;
                    var partitaIvaAmministratore = string.Empty;
                    var azienda = _daoFactory.GetAziendaDao().GetById(idAzienda, false);
                    if (azienda.Amministratore != null)
                    {
                        amministratore = azienda.Amministratore.PersonaRiferimento.DisplayName;
                        codiceFiscaleAmministratore = azienda.Amministratore.PersonaRiferimento.CodiceFiscale;
                        partitaIvaAmministratore = azienda.Amministratore.PersonaRiferimento.PartitaIva;
                    }

                    //===============================================
                    // Fornitore
                    //===============================================
                    var fornitore = string.Empty;
                    if (parametriStampaUnione.IdFornitore != null)
                    {
                        var forn = _daoFactory.GetFornitoreDao().Find(parametriStampaUnione.IdFornitore.GetValueOrDefault(), false);
                        if (forn != null)
                        {
                            fornitore = forn.DisplayName;
                        }
                    }

                    //===============================================
                    // Responsabile
                    //===============================================
                    var responsabile = string.Empty;
                    if (parametriStampaUnione.IdResponsabile != null)
                    {
                        var resp = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdResponsabile.GetValueOrDefault(), false);
                        if (resp != null)
                        {
                            responsabile = resp.DisplayName;
                        }
                    }

                    //===============================================
                    // Incaricato
                    //===============================================
                    var incaricato = string.Empty;
                    if (parametriStampaUnione.IdIncaricatoAttivita != null)
                    {
                        var inc = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdIncaricatoAttivita.GetValueOrDefault(), false);
                        if (inc != null)
                        {
                            incaricato = inc.DisplayName;
                        }
                    }

                    //===============================================
                    // Persona
                    //===============================================
                    var nome = string.Empty;
                    var cognome = string.Empty;
                    var nominativo = string.Empty;
                    var indirizzo = string.Empty;
                    var cap = string.Empty;
                    var comune = string.Empty;
                    var provincia = string.Empty;
                    var presso = string.Empty;
                    var localita = string.Empty;
                    var localitaCompleta = string.Empty;
                    var ragioneSociale = string.Empty;
                    var username = string.Empty;
                    var password = string.Empty;

                    if (persona != null)
                    {
                        if (!string.IsNullOrEmpty(persona.Nome))
                            nome = persona.Nome;
                        if (!string.IsNullOrEmpty(persona.Cognome))
                            cognome = persona.Cognome;
                        if (string.IsNullOrEmpty(cognome) && !string.IsNullOrEmpty(persona.RagioneSociale))
                            cognome = persona.RagioneSociale;
                        if (!string.IsNullOrEmpty(persona.RagioneSociale))
                            ragioneSociale = persona.RagioneSociale;

                        if (tipoIndirizzo == TipoIndirizzo.Residenza || persona.Recapito == null)
                        {
                            if (persona.IndirizzoResidenza != null)
                            {
                                cap = persona.IndirizzoResidenza.Cap;
                                presso = persona.IndirizzoResidenza.Presso;
                                indirizzo = persona.IndirizzoResidenza.GetIndirizzoCompleto();
                                if (persona.IndirizzoResidenza.Comune != null)
                                {
                                    localita = persona.IndirizzoResidenza.Comune.Descrizione;
                                    comune = persona.IndirizzoResidenza.Comune.Descrizione;
                                    provincia = persona.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice;
                                }

                                if (!string.IsNullOrEmpty(persona.IndirizzoResidenza.Localita))
                                    localitaCompleta = $"{persona.IndirizzoResidenza.Localita} - ";
                                localitaCompleta += persona.IndirizzoResidenza.Cap;
                                if (!string.IsNullOrEmpty(persona.IndirizzoResidenza.Localita))
                                    localitaCompleta += " " + persona.IndirizzoResidenza.Localita + " - ";
                                if (persona.IndirizzoResidenza.Comune != null)
                                    localitaCompleta += " " + persona.IndirizzoResidenza.Comune.Descrizione + " " + persona.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice;
                            }
                        }
                        else if (persona.Recapito != null)
                        {
                            cap = persona.Recapito.Cap;
                            presso = persona.Recapito.Presso;
                            indirizzo = persona.Recapito.GetIndirizzoCompleto();
                            if (persona.Recapito.Comune != null)
                            {
                                localita = persona.Recapito.Comune.Descrizione;
                                comune = persona.Recapito.Comune.Descrizione;
                                provincia = persona.Recapito.Comune.ProvinciaAppartenenza.Codice;
                            }

                            if (!string.IsNullOrEmpty(persona.Recapito.Localita))
                                localitaCompleta = $"{persona.Recapito.Localita} - ";
                            localitaCompleta += persona.Recapito.Cap;
                            if (persona.Recapito.Comune != null)
                                localitaCompleta += " " + persona.Recapito.Comune.Descrizione + " " + persona.Recapito.Comune.ProvinciaAppartenenza.Codice;
                        }

                        if (persona.DatiAutenticazione != null)
                        {
                            username = persona.DatiAutenticazione.Username;
                            password = persona.DatiAutenticazione.Password;
                        }

                        if (!string.IsNullOrEmpty(presso))
                            presso = $"c/o {presso}";
                    }

                    // ===========================================
                    //  Unità immobiliare
                    // ===========================================
                    var descrizioneUnitaImmobiliare = string.Empty;
                    var pianoUnitaImmobiliare = string.Empty;
                    var progressivoUnitaImmobiliare = string.Empty;
                    var internoUnitaImmobiliare = string.Empty;
                    var indirizzoUnitaImmobiliare = string.Empty;
                    var gruppoStabile = string.Empty;
                    var stabile = string.Empty;
                    var tipoUnitaImmobiliare = string.Empty;

                    if (parametriStampaUnione.IdUnitaImmobiliare == null && parametriStampaUnione.IdPersona != null && parametriStampaUnione.IdCondominio != null)
                    {
                        var soggetto = _daoFactory.GetSoggettoCondominioDao().GetByCondominioPersona(parametriStampaUnione.IdCondominio.Value, parametriStampaUnione.IdPersona.Value).FirstOrDefault();
                        if (soggetto != null)
                            parametriStampaUnione.IdUnitaImmobiliare = soggetto.UnitaImmobiliare.ID;
                    }

                    if (parametriStampaUnione.IdUnitaImmobiliare != null)
                    {
                        var unitaImmobiliare = _daoFactory.GetUnitaImmobiliareDao().Find(parametriStampaUnione.IdUnitaImmobiliare.GetValueOrDefault(), false);
                        if (unitaImmobiliare != null)
                        {
                            descrizioneUnitaImmobiliare = unitaImmobiliare.Descrizione;
                            pianoUnitaImmobiliare = unitaImmobiliare.Piano;
                            progressivoUnitaImmobiliare = unitaImmobiliare.Ordine.ToString();
                            internoUnitaImmobiliare = unitaImmobiliare.InternoCompleto;

                            if(unitaImmobiliare.TipoUnitaImmobiliare != null)
                                tipoUnitaImmobiliare = unitaImmobiliare.TipoUnitaImmobiliare.Descrizione;

                            if (unitaImmobiliare.GruppoStabileRiferimento?.Indirizzo != null)
                                indirizzoUnitaImmobiliare = unitaImmobiliare.GruppoStabileRiferimento.Indirizzo.DisplayNameArray.FirstOrDefault();

                            if (unitaImmobiliare.GruppoStabileRiferimento != null)
                            {
                                gruppoStabile = unitaImmobiliare.GruppoStabileRiferimento.Descrizione;
                                stabile = unitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.Descrizione;
                            }

                            if (persona != null)
                            {
                                var soggettoCondominio = unitaImmobiliare.Soggetti.FirstOrDefault(item => item.Persona != null && item.Persona.ID == persona.ID);
                                if (!string.IsNullOrEmpty(soggettoCondominio?.Descrizione))
                                    nominativo = soggettoCondominio.Descrizione;
                            }
                        }
                    }

                    // ===========================================
                    //  Da Contattare
                    // ===========================================
                    var telefonoDaContattare = string.Empty;
                    if (!string.IsNullOrEmpty(parametriStampaUnione.TelefonoDaContattare))
                        telefonoDaContattare = parametriStampaUnione.TelefonoDaContattare;

                    // ===========================================
                    //  Attività
                    // ===========================================
                    var descrizione = string.Empty;
                    var segnalatoreProblema = string.Empty;
                    if (!string.IsNullOrEmpty(parametriStampaUnione.Descrizione))
                        descrizione = parametriStampaUnione.Descrizione;
                    if (parametriStampaUnione.IdPersonaRichiedente != null)
                    {
                        var personaRichiedente = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdPersonaRichiedente.Value, false);
                        if (personaRichiedente != null)
                        {
                            segnalatoreProblema = personaRichiedente.DisplayName;
                        }
                    }

                    // ===========================================
                    //  Condominio
                    // ===========================================
                    var codiceCondominio = string.Empty;
                    var descrizioneCondominio = string.Empty;
                    var codiceFiscaleCondominio = string.Empty;
                    var indirizzoCondominio = string.Empty;
                    var localitaCondominio = string.Empty;

                    var ibanCondominio = string.Empty;
                    var contoCorrente = string.Empty;
                    var cin = string.Empty;
                    var abi = string.Empty;
                    var cab = string.Empty;
                    var banca = string.Empty;

                    var capCondominio = string.Empty;
                    var comuneCondominio = string.Empty;
                    var provinciaCondominio = string.Empty;
                    var foglioCatastale = string.Empty;
                    var mappaleCatastale = string.Empty;
                    var codiceCatastale = string.Empty;
                    var responsabileCondominio = string.Empty;

                    if (datiBancari != null)
                    {
                        contoCorrente = datiBancari.ContoCorrente;
                        cin = datiBancari.Cin;
                        abi = datiBancari.Abi;
                        cab = datiBancari.Cab;
                        ibanCondominio = datiBancari.Iban;

                        var abiCab = _daoFactory.GetAbiCabDao().Find(new AbiCabId(abi, cab), false);
                        banca = abiCab != null ? $"{abiCab.DescrizioneAbi} - {abiCab.DescrizioneCab}"
                            : datiBancari.DisplayName;
                    }

                    if (condominio != null)
                    {
                        codiceCondominio = condominio.Codice;
                        descrizioneCondominio = condominio.Descrizione;
                        foglioCatastale = condominio.FoglioCatastale.ToString();
                        mappaleCatastale = condominio.MappaleCatastale.ToString();

                        if(condominio.Responsabile != null)
                            responsabileCondominio = condominio.Responsabile.DisplayName;

                        codiceFiscaleCondominio = condominio.CodiceFiscale;
                        if (condominio.Indirizzo != null)
                        {
                            indirizzoCondominio = condominio.Indirizzo.GetIndirizzoCompleto();
                            capCondominio = condominio.Indirizzo.Cap;
                            if (condominio.Indirizzo.Comune != null)
                            {
                                comuneCondominio = condominio.Indirizzo.Comune.Descrizione;
                                localitaCondominio = condominio.Indirizzo.Comune.Descrizione;
                                provinciaCondominio = condominio.Indirizzo.Comune.ProvinciaAppartenenza.Codice;
                                codiceCatastale = condominio.Indirizzo.Comune.CodiceCatastale;
                            }
                        }
                    }

                    // ===========================================
                    //  Esercizio
                    // ===========================================
                    var esercizio = string.Empty;
                    if (parametriStampaUnione.IdEsercizio != null)
                    {
                        var es = _daoFactory.GetEsercizioDao().Find(parametriStampaUnione.IdEsercizio.GetValueOrDefault(), false);
                        esercizio = es.DisplayName;
                    }

                    // ===========================================
                    //  Importi
                    // ===========================================
                    var importoLettere = string.Empty;
                    if (importo != null)
                        importoLettere = Library.BusinessData.CifreLettere.CalcolaLettere(importo.Value);

                    var importoTotaleLettere = string.Empty;
                    if (importoTotale != null)
                        importoTotaleLettere = Library.BusinessData.CifreLettere.CalcolaLettere(importoTotale.Value);

                    // ===========================================
                    //  Date
                    // ===========================================
                    var dataIniziale = parametriStampaUnione.DataIniziale;
                    var dataFinale = parametriStampaUnione.DataFinale;
                    var anno = parametriStampaUnione.Anno;
                    if (parametriStampaUnione.Anno != null)
                    {
                        if (dataIniziale == null)
                            dataIniziale = new DateTime(parametriStampaUnione.Anno.GetValueOrDefault(), 1, 1);
                        if (dataFinale == null)
                            dataFinale = new DateTime(parametriStampaUnione.Anno.GetValueOrDefault(), 12, 31);
                    }

                    if (!string.IsNullOrEmpty(messaggio) && messaggio.Contains("$"))
                    {
                        var memoryEngine = NVelocityEngineFactory.CreateNVelocityMemoryEngine(true);
                        System.Collections.IDictionary context = new System.Collections.Hashtable();

                        context.Add("nome", nome);
                        context.Add("cognome", cognome);
                        context.Add("ragioneSociale", ragioneSociale);
                        context.Add("indirizzo", indirizzo);
                        context.Add("presso", presso);
                        context.Add("localita", localita);
                        context.Add("localita-cap-citta-provincia", localitaCompleta);
                        context.Add("cap", cap);
                        context.Add("comune", comune);
                        context.Add("pr", provincia);

                        context.Add("descrizioneUnita", descrizioneUnitaImmobiliare);
                        context.Add("piano", pianoUnitaImmobiliare);
                        context.Add("interno", internoUnitaImmobiliare);
                        context.Add("ordineUnita", progressivoUnitaImmobiliare);
                        context.Add("tipoUnita", tipoUnitaImmobiliare);
                        context.Add("indirizzoUnita", indirizzoUnitaImmobiliare);
                        context.Add("scala", gruppoStabile);
                        context.Add("stabile", stabile);
                        context.Add("nominativo", nominativo);

                        context.Add("amministratore", amministratore);
                        context.Add("codiceFiscaleAmministratore", codiceFiscaleAmministratore);
                        context.Add("partitaIvaAmministratore", partitaIvaAmministratore);
                        context.Add("telefonoContattare", telefonoDaContattare);
                        context.Add("respCond", responsabileCondominio);
                        context.Add("fornitore", fornitore);
                        context.Add("responsabile", responsabile);
                        context.Add("incaricato", incaricato);
                        context.Add("username", username);
                        context.Add("password", password);

                        context.Add("codiceCondominio", codiceCondominio);
                        context.Add("condominio", descrizioneCondominio);
                        context.Add("esercizio", esercizio);
                        context.Add("iban", ibanCondominio);
                        context.Add("contoCorrente", contoCorrente);
                        context.Add("cin", cin);
                        context.Add("abi", abi);
                        context.Add("cab", cab);
                        context.Add("banca", banca);
                        context.Add("capCondominio", capCondominio);
                        context.Add("comuneCondominio", comuneCondominio);
                        context.Add("provinciaCondominio", provinciaCondominio);
                        context.Add("foglioCatastale", foglioCatastale);
                        context.Add("mappaleCatastale", mappaleCatastale);
                        context.Add("codiceCatastale", codiceCatastale);

                        context.Add("codiceFiscaleCondominio", codiceFiscaleCondominio);
                        context.Add("indirizzoCondominio", indirizzoCondominio);
                        context.Add("localitaCondominio", localitaCondominio);

                        context.Add("descrizioneIntervento", descrizione);
                        context.Add("segnalatoreProblema", segnalatoreProblema);

                        if (importo != null)
                        {
                            context.Add("importo", parametriStampaUnione.Importo.GetValueOrDefault().ToString("#,##0.00"));
                            context.Add("importoLettere", importoLettere);
                        }
                        if (importoTotale != null)
                        {
                            context.Add("importoTotale", importoTotale.GetValueOrDefault().ToString("#,##0.00"));
                            context.Add("importoTotaleLettere", importoTotaleLettere);
                        }

                        context.Add("anno", anno.GetValueOrDefault());
                        context.Add("dataIniziale", dataIniziale.GetValueOrDefault().ToShortDateString());
                        context.Add("dataFinale", dataFinale.GetValueOrDefault().ToShortDateString());

                        context.Add("detrazione", parametriStampaUnione.Detrazione.GetValueOrDefault());

                        var messaggioStampaUnione = memoryEngine.Process(context, messaggio);

                        return messaggioStampaUnione;
                    }

                    if (!string.IsNullOrEmpty(messaggio) && (messaggio.Contains("<<") || messaggio.Contains("&lt;&lt;")))
                    {
                        var messaggioStampaUnione = messaggio.Replace(@"<<nome>>", nome).
                                                                Replace("&lt;&lt;nome&gt;&gt;", nome).
                                                                Replace("<<cognome>>", cognome).
                                                                Replace("&lt;&lt;cognome&gt;&gt;", cognome).
                                                                Replace("<<ragioneSociale>>", ragioneSociale).
                                                                Replace("&lt;&lt;ragioneSociale&gt;&gt;", ragioneSociale).
                                                                Replace("<<indirizzo>>", indirizzo).
                                                                Replace("&lt;&lt;indirizzo&gt;&gt;", indirizzo).
                                                                Replace("<<presso>>", presso).
                                                                Replace("&lt;&lt;presso&gt;&gt;", presso).
                                                                Replace("<<localita>>", localita).
                                                                Replace("&lt;&lt;localita&gt;&gt;", localita).
                                                                Replace("<<localita-cap-citta-provincia>>", localitaCompleta).
                                                                Replace("&lt;&lt;localita-cap-citta-provincia&gt;&gt;", localitaCompleta).

                                                                Replace("<<descrizioneUnita>>", descrizioneUnitaImmobiliare).
                                                                Replace("&lt;&lt;descrizioneUnita&gt;&gt;", descrizioneUnitaImmobiliare).

                                                                Replace("<<piano>>", pianoUnitaImmobiliare).
                                                                Replace("&lt;&lt;piano&gt;&gt;", pianoUnitaImmobiliare).
                                                                Replace("<<interno>>", internoUnitaImmobiliare).
                                                                Replace("&lt;&lt;interno&gt;&gt;", internoUnitaImmobiliare).
                                                                Replace("<<ordineUnita>>", progressivoUnitaImmobiliare).
                                                                Replace("&lt;&lt;ordineUnita&gt;&gt;", progressivoUnitaImmobiliare).
                                                                Replace("<<tipoUnita>>", tipoUnitaImmobiliare).
                                                                Replace("&lt;&lt;tipoUnita&gt;&gt;", tipoUnitaImmobiliare).
                                                                Replace("<<indirizzoUnita>>", indirizzoUnitaImmobiliare).
                                                                Replace("&lt;&lt;indirizzoUnita&gt;&gt;", indirizzoUnitaImmobiliare).
                                                                Replace("<<scala>>", gruppoStabile).
                                                                Replace("&lt;&lt;scala&gt;&gt;", gruppoStabile).
                                                                Replace("<<stabile>>", stabile).
                                                                Replace("&lt;&lt;stabile&gt;&gt;", stabile).
                                                                Replace("<<nominativo>>", nominativo).
                                                                Replace("&lt;&lt;nominativo&gt;&gt;", nominativo).

                                                                Replace("<<cap>>", cap).
                                                                Replace("&lt;&lt;cap&gt;&gt;", cap).
                                                                Replace("<<comune>>", comune).
                                                                Replace("&lt;&lt;comune&gt;&gt;", comune).
                                                                Replace("<<pr>>", provincia).
                                                                Replace("&lt;&lt;pr&gt;&gt;", provincia).

                                                                Replace("<<amministratore>>", amministratore).
                                                                Replace("&lt;&lt;amministratore&gt;&gt;", amministratore).
                                                                Replace("<<codiceFiscaleAmministratore>>", codiceFiscaleAmministratore).
                                                                Replace("&lt;&lt;codiceFiscaleAmministratore&gt;&gt;", codiceFiscaleAmministratore).
                                                                Replace("<<partitaIvaAmministratore>>", partitaIvaAmministratore).
                                                                Replace("&lt;&lt;partitaIvaAmministratore&gt;&gt;", partitaIvaAmministratore).
                                                                Replace("<<telefonoContattare>>", telefonoDaContattare).
                                                                Replace("&lt;&lt;telefonoContattare&gt;&gt;", telefonoDaContattare).
                                                                Replace("<<fornitore>>", fornitore).
                                                                Replace("&lt;&lt;fornitore&gt;&gt;", fornitore).
                                                                Replace("<<responsabile>>", responsabile).
                                                                Replace("&lt;&lt;responsabile&gt;&gt;", responsabile).
                                                                Replace("<<incaricato>>", responsabile).
                                                                Replace("&lt;&lt;incaricato&gt;&gt;", responsabile).
                                                                Replace("<<respCond>>", responsabileCondominio).
                                                                Replace("&lt;&lt;respCond&gt;&gt;", responsabileCondominio).

                                                                Replace("<<descrizioneIntervento>>", descrizione).
                                                                Replace("&lt;&lt;descrizioneIntervento&gt;&gt;", descrizione).
                                                                Replace("<<segnalatoreProblema>>", segnalatoreProblema).
                                                                Replace("&lt;&lt;segnalatoreProblema&gt;&gt;", segnalatoreProblema).

                                                                Replace("<<username>>", username).
                                                                Replace("&lt;&lt;username&gt;&gt;", username).
                                                                Replace("<<password>>", password).
                                                                Replace("&lt;&lt;password&gt;&gt;", password).

                                                                Replace("<<contoCorrente>>", contoCorrente).
                                                                Replace("&lt;&lt;contoCorrente&gt;&gt;", contoCorrente).
                                                                Replace("<<cin>>", cin).
                                                                Replace("&lt;&lt;cin&gt;&gt;", cin).
                                                                Replace("<<abi>>", abi).
                                                                Replace("&lt;&lt;abi&gt;&gt;", abi).
                                                                Replace("<<cab>>", cab).
                                                                Replace("&lt;&lt;cab&gt;&gt;", cab).
                                                                Replace("<<banca>>", banca).
                                                                Replace("&lt;&lt;banca&gt;&gt;", banca).
                                                                Replace("<<capCondominio>>", capCondominio).
                                                                Replace("&lt;&lt;capCondominio&gt;&gt;", capCondominio).
                                                                Replace("<<comuneCondominio>>", provinciaCondominio).
                                                                Replace("&lt;&lt;comuneCondominio&gt;&gt;", provinciaCondominio).
                                                                Replace("<<provinciaCondominio>>", provinciaCondominio).
                                                                Replace("&lt;&lt;provinciaCondominio&gt;&gt;", provinciaCondominio).
                                                                Replace("<<foglioCatastale>>", foglioCatastale).
                                                                Replace("&lt;&lt;foglioCatastale&gt;&gt;", foglioCatastale).
                                                                Replace("<<mappaleCatastale>>", mappaleCatastale).
                                                                Replace("&lt;&lt;mappaleCatastale&gt;&gt;", mappaleCatastale).
                                                                Replace("<<codiceCatastale>>", mappaleCatastale).
                                                                Replace("&lt;&lt;codiceCatastale&gt;&gt;", codiceCatastale).

                                                                Replace("<<esercizio>>", esercizio).
                                                                Replace("&lt;&lt;esercizio&gt;&gt;", esercizio).

                                                                Replace("<<codiceCondominio>>", codiceCondominio).
                                                                Replace("&lt;&lt;codiceCondominio&gt;&gt;", codiceCondominio).
                                                                Replace("<<condominio>>", descrizioneCondominio).
                                                                Replace("&lt;&lt;condominio&gt;&gt;", descrizioneCondominio).
                                                                Replace("<<iban>>", ibanCondominio).
                                                                Replace("&lt;&lt;iban&gt;&gt;", ibanCondominio).
                                                                Replace("<<codiceFiscaleCondominio>>", codiceFiscaleCondominio).
                                                                Replace("&lt;&lt;codiceFiscaleCondominio&gt;&gt;", codiceFiscaleCondominio).
                                                                Replace("<<indirizzoCondominio>>", indirizzoCondominio).
                                                                Replace("&lt;&lt;indirizzoCondominio&gt;&gt;", indirizzoCondominio).
                                                                Replace("<<localitaCondominio>>", localitaCondominio).
                                                                Replace("&lt;&lt;localitaCondominio&gt;&gt;", localitaCondominio).
                                                                Replace("<<importo>>", parametriStampaUnione.Importo.GetValueOrDefault().ToString("#,##0.00")).
                                                                Replace("&lt;&lt;importo&gt;&gt;", parametriStampaUnione.Importo.GetValueOrDefault().ToString("#,##0.00")).
                                                                Replace("<<importoLettere>>", importoLettere).
                                                                Replace("&lt;&lt;importoLettere&gt;&gt;", importoLettere).
                                                                Replace("<<importoTotale>>", parametriStampaUnione.ImportoTotale.GetValueOrDefault().ToString("#,##0.00")).
                                                                Replace("&lt;&lt;importoTotale&gt;&gt;", parametriStampaUnione.ImportoTotale.GetValueOrDefault().ToString("#,##0.00")).
                                                                Replace("<<importoTotaleLettere>>", importoTotaleLettere).
                                                                Replace("&lt;&lt;importoTotaleLettere&gt;&gt;", importoTotaleLettere).
                                                                Replace("<<dataIniziale>>", dataIniziale.GetValueOrDefault().ToShortDateString()).
                                                                Replace("&lt;&lt;dataIniziale&gt;&gt;", dataIniziale.GetValueOrDefault().ToShortDateString()).
                                                                Replace("<<dataFinale>>", dataFinale.GetValueOrDefault().ToShortDateString()).
                                                                Replace("&lt;&lt;dataFinale&gt;&gt;", dataFinale.GetValueOrDefault().ToShortDateString()).
                                                                Replace("<<anno>>", dataFinale.GetValueOrDefault().ToShortDateString()).
                                                                Replace("&lt;&lt;anno&gt;&gt;", dataFinale.GetValueOrDefault().ToShortDateString()).
                                                                Replace("<<detrazione>>", parametriStampaUnione.Detrazione.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)).
                                                                Replace("&lt;&lt;detrazione&gt;&gt;", parametriStampaUnione.Detrazione.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));

                        return messaggioStampaUnione;
                    } 

                }
                return messaggio;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nella stampa unione - {0}  - messaggio: {1} - idPersona: {2}", ex, Utility.GetMethodDescription(), messaggio, parametriStampaUnione.IdPersona.GetValueOrDefault());
                throw;
            }
        }
Beispiel #21
0
        private void btnPreparaLocale_Click(object sender, EventArgs e)
        {
            saveFileDialogLocale.FileName = _condominio.DisplayName+"."+saveFileDialogLocale.DefaultExt;
            if (saveFileDialogLocale.ShowDialog(this) == DialogResult.OK)
            {
                if (saveFileDialogLocale.FileName != string.Empty)
                {
                    var frmPreparaLocale = new PreparaLocale(getModelloLetteraService());
                    if (frmPreparaLocale.ShowDialog(this)==DialogResult.OK )
                    {
                        var iConvocazione = (int)frmPreparaLocale.optConvocazione.Value;
                        if (frmPreparaLocale.modelliLettera.Enabled)
                        {
                            try
                            {
                                if (iConvocazione == 0)
                                {
                                    _assemblea.VerbalePrimaConvocazione = Conversione.ToString(new MemoryStream((getModelloLetteraService().GetLettera(((ModelloLetteraDTO) frmPreparaLocale.modelliLettera.SelectedItem.ListObject).Id).Body)));
                                    var parametri = new ParametriStampaUnione { IdCondominio = _condominio.ID, IdAssemblea = _assemblea.ID };
                                    _assemblea.VerbalePrimaConvocazione = getModelloLetteraService().MailMerge(_assemblea.VerbalePrimaConvocazione, parametri);
                                }
                                else
                                {
                                    _assemblea.VerbaleSecondaConvocazione = Conversione.ToString(new MemoryStream((getModelloLetteraService().GetLettera(((ModelloLetteraDTO) frmPreparaLocale.modelliLettera.SelectedItem.ListObject).Id).Body)));
                                    var parametri = new ParametriStampaUnione { IdCondominio = _condominio.ID, IdAssemblea = _assemblea.ID };
                                    _assemblea.VerbaleSecondaConvocazione = getModelloLetteraService().MailMerge(_assemblea.VerbaleSecondaConvocazione, parametri);
                                }
                            }
                            catch (Exception ex)
                            {
                                CommonMessages.DisplayWarning("Il modello selezionato presenta un problema o è vuoto. Selezionare un altro modello o modificare il modello selezionato quindi riprovare.");
                            }
                        }
                        var sPassword = frmPreparaLocale.txtPassword.Text;

                        var form =new ExecuteLoadDataObjectAsync<bool>("Creazione del pacchetto dati locale in corso....." + Environment.NewLine +"Si prega di attendere.");
                        Func<bool> saveTolocale = () => toLocale(_assemblea, _condominio, _esercizio, iConvocazione, saveFileDialogLocale.FileName, sPassword);
                        form.LoadData(saveTolocale);
                        form.ShowDialog();

                        _assemblea.OffLine = true;
                        _assemblea.OffLinePassword = sPassword;
                        ExecuteSave(); 
                        loadData(_assemblea);
                    }
                }
            }
        }
Beispiel #22
0
        public IList<RisultatoInvioMessaggio> InvioMessaggio(int idAzienda, PersonaMessaggioDTO personaMessaggioDTO, Condominio condominio, int? idUnitaImmobiliare, int? idFornitore, int? idResponsabile, int? idIncaricatoAttivita, MotivoMessaggio motivoMessaggio, string oggetto, string testo, IList<string> destinatari, string mittente, string emailRapportino, IList<DocumentInfo> allegati, ParametriInvioLettera parametriInvioLettera)
        {
            // =========================================================
            //  Disabilito l'invio asincrono per problemi di gestione con Sertea
            //  diversi messaggi non sono stati inviati bugid#3823
            // =========================================================
            parametriInvioLettera.Asincrono = false;

            var message = string.Empty;
            var invioRiuscito = false;
            Persona persona = null;
            if(personaMessaggioDTO != null)
                persona = _daoFactory.GetPersonaDao().Find(personaMessaggioDTO.ID, false);

            _persona = persona;
            _condominio = condominio;
            _motivoMessaggio = motivoMessaggio;
            _oggetto = oggetto;
            _testo = testo;
            _destinatari = destinatari;
            _mittente = mittente;
            _emailRapportino = emailRapportino;

            var results = new List<RisultatoInvioMessaggio>();
            var result = new eMessageResultSendSMS();
            try
            {
                var destinatariSend = new List<string>();
                if (destinatari.Count > 0 && !destinatari.All(string.IsNullOrEmpty))
                {
                    foreach (var item in destinatari)
                    {
                        if (!string.IsNullOrEmpty(item))
                        {
                            if (!item.Trim().StartsWith("+39"))
                                destinatariSend.Add("+39" + Library.Conversione.ToPhoneNumber(item));
                            else
                                destinatariSend.Add(Library.Conversione.ToPhoneNumber(item));
                        }
                    }

                    if (destinatariSend.Any())
                    {
                        // =====================================
                        // Applico la stampa unione
                        // =====================================
                        if (personaMessaggioDTO != null)
                        {
                            int? idCondominio = null;
                            if (condominio != null)
                                idCondominio = condominio.ID;

                            var parametri = new ParametriStampaUnione(persona.ID, idUnitaImmobiliare, idResponsabile, idIncaricatoAttivita, idFornitore, idCondominio, null, personaMessaggioDTO.TipoIndirizzo, personaMessaggioDTO.Importo, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
                            oggetto = _messagisticaService.ApplicaStampaUnione(oggetto, parametri, idAzienda);
                            testo = _messagisticaService.ApplicaStampaUnione(testo, parametri, idAzienda);
                        }

                        // =====================================
                        // Invio Messaggio
                        // =====================================
                        var credenziali = _configurationService.GetLoginInfo(idAzienda);

                        if (credenziali != null && !string.IsNullOrEmpty(credenziali.Value.Utente) && !string.IsNullOrEmpty(credenziali.Value.Password))
                        {
                            var userService = new it.emessage.users.Users();
                            var success = false;
                            try
                            {
                                var resultUsers = userService.Login(credenziali.Value.Utente, credenziali.Value.Password, null);
                                success = resultUsers.success;
                            }
                            catch (Exception ex)
                            {
                                _log.WarnFormat("Errore durante il controllo delle credenziali - {0} - username:{1} - password:{2} - azienda:{3}", ex, Library.Utility.GetMethodDescription(), credenziali.Value.Utente, credenziali.Value.Password, idAzienda);
                            }

                            if (success)
                            {
                                var service = new Sms {Timeout = 999999999};
                                var identificazioneMittente = _configurationService.GetIdentificazioneMittente(idAzienda, TipoMessaggio.Sms, TipoIndirizzo.Recapito);
                                if (!string.IsNullOrEmpty(identificazioneMittente.Email))
                                    emailRapportino += "," + identificazioneMittente.Email;

                                // Mittente
                                if (string.IsNullOrEmpty(mittente))
                                    mittente = identificazioneMittente.Nome;
                                if (!string.IsNullOrEmpty(mittente) && mittente.Length > 11)
                                    mittente = mittente.Substring(0, 11);

                                if (ConfigurationManager.AppSettings["IsTest"] != null && bool.Parse(ConfigurationManager.AppSettings["IsTest"]))
                                    destinatariSend = new List<string> {"+393382958239"};

                                var parameters = new List<OptionalParameters>
                                {
                                    new OptionalParameters
                                    {
                                        ParameterName = "NotificationEmail",
                                        ParameterValue = emailRapportino
                                    },
                                    new OptionalParameters
                                    {
                                        ParameterName = "DeliveryTime",
                                        ParameterValue = DateTime.Now.ToString()
                                    }
                                };

                                // ---------------------------------------
                                //  Invio NON Asincrono
                                // ---------------------------------------
                                if (!parametriInvioLettera.Asincrono)
                                {
                                    if (motivoMessaggio != MotivoMessaggio.ScadenzaContratto)
                                    {
                                        try
                                        {
                                            if (string.IsNullOrEmpty(parametriInvioLettera.Tipo))
                                                parametriInvioLettera.Tipo = "NORMAL";
                                            result = service.Send(credenziali.Value.Utente, credenziali.Value.Password, mittente, destinatariSend.ToArray(), testo, parametriInvioLettera.Tipo, parameters.ToArray());
                                        }
                                        catch (Exception ex)
                                        {
                                            _log.FatalFormat("Errore inaspettato durante l'invio del sms - INVIO DIRETTO - {0} - oggetto:{1} - destinatari:{2} - testo:{3} - azienda:{4} - tipo:{5} - parameters:{6} - mittente:{7} - utente:{8}", ex, Library.Utility.GetMethodDescription(), oggetto, destinatariSend.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), testo, idAzienda, parametriInvioLettera.Tipo, parameters.Aggregate(string.Empty, (current, param) => current + (param + ", ")), mittente, credenziali.Value.Utente);
                                            throw;
                                        }
                                    }

                                    _log.InfoFormat("Risultato invio sms:{0} - destinatario:{1} - azienda:{2}", result, destinatariSend.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda);

                                    if (result != null)
                                    {
                                        message += result;
                                        if (result.success)
                                            invioRiuscito = true;
                                    }
                                }

                                // ---------------------------------------
                                //  Invio Asincrono
                                // ---------------------------------------
                                else
                                {
                                    try
                                    {
                                        service.SendCompleted += serviceSendCompleted;
                                        service.SendAsync(credenziali.Value.Utente, credenziali.Value.Password, mittente, destinatariSend.ToArray(), testo, parametriInvioLettera.Tipo, parameters.ToArray());
                                    }
                                    catch (Exception ex)
                                    {
                                        _log.FatalFormat("Errore inaspettato durante l'invio del sms - INVIO ASINCRONO - {0} - oggetto:{1} - destinatari:{2} - testo:{3} - azienda:{4} - tipo:{5} - parameters:{6} - mittente:{7} - utente:{8}", ex, Library.Utility.GetMethodDescription(), oggetto, destinatariSend.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), testo, idAzienda, parametriInvioLettera.Tipo, parameters.Aggregate(string.Empty, (current, param) => current + (param + ", ")), mittente, credenziali.Value.Utente);
                                        throw;
                                    }

                                    // Se invio asincrono suppongo sia andato a buon fine
                                    invioRiuscito = true;
                                    results.Add(new RisultatoInvioMessaggio("N.D.", "N.D.", true, "Tutti gli sms sono stati accodati per l'invio", new DocumentInfo()));
                                }

                                if (invioRiuscito)
                                {
                                    // =====================================
                                    // Controllo rapportino
                                    // =====================================
                                    if (parametriInvioLettera.Tipo == "NOTIFICATION")
                                    {
                                        // Crea un trigger che parte tra 10 minuti e ogni minuto per 30 volte controlla le mail in arrivo.
                                        Trigger trigger = new PeriodicTrigger(DateTime.UtcNow.AddSeconds(10), null, TimeSpan.FromMinutes(1), 30);

                                        var jobSpec = new JobSpec("Controllo rapportino", "Verifica e salvataggio email contenente rapportino di conferma di invio SMS", "ConfermaRicezioneMessaggio", trigger);
                                        _scheduler.CreateJob(jobSpec, CreateJobConflictAction.Replace);

                                        _scheduler.Start();
                                    }
                                }
                            }
                            else
                            {
                                _log.WarnFormat("Credenziali non valide - {0} - username:{1} - password:{2} - azienda:{3}", Library.Utility.GetMethodDescription(), credenziali.Value.Utente, credenziali.Value.Password, idAzienda);
                            }
                        }
                        else
                        {
                            _log.FatalFormat("Errore inaspettato durante l'invio del sms. NON sono presenti le credenziali per l'invio del sms - {0} - oggetto:{1} - destinatari:{2} - azienda:{3}", Library.Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda);
                            message = "KO - Non sono definite le credenziali per l'invio dei sms";
                        }
                    }
                    else
                    {
                        _log.WarnFormat("Errore inaspettato durante l'invio del sms. NON è definito nessun destinatario - {0} - oggetto:{1} - destinatari:{2} - azienda:{3}", Library.Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda);
                        message = "KO - Non è definito nessun destinatario";
                    }

                }
                else
                {
                    _log.WarnFormat("Errore inaspettato durante l'invio del sms. NON è definito nessun destinatario - {0} - oggetto:{1} - destinatari:{2} - azienda:{3}", Library.Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda);
                    message = "KO - Non è definito nessun destinatario";
                }
            }
            catch (Exception ex)
            {
                invioRiuscito = false;
                _log.ErrorFormat("Errore inaspettato durante l'invio del sms - {0} - oggetto:{1} - destinatari:{2} - azienda:{3}", ex, Library.Utility.GetMethodDescription(), oggetto, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), idAzienda);
                message = "KO - Errore inaspettato durante l'invio del sms";
            }

            // ===================================================================
            //  Storicizzazione dei messaggi solo se l'invio non è stato asicrono
            // ===================================================================
            if (!parametriInvioLettera.Asincrono && motivoMessaggio != MotivoMessaggio.ScadenzaContratto && invioRiuscito)
            {
                results = elaboraResult(result, results);
            }
            else
            {
                if(!invioRiuscito)
                    results.Add(new RisultatoInvioMessaggio("KO", null, false, message, new DocumentInfo()));
            }

            return results;
        }
Beispiel #23
0
        public string MailMerge(string rtf, ParametriStampaUnione parametriStampaUnione, int idAzienda)
        {
            var condominio = _daoFactory.GetCondominioDao().Find(parametriStampaUnione.IdCondominio.GetValueOrDefault(), false);
            var tipoIndirizzo = parametriStampaUnione.TipoIndirizzo;
            var telefonoDaContattare = string.Empty;
            var segnalatoreProblema = string.Empty;

            Persona persona = null;
            if(parametriStampaUnione.IdPersona != null)
                persona = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdPersona.GetValueOrDefault(), false);
            if(persona == null)
                persona = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdPersonaAttiva.GetValueOrDefault(), false);

            DatiBancariCondomini datiBancari = null;
            if (parametriStampaUnione.IdDatiBancari > 0)
            {
                datiBancari = _daoFactory.GetDatiBancariCondominiDao().Find(parametriStampaUnione.IdDatiBancari.GetValueOrDefault(), false);
                if (condominio == null)
                    condominio = datiBancari.CondominioRiferimento;
            }
            else if (condominio != null)
                datiBancari = condominio.DatiBancariPrincipale;

            //===============================================
            // Azienda
            //===============================================
            var amministratore = string.Empty;
            var codiceFiscaleAmministratore = string.Empty;
            var partitaIvaAmministratore = string.Empty;
            var azienda = _daoFactory.GetAziendaDao().GetById(idAzienda, false);
            if (azienda.Amministratore != null)
            {
                amministratore = azienda.Amministratore.PersonaRiferimento.DisplayName;
                codiceFiscaleAmministratore = azienda.Amministratore.PersonaRiferimento.CodiceFiscale;
                partitaIvaAmministratore = azienda.Amministratore.PersonaRiferimento.PartitaIva;
            }

            // ===========================================
            //  Condominio
            // ===========================================
            var codiceCondominio = string.Empty;
            var descrizioneCondominio = string.Empty;
            var codiceFiscaleCondominio = string.Empty;
            var indirizzoCondominio = string.Empty;
            var localitaCondominio = string.Empty;

            var ibanCondominio = string.Empty;
            var contoCorrente = string.Empty;
            var cin = string.Empty;
            var abi = string.Empty;
            var cab = string.Empty;
            var banca = string.Empty;

            var capCondominio = string.Empty;
            var comuneCondominio = string.Empty;
            var provinciaCondominio = string.Empty;
            var foglioCatastale = string.Empty;
            var mappaleCatastale = string.Empty;
            var codiceCatastale = string.Empty;
            var responsabileCondominio = string.Empty;

            if (datiBancari != null)
            {
                contoCorrente = datiBancari.ContoCorrente;
                cin = datiBancari.Cin;
                abi = datiBancari.Abi;
                cab = datiBancari.Cab;
                ibanCondominio = datiBancari.Iban;

                var abiCab = _daoFactory.GetAbiCabDao().Find(new AbiCabId(abi, cab), false);
                banca = abiCab != null ? $"{abiCab.DescrizioneAbi} - {abiCab.DescrizioneCab}" : datiBancari.DisplayName;
            }

            if (condominio != null)
            {
                codiceCondominio = condominio.Codice;
                descrizioneCondominio = condominio.Descrizione;
                foglioCatastale = condominio.FoglioCatastale.ToString();
                mappaleCatastale = condominio.MappaleCatastale.ToString();

                codiceFiscaleCondominio = condominio.CodiceFiscale;
                if (condominio.Indirizzo != null)
                {
                    indirizzoCondominio = condominio.Indirizzo.GetIndirizzoCompleto();
                    capCondominio = condominio.Indirizzo.Cap;
                    if (condominio.Indirizzo.Comune != null)
                    {
                        comuneCondominio = condominio.Indirizzo.Comune.Descrizione;
                        localitaCondominio = condominio.Indirizzo.Comune.Descrizione;
                        provinciaCondominio = condominio.Indirizzo.Comune.ProvinciaAppartenenza.Codice;
                        codiceCatastale = condominio.Indirizzo.Comune.CodiceCatastale;
                    }
                }

                if (condominio.Responsabile != null)
                    responsabileCondominio = condominio.Responsabile.DisplayName;
            }

            // ===========================================
            //  Esercizio
            // ===========================================
            var esercizio = string.Empty;
            var tipoRange = string.Empty;
            if (parametriStampaUnione.IdEsercizio != null)
            {
                tipoRange = "Esercizio";
                var es = _daoFactory.GetEsercizioDao().Find(parametriStampaUnione.IdEsercizio.GetValueOrDefault(), false);
                esercizio = es.DisplayName;
            }
            else if (parametriStampaUnione.DataIniziale != null && parametriStampaUnione.DataFinale != null)
            {
                tipoRange =
                    $"Data iniziale: {parametriStampaUnione.DataIniziale} - Data finale:{parametriStampaUnione.DataFinale}";
            }

            //===============================================
            // Fornitore
            //===============================================
            var fornitore = string.Empty;
            if (parametriStampaUnione.IdFornitore != null)
            {
                var forn = _daoFactory.GetFornitoreDao().Find(parametriStampaUnione.IdFornitore.GetValueOrDefault(), false);
                if (forn != null)
                {
                    fornitore = forn.DisplayName;
                }
                else
                    _log.WarnFormat("Fornitore NON trovato - {0} - fornitore:{1}", Utility.GetMethodDescription(), parametriStampaUnione.IdFornitore.GetValueOrDefault());
            }

            //===============================================
            // Responsabile
            //===============================================
            var responsabile = string.Empty;
            if (parametriStampaUnione.IdResponsabile != null)
            {
                var resp = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdResponsabile.GetValueOrDefault(), false);
                if (resp != null)
                {
                    responsabile = resp.DisplayName;
                }
                else
                    _log.WarnFormat("Responsabile NON trovato - {0} - responsabile:{1}", Utility.GetMethodDescription(), parametriStampaUnione.IdResponsabile);
            }

            //===============================================
            // Incaricato
            //===============================================
            var incaricato = string.Empty;
            if (parametriStampaUnione.IdIncaricatoAttivita != null)
            {
                var inc = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdIncaricatoAttivita.GetValueOrDefault(), false);
                if (inc != null)
                {
                    incaricato = inc.DisplayName;
                }
                else
                    _log.WarnFormat("Incaricato NON trovato - {0} - incaricato:{1}", Utility.GetMethodDescription(), parametriStampaUnione.IdIncaricatoAttivita);
            }

            //===============================================
            // Persona
            //===============================================
            var titolo = string.Empty;
            var nominativoCompleto = string.Empty;
            var nominativo = string.Empty;
            var nome = string.Empty;
            var cognome = string.Empty;
            var indirizzo = string.Empty;
            var cap = string.Empty;
            var comune = string.Empty;
            var provincia = string.Empty;
            var presso = string.Empty;
            var localita = string.Empty;
            var localitaCompleta = string.Empty;
            var ragioneSociale = string.Empty;
            var username = string.Empty;
            var password = string.Empty;
            var email = string.Empty;

            if (persona != null)
            {
                titolo = Decodifica.Instance.GetElement("TitoloPersona", persona.Titolo).Descrizione;
                if (!string.IsNullOrEmpty(persona.Nome))
                    nome = persona.Nome;
                if (!string.IsNullOrEmpty(persona.Cognome))
                    cognome = persona.Cognome;
                if (string.IsNullOrEmpty(cognome) && !string.IsNullOrEmpty(persona.RagioneSociale))
                    cognome = persona.RagioneSociale;
                if (!string.IsNullOrEmpty(persona.RagioneSociale))
                    ragioneSociale = persona.RagioneSociale;

                if (tipoIndirizzo == TipoIndirizzo.Residenza || persona.Recapito == null)
                {
                    if (persona.IndirizzoResidenza != null)
                    {
                        cap = persona.IndirizzoResidenza.Cap;
                        presso = persona.IndirizzoResidenza.Presso;
                        indirizzo = persona.IndirizzoResidenza.GetIndirizzoCompleto();
                        if (persona.IndirizzoResidenza.Comune != null)
                        {
                            localita = persona.IndirizzoResidenza.Comune.Descrizione;
                            comune = persona.IndirizzoResidenza.Comune.Descrizione;
                            provincia = persona.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice;
                        }

                        if (!string.IsNullOrEmpty(persona.IndirizzoResidenza.Localita))
                            localitaCompleta = $"{persona.IndirizzoResidenza.Localita} - ";
                        localitaCompleta += persona.IndirizzoResidenza.Cap;
                        if (persona.IndirizzoResidenza.Comune != null)
                            localitaCompleta += " " + persona.IndirizzoResidenza.Comune.Descrizione + " " + persona.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice;
                    }
                }
                else if (persona.Recapito != null)
                {
                    cap = persona.Recapito.Cap;
                    presso = persona.Recapito.Presso;
                    indirizzo = persona.Recapito.GetIndirizzoCompleto();
                    if (persona.Recapito.Comune != null)
                    {
                        localita = persona.Recapito.Comune.Descrizione;
                        comune = persona.Recapito.Comune.Descrizione;
                        provincia = persona.Recapito.Comune.ProvinciaAppartenenza.Codice;
                    }

                    if (!string.IsNullOrEmpty(persona.Recapito.Localita))
                        localitaCompleta = $"{persona.Recapito.Localita} - ";
                    localitaCompleta += persona.Recapito.Cap;
                    if (persona.Recapito.Comune != null)
                        localitaCompleta += " " + persona.Recapito.Comune.Descrizione + " " + persona.Recapito.Comune.ProvinciaAppartenenza.Codice;
                }

                var contatti = new ContattoCollection(persona.Contatti);
                var emailContattoCertificata = contatti.GetFirstContatto<EmailCertificata>();
                if (emailContattoCertificata != null)
                    email = emailContattoCertificata.Valore;
                else
                {
                    var emailContatto = contatti.GetFirstContatto<Email>();
                    if (emailContatto != null)
                        email = emailContatto.Valore;
                }

                if (persona.DatiAutenticazione != null)
                {
                    username = persona.DatiAutenticazione.Username;
                    password = persona.DatiAutenticazione.Password;
                }

                nominativo = cognome;
                if (!string.IsNullOrEmpty(nome) && !string.IsNullOrEmpty(cognome))
                    nominativo = $"{nome} {cognome}";
                if (!string.IsNullOrEmpty(titolo))
                    nominativo = $"{titolo}{Environment.NewLine}{nominativo}";

                nominativoCompleto = nominativo;
                if (!string.IsNullOrEmpty(presso))
                    presso = $"c/o {presso}";
                if(!string.IsNullOrEmpty(presso))
                    nominativoCompleto = $"{nominativo}{Environment.NewLine}{presso}";
            }

            // ===========================================
            //  Unità immobiliare
            // ===========================================
            var descrizioneUnitaImmobiliare = string.Empty;
            var pianoUnitaImmobiliare = string.Empty;
            var progressivoUnitaImmobiliare = string.Empty;
            var internoUnitaImmobiliare = string.Empty;
            var tipoUnitaImmobiliare = string.Empty;
            var indirizzoUnitaImmobiliare = string.Empty;
            var gruppoStabile = string.Empty;
            var stabile = string.Empty;

            if (parametriStampaUnione.IdUnitaImmobiliare == null && parametriStampaUnione.IdPersona != null && parametriStampaUnione.IdCondominio != null)
            {
                var soggetto = _daoFactory.GetSoggettoCondominioDao().GetByCondominioPersona(parametriStampaUnione.IdCondominio.Value, parametriStampaUnione.IdPersona.Value).FirstOrDefault();
                if (soggetto != null)
                    parametriStampaUnione.IdUnitaImmobiliare = soggetto.UnitaImmobiliare.ID;
            }

            if (parametriStampaUnione.IdUnitaImmobiliare != null)
            {
                var unitaImmobiliare = _daoFactory.GetUnitaImmobiliareDao().Find(parametriStampaUnione.IdUnitaImmobiliare.GetValueOrDefault(), false);
                if (unitaImmobiliare != null)
                {
                    descrizioneUnitaImmobiliare = unitaImmobiliare.Descrizione;
                    pianoUnitaImmobiliare = unitaImmobiliare.Piano;
                    progressivoUnitaImmobiliare = unitaImmobiliare.Ordine.ToString();
                    internoUnitaImmobiliare = unitaImmobiliare.InternoCompleto;

                    if (unitaImmobiliare.TipoUnitaImmobiliare != null)
                        tipoUnitaImmobiliare = unitaImmobiliare.TipoUnitaImmobiliare.Descrizione;

                    if (unitaImmobiliare.GruppoStabileRiferimento?.Indirizzo != null)
                        indirizzoUnitaImmobiliare = unitaImmobiliare.GruppoStabileRiferimento.Indirizzo.DisplayNameArray.FirstOrDefault();

                    if (unitaImmobiliare.GruppoStabileRiferimento != null)
                    {
                        gruppoStabile = unitaImmobiliare.GruppoStabileRiferimento.Descrizione;
                        stabile = unitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.Descrizione;
                    }

                    if (persona != null)
                    {
                        var soggettoCondominio = unitaImmobiliare.Soggetti.FirstOrDefault(item => item.Persona.ID == persona.ID);
                        if (!string.IsNullOrEmpty(soggettoCondominio.Descrizione))
                            nominativo = soggettoCondominio.Descrizione;
                    }
                }
            }

            // ===========================================
            //  Da Contattare
            // ===========================================
            if (!string.IsNullOrEmpty(parametriStampaUnione.TelefonoDaContattare))
                telefonoDaContattare = parametriStampaUnione.TelefonoDaContattare;
            if (parametriStampaUnione.IdPersonaRichiedente.GetValueOrDefault() > 0)
            {
                var richiedente = _daoFactory.GetPersonaDao().Find(parametriStampaUnione.IdPersonaRichiedente.GetValueOrDefault(), false);
                if (richiedente != null)
                {
                    if (!string.IsNullOrEmpty(richiedente.DisplayName))
                        segnalatoreProblema = richiedente.DisplayName;
                    else
                        _log.WarnFormat("Persona con display name <NULL> - {0} - idPersona:{1}", Utility.GetMethodDescription(), richiedente.ID);
                }
                else
                    _log.WarnFormat("Richiedente NON trovato - {0} - idPersona:{1}", Utility.GetMethodDescription(), parametriStampaUnione.IdPersonaRichiedente.GetValueOrDefault());
            }

            // ===========================================
            //  Testo Lettera (BODY)
            // ===========================================
            var body = ApplicaStampaUnione(parametriStampaUnione.Body, parametriStampaUnione, idAzienda);
                
           // ===========================================
            //  Importi
            // ===========================================
            var importo = string.Empty;
            var importoTotale = string.Empty;
            var importoLettere = string.Empty;
            var importoTotaleLettere = string.Empty;
            var versamenti = string.Empty;
            var saldoEsercizioPrecedente = string.Empty;

            if (parametriStampaUnione.Importo != null)
            {
                importo = parametriStampaUnione.Importo.Value.ToString("C");
                importoLettere = Library.BusinessData.CifreLettere.CalcolaLettere(parametriStampaUnione.Importo.Value);
            }
            if (parametriStampaUnione.ImportoTotale != null)
            {
                importoTotale = parametriStampaUnione.ImportoTotale.Value.ToString("C");
                importoTotaleLettere = Library.BusinessData.CifreLettere.CalcolaLettere(parametriStampaUnione.ImportoTotale.Value);
            }

            if (parametriStampaUnione.Versamenti != null)
                versamenti = parametriStampaUnione.Versamenti.Value.ToString("C");
            if (parametriStampaUnione.SaldoEsercizioPrecedente != null)
                saldoEsercizioPrecedente = parametriStampaUnione.SaldoEsercizioPrecedente.Value.ToString("C");

            // ===========================================
            //  Date
            // ===========================================
            var dataIniziale = string.Empty;
            var dataFinale = string.Empty;
            var dataAttiva = DateTime.Today.ToShortDateString();
            var dataRedazione = DateTime.Today.ToShortDateString();

            if (parametriStampaUnione.DataIniziale != null)
                dataIniziale = parametriStampaUnione.DataIniziale.Value.ToString("d");
            if (parametriStampaUnione.DataFinale != null)
                dataFinale = parametriStampaUnione.DataFinale.Value.ToString("d");
            if (parametriStampaUnione.DataAttiva != null)
                dataAttiva = parametriStampaUnione.DataAttiva.GetValueOrDefault().ToShortDateString();

            Document document;
            try
            {
                document = new Document(Conversione.ToStream(rtf));
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel mail merge del documento - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), azienda);                
                throw;
            }

            // campi standard
            var fieldNames = new[] { "amministratore", "codiceFiscaleAmministratore", "partitaIvaAmministratore", "codiceCondominio", "condominio", "esercizio", "iban", "codiceFiscaleCondominio", "indirizzoCondominio", "localitaCondominio", "comuneCondominio", "contoCorrente", "cin", "abi", "cab", "banca", "capCondominio", "provinciaCondominio", "foglioCatastale", "mappaleCatastale", "codiceCatastale", "tipoReport", "importo", "importoTotale", "versamenti", "saldo", "dataIniziale", "dataFinale", "tipoRange", "dataAttiva", "dataRedazione", "oggetto", "respCond" };
            var objectValues = new object[] { amministratore, codiceFiscaleAmministratore, partitaIvaAmministratore, codiceCondominio, descrizioneCondominio, esercizio, ibanCondominio, codiceFiscaleCondominio, indirizzoCondominio, localitaCondominio, comuneCondominio, contoCorrente, cin, abi, cab, banca, capCondominio, provinciaCondominio, foglioCatastale, mappaleCatastale, codiceCatastale, parametriStampaUnione.TipoReport, importo, importoTotale, versamenti, saldoEsercizioPrecedente, dataIniziale, dataFinale, tipoRange, dataAttiva, dataRedazione, parametriStampaUnione.Oggetto, responsabileCondominio };
            document.MailMerge.Execute(fieldNames, objectValues);

            // campi relativi alla persona destinataria
            // in caso di assemblea eseguo il mail merge solo se la persona è presente altrimenti vengono lasciati inalterati i campi
            if (parametriStampaUnione.IdAssemblea == null || persona != null)
            {
                fieldNames = new[] { "titolo", "nominativoCompleto", "nome", "cognome", "ragioneSociale", "nominativo", "indirizzo", "presso", "localita", "localita-cap-citta-provincia", "cap", "comune", "pr", "email", "username", "password" };
                objectValues = new object[] { titolo, nominativoCompleto, nome, cognome, ragioneSociale, nominativo, indirizzo, presso, localita, localitaCompleta, cap, comune, provincia, email, username, password };
                document.MailMerge.Execute(fieldNames, objectValues);
            }

            // campi relativi alla unità immobiliare
            fieldNames = new[] { "descrizioneUnita", "piano", "interno", "ordineUnita", "tipoUnita", "indirizzoUnita", "scala", "stabile" };
            objectValues = new object[] { descrizioneUnitaImmobiliare, pianoUnitaImmobiliare, internoUnitaImmobiliare, progressivoUnitaImmobiliare, tipoUnitaImmobiliare, indirizzoUnitaImmobiliare, gruppoStabile, stabile };
            document.MailMerge.Execute(fieldNames, objectValues);

            // campi relativi alla gestione pratiche
            fieldNames = new[] { "telefonoContattare", "segnalatoreProblema", "fornitore", "responsabile", "incaricato", "numeroFaxInvio", "oggettoFax", "mittente", "faxDestinatario", "identificativo" };
            objectValues = new object[] { telefonoDaContattare, segnalatoreProblema, fornitore, responsabile, incaricato, parametriStampaUnione.ContattiDestinatario, parametriStampaUnione.Oggetto, azienda.Descrizione, parametriStampaUnione.FaxDestinatario, parametriStampaUnione.Identificativo };
            document.MailMerge.Execute(fieldNames, objectValues);

            // campi relativi ad importi
            fieldNames = new[] { "importoLettere", "importoTotaleLettere", "detrazione" };
            objectValues = new object[] { importoLettere, importoTotaleLettere, parametriStampaUnione.Detrazione.GetValueOrDefault() };
            document.MailMerge.Execute(fieldNames, objectValues);
            
            // ===========================================
            //  Assemblea
            // ===========================================
            var ordinegiorno = string.Empty;
            if (parametriStampaUnione.IdAssemblea != null)
            {
                var assemblea = _daoFactory.GetAssembleaDao()
                    .Find(parametriStampaUnione.IdAssemblea.GetValueOrDefault(), false);
                if (assemblea != null)
                {
                    var iIndex = 1;
                    foreach (var puntordinegiorno in assemblea.PuntoOrdineGiorno)
                    {
                        if (!string.IsNullOrEmpty(puntordinegiorno.Descrizione))
                        {
                            string sText = puntordinegiorno.Descrizione.Trim();
                            if (sText.StartsWith("{\\rtf"))
                            {
                                if (sText.StartsWith("{\\rtf1")) sText = sText.Substring(6);
                                if (sText.StartsWith("{\\rtf")) sText = sText.Substring(5);
                                sText = sText.Substring(0, sText.Length - 1);
                                //sText = "\\bullet  " + sText + " ";
                                sText = iIndex + ". \\tab" + sText + " "; //"\\line ";
                                iIndex += 1;
                            }
                            ordinegiorno += sText;
                        }
                    }

                    //campi che andranno cambiati solo se presente uno specifico parametro di configurazione...ora li compilo d'ufficio...
                    document.MailMerge.Execute(new[] {"tipoAssemblea"}, new object[] {assemblea.Tipo.ToString()});

                    document.MailMerge.Execute(new[] {"dataPrimaConvocazioneAssemblea"},
                        new object[] {assemblea.DataPrimaConvocazione.ToString("dd MMMM yyyy")});
                    document.MailMerge.Execute(new[] {"giornodataPrimaConvocazioneAssemblea"},
                        new object[] {assemblea.DataPrimaConvocazione.ToString("dd")});
                    document.MailMerge.Execute(new[] { "nomegiornodataPrimaConvocazioneAssemblea" },
                        new object[] { assemblea.DataPrimaConvocazione.ToString("dddd")});
                    document.MailMerge.Execute(new[] {"mesedataPrimaConvocazioneAssemblea"},
                        new object[] {assemblea.DataPrimaConvocazione.ToString("MMMM")});
                    document.MailMerge.Execute(new[] {"annodataPrimaConvocazioneAssemblea"},
                        new object[] {assemblea.DataPrimaConvocazione.ToString("yyyy")});

                    document.MailMerge.Execute(new[] {"dataSecondaConvocazioneAssemblea"},
                        new object[] {assemblea.DataSecondaConvocazione.ToString("dd MMMM yyyy")});
                    document.MailMerge.Execute(new[] {"giornodataSecondaConvocazioneAssemblea"},
                        new object[] {assemblea.DataSecondaConvocazione.ToString("dd")});
                    document.MailMerge.Execute(new[] { "nomegiornodataSecondaConvocazioneAssemblea" },
                        new object[] { assemblea.DataSecondaConvocazione.ToString("dddd") });
                    document.MailMerge.Execute(new[] {"mesedataSecondaConvocazioneAssemblea"},
                        new object[] {assemblea.DataSecondaConvocazione.ToString("MMMM")});
                    document.MailMerge.Execute(new[] {"annodataSecondaConvocazioneAssemblea"},
                        new object[] {assemblea.DataSecondaConvocazione.ToString("yyyy")});

                    document.MailMerge.Execute(new[] {"oraPrimaConvocazioneAssemblea"},
                        new object[] {assemblea.DataPrimaConvocazione.ToString("HH:mm")});
                    document.MailMerge.Execute(new[] {"oraSecondaConvocazioneAssemblea"},
                        new object[] {assemblea.DataSecondaConvocazione.ToString("HH:mm")});
                    document.MailMerge.Execute(new[] {"luogoPrimaConvocazioneAssemblea"},
                        new object[] {assemblea.LuogoPrimaConvocazione});
                    document.MailMerge.Execute(new[] {"luogoSecondaConvocazioneAssemblea"},
                        new object[] {assemblea.LuogoSecondaConvocazione});

                    //cambio ordinegiorno con un tag temporaneo...vedi sotto...
                    document.MailMerge.Execute(new[] {"ordineGiorno"}, new object[] {"%%%%ORDINEGIORNO%%%%"});

                }
            }
            else if(!string.IsNullOrEmpty(body))
            {
                // Solo se non siamo nel caso dell'assemblea per evitare di sbiancare i campi NON compilati
                // testo messaggio
                fieldNames = new[] { "testo", "testoFax", "descrizioneIntervento" };
                objectValues = new object[] { body, body, body };
                document.MailMerge.FieldMergingCallback = new HandleMergeField();
                document.MailMerge.Execute(fieldNames, objectValues);
            }

            // ===========================================
            
            var saveOption = SaveOptions.CreateSaveOptions(SaveFormat.Rtf);

            string result;
            using (var ms = new MemoryStream())
            {
                document.Save(ms, saveOption);
                result = Conversione.ToString(ms);
            }
            
            // ===========================================
            //  Assemblea
            // ===========================================
            //ordinegiorno viene processato come replace perchè è rtf...da valutare in futuro se ci sono strategie migliori(mailmerge non funziona con valori che includono rtf)
            if (!string.IsNullOrEmpty(ordinegiorno)) 
                result = result.Replace("%%%%ORDINEGIORNO%%%%", ordinegiorno);

            return result;
        }
Beispiel #24
0
 public string MailMerge(string rtf, ParametriStampaUnione parametriStampaUnione)
 {
     return GetServiceClient().MailMerge(rtf, parametriStampaUnione, GetUserInfo());
 }
Beispiel #25
0
        public List<ImportiPersonaDTO> GetImportoRipartizioneDetrazione(CondominioDTO condominio, int anno, int detrazione, IList<SpesaDTO> spese, IList<PersonaContattoDTO> persone, ModelloLetteraTestoDTO modello)
        {
            var idSpese = new List<int>(spese.Count);
            idSpese.AddRange(spese.Select(spesaDTO => spesaDTO.ID));

            var idPersone = new List<int>(persone.Count);
            idPersone.AddRange(persone.Select(personaContattoDTO => personaContattoDTO.ID));

            var result = GetServiceClient().GetImportoRipartizioneDetrazione(condominio.ID, anno, detrazione, idSpese, idPersone, GetUserInfo());
            
            CloseService();

            // ============================================
            //  Composizione testo lettera
            // ============================================
            //var azienda = _aziendaService.GetAzienda();
            //var amministratore = _referenteService.GetById(azienda.CodiceAmministratore);

            //var descrizioneAmministratore = "Il sottoscritto";
            //if (amministratore.Sesso == "Femmina")
            //    descrizioneAmministratore = "La sottoscritta";
            //descrizioneAmministratore += " " + amministratore.NominativoPersona;

            //var indirizzoCondominio = string.Empty;
            //var capCondominio = string.Empty;
            //var comuneCondominio = string.Empty;
            //var provinciaCondominio = string.Empty;
            //if (condominio.Indirizzo != null)
            //{
            //    indirizzoCondominio = condominio.Indirizzo.Indirizzo + ", " + condominio.Indirizzo.Civico;
            //    capCondominio = condominio.Indirizzo.Cap;
            //    comuneCondominio = condominio.Indirizzo.DescrizioneComune;
            //    provinciaCondominio = condominio.Indirizzo.CodiceProvincia;
            //}

            //var partitaIvaAmministratore = amministratore.PartitaIva;
            //if (string.IsNullOrEmpty(amministratore.PartitaIva))
            //    partitaIvaAmministratore = azienda.PartitaIva;

            var importoTotale = result.Sum(item => item.Importo);
            //var importoTotaleLettere = Gipasoft.Library.BusinessData.CifreLettere.CalcolaLettere(importoTotale);

            //// ------------------------------------------
            ////  NVelocity
            //// ------------------------------------------
            //var memoryEngine = NVelocityEngineFactory.CreateNVelocityMemoryEngine(true);

            //System.Collections.IDictionary context = new System.Collections.Hashtable();

            //context.Add("amministratore", descrizioneAmministratore);
            //context.Add("codiceFiscaleAmministratore", amministratore.CodiceFiscale);
            //context.Add("partitaIvaAmministratore", partitaIvaAmministratore);
            //context.Add("condominio", "CONDOMINIO: " + condominio.DisplayName);
            //context.Add("indirizzoCondominio", indirizzoCondominio);
            //context.Add("capCondominio", capCondominio);
            //context.Add("comuneCondominio", comuneCondominio);
            //context.Add("provinciaCondominio", provinciaCondominio);
            //context.Add("codiceFiscalCondominio", condominio.CodiceFiscale);
            //context.Add("dataInizio", "01/01/" + anno);
            //context.Add("dataFine", "31/12/" + anno);

            //context.Add("importoSpeseTotali", importoTotale.ToString("#,##0.00"));
            //context.Add("importoSpeseTotaliLettere", importoTotaleLettere);
            //context.Add("detrazione", detrazione);

            //context["importo"] = string.Empty;
            //context["importoLettere"] = string.Empty;

            foreach (var importiPersonaDTO in result)
            {
                DateTime? dataIniziale = null;
                DateTime? dataFinale = null;
                if (anno == 2012)
                {
                    if (detrazione == 36)
                    {
                        dataIniziale = new DateTime(2012, 1, 1);
                        dataFinale = new DateTime(2012, 6, 25);
                    }
                    else if(detrazione == 50)
                    {
                        dataIniziale = new DateTime(2012, 6, 26);
                        dataFinale = new DateTime(2012, 12, 31);
                    }
                }

                var parametriStampaUnione = new ParametriStampaUnione
                    {
                        Importo = importiPersonaDTO.Importo,
                        ImportoTotale = importoTotale,
                        IdCondominio = condominio.ID,
                        Anno = anno,
                        Detrazione = detrazione,
                        DataIniziale = dataIniziale,
                        DataFinale = dataFinale,
                        IdPersona = importiPersonaDTO.ID
                    };

                importiPersonaDTO.TestoLettera = GetServiceClient().ApplicaStampaUnione(modello.TestoHtml, parametriStampaUnione, GetUserInfo());
                importiPersonaDTO.OggettoLettera = GetServiceClient().ApplicaStampaUnione(modello.Oggetto, parametriStampaUnione, GetUserInfo());
            }

            return result;
        }
Beispiel #26
0
        private void btnMessaggioClick(object sender, EventArgs e)
        {
            var parameters = new ParametriStampaUnione { ParametriAggiuntiviLettera = new ParametriAggiuntiviCompilazioneLettera { TipoLettera = TipoModelloLetteraEnum.Messaggistica } };
            if (sceltaCondominioCombo1.CondominioSelected != null)
                parameters.IdCondominio = sceltaCondominioCombo1.CondominioSelected.ID;

            if (getInvioMessaggioService().OpenDialogFormTestoMessaggio(null, parameters, null, new DocumentoFilter(), true) == DialogResult.Yes)
            {
                parameters.Oggetto = getInvioMessaggioService().GetOggetto();
                parameters.Body = getInvioMessaggioService().GetTestoMessaggio();

                var aggiornaContatti = false;
                if (_contatti.Count > 0)
                    aggiornaContatti = CommonMessages.DisplayConfirm("Vuoi aggiornare i contatti che hai modificato?") == DialogResult.Yes;

                var risultati = _personaService.InvioMessaggio(
                    sceltaCondominioCombo1.CondominioSelected, 
                    MotivoMessaggio.Personale, 
                    getInvioMessaggioService().GetOggetto(), 
                    getInvioMessaggioService().GetTestoMessaggio(), 
                    getPersoneSelezionate(), 
                    _contatti, 
                    getInvioMessaggioService().GetMittente(), 
                    getInvioMessaggioService().GetEmailRapportino(), 
                    getInvioMessaggioService().GetDocumenti(), 
                    getInvioMessaggioService().GetDocumentiNew(),
                    getInvioMessaggioService().GetTipoMessaggio(), 
                    getInvioMessaggioService().GetModelloLettera(), 
                    parameters, 
                    new ParametriInvioLettera
                    {
                        Tipo = getInvioMessaggioService().GetMessageType(), 
                        Asincrono = getInvioMessaggioService().GetInvioVeloce(),
                        Colore = getInvioMessaggioService().GetColore(),
                        FronteRetro = getInvioMessaggioService().GetFronteRetro(),
                        PaginaIniziale = getInvioMessaggioService().GetPrimaPaginaMittente(),
                        AccodaMessaggio = getInvioMessaggioService().GetAccodaMessaggio(),
                        Aggregazione = getInvioMessaggioService().GetAggregazioneDocumenti(),
                        FormatoDocumento = getInvioMessaggioService().GetFormatoDocumento(),
                        ApriFileGenerato = getInvioMessaggioService().GetApriFile(),
                        RinumeraPagine = getInvioMessaggioService().GetNumeraPagine()
                    }, 
                    aggiornaContatti);
                
                var invioRiuscito = true;
                var messaggioInvio = string.Empty;
                foreach (var risultato in risultati)
                {
                    if (!risultato.InvioRiuscito)
                        invioRiuscito = false;

                    messaggioInvio += risultato.MessaggioInvio + Environment.NewLine;
                }

                if (invioRiuscito)
                {
                    CommonMessages.DisplayComplete(messaggioInvio);
                    if(aggiornaContatti)
                        btnCercaClick(null, EventArgs.Empty);
                }
                else
                    CommonMessages.DisplayWarning("Si sono verificati dei problemi durante l'invio del messaggio: " + Environment.NewLine + messaggioInvio);

            }
        }
Beispiel #27
0
        private void btnLetteraClick(object sender, EventArgs e)
        {
            try
            {
                validationSummaryLettera.Validate();
                if (validationSummaryLettera.IsValid)
                {
                    PersonaDTO personaLettera = null;
                    var fornitore = sceltaFornitoreCombo1.SelectedListaFornitore;
                    if (fornitore != null)
                        personaLettera = getPersonaService().GetById(fornitore.IdPersona);
                    else if (cmbIncaricato.ActiveRow != null)
                        personaLettera = getPersonaService().GetById(((RichiedentePraticaDTO)cmbIncaricato.ActiveRow.ListObject).IdPersona);

                    if (personaLettera != null)
                    {
                        var dialogResultConferma = CommonMessages.DisplayConfirm($"Per compilare correttamente la lettera l'attività deve essere salvata.{Environment.NewLine}Sei sicuro di voler continuare?");
                        if (dialogResultConferma == DialogResult.Yes)
                        {
                            var attivita = conferma(false);
                            if (attivita.ID > 0)
                            {
                                var note = string.Empty;
                                var dialogResult = CommonMessages.DisplayConfirm("Vuoi inserire nella lettera il testo dell'attività?");
                                if (dialogResult == DialogResult.Yes)
                                    note = Conversione.ToString(txtNote.GetDocumento("HTML"));

                                var numeroFaxIncaricato = string.Empty;
                                var contattiFax = getPersonaService().GetContattiByTipo(personaLettera, "Fax");
                                if (contattiFax.Count > 0)
                                    numeroFaxIncaricato = contattiFax[0].Valore;

                                // Persona da contattare
                                var personaDaContattare = personaContattare.SelectedPersona;
                                int? idPersonaDaContattare = null;if (personaDaContattare != null)
                                    idPersonaDaContattare = personaDaContattare.ID;
                                var telefonoDaContattare = string.Empty;
                                if (personaDaContattare != null)
                                {
                                    var persona = getPersonaService().GetById(personaDaContattare.ID);
                                    var telefonoContatti = getPersonaService().GetContattiByTipo(persona, "Telefono");
                                    if (telefonoContatti.Count > 0)
                                        telefonoDaContattare = telefonoContatti[0].Valore;
                                }

                                var parametri = new ParametriStampaUnione
                                {
                                    IdCondominio = _condominio.ID,
                                    IdPersonaAttiva = personaLettera.ID,
                                    IdPersonaRichiedente = idPersonaDaContattare,
                                    DataAttiva = cmbDataFinePrevista.DateTime,
                                    Body = note,
                                    ContattiDestinatario = numeroFaxIncaricato,
                                    TipoIndirizzo = TipoIndirizzo.Recapito,
                                    TelefonoDaContattare = telefonoDaContattare,
                                    Identificativo = attivita.ID.ToString(CultureInfo.InvariantCulture)
                                };

                                if (sceltaFornitoreCombo1.SelectedListaFornitore != null)
                                    parametri.IdFornitore = sceltaFornitoreCombo1.SelectedListaFornitore.ID;

                                if (cmbResponsabile.Value != null)
                                    parametri.IdResponsabile = ((ReferenteDTO)cmbResponsabile.ActiveRow.ListObject).PersonaId;

                                if (cmbIncaricato.Value != null)
                                    parametri.IdIncaricatoAttivita = ((RichiedentePraticaDTO)cmbIncaricato.ActiveRow.ListObject).IdPersona;
                                
                                _lettereCreata = getModelloLetteraService().GetLetteraCompilata((int)modelliLettera.Value, parametri);

                                if (_lettereCreata.FileName.ToCharArray().Intersect(System.IO.Path.GetInvalidFileNameChars()).Any())
                                    CommonMessages.DisplayWarning($"Il nome di file '{_lettereCreata.FileName}' contiene dei caratteri non validi.");

                                getManageDocumentoService().DocumentSave += dettaglioAttivitaUIDocumentSave;
                                getManageDocumentoService().Open(_lettereCreata, ((ModelloLetteraDTO)modelliLettera.SelectedItem.ListObject).Descrizione, true, MergeFieldType.Default);
                                var documentoDto = getDocumentoService().GetNew(attivita);
                                documentoDto.DataCreazione = DateTime.Now;
                                documentoDto.Descrizione = $"Lettera attività del {DateTime.Now}";
                                documentoDto.FileName = "Lettera attività.rtf";
                                documentoDto.FileExtension = ".rtf";
                                _lettereCreata.FileName = documentoDto.FileName;
                                _lettereCreata.FileExtension = documentoDto.FileExtension;

                                var documentMessages = getDocumentoService().Save(documentoDto, _lettereCreata);
                                if (txtNote.Allegati != null)
                                    txtNote.Allegati.Clear();
                                else
                                    txtNote.Allegati = new List<DocumentoDTO>();

                                if (documentMessages.Documento != null)
                                {
                                    txtNote.Allegati.Add(documentMessages.Documento);
                                    getPraticaService().SetDocumentoAttivita(attivita, documentMessages.Documento);
                                }
                                else
                                    CommonMessages.DisplayWarning($"Si è verificato un errore nel salvataggio del documento.{Environment.NewLine}{documentMessages.Message}");
                            }
                        }
                    }
                    else
                        CommonMessages.DisplayWarning("Non è definito il destinatario della lettera");
                }
                else
                    validationSummaryLettera.ShowErrorSummary();

            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore durante l'invio della lettera - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
                CommonMessages.DisplayWarning("Errore inaspettato durante l'invio della lettera.");
            }
        }
Beispiel #28
0
        public IList<RisultatoInvioMessaggio> NotificaAIncaricato(int idCondominio, AttivitaDTO attivita, IList<NameValueDTOOfintstring> contatti, string emailRapportino, string mittente, string oggettoMessaggio, string testoMessaggio, IList<DocumentoDTO> documenti, IList<DocumentInfo> allegatiNuovi, int? idModello, ParametriStampaUnione parametriCompilazioneLettera, ParametriInvioLettera parametriInvioLettera, TipoMessaggio tipo, bool aggiornaContatti)
        {
            // -----------------------------------------------
            //  Documenti Allegati
            // -----------------------------------------------
            var idDocumenti = new List<DocumentoMessaggioDTO>();
            if (documenti != null)
            {
                idDocumenti.AddRange(documenti.Select(documento => new DocumentoMessaggioDTO {Id = documento.ID, IdSpesa = documento.IdSpesa}));
            }

            // -----------------------------------------------
            //  Destinatari
            // -----------------------------------------------
            var persone = new List<PersonaMessaggioDTO>();
            var contattiPersona = contatti.GroupBy(item => item.Value);
            foreach (var item in contattiPersona)
            {
                var persona = new PersonaMessaggioDTO();
                var listaContatti = new List<ContattoDTO>();
                foreach (var valoreContatto in item)
                {
                    var contatto = new ContattoDTO
                    {
                        Valore = valoreContatto.Name,
                        TipoContatto = tipo.ToString(),
                        SelectColumn = true
                    };
                    listaContatti.Add(contatto);
                }

                persona.ID = item.Key;
                persona.Contatti = listaContatti;
                persona.OggettoMessaggio = oggettoMessaggio;
                persona.TestoMessaggio = testoMessaggio;
                persona.NomeMessaggio = $"MessaggioAttivita_{DateTime.Now.ToString("dd-mm-yyyy")}";

                if (tipo == TipoMessaggio.Lettera)
                    persona.TipoIndirizzo = item.Any(contatto => contatto.Name == "Residenza")
                                                ? TipoIndirizzo.Residenza
                                                : TipoIndirizzo.Recapito;

                persone.Add(persona);
            }

            var idAttivita = 0;
            if (attivita != null)
            {
                idAttivita = attivita.ID;
                parametriCompilazioneLettera.Descrizione = attivita.Note;
            }

            var result = GetServiceClient().NotificaAIncaricato(idAttivita, MotivoMessaggio.NotificaAttivita, persone, oggettoMessaggio, testoMessaggio, mittente, emailRapportino, idDocumenti, new List<DocumentInfo>(allegatiNuovi), tipo, idModello, parametriCompilazioneLettera, parametriInvioLettera, aggiornaContatti, idCondominio, GetUserInfo());
            CloseService();
            
            // Apro eventuali documenti
            if (parametriInvioLettera.Aggregazione == AggregazioneDocumentiEnum.DocumentoUnico)
                _manageDocumentService.Open(result.MessaggioGenerato, null, true, MergeFieldType.Default);
            else
            {
                foreach (var risultatoInvioMessaggio in result.RisultatoInvio)
                {
                    if (risultatoInvioMessaggio.Messaggio.Body != null)
                        _manageDocumentService.Open(risultatoInvioMessaggio.Messaggio, null, true, MergeFieldType.Default);
                }
            }

            return result.RisultatoInvio;
        }
Beispiel #29
0
        public IList<RisultatoInvioMessaggio> InvioMessaggio(int idAzienda, PersonaMessaggioDTO personaMessaggioDTO, Condominio condominio, int? idUnitaImmobiliare, int? idFornitore, int? idResponsabile, int? idIncaricatoAttivita, MotivoMessaggio motivoMessaggio, string oggetto, string testo, IList<string> destinatari, string mittente, string emailRapportino, IList<DocumentInfo> allegati, ParametriInvioLettera parametriInvioLettera)
        {
            try
            {
                if (destinatari.Count > 0)
                {
                    var message = string.Empty;
                    var invioRiuscito = false;
                    var allegatiLista = new List<DocumentInfo>(allegati.Count);
                    Persona persona = null;
                    if (personaMessaggioDTO != null)
                        persona = _daoFactory.GetPersonaDao().Find(personaMessaggioDTO.ID, false);

                    var results = new List<RisultatoInvioMessaggio>();
                    var result = new eMessageResultSendFAX();

                    try
                    {
                        int? idCondominio = null;
                        if (condominio != null)
                            idCondominio = condominio.ID;

                        var destinatariSend = new List<string>();
                        foreach (var item in destinatari)
                        {
                            if (!item.Trim().StartsWith("+39"))
                                destinatariSend.Add("+39" + Conversione.ToPhoneNumber(item));
                            else
                                destinatariSend.Add(Conversione.ToPhoneNumber(item));
                        }

                        // =====================================
                        // Creo le pagine del FAX
                        // =====================================
                        var nomiFiles = new string[allegati.Count];
                        var contenutoAllegati = new byte[allegati.Count][];

                        // -------------------------------------
                        // Allegati
                        // -------------------------------------
                        var index = 0;
                        foreach (var documento in allegati)
                        {
                            nomiFiles[index] = documento.FileName + documento.FileExtension;
                            contenutoAllegati[index] = documento.Body;
                            allegatiLista.Add(documento);
                            index++;
                        }

                        // -------------------------------------
                        // Oggetto
                        // -------------------------------------
                        decimal? importo = null;
                        var tipoIndirizzo = TipoIndirizzo.Recapito;
                        if (personaMessaggioDTO != null)
                        {
                            importo = personaMessaggioDTO.Importo;
                            tipoIndirizzo = personaMessaggioDTO.TipoIndirizzo;
                        }
                        var parametri = new ParametriStampaUnione(persona != null ? (int?)persona.ID : null, idUnitaImmobiliare, idResponsabile, idIncaricatoAttivita, idFornitore, idCondominio, null, tipoIndirizzo, importo, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
                        oggetto = _messaggisticaService.ApplicaStampaUnione(oggetto, parametri, idAzienda);

                        // =====================================
                        // Invio Messaggio
                        // =====================================
                        // -------------------------------------
                        // Invio
                        // -------------------------------------
                        var service = new Fax { Timeout = 999999999 };
                        var userService = new Users();
                        var credenziali = _configurationService.GetLoginInfo(idAzienda);

                        if (credenziali != null && !string.IsNullOrEmpty(credenziali.Value.Utente) && !string.IsNullOrEmpty(credenziali.Value.Password))
                        {
                            var success = false;
                            try
                            {
                                var resultUsers = userService.Login(credenziali.Value.Utente, credenziali.Value.Password, null);
                                success = resultUsers.success;
                            }
                            catch (Exception ex)
                            {
                                _log.WarnFormat("Errore durante il controllo delle credenziali - {0} - username:{1} - password:{2}", ex, Utility.GetMethodDescription(), credenziali.Value.Utente, credenziali.Value.Password);
                            }
                            if (success)
                            {
                                var identificazioneMittente = _configurationService.GetIdentificazioneMittente(idAzienda, TipoMessaggio.Fax, TipoIndirizzo.Recapito);

                                // Controllo identificazione mittente
                                if (string.IsNullOrEmpty(identificazioneMittente.Numero))
                                    return new List<RisultatoInvioMessaggio> { new RisultatoInvioMessaggio("KO", null, false, "Il fax non può essere inviato perchè non è presente il numero di fax del mittente" + Environment.NewLine + "Inserire il numero nella anagrafica dello studio e riprovare.", new DocumentInfo()) };

                                if (!string.IsNullOrEmpty(identificazioneMittente.Email))
                                {
                                    if (!string.IsNullOrEmpty(emailRapportino))
                                        emailRapportino += ",";
                                    emailRapportino += identificazioneMittente.Email;
                                }

                                // Mittente
                                if (string.IsNullOrEmpty(mittente))
                                    mittente = identificazioneMittente.Nome;

                                if (ConfigurationManager.AppSettings["IsTest"] != null && bool.Parse(ConfigurationManager.AppSettings["IsTest"]))
                                    destinatariSend = new List<string> { "+390513371992" };

                                var parameters = new List<OptionalParameters>
                                {
                                    new OptionalParameters { ParameterName = "NotificationEmail", ParameterValue = emailRapportino },
                                    new OptionalParameters { ParameterName = "DeliveryTime", ParameterValue = DateTime.Now.ToString() },
                                    new OptionalParameters { ParameterName = "HeaderFax", ParameterValue = identificazioneMittente.Numero },
                                    new OptionalParameters { ParameterName = "HeaderName", ParameterValue = mittente }
                                };

                                if (!parametriInvioLettera.Asincrono)
                                    result = service.Send(credenziali.Value.Utente, credenziali.Value.Password, destinatariSend.ToArray(), contenutoAllegati, nomiFiles, parameters.ToArray());
                                else
                                {
                                    service.SendAsync(credenziali.Value.Utente, credenziali.Value.Password, destinatariSend.ToArray(), contenutoAllegati, nomiFiles, parameters.ToArray());
                                    invioRiuscito = true;
                                }

                                message += result;
                                _log.InfoFormat("Risultato invio fax:{0} - destinatario:{1}", result, destinatariSend.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")));

                                if (result.SpeditionResult.All(item => item.success))
                                    invioRiuscito = true;
                            }
                            else
                            {
                                _log.WarnFormat("Credenziali non valide - {0} - username:{1} - password:{2}", Utility.GetMethodDescription(), credenziali.Value.Utente, credenziali.Value.Password);
                            }
                        }
                        else
                        {
                            _log.FatalFormat("Errore inaspettato durante l'invio del fax. NON sono presenti le credenziali per l'invio del fax - {0} - oggetto:{1} - destinatario:{2}", Utility.GetMethodDescription(), oggetto, destinatari[0]);
                            message = "KO - Non sono definite le credenziali per l'invio dei fax";
                        }
                    }
                    catch (Exception ex)
                    {
                        invioRiuscito = false;

                        _log.FatalFormat("Errore inaspettato durante l'invio del fax - {0} - oggetto:{1} - destinatario:{2}", ex, Utility.GetMethodDescription(), oggetto, destinatari[0]);
                        message = "KO - Errore inaspettato durante l'invio del fax";
                    }

                    if (motivoMessaggio != MotivoMessaggio.ScadenzaContratto && invioRiuscito)
                    {
                        foreach (var singleResult in result.SpeditionResult)
                        {
                            try
                            {
                                string messaggioInvio;
                                if (singleResult.success)
                                {
                                    messaggioInvio = string.Format("Fax accodato per l'invio: {0}", singleResult.jobCode);
                                    _log.InfoFormat("Invio FAX RIUSCITO - {0} - messageCode: {1} - messaggio: {2} - jobcode: {3} - destinatario: {4}", Utility.GetMethodDescription(), singleResult.messageCode, singleResult.errorDescription, singleResult.jobCode, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ";")));
                                }
                                else
                                {
                                    messaggioInvio = "Invio della lettera non riuscito:" + Environment.NewLine + singleResult.errorDescription;
                                    _log.WarnFormat("Invio FAX FALLITO - {0} - messageCode: {1} - messaggio: {2} - jobcode: {3} - destinatario: {4}", Utility.GetMethodDescription(), singleResult.messageCode, singleResult.errorDescription, singleResult.jobCode, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ";")));
                                }

                                var resultInvio = new RisultatoInvioMessaggio(singleResult.jobCode, singleResult.messageCode, singleResult.success, messaggioInvio, new DocumentInfo());
                                var storicoMessaggio = _messaggisticaService.StoricizzaMessaggio(persona, condominio, resultInvio, motivoMessaggio, oggetto, testo, destinatari, mittente, emailRapportino, allegatiLista, TipoMessaggio.Fax);
                                if (storicoMessaggio != null)
                                    resultInvio.IdMessaggio = storicoMessaggio.ID;
                                results.Add(resultInvio);
                            }
                            catch (Exception ex)
                            {
                                _log.ErrorFormat("Errore inaspettato durante la storicizzazione del messaggio - {0} - oggetto:{1} - destinatario:{2}", ex, Utility.GetMethodDescription(), oggetto, destinatari[0]);
                                throw;
                            }
                        }
                    }
                    else
                    {
                        if (!invioRiuscito)
                            results.Add(new RisultatoInvioMessaggio("KO", null, false, message, new DocumentInfo()));
                    }

                    return results;
                }
            }
            catch (Exception ex)
            {
                var idPersona = "<NULL>";
                if (personaMessaggioDTO != null)
                    idPersona = personaMessaggioDTO.ID.ToString();

                var idCondominio = "<NULL>";
                if (condominio != null)
                    idCondominio = condominio.ID.ToString();

                _log.FatalFormat("Errore inaspettato nell'invio del fax - {0} - azienda:{1} - persona:{2} - condominio:{3} - motivoMessaggio:{4} - oggetto:{5} - testo:{6} - destinatari:{7} - mittente:{8} - emailRapportino:{9}", ex, Utility.GetMethodDescription(), idAzienda, idPersona, idCondominio, motivoMessaggio, oggetto, testo, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), mittente, emailRapportino);
                throw;
            }

            return new List<RisultatoInvioMessaggio> { new RisultatoInvioMessaggio(null, null, false, "Non è definito nessun destinatario", new DocumentInfo())};
        }
Beispiel #30
0
        private void btnInviaClick(object sender, EventArgs e)
        {
            validationSummaryInvioMessaggio.Validate();
            if (validationSummaryInvioMessaggio.IsValid)
            {
                conferma(false);
                if (DialogResult == DialogResult.OK)
                {
                    PersonaDTO personaFornitore = null;
                    if (sceltaFornitoreCombo1.SelectedListaFornitore != null)
                        personaFornitore = getPersonaService().GetById(sceltaFornitoreCombo1.SelectedListaFornitore.IdPersona);

                    var numeroFaxFornitore = string.Empty;if (personaFornitore != null && getPersonaService().GetContattiByTipo(personaFornitore, "Fax").Count > 0)
                    {
                        var contattiFornitore = getPersonaService().GetContattiByTipo(personaFornitore, "Fax");
                        if (contattiFornitore.Count > 0)
                            numeroFaxFornitore = contattiFornitore[0].Valore;
                    }

                    var parametri = new ParametriStampaUnione
                    {
                        IdCondominio = _condominio.ID,
                        IdPersonaRichiedente = _pratica.IdPersonaRiferimento,
                        DataAttiva = cmbDataFinePrevista.DateTime,
                        ContattiDestinatario = numeroFaxFornitore,
                        Identificativo = ""
                    };
                    if (personaFornitore != null)
                        parametri.IdPersonaAttiva = personaFornitore.ID;
                    else if (cmbIncaricato.Value != null)
                        parametri.IdPersonaAttiva = ((RichiedentePraticaDTO)cmbIncaricato.ActiveRow.ListObject).IdPersona;

                    if (cmbResponsabile.Value != null)
                        parametri.IdResponsabile = ((ReferenteDTO)cmbResponsabile.ActiveRow.ListObject).PersonaId;
                    if (cmbIncaricato.Value != null)
                        parametri.IdIncaricatoAttivita = ((RichiedentePraticaDTO)cmbIncaricato.ActiveRow.ListObject).IdPersona;

                    if (sceltaFornitoreCombo1.SelectedListaFornitore != null)
                        parametri.IdFornitore = sceltaFornitoreCombo1.SelectedListaFornitore.ID;

                    var defaultTipoMessaggio = (TipoMessaggio)Enum.Parse(typeof(TipoMessaggio), tipoMessaggio.Text);
                    getInvioMessaggioUIService().ShowInserisciTestoCustom(getTestoMessaggio());
                    if (getInvioMessaggioUIService().OpenDialogFormInvioMessaggio(defaultTipoMessaggio, personaFornitore, null, ((ReferenteDTO)cmbResponsabile.SelectedRow.ListObject).Email, parametri) == DialogResult.Yes)
                    {
                        parametri.Body = getInvioMessaggioUIService().GetTestoMessaggio();
                        parametri.Oggetto = getInvioMessaggioUIService().GetOggetto();
                        parametri.TelefonoDaContattare = getInvioMessaggioUIService().GetContattoDaContattare();

                        if(NuovaAttivita != null)
                            parametri.Identificativo = NuovaAttivita.ID.ToString(CultureInfo.InvariantCulture);

                        var personaDaContattare = getInvioMessaggioUIService().GetPersonaDaContattare();
                        if (personaDaContattare != null)
                            parametri.IdPersonaRichiedente = personaDaContattare.ID;

                        int? idModello = null;
                        var modello = getInvioMessaggioUIService().GetModelloLettera();
                        if (modello != null)
                            idModello = modello.Id;

                        // -----------------------------------------------------------------------------------------------------------------------------------------------
                        // Se il messaggio è email e è stato scelto un modello il testo della mail NON può essere ciò che l'utente ha scritto nella textarea devexpress 
                        // quindi occorre definire, in questo caso un testo di default per la mail: GetTestoEmailAllegato()
                        // -----------------------------------------------------------------------------------------------------------------------------------------------
                        var tipoMessaggioSelezionato = getInvioMessaggioUIService().GetTipoMessaggio();
                        var testo = getInvioMessaggioUIService().GetTestoMessaggio();
                        if (tipoMessaggioSelezionato == TipoMessaggio.Email && idModello != null)
                            testo = getPraticaService().GetTestoEmailAllegato();
                        // -----------------------------------------------------------------------------------------------------------------------------------------------

                        var form = new ExecuteLoadDataObjectAsync<IList<RisultatoInvioMessaggio>>("Il messaggio è in corso di invio ....." + Environment.NewLine + "Si prega di attendere.");
                        Func<IList<RisultatoInvioMessaggio>> loadDati = () => getPraticaService().NotificaAIncaricato(_condominio.ID, NuovaAttivita, getInvioMessaggioUIService().GetContattiSelected(), getInvioMessaggioUIService().GetEmailRapportino(), getInvioMessaggioUIService().GetMittente(), getInvioMessaggioUIService().GetOggetto(), testo, getInvioMessaggioUIService().GetDocumenti(), getInvioMessaggioUIService().GetDocumentiNew(), idModello, parametri, getInvioMessaggioUIService().GetParametriInvioLettera(), tipoMessaggioSelezionato, getInvioMessaggioUIService().GetAggiornaContatti());
                        form.LoadData(loadDati);
                        form.ShowDialog();
                        var risultatoNotifica = form.DataSourceObject;
                        form.Dispose();

                        // TODO: Verificare perchè è possibile non avere nessun risultato bugid#3948
                        var messaggioRisultatoNotifica = new StringBuilder();
                        foreach (var risultatoInvioMessaggio in risultatoNotifica)
                        {
                            if (!string.IsNullOrEmpty(risultatoInvioMessaggio.MessaggioInvio))
                                messaggioRisultatoNotifica.AppendLine(risultatoInvioMessaggio.MessaggioInvio);
                        }
                        CommonMessages.DisplayComplete("L'inserimento dell'attività è terminato correttamente." + Environment.NewLine + messaggioRisultatoNotifica);

                        foreach (var risultatoInvioMessaggio in risultatoNotifica)
                            _idMessaggi.Add(risultatoInvioMessaggio.IdMessaggio);
                        Close();
                        return;
                    }

                    CommonMessages.DisplayComplete("L'inserimento dell'attività è terminato correttamente." + Environment.NewLine + "Non è stato inviato nessun messaggio");
                }
            }
            else
                validationSummaryInvioMessaggio.ShowErrorSummary();
        }