public bool SendNotifica(PERSONA mittente, PERSONA destinatario, TipoNotifica messaggio, ControllerContext controller, string view, object datiNotifica, ATTIVITA attivitaMittente = null, DatabaseContext db = null) { bool nuovaConnessione = true; try { if (db != null && db.Database.Connection.State == System.Data.ConnectionState.Open) { nuovaConnessione = false; } NOTIFICA notifica = new NOTIFICA(); notifica.ID_PERSONA = mittente.ID; if (attivitaMittente != null) { notifica.ID_ATTIVITA = attivitaMittente.ID; } notifica.ID_PERSONA_DESTINATARIO = destinatario.ID; notifica.MESSAGGIO = (int)messaggio; notifica.STATO = (int)StatoNotifica.ATTIVA; notifica.DATA_INSERIMENTO = DateTime.Now; if (nuovaConnessione) { db = new DatabaseContext(); } db.NOTIFICA.Add(notifica); return(db.SaveChanges() > 0); } catch (Exception eccezione) { //Elmah.ErrorSignal.FromCurrentContext().Raise(eccezione); LoggatoreModel.Errore(eccezione); } finally { if (nuovaConnessione && db != null) { db.Database.Connection.Close(); } try { string indirizzoEmail = destinatario.PERSONA_EMAIL.SingleOrDefault(e => e.TIPO == (int)TipoEmail.Registrazione).EMAIL; // modificare oggetto recuperando dal tipo notifica la stringa string oggetto = Components.EnumHelper <TipoNotifica> .GetDisplayValue(messaggio); SendEmail(indirizzoEmail, oggetto, controller, view, datiNotifica); SendChat("", oggetto); } catch (Exception eccezione) { //Elmah.ErrorSignal.FromCurrentContext().Raise(eccezione); LoggatoreModel.Errore(eccezione); } } return(false); }
public ActionResult SuggestAdActivation(string chiave1, string idAttivita = null) { string backUrl = Request.UrlReferrer.PathAndQuery; using (DatabaseContext db = new DatabaseContext()) { //string tokenAnnuncio = id.Substring(3, id.Length - 6); db.Database.Connection.Open(); ANNUNCIO annuncio = db.ANNUNCIO.Single(m => m.TOKEN.ToString() == chiave1); int idAnnuncio = annuncio.ID; PERSONA persona = (Session["utente"] as PersonaModel).Persona; int idUtente = persona.ID; int? keyAttivita = null; // se è stata selezionata una attività commerciale dell'utente List <AttivitaModel> listaAttivita = (Session["utente"] as PersonaModel).Attivita; if (listaAttivita != null && listaAttivita.Count > 0 && !string.IsNullOrWhiteSpace(idAttivita)) { keyAttivita = listaAttivita.SingleOrDefault(m => m.Attivita.TOKEN.ToString() == idAttivita).ID; } // notifica già inviata. if (db.ANNUNCIO_NOTIFICA.Count(m => m.ID_ANNUNCIO == idAnnuncio && (m.NOTIFICA.ID_PERSONA == idUtente || (keyAttivita != null && m.NOTIFICA.ID_ATTIVITA == keyAttivita))) > 0) { TempData["MESSAGGIO"] = Language.SuggestAdActivationError; //return RedirectToAction("", "Cerca"); return(Redirect(backUrl)); } Guid portale = Guid.Parse(System.Configuration.ConfigurationManager.AppSettings["portaleweb"]); int bonus = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["bonusSuggerimentoAttivazioneAnnuncio"]); this.AddBonus(db, ControllerContext, persona, portale, bonus, TipoTransazione.BonusSuggerimentoAttivazioneAnnuncio, Bonus.SuggestAdActivation); NOTIFICA notifica = new NOTIFICA(); notifica.ID_PERSONA = idUtente; notifica.ID_ATTIVITA = keyAttivita; notifica.ID_PERSONA_DESTINATARIO = annuncio.ID_PERSONA; notifica.ID_ATTIVITA_DESTINATARIO = annuncio.ID_ATTIVITA; notifica.MESSAGGIO = (int)TipoNotifica.AttivaAnnuncio; notifica.DATA_INSERIMENTO = DateTime.Now; notifica.STATO = (int)Stato.ATTIVO; db.NOTIFICA.Add(notifica); if (db.SaveChanges() > 0) { db.ANNUNCIO_NOTIFICA.Add(new ANNUNCIO_NOTIFICA() { ID_ANNUNCIO = idAnnuncio, ID_NOTIFICA = notifica.ID }); if (db.SaveChanges() > 0) { TempData["MESSAGGIO"] = Language.SuggestAdActivationOK; //return RedirectToAction("", "Cerca"); return(Redirect(backUrl)); } } } TempData["MESSAGGIO"] = Language.SuggestAdActivationKO; //return RedirectToAction("", "Cerca"); return(Redirect(backUrl)); }
public ActionResult Index(int id) { UtenteNotificaViewModel utenteNotifica = new UtenteNotificaViewModel(); using (DatabaseContext db = new DatabaseContext()) { int idUtente = (Session["utente"] as PersonaModel).Persona.ID; NOTIFICA model = db.NOTIFICA.Include(m => m.ANNUNCIO_NOTIFICA) .SingleOrDefault(m => m.ID == id && m.ID_PERSONA_DESTINATARIO == idUtente); if (model == null) { RedirectToAction("", "Home"); } utenteNotifica.getTipoNotifica(db, model); RefreshPunteggioUtente(db); } return(View(utenteNotifica)); }
public void Letto(int id) { PersonaModel utente = base.Session["utente"] as PersonaModel; using (DatabaseContext db = new DatabaseContext()) { db.Database.Connection.Open(); NOTIFICA model = db.NOTIFICA.Include(m => m.ANNUNCIO_NOTIFICA) .SingleOrDefault(m => m.ID == id && m.ID_PERSONA_DESTINATARIO == utente.Persona.ID); if (model != null && model.DATA_LETTURA == null) { model.DATA_LETTURA = DateTime.Now; model.DATA_MODIFICA = DateTime.Now; model.STATO = (int)StatoNotifica.LETTA; db.SaveChanges(); } } }
public JsonResult DeleteNews(int id) { using (DatabaseContext db = new DatabaseContext()) { db.Database.Connection.Open(); PersonaModel utente = (Session["utente"] as PersonaModel); NOTIFICA notifica = db.NOTIFICA.SingleOrDefault(m => m.ID == id && m.ID_PERSONA_DESTINATARIO == utente.Persona.ID); if (notifica != null) { if (notifica.ANNUNCIO_NOTIFICA != null && notifica.ANNUNCIO_NOTIFICA.Count > 0) { db.ANNUNCIO_NOTIFICA.RemoveRange(notifica.ANNUNCIO_NOTIFICA); } db.NOTIFICA.Remove(notifica); if (db.SaveChanges() > 0) { return(Json(true)); } } } return(Json(false)); }