public ActionResult Obtener(string id) { try { ProyectoRepository pr = new ProyectoRepository(); SolicitudRepository sr = new SolicitudRepository(); ResponsableRepository rr = new ResponsableRepository(); TipoProyectoRepository tpr = new TipoProyectoRepository(); AmbienteRepository ar = new AmbienteRepository(); ProyectoView pv = new ProyectoView(); pv.UsuarioLogueado = ObtenerUsuario(); pv.Mensaje = ""; Proyecto p = pr.Obtener(id); pv.Proyecto = p; pv.Responsables = rr.Listar(String.Empty); pv.TipoProyectos = tpr.Listar(String.Empty); p.Solicitudes = sr.ListarPorProyecto(p.Id); pv.Ambientes = ar.Listar(String.Empty); p.Correos = pr.ListarCorreo(p); return(View("Obtener", pv)); } catch (Exception ex) { return(View("Mensaje", new ProyectoView { Mensaje = ex.Message })); } }
public static void EnviarCorreo(Solicitud[] solicitudes, string asunto, string cuerpo, bool incluirSolicitante, bool incluirAnalistaDes, bool incluirAnalistaTest, bool incluirCopiados, bool incluirRMs, bool incluirCMs, bool incluirEjecutores, bool incluirAdicional) { try { SistemaRepository sr = new SistemaRepository(); SmtpClient client = new SmtpClient(); string correoCMS = sr.Obtener().CorreoCMS; MailAddress maDesde = new MailAddress(correoCMS, "Configuration Management System"); UsuarioRepository ur = new UsuarioRepository(); MailAddressCollection mailsTo = new MailAddressCollection(); MailAddressCollection mailsCc = new MailAddressCollection(); MailAddressCollection mailsBcc = new MailAddressCollection(); if (incluirRMs) { List <Usuario> rms = ur.Listar(String.Empty, String.Empty, false, false, false, false, true, false, false); foreach (Usuario rm in rms) { if (!String.IsNullOrEmpty(rm.Correo)) { mailsBcc = IncluirCorreo(new MailAddress(rm.Correo), mailsBcc); } } } if (incluirCMs) { List <Usuario> cms = ur.Listar(String.Empty, String.Empty, false, false, false, true, false, false, false); foreach (Usuario cm in cms) { if (!String.IsNullOrEmpty(cm.Correo)) { mailsBcc = IncluirCorreo(new MailAddress(cm.Correo), mailsBcc); } } } foreach (Solicitud s in solicitudes) { if (incluirSolicitante) { if (!String.IsNullOrEmpty(s.Solicitante.Correo)) { mailsCc = IncluirCorreo(new MailAddress(s.Solicitante.Correo), mailsCc); } } if (incluirAnalistaDes) { if (!String.IsNullOrEmpty(s.AnalistaDesarrollo)) { mailsCc = IncluirCorreo(new MailAddress(s.AnalistaDesarrollo), mailsCc); } } if (incluirAnalistaTest) { Area[] areas = Util.ObtenerAreas(s); bool enviarAnalista = false; foreach (Area area in areas) { if (area.Correos.Count == 0 && area.Id > 0) { enviarAnalista = true; break; } } if (!String.IsNullOrEmpty(s.AnalistaTestProd)) { if (enviarAnalista) { mailsTo = IncluirCorreo(new MailAddress(s.AnalistaTestProd), mailsTo); } else { mailsCc = IncluirCorreo(new MailAddress(s.AnalistaTestProd), mailsCc); } } } if (incluirCopiados) { string[] copiados = s.CopiarA.Split(new char[] { ';' }); foreach (string copia in copiados) { if (!String.IsNullOrEmpty(copia)) { mailsCc = IncluirCorreo(new MailAddress(copia), mailsCc); } } } if (incluirEjecutores) { MailAddressCollection correos = ObtenerCorreoEjecutores(s); foreach (MailAddress correo in correos) { mailsTo = IncluirCorreo(correo, mailsTo); } } if (s.Ambiente.EnvioPrimeraSolicitud && Util.EsPrimerEnvio(s)) { string[] correos = sr.Obtener().PrimeraSolicitud.Split(new char[] { ';' }); foreach (string correo in correos) { if (!String.IsNullOrEmpty(correo)) { mailsBcc = IncluirCorreo(new MailAddress(correo), mailsBcc); } } } #region Se incluyen correos configurados a nivel de proyecto var pr = new ProyectoRepository(); var proyectocorreos = pr.ListarCorreo(s.Proyecto); foreach (var cor in proyectocorreos) { mailsCc = IncluirCorreo(new MailAddress(cor.Direccion), mailsCc); } #endregion } if (incluirAdicional) { if (solicitudes.Count() > 0) { Ambiente ambiente = solicitudes[0].Ambiente; AmbienteRepository ar = new AmbienteRepository(); List <Correo> correos = ar.ListarCorreos(ambiente.Id); foreach (Correo correo in correos) { if (!String.IsNullOrEmpty(correo.Direccion)) { mailsBcc = IncluirCorreo(new MailAddress(correo.Direccion), mailsBcc); } } } } MailMessage mm = new MailMessage(); mm.From = maDesde; mm.ReplyToList.Add(sr.Obtener().ResponderA); foreach (MailAddress mail in mailsTo) { mm.To.Add(mail); } foreach (MailAddress mail in mailsCc) { mm.CC.Add(mail); } foreach (MailAddress mail in mailsBcc) { mm.Bcc.Add(mail); } mm.Subject = asunto; mm.Body = cuerpo; mm.IsBodyHtml = true; if (solicitudes.Count() == 1 && solicitudes[0].Emergente) { mm.Priority = MailPriority.High; } client.Send(mm); } catch { throw; } }
public ActionResult Actualizar(ProyectoView proyectoView) { try { AmbienteRepository ar = new AmbienteRepository(); string id = Request.Form["txtId"]; string codigoProyecto = Request.Form["txtCodigoProyecto"]; string nombreProyecto = Request.Form["txtNombreProyecto"]; string pm = Request.Form["txtPm"]; string ptl = Request.Form["txtPtl"]; char estado = Request.Form["cboEstadoProyecto"].ToCharArray()[0]; //string fechaProduccion = Request.Form["txtFechaProdProy"]; int responsableId = int.Parse(Request.Form["cboResponsable"]); bool mejora = Request.Form["chkMejora"] == "on"; string impacto = mejora ? Request.Form["txtImpacto"] : String.Empty; int tipoProyectoId = int.Parse(Request.Form["cboTipoProyecto"]); string txtCodigoPresupuestal = Request.Form["txtCodigoPresupuestal"]; string txtCodigoAlterno = Request.Form["txtCodigoAlterno"]; Proyecto p = new Proyecto(); p.Id = int.Parse(id); p.Codigo = codigoProyecto; p.Nombre = nombreProyecto; p.Pm = pm; p.Ptl = ptl; p.Estado = estado; p.Mejora = mejora; p.Impacto = impacto; p.CodigoPresupuestal = txtCodigoPresupuestal; p.CodigoAlterno = txtCodigoAlterno; if (responsableId > 0) { p.Responsable = new Responsable { Id = responsableId }; } if (tipoProyectoId > 0) { p.TipoProyecto = new TipoProyecto { Id = tipoProyectoId }; } List <ProyectoAmbiente> proyectoAmbientes = new List <ProyectoAmbiente>(); #region Ambientes string clave = "chkAmbiente"; foreach (string key in Request.Form.AllKeys) { if (key.IndexOf(clave) >= 0) { int ambienteId = int.Parse(key.Substring(clave.Length)); string fechaBruto = Request.Form["txtFecha" + ambienteId.ToString()]; int anio = int.Parse(fechaBruto.Substring(6)); int mes = int.Parse(fechaBruto.Substring(3, 2)); int dia = int.Parse(fechaBruto.Substring(0, 2)); DateTime fechaPase = new DateTime(anio, mes, dia); ProyectoAmbiente pa = new ProyectoAmbiente(); pa.Ambiente = ar.Obtener(ambienteId); pa.FechaPase = fechaPase; proyectoAmbientes.Add(pa); } } p.Ambientes = proyectoAmbientes; #endregion #region Aplicaciones List <string> nombres = Request.Form.AllKeys.ToList().Where(param => param.Contains("nombreapp")).ToList(); foreach (string nombre in nombres) { string indice = nombre.Substring("nombreapp".Length); string nombreAplicacion = Request.Form["nombreapp" + indice]; string rutaSvn = Request.Form["svnapp" + indice]; string ide = Request.Form["ideapp" + indice]; string version = Request.Form["versionapp" + indice]; char estadoApp = Request.Form["estadoapp" + indice].ToCharArray()[0]; if (!String.IsNullOrEmpty(Request.Form["hdId" + indice]) || Request.Form["eliminadoapp" + indice] == "0") { p.Aplicaciones.Add(new Aplicacion { Id = String.IsNullOrEmpty(Request.Form["hdId" + indice]) ? 0 : Convert.ToInt32(Request.Form["hdId" + indice]), Nombre = nombreAplicacion, RutaSVN = rutaSvn, Herramienta = ide, Version = version, Eliminar = Request.Form["eliminadoapp" + indice] == "1", Estado = estadoApp }); } } #endregion #region Desarrolladores List <string> idDeses = Request.Form.AllKeys.ToList().Where(param => param.Contains("iddes")).ToList(); foreach (string idDes in idDeses) { string indice = idDes.Substring("iddes".Length); if (!String.IsNullOrEmpty(Request.Form["iddes" + indice])) { if (Request.Form["nuevo" + indice] == "0" || Request.Form["eliminadodes" + indice] == "0") { p.Desarrolladores.Add(new Desarrollador { Id = int.Parse(Request.Form["iddes" + indice]), Usuario = Request.Form["usuariodes" + indice], Correo = Request.Form["correodes" + indice], Nombre = Request.Form["nombredes" + indice], Eliminar = Request.Form["eliminadodes" + indice] == "1" }); } } } #endregion #region Correos var prefijo = "proyectocorreonombre"; var correos = Request.Form.AllKeys.ToList().Where(param => param.Contains(prefijo)).ToList(); foreach (var item in correos) { var indice = item.Substring(prefijo.Length); var correo = Request.Form[prefijo + indice]; if (!String.IsNullOrEmpty(Request.Form["hdCorreo" + indice]) || Request.Form["eliminadoCorreo" + indice] == "0") { if (p.Correos == null) { p.Correos = new List <Correo>(); } p.Correos.Add(new Correo { Id = String.IsNullOrEmpty(Request.Form["hdCorreo" + indice]) ? 0 : Convert.ToInt32(Request.Form["hdCorreo" + indice]), Direccion = correo, Eliminar = Request.Form["eliminadoCorreo" + indice] == "1" }); } } #endregion ProyectoRepository pr = new ProyectoRepository(); p = pr.Actualizar(p); if (p.Id == 0) { proyectoView.Mensaje = "Hubo un error al actualizar el proyecto"; return(View("Crear", proyectoView)); } p.Ambientes = proyectoAmbientes; ProyectoView pp = new ProyectoView(); pp.Mensaje = "Proyecto Actualizado"; pp.Proyecto = p; SolicitudRepository sr = new SolicitudRepository(); pp.Proyecto.Solicitudes = sr.ListarPorProyecto(p.Id); pp.UsuarioLogueado = ObtenerUsuario(); ResponsableRepository rr = new ResponsableRepository(); TipoProyectoRepository tpr = new TipoProyectoRepository(); pp.Responsables = rr.Listar(String.Empty); pp.TipoProyectos = tpr.Listar(String.Empty); pp.Ambientes = ar.Listar(String.Empty); p.Correos = pr.ListarCorreo(p); return(View("Obtener", pp)); } catch (Exception ex) { return(View("Mensaje", new ProyectoView { Mensaje = ex.Message })); } }