/// <summary> /// Crea un Messaggio Attività valido /// </summary> public AttivitaMessaggio(Attivita attivitaRiferimento, StoricoMessaggio messaggio) { Messaggio = messaggio; AttivitaRiferimento = attivitaRiferimento; if (AttivitaRiferimento != null) AttivitaRiferimento.MessaggiInviati.Add(this); }
/// <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); }
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()) }; } }
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() }; } } } } }
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); } }
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; }
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; } }
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; }
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; }
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; }
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; }
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; } }