public ActionResult Create(Incidente incidente) { if (ModelState.IsValid) { try { //Cambiar correo de notificacion a la configuracion de notificaciones incidente.FechaAlta = DateTime.Now; incidente.FechaIncidente = new DateTime(incidente.TmpFechaIncidente.Year, incidente.TmpFechaIncidente.Month, incidente.TmpFechaIncidente.Day, incidente.TmpHoraIncidente.Hour, incidente.TmpHoraIncidente.Minute, 0); incidente.UsuarioAlta = 1;//Convert.ToInt32(Session["userNameId"]); if (incidente.ZonaId == 0) incidente.ZonaId = null; if (incidente.InstalacionId == 0) incidente.InstalacionId = null; db.Incidentes.Add(incidente); db.SaveChanges(); SendNotifications(incidente); return Json(new object[] { true, "saved" }); } catch (DbEntityValidationException ex) { foreach (var validationErrors in ex.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage); } } } } else { string errorResult = string.Empty; foreach (var key in ModelState.Values) { foreach (var error in key.Errors) { errorResult += error.ErrorMessage + "|"; } } errorResult = errorResult.Substring(0, errorResult.Length - 1); return Json(new object[] { false, errorResult }); } return View(incidente); }
public bool SendNotifications(Incidente incidente) { var sb = new StringBuilder(); var res = false; var userId = 1;//(int) Session["userNameId"]; var empresasId = (from empresa in db.relUsuarioEmpresa where empresa.UsuarioId == userId select empresa); var emails = (from email in db.AlertasIncidente //join e in db.relUsuarioEmpresa on email.EmpresaId equals e.EmpresaId where email.TipoIncidenteId.Equals(incidente.TipoIncidenteId) //&& e.UsuarioId == userId select email); var mensaje = string.Empty; var TipoIncidente = db.TiposIncidente.FirstOrDefault(e => e.Id == incidente.TipoIncidenteId); foreach (var alerta in emails) { var nomEmpresa = (db.Empresas.FirstOrDefault(e => e.Id == incidente.EmpresaId)); var Estado = (db.Estados.FirstOrDefault(e => e.Id == incidente.EstadoId)); var ciudad = (db.Ciudades.FirstOrDefault(c => c.Id == incidente.CiudadId)); var zona = (db.Zonas.FirstOrDefault(z => z.Id == incidente.ZonaId)); var mail = new ServiceMailer(); var message = new Email(); var email = alerta.Emails.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList(); email.ForEach(e=> message.To.Add(e)); message.Subject = "Alerta de incidente."; mensaje += "Fecha y hora del incidente: " + incidente.FechaIncidente + "\r\n"; mensaje += "Tipo de Incidente: " + TipoIncidente.Nombre + "\r\n"; mensaje += "Empresa: " + nomEmpresa.Nombre + "\r\n"; mensaje += string.Format("Ubicación: Estado: {0}, Ciudad: {1}, Colonia: {2}, Calle: {3}, Entre calles: {4}", Estado.Nombre, ciudad.Nombre, incidente.Colonia, incidente.Calle, incidente.EntreCalles) + "\r\n"; mensaje += string.Format("Zona: {0}", incidente.ZonaId != null ? zona.Nombre : "No definida"); message.Body = mensaje; foreach (var empresa in empresasId) { if (alerta.RecibirMiEmpresa && empresa.EmpresaId == alerta.EmpresaId) { res = mail.SendMail(message); } if (alerta.RecibirOtrasEmpresas && alerta.EmpresaId != empresa.EmpresaId) { res = mail.SendMail(message); } } } return res; }
public ActionResult Edit(Incidente incidente) { if (ModelState.IsValid) { db.Entry(incidente).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(incidente); }