protected void dgdPoliticas_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
        {
            hfIndex.Value = e.Item.ItemIndex.ToString();
            dgdPoliticas.EditItemIndex = e.Item.ItemIndex;

            ArrayList arrPoliticas = WFPolitica.ObtenerPoliticasPorWorkflowId(WorkflowId);

            dgdPoliticas.DataSource = arrPoliticas;
            dgdPoliticas.DataBind();

            DropDownList ddlTipoDeDato = (DropDownList)dgdPoliticas.Items[e.Item.ItemIndex].FindControl("ddlTipoDeDatoItem");

            ddlTipoDeDato.DataSource     = WFTipoDeDato.ObtenerTiposDeDato();
            ddlTipoDeDato.DataValueField = "intCodTipoDeDato";
            ddlTipoDeDato.DataTextField  = "strNbrTipoDeDato";
            ddlTipoDeDato.DataBind();

            ddlTipoDeDato.Items.FindByValue(((WFPolitica)arrPoliticas[e.Item.ItemIndex]).objTipoDeDato.intCodTipoDeDato.ToString()).Selected = true;

            DropDownList ddlCondicion = (DropDownList)dgdPoliticas.Items[e.Item.ItemIndex].FindControl("ddlCondicionItem");

            ddlCondicion.DataSource     = WFCondicion.ObtenerCondiciones();
            ddlCondicion.DataValueField = "intCodCondicion";
            ddlCondicion.DataTextField  = "strNbrCondicion";
            ddlCondicion.DataBind();

            ddlCondicion.Items.FindByValue(((WFPolitica)arrPoliticas[e.Item.ItemIndex]).objCondicion.intCodCondicion.ToString()).Selected = true;

            //ImageButton ib = (ImageButton)FindMyControl(this, "ibtnActualizar");
            //ib.Attributes.Add("onclick", "javascritp:jsUpdate(" + e.Item.ItemIndex + ");");
//			DeshabilitarValidadores();
        }
        public void BindCombos()
        {
            ddlCondicion.DataSource     = WFCondicion.ObtenerCondiciones();
            ddlCondicion.DataValueField = "intCodCondicion";
            ddlCondicion.DataTextField  = "strNbrCondicion";
            ddlCondicion.DataBind();

            ddlTipo.DataSource     = WFTipoDeDato.ObtenerTiposDeDato();
            ddlTipo.DataValueField = "intCodTipoDeDato";
            ddlTipo.DataTextField  = "strNbrTipoDeDato";
            ddlTipo.DataBind();
        }
Ejemplo n.º 3
0
        public ArrayList Evaluate(string politicas, int staffOrigen)
        {
            // Ejemplo de "politicas" = "Bs.;500000"
            // Ejemplo de "staffOrigen" = 10108
            ArrayList retVal = null;
            string    ruta   = "";

            string [] parser = politicas.Split(';');

            WFCondicion  Cond = WFCondicion.ObtenerCondicionPorID(ConditionID);
            WFTipoDeDato Tdt  = WFTipoDeDato.ObtenerTiposDeDatoPorID(DatatypeID);

            bool blnCumplioLaPolitica = false;

            switch (Tdt.strNbrTipoDeDato.Trim())
            {
            case "Monto":
            {
                double dblValor = Convert.ToDouble(parser[0]);
                blnCumplioLaPolitica = Comparar(Cond, Convert.ToDouble(_value), dblValor);
            }
            break;

            case "Cantidad":
            {
                int intValor = Convert.ToInt32(parser[0]);
                blnCumplioLaPolitica = Comparar(Cond, Convert.ToInt32(_value), intValor);
            }
            break;

            case "Fecha":
            {
                DateTime dttValor = Convert.ToDateTime(parser[0]);
                blnCumplioLaPolitica = Comparar(Cond, Convert.ToDateTime(parser[0]), dttValor);
            }
            break;

            case "Moneda":
            {
                string strValor = parser[0].Trim();
                blnCumplioLaPolitica = Comparar(Cond, _value.Trim(), strValor);
            }
            break;

            case "Nombre":
            {
                string strValor = parser[0].Trim();
                blnCumplioLaPolitica = Comparar(Cond, _value.Trim(), strValor);
            }
            break;
            }

            if (blnCumplioLaPolitica)
            {
                if (Sino == 1)
                {
                    SqlServerTreeProvider treeProvider = new SqlServerTreeProvider();
                    Children = treeProvider.GetChildren(UniqueID, WorkflowID);

                    bool tieneNodosHijos = false;
                    foreach (TreeNode tn in Children)
                    {
                        tieneNodosHijos = true;
                        retVal          = tn.Evaluate(politicas, staffOrigen);
                        if (retVal != null)
                        {
                            break;
                        }
                    }

                    if (!tieneNodosHijos)
                    {
                        SqlDataReader dr = SqlHelper.ExecuteReader(ESSeguridad.FormarStringConexion(), Queries.WF_ObtenerCaminos, staffOrigen, WorkflowID, UniqueID);

                        if (dr.Read())
                        {
                            retVal = new ArrayList();
                            do
                            {
                                ruta = dr.GetString(0);
                                retVal.Add(ruta);
                            }while(dr.Read());
                        }
                        else
                        {
                            return(null);
//							throw new Exception("No se pudo establecer la ruta a través de las políticas y el código de staff #3");
                        }
                    }
                }
                else
                {
                    if (parser.Length > 1)
                    {
                        string politicasHijas = "";
                        for (int j = 1; j < parser.Length; j++)
                        {
                            politicasHijas += j + 1 < parser.Length ? parser[j] + ";" : parser[j];
                        }

                        SqlServerTreeProvider treeProvider = new SqlServerTreeProvider();
                        Children = treeProvider.GetChildren(UniqueID, WorkflowID);

                        bool tieneNodosHijos = false;
                        foreach (TreeNode tn in Children)
                        {
                            tieneNodosHijos = true;
                            retVal          = tn.Evaluate(politicasHijas, staffOrigen);
                            if (retVal != null)
                            {
                                break;
                            }
                        }

                        if (!tieneNodosHijos)
                        {
                            SqlDataReader dr = SqlHelper.ExecuteReader(ESSeguridad.FormarStringConexion(), Queries.WF_ObtenerCaminos, staffOrigen, WorkflowID, UniqueID);

                            if (dr.Read())
                            {
                                retVal = new ArrayList();
                                do
                                {
                                    ruta = dr.GetString(0);
                                    retVal.Add(ruta);
                                }while(dr.Read());
                            }
                            else
                            {
                                return(null);
//								throw new Exception("No se pudo establecer la ruta a través de las políticas y el código de staff #1");
                            }
                        }
                    }
                    else
                    {
                        SqlDataReader dr = SqlHelper.ExecuteReader(ESSeguridad.FormarStringConexion(), Queries.WF_ObtenerCaminos, staffOrigen, WorkflowID, UniqueID);

                        if (dr.Read())
                        {
                            retVal = new ArrayList();
                            do
                            {
                                ruta = dr.GetString(0);
                                retVal.Add(ruta);
                            }while(dr.Read());
                        }
                        else
                        {
                            return(null);
//							throw new Exception("No se pudo establecer la ruta a través de las políticas y el código de staff #2");
                        }
                    }
                }
            }

            return(retVal);
        }
        protected void ibtnAgregar_Click(object sender, System.Web.UI.ImageClickEventArgs e)
        {
            int    Condicion = Int32.Parse(ddlCondicion.SelectedItem.Value);
            int    Tipo      = Int32.Parse(ddlTipo.SelectedItem.Value);
            string Valor     = txtPolitica.Text;
            Label  lblError  = (Label)Global.FindMyControl(Page, "lblError");

            if (Condicion == 0 || Tipo == 0 || Valor == "")
            {
                lblError.Visible = true;
                lblError.Text    = ESMensajes.ObtenerMensaje(551);
                return;
            }
            else
            {
                lblError.Visible = false;
            }

            WFCondicion  objCondicion = WFCondicion.ObtenerCondicionPorID(Condicion);
            WFTipoDeDato objTipo      = WFTipoDeDato.ObtenerTiposDeDatoPorID(Tipo);

            //Microsoft.Web.UI.WebControls.TreeView tvw = (Microsoft.Web.UI.WebControls.TreeView)Page.FindControl("tvWorkflow");
            System.Web.UI.WebControls.TreeView tvw = (System.Web.UI.WebControls.TreeView)Web.Global.FindMyControl(Page, "wfTreeView");

            System.Web.UI.WebControls.TreeNode tn = Global.GetNodeFromPath(tvw.Nodes, NodeIndex);
            if (tn == null || tn.ChildNodes.Count > 0)
            {
                return;                                        //MOSTRAR ALGUN MENSAJE DE ALARMA: no se puede indexar más de una política dentro de otra
            }
            int        ID          = Convert.ToInt32(tn.Value);
            WFPolitica newPolitica = new WFPolitica(WorkflowId, 0, ID, objCondicion, Valor, objTipo);

            if (newPolitica.Save())
            {
                ddlCondicion.SelectedIndex = 0;
                ddlTipo.SelectedIndex      = 0;
                txtPolitica.Text           = "";
                BindPoliticas();

                tvw.DataSource = WFPolitica.ObtenerRepresentacionXmlDataSource(WorkflowId);
                tvw.DataBind();
                HiddenField nodeIndex = (HiddenField)Global.FindMyControl(Page, "NodeIndex");
                nodeIndex.Value  = "0";
                lblError.Visible = false;
            }
            else
            {
                lblError.Visible = true;
                lblError.Text    = ESMensajes.ObtenerMensaje(302);
            }

            //Microsoft.Web.UI.WebControls.TreeNode tn = tvw.GetNodeFromIndex(NodeIndex);
            //int ID = 0;
            //if(tn.NodeData != "") ID = Convert.ToInt32(tn.NodeData);

            //WFPolitica newPolitica = new WFPolitica(WorkflowId, 0, ID, objCondicion, Valor, objTipo);
            //if (newPolitica.Save())
            //{
            //    ddlCondicion.SelectedIndex = 0;
            //    ddlTipo.SelectedIndex = 0;
            //    txtPolitica.Text = "";
            //    BindPoliticas();

            //    tvw.TreeNodeSrc = WFPolitica.ObtenerRepresentacionXml(WorkflowId);
            //    tvw.DataBind();
            //    lblError.Visible = false;
            //}
            //else
            //{
            //    lblError.Visible = true;
            //    lblError.Text = ESMensajes.ObtenerMensaje(302);
            //}
        }