void UpdateRecomendacionDiligencia(Int32 DiligenciaId)
        {
            ENTResponse oENTResponse = new ENTResponse();
            ENTDiligencia oENTDiligencia = new ENTDiligencia();
            BPDiligencia oBPDiligencia = new BPDiligencia();

            ENTSession oENTSession;

            try
            {

                // Validaciones
                if (ddlFuncionario.SelectedValue == "0") { throw new Exception("* El campo [Visitador que ejecuta] es requerido"); }
                if (String.IsNullOrEmpty(calFecha.DisplayDate)) { throw new Exception("* El campo [Fecha de la diligencia] es requerido"); }
                if (this.tmrInicio.DisplayTime == "") { throw new Exception("El campo [Hora Inicio] es requerido"); }
                if (this.tmrFin.DisplayTime == "") { throw new Exception("El campo [Hora Fin] es requerido"); }
                if (ddlTipoDiligencia.SelectedValue == "0") { throw new Exception("* El campo [Tipo de diligencia] es requerido"); }
                if (ddlLugarDiligencia.SelectedValue == "0") { throw new Exception("* El campo [Lugar de diligencia] es requerido"); }
                if (String.IsNullOrEmpty(ckeDetalle.Text)) { throw new Exception("* El campo [Detalle] es requerido"); }
                if (String.IsNullOrEmpty(txtSolicitadaPor.Text)) { throw new Exception("* El campo [Solicitada por] es requerido"); }
                if (String.IsNullOrEmpty(ckeResultado.Text)) { throw new Exception("* El campo [Resultado] es requerido"); }

                // Obtener Sesion
                oENTSession = (ENTSession)this.Session["oENTSession"];

                // Validaciones de sesión
                if (oENTSession.FuncionarioId == 0) { throw new Exception("No cuenta con permisos para crear diligencias debido a que usted no es un funcionario"); }

                //Formulario
                oENTDiligencia.DiligenciaId = Convert.ToInt32(DiligenciaId);
                oENTDiligencia.RecomendacionId = Convert.ToInt32(this.hddRecomendacionId.Value);
                oENTDiligencia.ModuloId = 4; // Seguimiento
                oENTDiligencia.FuncionarioAtiendeId = oENTSession.FuncionarioId;
                oENTDiligencia.FuncionarioEjecuta = Convert.ToInt32(ddlFuncionario.SelectedValue);
                oENTDiligencia.FechaDiligencia = calFecha.BeginDate;
                oENTDiligencia.HoraInicio = GetStandarTime(this.tmrInicio.DisplayTime);
                oENTDiligencia.HoraFin = GetStandarTime(this.tmrFin.DisplayTime);
                oENTDiligencia.TipoDiligencia = Convert.ToInt32(ddlTipoDiligencia.SelectedValue);
                oENTDiligencia.LugarDiligenciaId = Convert.ToInt32(ddlLugarDiligencia.SelectedValue);
                oENTDiligencia.Detalle = ckeDetalle.Text;
                oENTDiligencia.SolicitadaPor = txtSolicitadaPor.Text;
                oENTDiligencia.Resultado = ckeResultado.Text;

                // Transacción
                oENTResponse = oBPDiligencia.UpdateDiligenciaRecomendacion(oENTDiligencia);

                // Validación
                if (oENTResponse.GeneratesException) { throw new Exception(oENTResponse.sErrorMessage); }
                if (oENTResponse.sMessage != "") { throw new Exception(oENTResponse.sMessage); }

                // Transacción exitosa
                ClearActionPanel();

                // Actualizar grid
                SelectRecomendacion();

            }catch (Exception ex){
                throw (ex);
            }
        }
        void SelectDiligencia_ForEdit(String DiligenciaId, Boolean Consulta)
        {
            BPDiligencia oBPDiligencia = new BPDiligencia();

            // Formulario
            oBPDiligencia.DiligenciaEntity.DiligenciaId = Convert.ToInt32(DiligenciaId);

            // Transacción
            oBPDiligencia.SelectRecomendacionDiligencia();

            // Validaciones
            if (oBPDiligencia.ErrorId != 0) { throw (new Exception(oBPDiligencia.ErrorDescription)); }

            // Vaciado de datos
            this.hddDiligenciaId.Value = oBPDiligencia.DiligenciaEntity.DataResult.Tables[1].Rows[0]["DiligenciaId"].ToString();
            this.calFecha.SetDate = oBPDiligencia.DiligenciaEntity.DataResult.Tables[1].Rows[0]["FechaDiligencia"].ToString();
            this.tmrInicio.DisplayTime = oBPDiligencia.DiligenciaEntity.DataResult.Tables[1].Rows[0]["HoraInicio"].ToString();
            this.tmrFin.DisplayTime = oBPDiligencia.DiligenciaEntity.DataResult.Tables[1].Rows[0]["HoraFin"].ToString();
            this.ddlTipoDiligencia.SelectedValue = oBPDiligencia.DiligenciaEntity.DataResult.Tables[1].Rows[0]["TipoDiligencia"].ToString();
            this.ddlLugarDiligencia.SelectedValue = oBPDiligencia.DiligenciaEntity.DataResult.Tables[1].Rows[0]["LugarDiligencia"].ToString();
            this.ckeDetalle.Text = oBPDiligencia.DiligenciaEntity.DataResult.Tables[1].Rows[0]["Detalle"].ToString();
            this.txtSolicitadaPor.Text = oBPDiligencia.DiligenciaEntity.DataResult.Tables[1].Rows[0]["SolicitadaPor"].ToString();
            this.ckeResultado.Text = oBPDiligencia.DiligenciaEntity.DataResult.Tables[1].Rows[0]["Resultado"].ToString();

            // Determinar si es consultä
            if (Consulta){

                this.ddlFuncionario.SelectedIndex = 0;
                this.ddlFuncionario.SelectedItem.Text = oBPDiligencia.DiligenciaEntity.DataResult.Tables[1].Rows[0]["NombreVisitadorEjecuta"].ToString();
                this.ddlFuncionario.Enabled = false;
            }else{

                this.ddlFuncionario.SelectedIndex = 0;
                this.ddlFuncionario.SelectedItem.Text = "[Seleccione]";
                this.ddlFuncionario.Enabled = true;
                this.ddlFuncionario.SelectedValue = oBPDiligencia.DiligenciaEntity.DataResult.Tables[1].Rows[0]["FuncionarioEjecuta"].ToString();
            }
        }
        void SelectTipoDiligencia()
        {
            BPDiligencia oBPDiligencia = new BPDiligencia();

            // Transacción
            oBPDiligencia.SelectTipoDiligencias();

            // Validaciones
            if (oBPDiligencia.ErrorId != 0) { throw (new Exception(oBPDiligencia.ErrorDescription)); }

            // Llenado de combo
            this.ddlTipoDiligencia.DataSource = oBPDiligencia.DiligenciaEntity.DataResult;
            this.ddlTipoDiligencia.DataTextField = "Nombre";
            this.ddlTipoDiligencia.DataValueField = "TipoDiligenciaId";
            this.ddlTipoDiligencia.DataBind();

            // Agregar Item de selección
            this.ddlTipoDiligencia.Items.Insert(0, new ListItem("[Seleccione]", "0"));
        }
        void UpdateSolicitudDiligencia(string diligenciaId)
        {
            ENTResponse oENTResponse = new ENTResponse();
            ENTDiligencia oENTDiligencia = new ENTDiligencia();
            BPDiligencia oBPDiligencia = new BPDiligencia();

            if (ddlFuncionario.SelectedValue == "0") { throw new Exception("* El campo [Visitador que ejecuta] es requerido"); }
            if (String.IsNullOrEmpty(calFecha.DisplayDate)) { throw new Exception("* El campo [Fecha de la diligencia] es requerido"); }
            if (ddlTipoDiligencia.SelectedValue == "0") { throw new Exception("* El campo [Tipo de diligencia] es requerido"); }
            if (ddlLugarDiligencia.SelectedValue == "0") { throw new Exception("* El campo [Lugar de diligencia] es requerido"); }
            if (String.IsNullOrEmpty(ckeDetalle.Text)) { throw new Exception("* El campo [Detalle] es requerido"); }
            if (String.IsNullOrEmpty(txtSolicitadaPor.Text)) { throw new Exception("* El campo [Solicitada por] es requerido"); }
            if (String.IsNullOrEmpty(ckeResultado.Text)) { throw new Exception("* El campo [Resultado] es requerido"); }

            try
            {
                // Formulario
                oENTDiligencia.DiligenciaId = Convert.ToInt32(diligenciaId);
                oENTDiligencia.SolicitudId = Convert.ToInt32(this.hddSolicitudId.Value);
                oENTDiligencia.FuncionarioEjecuta = Convert.ToInt32(ddlFuncionario.SelectedValue);
                oENTDiligencia.FechaDiligencia = calFecha.BeginDate;
                oENTDiligencia.TipoDiligencia = Convert.ToInt32(ddlTipoDiligencia.SelectedValue);
                oENTDiligencia.LugarDiligenciaId = Convert.ToInt32(ddlLugarDiligencia.SelectedValue);
                oENTDiligencia.Detalle = ckeDetalle.Text;
                oENTDiligencia.SolicitadaPor = txtSolicitadaPor.Text;
                oENTDiligencia.Resultado = ckeResultado.Text;

                // Transacción
                oENTResponse = oBPDiligencia.UpdateDiligenciaSolicitud(oENTDiligencia);

                // Validación
                if (oENTResponse.GeneratesException) { throw new Exception(oENTResponse.sErrorMessage); }
                if (oENTResponse.sMessage != "") { throw new Exception(oENTResponse.sMessage); }

                // Transacción exitosa
                ClearActionPanel();

                // Actualizar grid
                SelectDiligencia();

            }catch (Exception ex){
                throw (ex);
            }
        }
        // Rutinas el programador
        void DeleteDiligencia(Int32 DiligenciaId)
        {
            ENTResponse oENTResponse = new ENTResponse();
            ENTDiligencia oENTDiligencia = new ENTDiligencia();
            BPDiligencia oBPDiligencia = new BPDiligencia();

            try
            {
                oENTDiligencia.DiligenciaId = DiligenciaId;
                oENTDiligencia.RecomendacionId = Convert.ToInt32(this.hddRecomendacionId.Value);
                oENTDiligencia.ModuloId = 4; // Seguimiento

                oENTResponse = oBPDiligencia.DeleteDiligenciaRecomendacion(oENTDiligencia);

                if (oENTResponse.GeneratesException) { throw new Exception(oENTResponse.sErrorMessage); }
                if (oENTResponse.sMessage != "") { throw new Exception(oENTResponse.sMessage); }

                SelectRecomendacion();

            }catch (Exception ex){
                throw (ex);
            }
        }
        void SelectDiligencia_ForEdit(string solicitudId, string diligenciaId)
        {
            BPDiligencia oBPDiligencia = new BPDiligencia();

            // Formulario
            oBPDiligencia.DiligenciaEntity.SolicitudId = Convert.ToInt32(solicitudId);
            oBPDiligencia.DiligenciaEntity.DiligenciaId = Convert.ToInt32(diligenciaId);

            // Transacción
            oBPDiligencia.SelectDetalleDiligenciaSolicitud();

            // Validaciones
            if (oBPDiligencia.ErrorId != 0) { throw (new Exception(oBPDiligencia.ErrorDescription)); }

            // Vaciado de datos
            this.hddDiligenciaId.Value = oBPDiligencia.DiligenciaEntity.DataResult.Tables[0].Rows[0]["DiligenciaId"].ToString();
            this.ddlFuncionario.SelectedValue = oBPDiligencia.DiligenciaEntity.DataResult.Tables[0].Rows[0]["FuncionarioEjecuta"].ToString();
            this.calFecha.SetDate = oBPDiligencia.DiligenciaEntity.DataResult.Tables[0].Rows[0]["FechaDiligencia"].ToString();
            this.ddlTipoDiligencia.SelectedValue = oBPDiligencia.DiligenciaEntity.DataResult.Tables[0].Rows[0]["TipoDiligencia"].ToString();
            this.ddlLugarDiligencia.SelectedValue = oBPDiligencia.DiligenciaEntity.DataResult.Tables[0].Rows[0]["LugarDiligencia"].ToString();
            this.ckeDetalle.Text = oBPDiligencia.DiligenciaEntity.DataResult.Tables[0].Rows[0]["Detalle"].ToString();
            this.txtSolicitadaPor.Text = oBPDiligencia.DiligenciaEntity.DataResult.Tables[0].Rows[0]["SolicitadaPor"].ToString();
            this.ckeResultado.Text = oBPDiligencia.DiligenciaEntity.DataResult.Tables[0].Rows[0]["Resultado"].ToString();
        }
        void SelectDiligencia()
        {
            BPDiligencia oBPDiligencias = new BPDiligencia();

            // Parámetros
            oBPDiligencias.DiligenciaEntity.SolicitudId = Convert.ToInt32(this.hddSolicitudId.Value);

            // Transacción
            oBPDiligencias.SelectDiligencias();

            // Validaciones
            if (oBPDiligencias.ErrorId != 0) { throw (new Exception(oBPDiligencias.ErrorDescription)); }

            // Listado de recomendaciones
            gvDiligencia.DataSource = oBPDiligencias.DiligenciaEntity.DataResult.Tables[0];
            gvDiligencia.DataBind();
        }
        void InsertSolicitudDiligencia()
        {
            BPDiligencia oBPDiligencia = new BPDiligencia();

            ENTResponse oENTResponse = new ENTResponse();
            ENTDiligencia oENTDiligencia = new ENTDiligencia();
            ENTSession oENTSession;

            try
            {

                // Validaciones
                if (this.ddlFuncionario.SelectedIndex == 0) { throw new Exception("El campo [Funcionario que ejecuta] es requerido"); }
                if (String.IsNullOrEmpty(calFecha.DisplayDate)) { throw new Exception("El campo [Fecha de la diligencia] es requerido"); }
                if (this.ddlTipoDiligencia.SelectedIndex == 0) { throw new Exception("El campo [Tipo de diligencia] es requerido"); }
                if (this.ddlLugarDiligencia.SelectedIndex == 0) { throw new Exception("El campo [Lugar de diligencia] es requerido"); }
                if (this.txtSolicitadaPor.Text.Trim() == "") { throw new Exception("El campo [Solicitada por] es requerido"); }
                if (this.ckeDetalle.Text.Trim() == "") { throw new Exception("El campo [Detalle] es requerido"); }
                if (this.ckeResultado.Text.Trim() == "") { throw new Exception("El campo [Resultado] es requerido"); }

                // Obtener Sesion
                oENTSession = (ENTSession)this.Session["oENTSession"];

                // Validaciones de sesión
                if (oENTSession.FuncionarioId == 0) { throw new Exception("No cuenta con permisos para crear diligencias debido a que usted no es un funcionario"); }

                //Formulario
                oENTDiligencia.SolicitudId = Convert.ToInt32(this.hddSolicitudId.Value);
                oENTDiligencia.FuncionarioAtiendeId = oENTSession.FuncionarioId;
                oENTDiligencia.FuncionarioEjecuta = Convert.ToInt32(ddlFuncionario.SelectedValue);
                oENTDiligencia.FechaDiligencia = this.calFecha.BeginDate;
                oENTDiligencia.TipoDiligencia = Convert.ToInt32(ddlTipoDiligencia.SelectedValue);
                oENTDiligencia.LugarDiligenciaId = Convert.ToInt32(ddlLugarDiligencia.SelectedValue);
                oENTDiligencia.SolicitadaPor = txtSolicitadaPor.Text;
                oENTDiligencia.Detalle = this.ckeDetalle.Text.Trim();
                oENTDiligencia.Resultado = this.ckeResultado.Text.Trim();

                //Transacción
                oENTResponse = oBPDiligencia.InsertDiligenciaSolicitud(oENTDiligencia);

                //Validación
                if (oENTResponse.GeneratesException) { throw new Exception(oENTResponse.sErrorMessage); }
                if (oENTResponse.sMessage != "") { throw new Exception(oENTResponse.sMessage); }

                // Transacción exitosa
                ClearActionPanel();

                // Actualizar grid
                SelectDiligencia();

            }catch (Exception ex){
                throw (ex);
            }
        }
        // Rutinas del Programador
        void DeleteDiligencia(string solicitudId, string diligenciaId)
        {
            ENTResponse oENTResponse = new ENTResponse();
            ENTDiligencia oENTDiligencia = new ENTDiligencia();
            BPDiligencia oBPDiligencia = new BPDiligencia();

            try
            {
                oENTDiligencia.DiligenciaId = Convert.ToInt32(diligenciaId);
                oENTDiligencia.SolicitudId = Convert.ToInt32(solicitudId);

                oENTResponse = oBPDiligencia.DeleteDiligenciaSolicitud(oENTDiligencia);

                if (oENTResponse.GeneratesException) { throw new Exception(oENTResponse.sErrorMessage); }
                if (oENTResponse.sMessage != "") { throw new Exception(oENTResponse.sMessage); }

                SelectDiligencia();

            }catch (Exception ex){
                throw (ex);
            }
        }
        // Rutinas el programador
        void DeleteDiligencia(Int32 DiligenciaId)
        {
            ENTResponse oENTResponse = new ENTResponse();
            ENTDiligencia oENTDiligencia = new ENTDiligencia();
            BPDiligencia oBPDiligencia = new BPDiligencia();

            try
            {
                oENTDiligencia.DiligenciaId = DiligenciaId;
                oENTDiligencia.ExpedienteId = Convert.ToInt32(this.hddExpedienteId.Value);
                oENTDiligencia.ModuloId = 3; // Visitadurías

                oENTResponse = oBPDiligencia.DeleteExpedienteDiligencia(oENTDiligencia);

                if (oENTResponse.GeneratesException) { throw new Exception(oENTResponse.sErrorMessage); }
                if (oENTResponse.sMessage != "") { throw new Exception(oENTResponse.sMessage); }

                SelectExpediente();

            }catch (Exception ex){
                throw (ex);
            }
        }