예제 #1
0
        public ContattoDTO[] GetAll()
        {
            try
            {
                var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
                var lista = daoFactory.GetContattoDao().GetAll();
                var contatti = new ContattoDTO[lista.Count];

                int index = 0;
                foreach (Contatto contatto in lista)
                {
                    contatti[index] = setContattiDto(contatto);
                    index++;
                }

                return contatti;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel caricamento dei Contatti - {0}", ex, Utility.GetMethodDescription());
                throw;
            }
        }
예제 #2
0
        private PersonaDTO setDto(Persona item)
        {
            if(item != null)
            {
                var dto = new PersonaDTO
                {
                    ID = item.ID,
                    Abi = item.Abi,
                    Cab = item.Cab,
                    Cin = item.Cin,
                    Iban = item.Iban,
                    CodiceFiscale = item.CodiceFiscale,
                    Cognome = item.Cognome,
                    ContoCorrente = item.ContoCorrente,
                    DataNascita = item.DataNascita,
                    DisplayName = item.DisplayName,
                    Nome = item.Nome,
                    Note = item.Note,
                    PartitaIva = item.PartitaIva,
                    RagioneSociale = item.RagioneSociale,
                    Sesso = item.Sesso,
                    TipoPersona = item.TipoPersona,
                    Titolo = item.Titolo,
                    IndirizzoResidenza = item.IndirizzoResidenza != null ? _locRep.GetAddressByDomainEntity(item.IndirizzoResidenza) : new AddressDTO(),
                    Domicilio = item.Domicilio != null ? _locRep.GetAddressByDomainEntity(item.Domicilio) : new AddressDTO(),
                    Recapito = item.Recapito != null ? _locRep.GetAddressByDomainEntity(item.Recapito) : new AddressDTO(),
                    Username = item.DatiAutenticazione?.Username,
                    Password = item.DatiAutenticazione?.Password,
                    Version = item.Version
                };

                if (!string.IsNullOrEmpty(item.IndirizzoResidenza?.Presso))
                    dto.DisplayName = $"{dto.DisplayName}{Environment.NewLine}c/o {item.IndirizzoResidenza.Presso}";
                else if (!string.IsNullOrEmpty(item.Domicilio?.Presso))
                    dto.DisplayName = $"{dto.DisplayName}{Environment.NewLine}c/o {item.Domicilio.Presso}";

                if (item.ComuneNascita != null)
                    dto.ComuneNascita = _locRep.GetComuneByDomainEntity(item.ComuneNascita);
                if (item.AziendaID != null)
                    dto.Azienda = item.AziendaID.Value;

                var contatti = new ContattoDTO[item.Contatti.Count];
                var index = 0;
                foreach (var contatto in item.Contatti)
                {
                    contatti[index] = getContattoRepository(item).GetByDomainEntity(contatto);
                    index++;
                }
                dto.Contatti = contatti;

                foreach (var personaGruppo in item.Gruppi)
                    dto.Gruppi.Add(personaGruppo.Gruppo.ID);

                return dto;
            }

            return new PersonaDTO();
        }
예제 #3
0
        static void updateContatto(string tipo, PersonaDTO persona, string valore, SferaService service, UserInfo info)
        {
            var dto = persona.Contatti.FirstOrDefault(item => item.TipoContatto.ToUpper() == tipo);
            if (dto != null)
                dto.Valore = valore;
            else
                dto = new ContattoDTO { TipoContatto = tipo, Valore = valore, CodiceRiferimento = persona.ID};

            dto.Stato = "U";
            service.SetContatto(dto, info);
        }
예제 #4
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;
        }
예제 #5
0
        private Contatto manageContatto(ContattoDTO contattoDto, bool onlyValore)
        {
            Contatto cont = null;

            // Controllo sullo stato U, I
            switch (contattoDto.Stato.ToUpper())
            {
                case "U":
                    cont = update(contattoDto, cont, onlyValore);

                    if (cont == null)
                        throw new Exception("Il dato sul database è più recente di quello utilizzato");
                    break;
                case "I":
                    cont = insert(contattoDto);
                    break;
            }

            return cont;
        }
예제 #6
0
        private Contatto update(ContattoDTO contattoDto, Contatto cont, bool onlyValore)
        {
            Contatto result = null;
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

            try
            {
                cont = daoFactory.GetContattoDao().Find(contattoDto.ID, false);

                if (cont != null)
                {
                    if (!onlyValore)
                    {
                        //Istanzia il contatto in base al tipo di contatto
                        Contatto newContatto = null;
                        switch (contattoDto.TipoContatto.ToUpper())
                        {
                            case "EMAIL":
                                if (!(cont is Email))
                                    newContatto = new Email(contattoDto.Valore, contattoDto.Predefinito, _persona);
                                break;
                            case "EMAILCERT":
                                if (!(cont is EmailCertificata))
                                    newContatto = new EmailCertificata(contattoDto.Valore, contattoDto.Predefinito, _persona);
                                break;
                            case "WWW":
                                if (!(cont is EmailCertificata))
                                    newContatto = new SitoInternet(contattoDto.Valore, contattoDto.Predefinito, _persona);
                                break;
                            case "TELEFONO":
                                if (!(cont is Telefono))
                                    newContatto = new Telefono(contattoDto.Valore, contattoDto.Predefinito, _persona);
                                break;
                            case "FAX":
                                if (!(cont is Fax))
                                    newContatto = new Fax(contattoDto.Valore, contattoDto.Predefinito, _persona);
                                break;
                            case "CELLULARE":
                                if (!(cont is Cellulare))
                                    newContatto = new Cellulare(contattoDto.Valore, contattoDto.Predefinito, _persona);
                                break;
                        }

                        if (newContatto != null)
                        {
                            newContatto.Descrizione = contattoDto.Descrizione;
                            newContatto.Valore = contattoDto.Valore;

                            daoFactory.GetContattoDao().SaveOrUpdate(newContatto);
                            daoFactory.GetContattoDao().Delete(cont);
                        }
                        else
                        {
                            cont.Descrizione = contattoDto.Descrizione;
                            cont.Valore = contattoDto.Valore;
                            cont.Predefinito = contattoDto.Predefinito;

                            newContatto = cont;
                        }

                        if (contattoDto.SelectColumn)
                            newContatto.Predefinito = true;

                        result = newContatto;
                    }
                    else
                    {
                        cont.Valore = contattoDto.Valore;
                        result = cont;
                    }    
                }

            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel salvataggio del contatto - {0} - id:{1}", ex, Utility.GetMethodDescription(), contattoDto.ID);
                throw;
            }

            return result;
        }
예제 #7
0
        private Contatto insert(ContattoDTO contattoDto)
        {
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
            Contatto cont;

            try
            {
                //Istanzia il contatto in base al tipo di contatto
                switch (contattoDto.TipoContatto.ToUpper())
                {
                    case "EMAIL":
                        cont = new Email(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                    case "TELEFONO":
                        cont = new Telefono(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                    case "FAX":
                        cont = new Fax(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                    case "CELLULARE":
                    case "SMS":
                        cont = new Cellulare(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                    case "EMAILCERT":
                        cont = new EmailCertificata(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                    case "WWW":
                        cont = new SitoInternet(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                    case "MANUALE":
                        cont = null;
                        break;
                    default:
                        cont = new Email(contattoDto.Valore, contattoDto.Predefinito, _persona);
                        break;
                }

                if (cont != null)
                {
                    cont.Descrizione = contattoDto.Descrizione;

                    if (contattoDto.SelectColumn)
                        cont.Predefinito = true;

                    daoFactory.GetContattoDao().SaveOrUpdate(cont);
                }
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nell'inserimento del contatto - {0} - id:{1}", ex, Utility.GetMethodDescription(), contattoDto.ID);
                throw;
            }

            return cont;
        }
예제 #8
0
 private ContattoDTO setContattiDto(Contatto contatto)
 {
     var dto = new ContattoDTO
     {
         Descrizione = contatto.Descrizione,
         CodiceRiferimento = contatto.Persona.ID,
         ID = contatto.ID,
         Valore = contatto.Valore,
         Predefinito = contatto.Predefinito,
         Version = contatto.Version
     };
     
     //Tipo del Contatto
     if (Conversione.IsTypeOf(contatto, typeof(Email)))
         dto.TipoContatto = "Email";
     else if (Conversione.IsTypeOf(contatto, typeof(Telefono)))
         dto.TipoContatto = "Telefono";
     else if (Conversione.IsTypeOf(contatto, typeof(Fax)))
         dto.TipoContatto = "Fax";
     else if (Conversione.IsTypeOf(contatto, typeof(Cellulare)))
         dto.TipoContatto = "Cellulare";
     else if (Conversione.IsTypeOf(contatto, typeof(EmailCertificata)))
         dto.TipoContatto = "EmailCert";
     else if (Conversione.IsTypeOf(contatto, typeof(SitoInternet)))
         dto.TipoContatto = "WWW";
     
     return dto;
 }
예제 #9
0
 public int? ManageDomainEntity(ContattoDTO contattoDto, bool onlyValore)
 {
     try
     {
         var item = manageContatto(contattoDto, onlyValore);
         if (item != null)
             return item.ID;
         return null;
     }
     catch (Exception ex)
     {
         _log.ErrorFormat("Errore nel salvataggio dei contatti - {0} - id:{1}", ex, Utility.GetMethodDescription(), contattoDto.ID);
         throw;
     }
 }
예제 #10
0
        private ReferenteDTO setDto(Referente item)
        {
            if (item != null)
            {
                var dto = new ReferenteDTO
                {
                    Version = item.Version,
                    Sigla = item.Sigla,
                    ID = item.ID,
                    Dinamico = item.Dinamico,
                    IdAzienda = item.Azienda.ID
                };

                if (item.ReferenteSostitutivo != null)
                    dto.Sostitutivo = item.ReferenteSostitutivo.ID;

                dto.IsDeleteAllow = true;
                if (item.CondominiAssemblea.Count > 0 || item.CondominiContabilita.Count > 0 || item.Condomini.Count > 0)
                    dto.IsDeleteAllow = false;

                if (item.Dinamico != null && item.Dinamico.Value)
                {
                    var referenteEffettivo = item.GetReferenteEffettivo(null, null);
                    dto.DisplayName = item.DisplayName;
                    if (referenteEffettivo != null && !string.IsNullOrEmpty(referenteEffettivo.Sigla))
                        dto.DisplayName += " (" + referenteEffettivo.Sigla + ")";
                }
                else
                {
                    dto.DisplayName = item.DisplayName;
                    dto.DisplayNameCompleto = $"{dto.Sigla} - {dto.DisplayName}";
                }


                if (item.PersonaRiferimento != null)
                {
                    dto.Nome = item.PersonaRiferimento.Nome;
                    dto.Cognome = item.PersonaRiferimento.Cognome;
                    dto.PersonaId = item.PersonaRiferimento.ID;
                    dto.NominativoPersona = item.DisplayName;
                    dto.PartitaIva = item.PersonaRiferimento.PartitaIva;
                    dto.CodiceFiscale = item.PersonaRiferimento.CodiceFiscale;
                    dto.Sesso = item.PersonaRiferimento.Sesso.ToString();
                    dto.DataNascita = item.PersonaRiferimento.DataNascita;

                    if (item.PersonaRiferimento.ComuneNascita != null)
                    {
                        dto.CodiceComuneNascita = item.PersonaRiferimento.ComuneNascita.Codice;
                        dto.ComuneNascita = item.PersonaRiferimento.ComuneNascita.Descrizione;
                    }

                    // ----------------------------
                    // Contatti
                    // ----------------------------
                    var contatti = new ContattoDTO[item.PersonaRiferimento.Contatti.Count];
                    var index = 0;
                    foreach (var contatto in item.PersonaRiferimento.Contatti)
                    {
                        contatti[index] = getContattoRepository(item.PersonaRiferimento).GetByDomainEntity(contatto);
                        index++;
                    }
                    dto.Contatti = contatti;

                    // Per Lista
                    var contattiColl = new ContattoCollection(item.PersonaRiferimento.Contatti);
                    var cell = contattiColl.GetFirstContatto<Cellulare>();
                    if (cell != null)
                        dto.Cellulare = cell.Valore;
                    var tel = contattiColl.GetFirstContatto<Telefono>();
                    if (tel != null)
                        dto.Telefono = tel.Valore;
                    var mail = contattiColl.GetFirstContatto<Email>();
                    if (mail != null)
                        dto.Email = mail.Valore;
                }
                else
                    dto.Cognome = item.Descrizione;

                dto.NumeroCondominiAssemblea = item.CondominiAssemblea.Count;
                foreach (var condominio in item.CondominiAssemblea)
                {
                    if (condominio.NumeroUnitaImmobiliari != null)
                        dto.NumeroUnitaImmobiliariAssemblea += condominio.NumeroUnitaImmobiliari.Value;
                }

                // ----------------------------
                // Condomini Assemblea
                // ----------------------------
                var condominiAssemblea = new int[item.CondominiAssemblea.Count];
                var indexCondominiAssemblea = 0;
                foreach (var condominio in item.CondominiAssemblea)
                {
                    condominiAssemblea[indexCondominiAssemblea] = condominio.ID;
                    indexCondominiAssemblea++;
                }
                dto.CondominiAssemblea = condominiAssemblea;

                return dto;
            }

            return null;
        }
예제 #11
0
		public int? SetContatto(ContattoDTO contattoDto, UserInfo userinfo)
		{
			var windsorRep = new WindsorConfigRepository();
			try
			{
			    int? item = null;
                if(contattoDto != null)
                {
                    windsorRep.BeginTransaction(userinfo);
                    var repo = new ContattoRepository(contattoDto.CodiceRiferimento, userinfo, windsorRep);
                    item = repo.ManageDomainEntity(contattoDto, false);
                    windsorRep.Commit();
                }
				return item;
			}
			catch (Exception ex)
			{
		        _log.ErrorFormat("Errore il salvataggio dei contatti - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), contattoDto?.ID.ToString() ?? "null", userinfo.Azienda);
			    windsorRep.Rollback();
				throw;
			}
		}
예제 #12
0
 private TipoMessaggio getTipoContatto(ContattoDTO contatto)
 {
     switch (contatto.TipoContatto)
     { 
         case "Email":
             return TipoMessaggio.Email;
         case "Fax":
             return TipoMessaggio.Fax;
         case "Cellulare":
             return TipoMessaggio.Sms;
         default:
             return TipoMessaggio.Undefined;
     }
 }