protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            int intFolioSolicitud = (int)GridView1.DataKeys[e.RowIndex].Values[0];
            GridViewRow Fila = GridView1.Rows[e.RowIndex];

            NegDetalleSolicitud DetalleSolicitud = new NegDetalleSolicitud();

            int EstaTomada = DetalleSolicitud.SolicitudTomada(intFolioSolicitud);

            if (EstaTomada.Equals(0))
            {

                ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<script>javascript: alertify.alert('La Solicitud con Folio " + intFolioSolicitud + "  se encuentra en proceso. No se puede anular');</script>");
                return;

            }

            NegSolicitud NegAnulaSolicitud = new NegSolicitud();
            int existe = NegAnulaSolicitud.EstaAnulado(intFolioSolicitud);

            if (existe.Equals(0))
            {
                int id = NegAnulaSolicitud.AnulaSolicitud(intFolioSolicitud);
                lee_grilla(StrRutAlumno);
                ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<script>javascript: alertify.alert('Solicitud Folio  " + intFolioSolicitud + " fue Anulada.');</script>");
            }
            else
            {
                //lblMensaje.Text = "La Solicitud con Folio " + intFolioSolicitud  +"  ya se encuentra Anulada";

                ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<script>javascript: alertify.alert('La Solicitud con Folio  " + intFolioSolicitud + " ya se encuentra Anulada.');</script>");

                return;
            }
        }
        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            lblMensaje.Text = String.Empty;

            int intFolioSolicitud = (int)GridView1.DataKeys[e.RowIndex].Values[0];
            GridViewRow Fila = GridView1.Rows[e.RowIndex];

            NegDetalleSolicitud DetalleSolicitud = new NegDetalleSolicitud();

            int EstaTomada = DetalleSolicitud.SolicitudTomada(intFolioSolicitud);

            if (EstaTomada.Equals(0))
            {
               lblMensaje.Text = "La Solicitud con Folio " + intFolioSolicitud  +"  ya se esta ejecutando o se resolvio. No se puede anular";
               return;

            }

            NegSolicitud         NegAnulaSolicitud = new NegSolicitud();
            int existe = NegAnulaSolicitud.EstaAnulado(intFolioSolicitud);

            if (existe.Equals(0))
            {
                int id = NegAnulaSolicitud.AnulaSolicitud(intFolioSolicitud);
                lee_grilla(StrRutAlumno);
            }
            else
            {
                lblMensaje.Text = "La Solicitud con Folio " + intFolioSolicitud  +"  ya se encuentra Anulada";
                return;
            }
        }
        public List<WorkflowSolicitudes.Entidades.DetalleSolicitud> lee_grilla(int folio)
        {
            NegDetalleSolicitud   NegDetaSolicitud = new NegDetalleSolicitud();

            List<WorkflowSolicitudes.Entidades.DetalleSolicitud> LstDetalleSolicitud = new List<WorkflowSolicitudes.Entidades.DetalleSolicitud>();
            LstDetalleSolicitud = NegDetaSolicitud.ObtenerDetalleSolicitud(folio);
            GridView1.DataSource = LstDetalleSolicitud;
            GridView1.DataBind();

            return LstDetalleSolicitud;
        }
        private void mostrar_Historial(int intFolioSolicitud)
        {
            List<WorkflowSolicitudes.Entidades.DetalleSolicitud> LstHistory = new List<WorkflowSolicitudes.Entidades.DetalleSolicitud>();
            NegDetalleSolicitud NegDetSol = new NegDetalleSolicitud();
            LstHistory = NegDetSol.HistoriadelaSolicitud(intFolioSolicitud);
            grvMostrarHistorial.Columns[5].ItemStyle.Width = 20;
            grvMostrarHistorial.DataSource = LstHistory;
            grvMostrarHistorial.DataBind();

            if (grvMostrarHistorial.Rows.Count.Equals(0))
            {
                lblDetalleResponsable.Visible = false;
                Panel1.Visible = false;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            NegFlujoSolicitud   NegFlujoSolicitud = new NegFlujoSolicitud();
            NegDetalleSolicitud NegDatellSolicitud = new NegDetalleSolicitud();

            if (!Page.IsPostBack)
            {
                Funciones FuncionesDesencriptar = new Funciones();

                if (!(FuncionesDesencriptar.Decrypt(HttpUtility.UrlDecode(Request.QueryString["Folio"]))).Equals("Error_Autorizacion"))
                    intFolioSolicitud = Convert.ToInt32(FuncionesDesencriptar.Decrypt(HttpUtility.UrlDecode(Request.QueryString["Folio"])));
                else
                {
                    Response.Redirect("PageError.aspx?TypeError=Error_Autorizacion");
                }
                if (!(FuncionesDesencriptar.Decrypt(HttpUtility.UrlDecode(Request.QueryString["RutResponsable"]))).Equals("Error_Autorizacion"))
                    StrRutResponsable = FuncionesDesencriptar.Decrypt(HttpUtility.UrlDecode(Request.QueryString["RutResponsable"]));
                else
                {
                    Response.Redirect("PageError.aspx?TypeError=Error_Autorizacion");
                }

                if (!(FuncionesDesencriptar.Decrypt(HttpUtility.UrlDecode(Request.QueryString["Secuencia"]))).Equals("Error_Autorizacion"))
                    intSecuencia = Convert.ToInt32(FuncionesDesencriptar.Decrypt(HttpUtility.UrlDecode(Request.QueryString["Secuencia"])));
                else
                {
                    Response.Redirect("PageError.aspxTypeError=Error_Autorizacion");
                }

                lblFolio.Text = FuncionesDesencriptar.Decrypt(HttpUtility.UrlDecode(Request.QueryString["Folio"]));

                ConsultaSolicitudFolio(Convert.ToInt32(lblFolio.Text));
                lblActividad.Text = ConsultaActividad(intSecuencia, intCodTipoSolicitud);
                lblActividadResolver.Text = lblActividad.Text;
                NegDatellSolicitud.ActualizaFechaTomaActividad(intFolioSolicitud, intSecuencia, StrRutResponsable);

                NegAuditoria InsertarLog = new NegAuditoria();
                InsertarLog.InsertaAuditoria(StrRutResponsable, "RESUELVE", "ACCEDE A RESOLVER ACTIVIDAD", "ACTIVIDAD A RESOLVER ES " + lblActividad.Text + "PARA EL FOLIO :" + lblFolio.Text);

                NegFlujoSolicitud DatosDelFlujoActividadActual = new NegFlujoSolicitud();
                LstFlujoSolicitud = NegFlujoSolicitud.SelectDatoActividad(intCodTipoSolicitud, intSecuencia);

                foreach (FlujoSolicitud ActividadActual in LstFlujoSolicitud)
                    {
                        strSecuenciaSi  = ActividadActual.strSi.Trim();
                        strSecuenciaNo  = ActividadActual.strNo.Trim();
                        intAprobador    = ActividadActual.intAprobador;
                    }

                if (strSecuenciaNo.Equals(String.Empty)) // Me indica si muestro el SI o el NO
                {
                    RbtSI.Visible      = false;
                    RbtNO.Visible      = false;
                    lblAprobar.Visible = false;
                }

                if (strSecuenciaSi.Equals("0"))
                {
                    RbtSI.Visible = false;
                    RbtNO.Visible = false;
                    lblAprobar.Visible = false;
                }

               if (strSecuenciaNo.Equals("0") && (strSecuenciaSi.Equals("0")))
                {
                    RbtSI.Visible = false;
                    RbtNO.Visible = false;
                    lblAprobar.Visible = false;
                }

                mostrar_Historial(intFolioSolicitud);
                NegTipoSolicitud CantMaxDocumentos = new NegTipoSolicitud();
                intCantMaxDocumentos = CantMaxDocumentos.ObtenerCantMaxDocByTipoSolicitud(intCodTipoSolicitud);

                NegAdjuntos Adjuntos = new NegAdjuntos();
                int ExistenAdjuntos = Adjuntos.ExistirianAdjutnos(intFolioSolicitud);

                if (!ExistenAdjuntos.Equals(0))
                {
                    HypAdjuntos.Text        = "Ver documetos adjuntos asociados a la solicitud";
                    HypAdjuntos.NavigateUrl = "VerAdjuntos.aspx?Folio=" + intFolioSolicitud + "&Tipo=S";

                }
                else
                {
                    HypAdjuntos.Text = String.Empty;
                    HypAdjuntos.Visible = false;
                }

                if (strOrigen.Equals("E"))
                {
                    lblrut.Text = StrRutAlumno;
                    lee_alumnos(StrRutAlumno);
                }
                else
                {
                    lblrut.Text = StrRutAlumno;
                    NegUsuario ObtenerUsuario = new NegUsuario();
                    LstUsuarios = ObtenerUsuario.ObtenerUsuarioPorRut(StrRutAlumno);

                    foreach (Usuario Usuarios in LstUsuarios)
                    {
                        StringBuilder strnombre = new StringBuilder();
                        strnombre.Append(Usuarios.strNombre);
                        strnombre.Append(" ");
                        strnombre.Append(Usuarios.strApellido);

                        lblNombre.Text = strnombre.ToString();
                    }
                }
            }
        }
        protected void BtnCompletar_Click(object sender, EventArgs e)
        {
            NegAuditoria         InsertarLog       = new NegAuditoria();
            NegFlujoSolicitud    NegFlujoSolicitud = new NegFlujoSolicitud();
            NegDetalleSolicitud ResuelveActividad  = new NegDetalleSolicitud();

            if (txtResolucion.Text.Equals(String.Empty))
            {
               ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<script>javascript: alertify.alert('Debe ingresar un comentario u observacion al respecto');</script>");
               return;
            }

            if (!strSecuenciaNo.Equals(String.Empty))
            {
                if ((!strSecuenciaNo.Equals("0")) && (!strSecuenciaNo.Equals("0")))
                {
                    if ((!RbtSI.Checked) && (!RbtNO.Checked))
                    {
                        ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<script>javascript: alertify.alert('Debe selecionar SI  ó NO para aprobar o rechazar la Actividad');</script>");
                        return;
                    }
                }

            }

            if (RbtSI.Checked)
            {
                intCodEstadSol = 2;
                intCodEstadoAct = 8;
                strAprobadaAuditoria = "APROBADA";
                strSiguienteSecuencia = strSecuenciaSi;
                InsertarLog.InsertaAuditoria(StrRutResponsable, "RESUELVE", "RESUELVE LA ACTIVIDAD ", "ACTIVIDIDAD APROBADA " + lblActividad.Text + "PARA EL FOLIO :" + lblFolio.Text);
            }

            if (RbtNO.Checked)
            {
                intCodEstadSol = 3;
                strRechazadaAuditoria = "RECHAZADA";
                strSiguienteSecuencia = strSecuenciaNo;
                intCodEstadoAct = 8;

                if (strSecuenciaNo.Equals("0"))
                {
                    ResuelveActividad.CierraProceso(intFolioSolicitud, intSecuencia, intCodEstadSol, intCodEstadoAct, txtResolucion.Text);
                   InsertarLog.InsertaAuditoria(StrRutResponsable, "RESUELVE", "RESUELVE LA ACTIVIDAD ", "ACTIVIDIDAD RECHAZADA " + lblActividad.Text + "PARA EL FOLIO :" + lblFolio.Text);
                   Response.Redirect("ListaDeTareas.aspx?StrRutUsuario=" + StrRutResponsable);
                }
            }

            if (strSecuenciaNo.Equals("0") && (strSecuenciaSi.Equals("0")))
            {
                intCodEstadoAct = 8;
                intCodEstadSol = 2;
                ResuelveActividad.CierraProceso(intFolioSolicitud, intSecuencia, intCodEstadSol, intCodEstadoAct, txtResolucion.Text);
                InsertarLog.InsertaAuditoria(StrRutResponsable, "RESUELVE", "RESUELVE LA ACTIVIDAD ", "SE COMPLETA LA " + lblActividad.Text + "SE TERMINA EL FLUJO PARA SOLICITUD " + lbltipoSolicitud.Text + " PARA EL FOLIO :" + lblFolio.Text);
                Response.Redirect("ListaDeTareas.aspx?StrRutUsuario=" + StrRutResponsable);
            }

            if (RbtSI.Checked == false && RbtNO.Checked == false)
            {
                intCodEstadoAct = 8;
                strSiguienteSecuencia = strSecuenciaSi;
                strContinuaAuditoria = "CONTINUA";
            }

            NegAdjuntos NegAdjuntos = new NegAdjuntos();
            foreach (Adjuntos Adjunto in LstAdjuntos)
            {

                NegAdjuntos.AltaAdjuntos(intFolioSolicitud, Adjunto.strNombreArchivo, Adjunto.bteArchivoPdf, "A", intSecuencia);
            }

            LstAdjuntos.Clear();
            grvAdjunto.DataSource = null;
            grvAdjunto.DataBind();

            strGlosaDetalleSol = txtResolucion.Text;
            LstFlujoSolicitud = NegFlujoSolicitud.SelectDatoActividad(intCodTipoSolicitud, Convert.ToInt32(strSiguienteSecuencia));

            if (LstFlujoSolicitud.Count.Equals(0))
            {
                BolExisteSiguienteFlujo = false;
            }
            else
            {
                BolExisteSiguienteFlujo = true;
                foreach (FlujoSolicitud ActividadActual in LstFlujoSolicitud)
                {
                    intCodActividad = ActividadActual.intCodActividad;
                    intCodUnidad    = ActividadActual.intCodUnidad;
                }
            }

            if (BolExisteSiguienteFlujo)
            {
                ResuelveActividad.ResuelveActividadFlujo(intFolioSolicitud, intSecuencia, intCodTipoSolicitud, intCodEstadoAct, strGlosaDetalleSol, intCodActividad, intCodUnidad, Convert.ToInt32(strSiguienteSecuencia));
            }
            else
            {
                if (strSecuenciaNo.Equals("0") && (strSecuenciaSi.Equals("0")))
                {
                    intCodEstadSol = 2;
                    intCodEstadoAct = 8;
                }

                ResuelveActividad.CierraProceso(intFolioSolicitud, intSecuencia, intCodEstadSol, intCodEstadoAct, strGlosaDetalleSol);
            }

            InsertarLog.InsertaAuditoria(StrRutResponsable, "RESUELVE", "RESUELVE LA ACTIVIDAD ", "ACTIVIDIDAD RESUELTA " + lblActividad.Text + "PARA EL FOLIO :" + lblFolio);
            Response.Redirect("ListaDeTareas.aspx?StrRutUsuario=" + StrRutResponsable);
        }
        protected void grvConsultaSolicitud_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            String strNombreArchivoPDF = String.Empty;
            string strRutUsuario = String.Empty;
            string strNombreAlumno = String.Empty;
            string strNombreCarrera = String.Empty;
            string strNumCelular = String.Empty;
            string strCorreo = String.Empty;
            string strDescTipoSolicitud = String.Empty;
            string strGlosaSolicitud = String.Empty;
            string strFechaSolicitud = String.Empty;
            string strGlosaEstadoSolicitud = String.Empty;
            int intCodTipoSolicitud = 0;

            DateTime Hoy = DateTime.Today;
            string fecha_actual = Hoy.ToString("dd-MM-yyyy");

            int intFolioSolicitud = (int)grvConsultaSolicitud.DataKeys[e.RowIndex].Values[0];

            strNombreArchivoPDF = @"C:\Solicitud" + "_" + intFolioSolicitud + "_" + fecha_actual + ".pdf";

            List<Solicitud> lstSolicitud = new List<Solicitud>();
            NegSolicitud NegSolicitudes = new NegSolicitud();

            Document doc = new Document(PageSize.LETTER);
            PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(strNombreArchivoPDF, FileMode.Create));

            doc.AddTitle("Detalle de la Solicitud");
            doc.AddCreator("Workflow Solicitudes CIISA");
            string ruta = Server.MapPath("/") + "/imagenes/logoCiisaPDF.jpg";

            doc.Open();
            iTextSharp.text.Image imagen = iTextSharp.text.Image.GetInstance(@ruta);
            imagen.BorderWidth = 0;
            imagen.Alignment = Element.ALIGN_LEFT;
            float percentage = 0.0f;
            percentage = 45 / imagen.Width;
            imagen.ScalePercent(percentage * 100);
            doc.Add(imagen);

            iTextSharp.text.Font _standardFont = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 8, iTextSharp.text.Font.NORMAL, BaseColor.BLACK);

            lstSolicitud = NegSolicitudes.ObtenerSolicitudesByFolio(intFolioSolicitud);

            foreach (Solicitud Solicitudes in lstSolicitud)
            {
                strRutUsuario = Solicitudes.strRutAlumno;
                strNumCelular = Solicitudes.strCelularContacto;
                strCorreo = Solicitudes.strEmailContacto;
                strDescTipoSolicitud = Solicitudes.strDescripcionSolicitud;
                strGlosaSolicitud = Solicitudes.strGlosaSolicitud;
                strFechaSolicitud = Convert.ToString(Solicitudes.dtmFechaSolicitud);
                intCodTipoSolicitud = Solicitudes.intCodTipoSolicitud;
                strGlosaEstadoSolicitud = Solicitudes.strGlosaEstado;
            }

            // Escribimos el encabezamiento en el documento
            doc.Add(new Paragraph("Información de la Solicitud"));
            doc.Add(new Paragraph("Instituto de Ciencias Tecnológicas"));
            doc.Add(Chunk.NEWLINE);

            iTextSharp.text.Font myfontEncabezado = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 16, iTextSharp.text.Font.BOLD, BaseColor.BLACK);
            Paragraph myParagraph = new Paragraph("Datos del solicitante \n\n", myfontEncabezado);
            doc.Add(myParagraph);

            doc.Add(new Paragraph("Rut Solicitante    :" + strRutUsuario));
            doc.Add(new Paragraph("Nombre Solicitante :" + strNombreAlumno));
            doc.Add(new Paragraph("N° Teléfono        :" + strNumCelular));
            doc.Add(new Paragraph("Correo Electrónico :" + strCorreo));
            doc.Add(new Paragraph("Unidad             :" + strNombreCarrera));
            doc.Add(Chunk.NEWLINE);

            Paragraph myParagraph2 = new Paragraph("Datos de la solicitud \n\n", myfontEncabezado);
            doc.Add(myParagraph2);

            doc.Add(new Paragraph("Folio Solicitud  :" + intFolioSolicitud));
            doc.Add(new Paragraph("Fecha Solicitud  :" + strFechaSolicitud));
            doc.Add(new Paragraph("Tipo Solicitud   :" + strDescTipoSolicitud));
            doc.Add(new Paragraph("Petición         :" + strGlosaSolicitud));
            doc.Add(new Paragraph("Estado Solicitud :" + strGlosaEstadoSolicitud));
            doc.Add(Chunk.NEWLINE);

            List<WorkflowSolicitudes.Entidades.DetalleSolicitud> LstHistory = new List<WorkflowSolicitudes.Entidades.DetalleSolicitud>();
            NegDetalleSolicitud NegDetSol = new NegDetalleSolicitud();
            LstHistory = NegDetSol.HistorialDetalleSolicitud(intFolioSolicitud);

            if (!LstHistory.Count.Equals(0))
            {

                Paragraph myParagraph3 = new Paragraph("Detalles de la Solicitud \n\n", myfontEncabezado);
                doc.Add(myParagraph3);

                PdfPTable tblPrueba = new PdfPTable(6);
                tblPrueba.WidthPercentage = 100;

                PdfPCell clSecuencia = new PdfPCell(new Phrase("Secuencia", _standardFont));
                clSecuencia.BorderWidth = 0;
                clSecuencia.BorderWidthBottom = 0.75f;

                PdfPCell clNombre = new PdfPCell(new Phrase("Nombre", _standardFont));
                clNombre.BorderWidth = 0;
                clNombre.BorderWidthBottom = 0.75f;

                PdfPCell clApellido = new PdfPCell(new Phrase("Apellido", _standardFont));
                clApellido.BorderWidth = 0;
                clApellido.BorderWidthBottom = 0.75f;

                PdfPCell clObservacion = new PdfPCell(new Phrase("Observación", _standardFont));
                clObservacion.BorderWidth = 0;
                clObservacion.BorderWidthBottom = 0.75f;

                PdfPCell clFechaResolucion = new PdfPCell(new Phrase("Fecha Resolución", _standardFont));
                clFechaResolucion.BorderWidth = 0;
                clFechaResolucion.BorderWidthBottom = 0.75f;

                PdfPCell clEstado = new PdfPCell(new Phrase("Estado", _standardFont));
                clEstado.BorderWidth = 0;
                clEstado.BorderWidthBottom = 0.75f;

                foreach (WorkflowSolicitudes.Entidades.DetalleSolicitud Detalle in LstHistory)
                {
                    // Añadimos las celdas a la tabla
                    tblPrueba.AddCell(clSecuencia);
                    tblPrueba.AddCell(clNombre);
                    tblPrueba.AddCell(clApellido);
                    tblPrueba.AddCell(clObservacion);
                    tblPrueba.AddCell(clFechaResolucion);
                    tblPrueba.AddCell(clEstado);

                    clSecuencia = new PdfPCell(new Phrase(Convert.ToString(Detalle.intSecuencia), _standardFont));
                    clSecuencia.BorderWidth = 0;

                    clNombre = new PdfPCell(new Phrase(Detalle.strnombre, _standardFont));
                    clNombre.BorderWidth = 0;

                    clApellido = new PdfPCell(new Phrase(Detalle.strApellido, _standardFont));
                    clApellido.BorderWidth = 0;

                    clObservacion = new PdfPCell(new Phrase(Detalle.StrGlosaDetalleSolictud, _standardFont));
                    clObservacion.BorderWidth = 0;

                    clFechaResolucion = new PdfPCell(new Phrase(Detalle.strApellido, _standardFont));
                    clFechaResolucion.BorderWidth = 0;

                    clEstado = new PdfPCell(new Phrase(Detalle.strEstado, _standardFont));
                    clEstado.BorderWidth = 0;

                    //tblPrueba.AddCell(clSecuencia);
                    //tblPrueba.AddCell(clNombre);
                    //tblPrueba.AddCell(clApellido);
                    //tblPrueba.AddCell(clObservacion);
                    //tblPrueba.AddCell(clFechaResolucion);
                    //tblPrueba.AddCell(clEstado);

                   doc.Add(tblPrueba);
                }

            }
            doc.Close();
            writer.Close();

            System.Diagnostics.Process.Start("AcroRd32.exe", strNombreArchivoPDF);
        }
        private void mostrar_Historial(int Folio)
        {
            List<WorkflowSolicitudes.Entidades.DetalleSolicitud> LstHistory = new List<WorkflowSolicitudes.Entidades.DetalleSolicitud>();
            NegDetalleSolicitud NegDetSol = new NegDetalleSolicitud();
            LstHistory = NegDetSol.ObtenerDetalleSolicitud(Folio);
            grvMostrarHistorial.DataSource = LstHistory;
            grvMostrarHistorial.DataBind();

            if (grvMostrarHistorial.Rows.Count.Equals(0))
            {
                lblDetalleResponsable.Visible = false;
                Panel1.Visible = false;
            }
        }
 private void lee_comboEstado()
 {
     NegDetalleSolicitud NegDetaSolAct = new NegDetalleSolicitud();
     ddlEstado.DataSource = NegDetaSolAct.ObtenerActDetalleSolicitud();
     ddlEstado.DataTextField = "strEstado";
     ddlEstado.DataValueField = "intCodEstado";
     ddlEstado.DataBind();
     ddlEstado.Items.Insert(0, new ListItem("Todos", null));
 }