public ActionResult Obtener(string id) { try { ObservacionRepository or = new ObservacionRepository(); List <Observacion> observaciones = or.Listar(String.Empty); AmbienteView av = new AmbienteView(); av.Mensaje = ""; av.Observaciones = observaciones; AmbienteRepository ar = new AmbienteRepository(); Ambiente a = ar.Obtener(int.Parse(id)); a.Correos = ar.ListarCorreos(a.Id); av.Ambiente = a; return(View("Obtener", av)); } catch (Exception ex) { return(View("Mensaje", new AmbienteView { Mensaje = ex.Message })); } }
public ActionResult Crear(AmbienteView ambienteView) { try { string nombreAmbiente = Request.Form["txtNombreAmbiente"]; string abreviatura = Request.Form["txtAbreviatura"]; int orden = int.Parse(Request.Form["txtOrden"]); bool final = Request.Form["chkFinal"] == "on"; bool fechaObligatoria = Request.Form["chkFechaObligatoria"] == "on"; bool apruebaCalidad = Request.Form["chkApruebaCalidad"] == "on"; bool envioPrimeraSolicitud = Request.Form["chkEnvioPrimeraSolicitud"] == "on"; int observacionId = 0; if (Request.Form["cboObservaCalidad"] != null) { observacionId = int.Parse(Request.Form["cboObservaCalidad"]); } #region Verificar is ya existe el nombre del ambiente AmbienteRepository ar = new AmbienteRepository(); Ambiente a = ar.Obtener(nombreAmbiente.Trim()); if (a != null) { ambienteView.Ambiente.Nombre = nombreAmbiente; return(View("Nuevo", ambienteView)); } else { a = new Ambiente(); a.Nombre = nombreAmbiente; a.Abreviatura = abreviatura; a.Orden = orden; a.Final = final; a.FechaObligatoria = fechaObligatoria; a.ApruebaCalidad = apruebaCalidad; a.EnvioPrimeraSolicitud = envioPrimeraSolicitud; a.ObservaCalidad = new Observacion { Id = observacionId }; a = ar.Actualizar(a); if (a.Id == 0) { ambienteView.Mensaje = "Hubo un error al crear el ambiente"; return(View("Crear", ambienteView)); } //proyectoView.Proyecto = p; } #endregion ObservacionRepository or = new ObservacionRepository(); List <Observacion> observaciones = or.Listar(String.Empty); AmbienteView av = new AmbienteView(); av.Mensaje = "Ambiente Creado"; av.Observaciones = observaciones; return(View("Crear", av)); } catch (Exception ex) { return(View("Mensaje", new AmbienteView { Mensaje = ex.Message })); } }
public ActionResult Crear(ProyectoView proyectoView) { try { ResponsableRepository rr = new ResponsableRepository(); TipoProyectoRepository tpr = new TipoProyectoRepository(); AmbienteRepository ar = new AmbienteRepository(); string codigoProyecto = Request.Form["txtCodigoProyecto"]; string nombreProyecto = Request.Form["txtNombreProyecto"]; string pm = Request.Form["txtPm"]; string ptl = Request.Form["txtPtl"]; //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"]; List <ProyectoAmbiente> proyectoAmbientes = new List <ProyectoAmbiente>(); 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); } } #region Verificar is ya existe el código del proyecto ProyectoRepository pr = new ProyectoRepository(); Proyecto p = pr.Obtener(codigoProyecto.Trim()); if (p != null) { proyectoView.Proyecto.Codigo = codigoProyecto; proyectoView.Proyecto.Nombre = nombreProyecto; proyectoView.Proyecto.Pm = pm; proyectoView.Proyecto.Ptl = ptl; proyectoView.Proyecto.Mejora = mejora; proyectoView.Proyecto.Impacto = impacto; proyectoView.Proyecto.CodigoPresupuestal = txtCodigoPresupuestal; proyectoView.Proyecto.CodigoAlterno = txtCodigoAlterno; proyectoView.Responsables = rr.Listar(String.Empty); proyectoView.TipoProyectos = tpr.Listar(String.Empty); if (responsableId > 0) { proyectoView.Proyecto.Responsable = new Responsable { Id = responsableId }; } if (tipoProyectoId > 0) { proyectoView.Proyecto.TipoProyecto = new TipoProyecto { Id = tipoProyectoId }; } proyectoView.Mensaje = "El código del proyecto ya existe"; return(View("Crear", proyectoView)); } else { p = new Proyecto(); p.Codigo = codigoProyecto; p.Nombre = nombreProyecto; p.Pm = pm; p.Ptl = ptl; p.Mejora = mejora; p.Impacto = impacto; if (responsableId > 0) { p.Responsable = new Responsable { Id = responsableId }; } if (tipoProyectoId > 0) { p.TipoProyecto = new TipoProyecto { Id = tipoProyectoId }; } p.CodigoPresupuestal = txtCodigoPresupuestal; p.CodigoAlterno = txtCodigoAlterno; p.Ambientes = proyectoAmbientes; p = pr.Actualizar(p); if (p.Id == 0) { proyectoView.Mensaje = "Hubo un error al crear el proyecto"; return(View("Crear", proyectoView)); } } #endregion ProyectoView pp = new ProyectoView(); pp.Mensaje = "Proyecto Creado"; pp.Responsables = rr.Listar(String.Empty); pp.TipoProyectos = tpr.Listar(String.Empty); pp.Ambientes = ar.Listar(String.Empty); return(View("Crear", pp)); } catch (Exception ex) { return(View("Mensaje", new ProyectoView { Mensaje = ex.Message })); } }
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 })); } }
public ActionResult EnviarEjecutor(string id) { try { SolicitudRepository sr = new SolicitudRepository(); string estadoInicial = "Aprobado_x_RM"; string accionSiguiente = "RM.Enviar_Ejec"; string nombreUsuario = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value).UserData; string codigoPase = String.Empty; string responsableEjecucion = String.Empty; Usuario ux = new UsuarioRepository().Obtener(nombreUsuario); int ventanaId = int.Parse(Request.Form["cboVentana"]); AreaRepository ar = new AreaRepository(); List <Area> areas = ar.Listar(""); string[] keys = Request.Form.AllKeys; int solicitudId; AmbienteRepository ambienteRepository = new AmbienteRepository(); List <Solicitud> solicitudes = new List <Solicitud>(); List <Ambiente> ambientes = new List <Ambiente>(); #region Validar si se están marcando solicitudes de regularización var listaReg = new List <string>(); foreach (var key in keys) { if (String.Compare(key.Substring(0, 3), "chk") == 0 && String.Compare(key, "chkTodos") != 0) { if (String.Compare(Request.Form[key], "on") == 0) { solicitudId = int.Parse(key.Substring(3)); var s = sr.Obtener(solicitudId); if (s.Regularizacion) { listaReg.Add("S" + s.Id.ToString().PadLeft(6, '0')); } } } } if (listaReg.Count() > 0) { var sbMensaje = new StringBuilder(); sbMensaje.Append("<p>No se pueden enviar al ejecutor las siguientes solicitudes de regularizacion</p>"); sbMensaje.Append("<ul>"); foreach (var item in listaReg) { sbMensaje.Append("<li>" + item + "</li>"); } sbMensaje.Append("</ul>"); var hv = new HomeView(); hv.Mensaje = sbMensaje.ToString(); return(View("Mensaje", hv)); } #endregion #region Validar si existen areas asignadas a las solicitudes marcadas para enviar StringBuilder ambienteEnviar = new StringBuilder(); StringBuilder validacion = new StringBuilder(); validacion.Append("<p>Las siguientes solicitudes no tienen asignados en sus formularios los ejecutores</p>"); validacion.Append("<ul>"); bool areasVacias = false; foreach (string key in keys) { if (String.Compare(key.Substring(0, 3), "chk") == 0 && String.Compare(key, "chkTodos") != 0 && String.Compare(Request.Form[key], "on") == 0) { solicitudId = int.Parse(key.Substring(3)); Solicitud s = sr.Obtener(solicitudId); s.Ambiente = ambienteRepository.Obtener(s.Ambiente.Id); if (!ambientes.Exists(p => p.Id == s.Ambiente.Id)) { ambientes.Add(s.Ambiente); ambienteEnviar.Append(s.Ambiente.Nombre); ambienteEnviar.Append(","); } if (!Util.Util.ExisteArea(s)) { areasVacias = true; validacion.Append("<li>S" + s.Id.ToString().PadLeft(6, '0') + "</li>"); } } } validacion.Append("</ul>"); if (areasVacias) { HomeView hv = new HomeView(); hv.Mensaje = validacion.ToString(); return(View("Mensaje", hv)); } #endregion string listaAmbientes = ambienteEnviar.ToString().Substring(0, ambienteEnviar.ToString().Length - 1); string url = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~")); StringBuilder sb = new StringBuilder(); sb.Append("<table border='1' style='border-collapse:collapse;width:100%;font-family:Arial;font-size:12px;'>"); sb.Append("<thead>"); sb.Append("<tr><th style='background-color:#002060;color:#ffffff;'>AMBIENTE</th><th style='background-color:#002060;color:#ffffff;'>SOLICITUD</th><th style='background-color:#002060;color:#ffffff;'>RESPONSABLE DE EJECUCION</th><th style='background-color:#002060;color:#ffffff;'>ANALISTA DESARROLLO</th><th style='background-color:#002060;color:#ffffff;'>PROYECTO</th><th style='background-color:#002060;color:#ffffff;'>FORMULARIO</th></tr>"); sb.Append("</thead>"); sb.Append("<tbody>"); foreach (string key in keys) { if (String.Compare(key.Substring(0, 3), "chk") == 0 && String.Compare(key, "chkTodos") != 0) { if (String.Compare(Request.Form[key], "on") == 0) { solicitudId = int.Parse(key.Substring(3)); Solicitud s = sr.Obtener(solicitudId); solicitudes.Add(s); List <SolicitudArchivo> solicitudesArchivo = Util.Util.ListarArchivos(s); string solicitudRFC = (s.Ambiente.Final && !String.IsNullOrEmpty(s.RFC)) ? s.RFC : String.Concat("S", s.Id.ToString().PadLeft(6, '0')); foreach (SolicitudArchivo sa in solicitudesArchivo) { if (sa.Area.Correos.Count() > 0) { responsableEjecucion = sa.Area.Nombre; } else { responsableEjecucion = s.AnalistaTestProd; } //sb.Append("<tr><td>" + s.Ambiente.Nombre + "</td><td>S" + s.Id.ToString().PadLeft(6, '0') + "</td><td>" + sa.SarID + "</td><td style='background-color:" + sa.Area.Color + ";'>" + responsableEjecucion + "</td><td>" + s.AnalistaDesarrollo + "</td><td>" + s.Proyecto.Codigo + "</td>"); sb.Append("<tr><td>" + s.Ambiente.Nombre + "</td><td>" + solicitudRFC + "</td><td style='background-color:" + sa.Area.Color + ";'>" + responsableEjecucion + "</td><td>" + s.AnalistaDesarrollo + "</td><td>" + s.Proyecto.Codigo + " - " + s.Proyecto.Nombre + "</td>"); sb.Append("<td>"); foreach (Archivo archivo in sa.Archivos) { sb.Append("<a href='" + url + "/Home/ObtenerArchivo/S" + s.Id.ToString().PadLeft(6, '0') + "-" + archivo.Id.ToString() + "'>" + archivo.Nombre + "</a><br/>"); } sb.Append("</td></tr>"); } foreach (var otros in s.Aprobaciones) { if (otros.Area != null && otros.Area.Id != 0) { sb.Append("<tr><td>" + s.Ambiente.Nombre + "</td><td>" + solicitudRFC + "</td><td style='background-color:" + otros.Area.Color + ";'>" + responsableEjecucion + "</td><td>" + s.AnalistaDesarrollo + "</td><td>" + s.Proyecto.Codigo + " - " + s.Proyecto.Nombre + "</td>"); sb.Append("<td>"); sb.Append("<a href='" + url + "/Solicitud/ObtenerAprobacion/" + otros.Id.ToString() + "'>" + otros.Nombre + "</a><br/>"); sb.Append("</td></tr>"); } } string estado = sr.ObtenerEstado("RM", estadoInicial, accionSiguiente); s.Estado = estado; if (ventanaId == 0) { s.Ventana = null; s.EjecutarEmergente = false; } else if (ventanaId == -1) { s.Ventana = null; s.EjecutarEmergente = true; } else if (ventanaId > 0) { s.Ventana = new VentanaRepository().Obtener(ventanaId); s.EjecutarEmergente = false; } else { s.Ventana = null; s.EjecutarEmergente = false; } Log log = new Log(); log.Usuario = ux; log.Accion = accionSiguiente; log.Comentario = "Se envía a los ejecutores"; log.Estado = s.Estado; log.FechaHora = DateTime.Now; s.Logs.Add(log); sr.ActualizarRMSolicitadoxSol(s); s.Logs = s.Logs.OrderByDescending(p => p.FechaHora).ToList(); EstadoRepository er = new EstadoRepository(); List <Estado> estados = er.Listar(); Estado estadoX = estados.FirstOrDefault(p => p.Nombre == s.Estado); if (estadoX != null && estadoX.EnviarCorreo) { Util.Util.EnviarCorreo(url, s, "Solicitud S" + s.Id.ToString().PadLeft(6, '0') + (s.Emergente ? " EMERGENTE/Normal Urgente " : " ") + s.Estado); } } } } sb.Append("</tbody>"); sb.Append("</table>"); string ventana = String.Empty; if (ventanaId == -1) { ventana = "Emergente"; } else if (ventanaId > 0) { VentanaRepository vr = new VentanaRepository(); Ventana vv = vr.Obtener(ventanaId); string horaHasta = String.Empty; if (vv.Hasta.HasValue) { horaHasta = " - " + vv.Hasta.Value.ToString("HH:mm"); } ventana = String.Concat("Normal a horas ", vv.Desde.ToString("HH:mm"), horaHasta); } else { ventana = Util.Util.ObtenerDescripcionVentana(solicitudes); } StringBuilder sbPrevio = new StringBuilder(); var mensajeEnvio = Request.Form["txtMensajeEnvio"]; sbPrevio.Append(mensajeEnvio); //sbPrevio.Append("Estimados<br/><br/>"); //sbPrevio.Append("Se envía la relación de pases a ejecutarse en la ventana: " + ventana + "<br/><br/>"); var asunto = Request.Form["txtAsunto"]; /*StringBuilder sb2 = new StringBuilder(); * sb2.Append("Pases a ejecutar"); * sb2.Append(" Ventana: " + ventana); * sb2.Append(" - Ambiente: " + listaAmbientes.ToUpper()); */ Util.Util.EnviarCorreo(solicitudes.ToArray(), asunto, sbPrevio.ToString() + sb.ToString(), true, true, true, true, true, true, true, true); return(View("Mensaje", new HomeView { Mensaje = "Se envió el correo a los ejecutores" })); } catch (Exception ex) { return(View("Mensaje", new HomeView { Mensaje = ex.Message })); } }