public ActionResult Edit([Bind(Include = "Id,Titulo,Descripcion,TipoNovedad_Id,TipoNovedad,UsuariosNotificados,ArchivosModulo,DescripcionEstado,Estado,FechaCreacion,FechaActualizacion,idUsuario")] Novedad novedad, string[] UsuariosNotificar) { if (novedad.ArchivosModulo == null) { novedad.ArchivosModulo = new List <ArchivoModulo>().ToArray(); } Usuario usuario = usuarioRepository.Get(novedad.idUsuario.Value).FirstOrDefault(); novedad.Usuario = usuario; ViewBag.TipoNovedades = tipoNovedadRepository.GetFiltered(x => x.Estado == true).ToList(); novedad.UsuariosNotificados = GetNovedadUsuariosFromArray(UsuariosNotificar); if (!ModelState.IsValid) { return(View(novedad)); } try { //Guardo la Novedad novedadRepository.Modify(novedad, this.User.UserID); //Guardo los usuarios a notificar nuevos List <MailDestinatario> mailDestinatarios = new List <MailDestinatario>(); foreach (NovedadUsuarios novedadUsuario in novedad.UsuariosNotificados) { MailDestinatario emailDest = new MailDestinatario(); emailDest.Destinatario = novedadUsuario.Usuario.NombreApellido; emailDest.DestinatarioMail = novedadUsuario.Usuario.Email; emailDest.Hilo = true; mailDestinatarios.Add(emailDest); novedadUsuario.Novedad_Id = novedad.Id; if (!novedadUsuariosRepository.GetFiltered(x => x.Novedad_Id == novedadUsuario.Novedad_Id && x.Usuario_Id == novedadUsuario.Usuario_Id).Any()) { novedadUsuariosRepository.Add(novedadUsuario, this.User.UserID); } } //Elimino los usuarios a notificar que ya no estan en el listado List <NovedadUsuarios> novedadUsuariosBd = novedadUsuariosRepository.GetFiltered(x => x.Novedad_Id == novedad.Id).ToList(); foreach (NovedadUsuarios novedadUsuario in novedadUsuariosBd) { if (!novedad.UsuariosNotificados.Where(x => x.Novedad_Id == novedadUsuario.Novedad_Id && x.Usuario_Id == novedadUsuario.Usuario_Id).Any()) { novedadUsuariosRepository.RemoveFromDataBase(novedadUsuario, this.User.UserID); } } if (novedad.ArchivosModulo != null) { foreach (ArchivoModulo archivoModulo in novedad.ArchivosModulo) { if ((archivoRepository.GetFiltered(x => x.Id == archivoModulo.Id && x.Estado == true).Any() == false) && archivoModulo.Deleted != true) { AltaArchivosModulo(archivoModulo, novedad.Id.ToString()); } if (archivoModulo.Deleted == true) { archivoRepository.Remove(archivoModulo, this.User.UserID); } } } Mail mail = new Mail(); mail.Asunto = "Novdedad N° " + novedad.Id.ToString() + " Modificada"; mail.Cuerpo = ArmarCuerpoMail(novedad); Usuario currentUser = usuarioRepository.Get(this.User.UserID).First(); mail.Remitente = currentUser.Email; mail.NombreRemitente = currentUser.UserName + " (" + currentUser.Email + ")"; SendEmails(mail, mailDestinatarios, novedad.ArchivosModulo.ToList()); SetMessage(SUCCESS, " Guardado."); } catch (Exception ex) { SetMessage(ERROR, " Error al guardar la Novedad: " + ex.Message); } return(Index()); }
public ActionResult Create([Bind(Include = "Titulo,Descripcion,TipoNovedad_Id,TipoNovedad,UsuariosNotificados,ArchivosModulo")] Novedad novedad, string[] UsuariosNotificar) { if (novedad.ArchivosModulo == null) { novedad.ArchivosModulo = new List <ArchivoModulo>().ToArray(); } ViewBag.TipoNovedades = tipoNovedadRepository.GetFiltered(x => x.Estado == true).ToList(); novedad.UsuariosNotificados = GetNovedadUsuariosFromArray(UsuariosNotificar); if (!ModelState.IsValid) { return(View(novedad)); } try { //Guardo la Novedad novedadRepository.Add(novedad, this.User.UserID); //Guardo los usuarios a notificar pasandoles el Id de la novedad en Novedad_Id List <MailDestinatario> mailDestinatarios = new List <MailDestinatario>(); foreach (NovedadUsuarios novedadUsuario in novedad.UsuariosNotificados) { MailDestinatario emailDest = new MailDestinatario(); emailDest.Destinatario = novedadUsuario.Usuario.NombreApellido; emailDest.DestinatarioMail = novedadUsuario.Usuario.Email; emailDest.Hilo = true; mailDestinatarios.Add(emailDest); novedadUsuario.Novedad_Id = novedad.Id; novedadUsuariosRepository.Add(novedadUsuario, this.User.UserID); } if (novedad.ArchivosModulo != null) { foreach (ArchivoModulo newArchivo in novedad.ArchivosModulo) { if (newArchivo.Deleted == false) { AltaArchivosModulo(newArchivo, novedad.Id.ToString()); } } } Mail mail = new Mail(); mail.Asunto = "Novedad N° " + novedad.Id.ToString() + " Creada"; mail.Cuerpo = ArmarCuerpoMail(novedad); Usuario currentUser = usuarioRepository.Get(this.User.UserID).First(); mail.Remitente = currentUser.Email; mail.NombreRemitente = currentUser.UserName + " (" + currentUser.Email + ")"; SendEmails(mail, mailDestinatarios, novedad.ArchivosModulo.ToList()); SetMessage(SUCCESS, " Guardado."); } catch (Exception ex) { SetMessage(ERROR, " Error al guardar la Novedad: " + ex.Message); } return(Index()); }