예제 #1
0
        /// <summary>
        /// Crea un Messaggio Attività valido
        /// </summary>
        public AttivitaMessaggio(Attivita attivitaRiferimento, StoricoMessaggio messaggio)
        {
            Messaggio = messaggio;

            AttivitaRiferimento = attivitaRiferimento;
            if (AttivitaRiferimento != null)
                AttivitaRiferimento.MessaggiInviati.Add(this);
        }
예제 #2
0
        /// <summary>
        /// Crea un Alert attività valido
        /// </summary>
        public AlertAttivita(NotifyType tipoAvviso, Referente destinatario, Attivita attivita)
        {
            TipoAvviso = tipoAvviso;
            Destinatario = destinatario;
            Attivita = attivita;

            if (Attivita != null)
                Attivita.Alert.Add(this);
        }
예제 #3
0
        private IList<RisultatoInvioMessaggio> sendEmail(Attivita attivita, string email, bool isNew)
        {
            try
            {
                if (!string.IsNullOrEmpty(email))
                {
                    var prat = attivita.PraticaRiferimento;
                    var incaricato = attivita.Incaricato;

                    var note = Conversione.RtfToString(attivita.Note);

                    var tipo = "appena aggiunta una nuova attività";
                    if (!isNew)
                        tipo = "modificata un'attività";

                    var body =
                        $@"<html>E' stata {tipo} in Sfera, della quale lei e' incaricato.<br /><br />
                        Eccone il riepilogo:<br /> 
                        Tipo attivita: {attivita.TipoAttivitaRiferimento}<br />
                        Contrattuale: {attivita.Contrattuale}<br />
                        Addebito competenze: {attivita.AddebitoCompetenze}<br />
                        Fatturata: {attivita.Fatturata}<br />
                        Data fine prevista: {attivita.DataFinePrevista}<br />
                        Importo competenze: {attivita.ImportoCompetenze}<br />
                        Pratica di riferimento: <i>{prat.TipoPraticaRiferimento.Descrizione} {prat.Oggetto}</i><br />
                        Incaricato: {incaricato.PersonaRiferimento.DisplayName}<br /><br />
                        Si prega di non rispondere a questa e-mail, in quanto generata da un sistema automatico.<br/><br/>{note}</html>";

                    var destinatari = new List<string>(1) { email };

                    int? idResponsabile = null;
                    if (attivita.ResponsabileRiferimento != null)
                        idResponsabile = attivita.ResponsabileRiferimento.ID;

                    int? idFornitore = null;
                    if (attivita.Fornitore != null)
                        idFornitore = attivita.Fornitore.ID;

                    int? idIncaricatoAttivita = null;
                    if (attivita.Incaricato != null)
                        idIncaricatoAttivita = attivita.Incaricato.ID;

                    return _messageService.InvioMessaggio(attivita.PraticaRiferimento.CondominioRiferimento.Azienda.ID, new PersonaMessaggioDTO { ID = incaricato.PersonaRiferimento.ID }, attivita.PraticaRiferimento.CondominioRiferimento, null, idFornitore, idResponsabile, idIncaricatoAttivita, MotivoMessaggio.NotificaResponsabileAttivita, $"Sfera - Condominio: {prat.CondominioRiferimento.DisplayName} - Inserimento nuova attivita", body, destinatari, "*****@*****.**", "*****@*****.**", null, new ParametriInvioLettera { Asincrono = true });
                }

                return new List<RisultatoInvioMessaggio> { new RisultatoInvioMessaggio(string.Empty, string.Empty, false, string.Empty, new DocumentInfo()) };
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato durante l'invio della mail - {0} - attività:{1}", ex, Utility.GetMethodDescription(), attivita.ID);
                return new List<RisultatoInvioMessaggio> { new RisultatoInvioMessaggio(string.Empty, string.Empty, false, "Errore inaspettato durante l'invio della mail - " + Utility.GetMethodDescription() + " - idAttivita: " + attivita.ID, new DocumentInfo()) };
            }
        }
예제 #4
0
 public void SetDefaultAttivita(Attivita attivita)
 {
     if (attivita != null)
     {
         // Alert scadenza attività
         var tipoAlert = _daoFactory.GetTipoAlertDao().Find(6, false);
         if (tipoAlert != null)
         {
             foreach (var dettaglio in tipoAlert.DettaglioReferenti)
             {
                 if (dettaglio.Azienda.ID == attivita.PraticaRiferimento.CondominioRiferimento.Azienda.ID)
                 {
                     var alertAttivita = new AlertAttivita(dettaglio.TipoNotifica, dettaglio.ReferenteRiferimento, attivita)
                     {
                         AvvisoScadenza = dettaglio.NumeroGiorni.GetValueOrDefault()
                     };
                 }
             }
         }
     }
 }
예제 #5
0
        private void sendEmailToIncaricatoAttivita(Attivita attivita, bool isNew)
        {
            if (attivita.Incaricato != null)
            {
                //Controllo che il responsabile sia disponibile altrimenti la comunicazione sarà inviata al suo sostituto
                var incaricato = attivita.Incaricato;
                if (attivita.Incaricato.ReferenteSostitutivo != null)
                    incaricato = attivita.Incaricato.ReferenteSostitutivo;

                var email = incaricato.PersonaRiferimento.Contatti.OfType<Email>().Select(cont => cont.Valore).FirstOrDefault();

                if (!string.IsNullOrEmpty(email))
                    sendEmail(attivita, email, isNew);
            }
        }
예제 #6
0
        public string InserimentoAttivita(int idUtente, AttivitaDTO attivitaDto, out Attivita attOutput)
        {
            attOutput = null;
            var message = isAllowInserimentoAttivita(attivitaDto);

            try
            {
                if (message == "")
                {
                    var attDao = _daoFactory.GetAttivitaDao();
                    var referenteDao = _daoFactory.GetReferenteDao();
                    var pratDao = _daoFactory.GetPraticaDao();
                    var responsabileRif = referenteDao.GetById(attivitaDto.IdResponsabileRiferimento, false);
                    var incaricato = referenteDao.Find(attivitaDto.IdIncaricato, false);
                    var praticaRif = pratDao.GetById(attivitaDto.IdPraticaRiferimento, false);

                    var inviareEmail = true;
                    var isNew = true;
                    Attivita attivita;
                    if (attivitaDto.ID == 0)
                    {
                        attivita = new Attivita(praticaRif, responsabileRif, incaricato, attivitaDto.DataFinePrevista, attivitaDto.AziendaID) { StatoAttivita = "Aperta" };
                        SetDefaultAttivita(attivita);
                        if (incaricato == null)
                            attivita.Letta = true;
                    }
                    else
                    {
                        isNew = false;
                        attivita = attDao.Find(attivitaDto.ID, false);
                        if (attivita != null)
                        {
                            attivita.ResponsabileRiferimento = responsabileRif;
                            attivita.Incaricato = incaricato;
                            attivita.DataFinePrevista = attivitaDto.DataFinePrevista;
                            attOutput = attivita;
                        }
                    }

                    if (attivita != null)
                    {
                        if (attivitaDto.IdFornitore != null)
                            attivita.Fornitore = _daoFactory.GetFornitoreDao().Find(attivitaDto.IdFornitore.Value, false);

                        attivita.AddebitoCompetenze = attivitaDto.AddebitoCompetenze;
                        attivita.Contrattuale = attivitaDto.Contrattuale;
                        attivita.Note = attivitaDto.Note;
                        attivita.Fatturata = attivitaDto.Fatturata;
                        attivita.ImportoCompetenze = attivitaDto.ImportoCompetenze;
                        attivita.TipoAttivitaRiferimento = attivitaDto.TipoAttivitaRiferimento;
                        attivita.Urgenza = (Urgenza)attivitaDto.Urgenza;
                        attivita.AlertScadenzaAbilitato = attivitaDto.AlertScadenzaAbilitato;

                        if (attivitaDto.ID == 0)
                            attOutput = attDao.SaveOrUpdate(attivita);

                        if (inviareEmail)
                            sendEmailToIncaricatoAttivita(attivita, isNew);

                        // Se presente aggiorno un eventuale nuovo messaggio
                        if (attivitaDto.IdNuoviMessaggi != null)
                        {
                            foreach (var id in attivitaDto.IdNuoviMessaggi)
                            {
                                var messaggio = _daoFactory.GetAttivitaMessaggioDao().Find(id, false);
                                if (messaggio != null)
                                {
                                    messaggio.AttivitaRiferimento = attivita;
                                    messaggio.DataInserimento = DateTime.Now;
                                    attivita.MessaggiInviati.Add(messaggio);
                                }
                            }
                        }                        
                    }

                }
            }
            catch (Exception ex)
            {                
                _log.ErrorFormat("Non è stato possibile inserire la attivita. Errore durante il salvataggio delle informazioni - {0} - idAttivita:{1}", ex, Utility.GetMethodDescription(), attivitaDto.ID);
                message = "Non è stato possibile inserire la attivita. Errore durante il salvataggio delle informazioni";
            }

            return message;
        }
예제 #7
0
파일: Referente.cs 프로젝트: gipasoft/Sfera
 public virtual Referente GetReferenteEffettivo(Condominio condominio, Attivita attivita)
 {
     if (!IsDinamico)
         return this;
     else
     {
         if (Azienda.ResponsabileDinamico != null && ID == Azienda.ResponsabileDinamico.ID)
             return Azienda.Amministratore;
         else if (Azienda.ResponsabileDinamicoAssicurazioni != null && ID == Azienda.ResponsabileDinamicoAssicurazioni.ID)
             return Azienda.ResponsabileAssicurazioni;
         else if (Azienda.ResponsabileDinamicoPremiAssicurativi != null && ID == Azienda.ResponsabileDinamicoPremiAssicurativi.ID)
             return Azienda.ResponsabilePremiAssicurativi;
         else if (Azienda.ResponsabileDinamicoIncaricatoAttivita != null && ID == Azienda.ResponsabileDinamicoIncaricatoAttivita.ID && attivita != null)
             return attivita.Incaricato;
         else if (Azienda.ResponsabileDinamicoCondominio != null && ID == Azienda.ResponsabileDinamicoCondominio.ID)
         {
             if (condominio != null && condominio.Responsabile != null)
                     return condominio.Responsabile;
             else
                 return Azienda.ResponsabileDinamicoCondominio;
         }
         else
             return null;
     }
 }
예제 #8
0
파일: Attivita.cs 프로젝트: gipasoft/Sfera
        public IUpdatableBusinessEntity Copy()
        {
            var att = new Attivita
            {
                Contrattuale = Contrattuale,
                AddebitoCompetenze = AddebitoCompetenze,
                Fatturata = Fatturata,
                DataFinePrevista = DataFinePrevista,
                DataFineEffettiva = DataFineEffettiva,
                StatoAttivita = StatoAttivita,
                Note = Note,
                ImportoCompetenze = ImportoCompetenze
            };
		
            return att;
        }
예제 #9
0
        private bool insert(AttivitaDTO dto, out Attivita item)
        {
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
            var service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IPraticaService>();

            try
            {
                var prat = daoFactory.GetPraticaDao().GetById(dto.IdPraticaRiferimento, false);
                var respRif = daoFactory.GetReferenteDao().GetById(dto.IdResponsabileRiferimento, false);
                var incaricato = daoFactory.GetReferenteDao().Find(dto.IdIncaricato, false);


                item = new Attivita(prat, respRif, incaricato, dto.DataFinePrevista, dto.AziendaID)
                {
                    TipoAttivitaRiferimento = dto.TipoAttivitaRiferimento,
                    Contrattuale = dto.Contrattuale,
                    AddebitoCompetenze = dto.AddebitoCompetenze,
                    Fatturata = dto.Fatturata,
                    StatoAttivita = dto.StatoAttivita,
                    Note = dto.Note,
                    ImportoCompetenze = dto.ImportoCompetenze,
                    Urgenza = (Urgenza)dto.Urgenza,
                    AlertScadenzaAbilitato = dto.AlertScadenzaAbilitato,
                    Letta = incaricato == null
                };
                service.SetDefaultAttivita(item);

                daoFactory.GetAttivitaDao().SaveOrUpdate(item);
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nell'inserimento delle attivita - {0} - id:{1} - azienda:{2}", ex, dto.ID, _info.Azienda);
                throw;
            }
            return true;
        }
예제 #10
0
        private bool update(AttivitaDTO dto, out Attivita item)
        {
            var result = false;
            item = null;
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

            try
            {
                item = daoFactory.GetAttivitaDao().GetById(dto.ID, false);

                // Condizione necessare per il controllo del fatto che sul DB ho una versione uguale o più vecchia
                if (dto.Version == item.Version)
                {

                    item.PraticaRiferimento = daoFactory.GetPraticaDao().GetById(dto.IdPraticaRiferimento, false);
                    
                    if (dto.DataFinePrevista < item.PraticaRiferimento.DataApertura)
                        return false;
                    item.ResponsabileRiferimento = daoFactory.GetReferenteDao().GetById(dto.IdResponsabileRiferimento, false);
                    item.Incaricato = daoFactory.GetReferenteDao().GetById(dto.IdIncaricato, false);

                    item.TipoAttivitaRiferimento = dto.TipoAttivitaRiferimento;
                    item.DataFineEffettiva = dto.DataFineEffettiva;
                    item.DataFinePrevista = dto.DataFinePrevista;

                    item.Contrattuale = dto.Contrattuale;
                    item.AddebitoCompetenze = dto.AddebitoCompetenze;
                    item.Fatturata = dto.Fatturata;
                    item.StatoAttivita = dto.StatoAttivita;
                    item.Note = dto.Note;
                    item.ImportoCompetenze = dto.ImportoCompetenze;
                    item.Urgenza = (Urgenza)dto.Urgenza;
                    item.AlertScadenzaAbilitato = dto.AlertScadenzaAbilitato;

                    //Responsabile
                    //if (esercizioDto.IdResponsabile != null)
                    //  esercizio.Responsabile = daoFactory.GetReferenteDao().GetById(esercizioDto.IdResponsabile.Value, false);

                    daoFactory.GetAttivitaDao().Update(item);
                    result = true;
                }
                else
                {
                    // Eccezione: Sul db c'è qualche cosa di più nuovo.
                    
                    _log.ErrorFormat("Errore nel salvataggio delle attivita: id:{0} - il dato sul db è più recente di quello che si vuole salvare", dto.ID);
                }
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nella salvataggio delle attivita - {0} - id:{1} - azienda:{2}", ex, dto.ID, _info.Azienda);
                throw;
            }

            return result;
        }
예제 #11
0
        private AttivitaDTO setDto(Attivita item)
        {
            var dto = new AttivitaDTO
            {
                Letta = item.Letta,
                NumDocumenti = item.Documenti.Count,
                TipoAttivitaRiferimento = item.TipoAttivitaRiferimento,
                DataFineEffettiva = item.DataFineEffettiva,
                DataFinePrevista = item.DataFinePrevista,
                Contrattuale = item.Contrattuale,
                AddebitoCompetenze = item.AddebitoCompetenze,
                Fatturata = item.Fatturata,
                StatoAttivita = item.StatoAttivita,
                AlertScadenzaAbilitato = item.AlertScadenzaAbilitato,
                Note = item.Note,
                UtenteInserimento = item.UtenteInserimento,
                DataInserimento = item.DataInserimento.GetValueOrDefault()
            };

            dto.NotePlainText = Conversione.RtfToString(dto.Note);
            dto.ImportoCompetenze = item.ImportoCompetenze;
            dto.AziendaID = item.AziendaID;
            dto.ID = item.ID;
            dto.Version = item.Version;
            dto.Urgenza = (int)item.Urgenza;
            
            if (item.PraticaRiferimento != null)
            {
                dto.IdPraticaRiferimento = item.PraticaRiferimento.ID;
                dto.OggettoPraticaRiferimento = item.PraticaRiferimento.Oggetto;
                dto.DataAperturaPratica = item.PraticaRiferimento.DataApertura;
                dto.DataChiusuraPratica = item.PraticaRiferimento.DataChiusura;
                dto.TipoPraticaRiferimento = item.PraticaRiferimento.TipoPraticaRiferimento.Descrizione;
            }

            if (item.ResponsabileRiferimento != null)
            {
                dto.IdResponsabileRiferimento = item.ResponsabileRiferimento.ID;
                if (item.ResponsabileRiferimento.ReferenteSostitutivo != null)
                {
                        var referente = item.ResponsabileRiferimento.ReferenteSostitutivo;
                        dto.NominativoResponsabile = referente.PersonaRiferimento.Nome + " " + referente.PersonaRiferimento.Cognome;
                }
                else
                    dto.NominativoResponsabile = item.ResponsabileRiferimento.PersonaRiferimento.Nome + " " + item.ResponsabileRiferimento.PersonaRiferimento.Cognome;
            }

            if (item.Incaricato != null)
            {
                dto.IdIncaricato = item.Incaricato.ID;
                dto.NominativoIncaricato = item.Incaricato.PersonaRiferimento.DisplayName;
            }

            if (item.Fornitore != null)
            {
                dto.IdFornitore = item.Fornitore.ID;
                dto.NominativoFornitore = item.Fornitore.DisplayName;
            }

            if (item.PraticaRiferimento != null)
            {
                dto.IdCondominioRiferimento = item.PraticaRiferimento.CondominioRiferimento.ID;
                dto.CondominioRiferimento = item.PraticaRiferimento.CondominioRiferimento.DisplayName;
                dto.TipoPraticaRiferimento = item.PraticaRiferimento.TipoPraticaRiferimento.Descrizione;
            }

            if (item.DataFinePrevista.GetValueOrDefault() < DateTime.Now)
                dto.Scaduta = true;

            // Messaggi Inviati
            dto.MessaggiInviati = new List<AttivitaMessaggioDTO>(item.MessaggiInviati.Count);
            foreach (var mess in item.MessaggiInviati)
                dto.MessaggiInviati.Add(setMessaggioDto(mess));

            return dto;
        }
예제 #12
0
 public AttivitaDTO GetByDomainEntity(Attivita attivita)
 {
     try
     {
         return setDto(attivita);
     }
     catch (Exception ex)
     {
         _log.ErrorFormat("Errore nel caricamento di una singola attività - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), attivita.ID, _info.Azienda);
         throw;
     }
 }