Esempio n. 1
0
        public void GetDBConfig(SqlConnection conn)
        {
            base.Connection = conn;

            DataTable dt = ExecuteDataTable("select rp.resource_id, p.uri, f.id filter_id, f.name from resource_plugin_lock_filter rpf with(nolock) inner join filters f with(nolock) on f.id = rpf.filter_id inner join resource_plugin rp with(nolock) on rpf.resource_plugin_id = rp.id inner join plugin p with(nolock) on rp.plugin_id = p.id");

            if ((dt == null) || (dt.Rows.Count == 0))
            {
                return;
            }

            foreach (DataRow dr in dt.Rows)
            {
                if (!rules.ContainsKey(dr["resource_id"] + "-" + dr["uri"].ToString().ToLower()))
                {
                    rules.Add(dr["resource_id"] + "-" + dr["uri"].ToString().ToLower(), new FilterRuleCollection());
                }


                //Lista as condições
                FilterRule f = new FilterRule(dr["name"].ToString());

                DataTable dt2 = ExecuteDataTable("select f.*, f1.name field_name, f1.data_type from filters_conditions f with(nolock) inner join field f1 with(nolock) on f1.id = f.field_id where f.filter_id = " + dr["filter_id"]);

                if ((dt2 != null) || (dt2.Rows.Count > 0))
                {
                    foreach (DataRow dr2 in dt2.Rows)
                    {
                        f.AddCondition(dr2["group_id"].ToString(), dr2["group_selector"].ToString(), (Int64)dr2["field_id"], dr2["field_name"].ToString(), dr2["data_type"].ToString(), dr2["text"].ToString(), dr2["condition"].ToString(), dr2["selector"].ToString());
                    }

                    rules[dr["resource_id"] + "-" + dr["uri"].ToString().ToLower()].AddFilterRule(f);
                }
            }
        }
Esempio n. 2
0
        private FilterRule getFilterData(SqlConnection sqlConnection, String name, Dictionary <String, Object> parameters, List <String> log, out Boolean updateName, out Boolean updateConditions)
        {
            FilterRule filterData = new FilterRule(name);

            updateName       = false;
            updateConditions = false;
            if (parameters["name"] != null)
            {
                String n = parameters["name"].ToString();
                if (!String.IsNullOrWhiteSpace(n))
                {
                    filterData.FilterName = n;
                    updateName            = true;
                }
            }

            if (parameters["conditions"] != null)
            {
                if (!(parameters["conditions"] is ArrayList))
                {
                    Error(ErrorType.InvalidRequest, "Parameter conditions is not valid.", "", null);
                    return(null);
                }

                List <Object> conditionList = new List <Object>();
                conditionList.AddRange(((ArrayList)parameters["conditions"]).ToArray());

                DataTable dtField = ExecuteDataTable(sqlConnection, "select * from field f with(nolock) where f.enterprise_id = " + this._enterpriseId, CommandType.Text, null, null);
                if ((dtField == null) && (dtField.Rows.Count == 0))
                {
                    Error(ErrorType.InvalidRequest, "Field list not found.", "", null);
                    return(null);
                }

                for (Int32 u = 0; u < conditionList.Count; u++)
                {
                    if (!(conditionList[u] is Dictionary <String, Object>))
                    {
                        Error(ErrorType.InvalidRequest, "Condition " + u + " is not valid", "", null);
                        return(null);
                    }

                    Dictionary <String, Object> c1 = (Dictionary <String, Object>)conditionList[u];
                    if (!c1.ContainsKey("group_id"))
                    {
                        Error(ErrorType.InvalidRequest, "Parameter group_id is not defined in contition " + u, "", null);
                        return(null);
                    }
                    if (!c1.ContainsKey("group_selector"))
                    {
                        Error(ErrorType.InvalidRequest, "Parameter group_selector is not defined in contition " + u, "", null);
                        return(null);
                    }
                    if (!c1.ContainsKey("field_id"))
                    {
                        Error(ErrorType.InvalidRequest, "Parameter field_id is not defined in contition " + u, "", null);
                        return(null);
                    }
                    if (!c1.ContainsKey("text"))
                    {
                        Error(ErrorType.InvalidRequest, "Parameter text is not defined in contition " + u, "", null);
                        return(null);
                    }
                    if (!c1.ContainsKey("condition"))
                    {
                        Error(ErrorType.InvalidRequest, "Parameter condition is not defined in contition " + u, "", null);
                        return(null);
                    }
                    if (!c1.ContainsKey("selector"))
                    {
                        Error(ErrorType.InvalidRequest, "Parameter selector is not defined in contition " + u, "", null);
                        return(null);
                    }

                    //Resgata o nome e o tipo de dados do campo
                    DataRow[] f = dtField.Select("id = " + c1["field_id"].ToString());
                    if (f.Length == 0)
                    {
                        Error(ErrorType.InvalidRequest, "Field " + c1["field_id"].ToString() + " not exists or is not a chield of this enterprise in condition " + u, "", null);
                        return(null);
                    }

                    filterData.AddCondition(
                        c1["group_id"].ToString(),
                        c1["group_selector"].ToString(),
                        Int64.Parse(f[0]["id"].ToString()),
                        f[0]["name"].ToString(),
                        f[0]["data_type"].ToString(),
                        c1["text"].ToString(),
                        c1["condition"].ToString(),
                        c1["selector"].ToString());
                }

                updateConditions = true;
            }

            return(filterData);
        }
Esempio n. 3
0
        /// <summary>
        /// Método privado para processamento do método 'user.resetpassword'
        /// </summary>
        /// <param name="sqlConnection">Conexão com o banco de dados MS-SQL</param>
        /// <param name="parameters">Dicionário (String, Object) contendo todos os parâmetros necessários</param>
        private Dictionary <String, Object> change(SqlConnection sqlConnection, Dictionary <String, Object> parameters)
        {
            Dictionary <String, Object> result = new Dictionary <String, Object>();

            if (!parameters.ContainsKey("filterid"))
            {
                Error(ErrorType.InvalidRequest, "Parameter filterid is not defined.", "", null);
                return(null);
            }


            String filter = parameters["filterid"].ToString();

            if (String.IsNullOrWhiteSpace(filter))
            {
                Error(ErrorType.InvalidRequest, "Parameter filterid is not defined.", "", null);
                return(null);
            }

            Int64 filterid = 0;

            try
            {
                filterid = Int64.Parse(filter);
            }
            catch
            {
                Error(ErrorType.InvalidRequest, "Parameter filterid is not a long integer.", "", null);
                return(null);
            }


            DbParameterCollection par = new DbParameterCollection();

            par.Add("@enterprise_id", typeof(Int64)).Value = this._enterpriseId;
            par.Add("@filter_id", typeof(Int64)).Value     = filterid;


            DataTable dtFilter = ExecuteDataTable(sqlConnection, "select f.* from filters f with(nolock) where f.enterprise_id = @enterprise_id and f.id = @filter_id", CommandType.Text, par, null);

            if (dtFilter == null)
            {
                Error(ErrorType.InternalError, "", "", null);
                return(null);
            }

            if (dtFilter.Rows.Count == 0)
            {
                Error(ErrorType.InvalidRequest, "Filter not found.", "", null);
                return(null);
            }

            List <String> log              = new List <String>();
            Boolean       updateName       = false;
            Boolean       updateConditions = false;
            FilterRule    filterData       = getFilterData(sqlConnection, dtFilter.Rows[0]["name"].ToString(), parameters, log, out updateName, out updateConditions);

            if (filterData == null)
            {
                return(null);
            }

            if (updateName || updateConditions)
            {
                SqlTransaction trans = sqlConnection.BeginTransaction();
                try
                {
                    if (updateName)
                    {
                        if (filterData.FilterName != dtFilter.Rows[0]["name"].ToString())
                        {
                            par.Add("@name", typeof(String)).Value = filterData.FilterName;

                            log.Add("Name changed from '" + dtFilter.Rows[0]["name"] + "' to '" + filterData.FilterName + "'");

                            ExecuteNonQuery(sqlConnection, "update filters set name = @name where id = @filter_id", CommandType.Text, par, trans);
                        }
                    }

                    if (updateConditions && filterData.FilterGroups.Count > 0)
                    {
                        //Busca todas as regras deste filtro no DB
                        DataTable dtFilterConditions = ExecuteDataTable(sqlConnection, "select fc.* from filters_conditions fc with(nolock) where fc.filter_id = @filter_id", CommandType.Text, par, trans);

                        List <String> contains = new List <String>();
                        List <DbParameterCollection> newItems = new List <DbParameterCollection>();

                        foreach (FilterGroup g in filterData.FilterGroups)
                        {
                            foreach (FilterCondition f in g.FilterRules)
                            {
                                Boolean addNew = false;

                                if ((dtFilterConditions != null) && (dtFilterConditions.Rows.Count > 0))
                                {
                                    String    s   = "group_id = '" + g.GroupId + "' and field_id = " + f.FieldId + " and text = '" + f.DataString + "' and condition = '" + f.ConditionType.ToString() + "'";
                                    DataRow[] sel = dtFilterConditions.Select(s);
                                    if (sel.Length > 0)
                                    {
                                        contains.Add(sel[0]["id"].ToString());

                                        //Atualiza
                                        if ((sel[0]["group_selector"].ToString().ToLower() != g.Selector.ToString().ToLower()) || (sel[0]["selector"].ToString().ToLower() != f.Selector.ToString().ToLower()))
                                        {
                                            DbParameterCollection p3 = new DbParameterCollection();
                                            p3.Add("@condition_id", typeof(Int64)).Value    = (Int64)sel[0]["id"];
                                            p3.Add("@group_selector", typeof(String)).Value = g.Selector.ToString();
                                            p3.Add("@selector", typeof(String)).Value       = f.Selector.ToString();

                                            log.Add("Condition updated: group = " + g.GroupId + ", selector = " + f.Selector.ToString() + ", condition = " + f.ToString());
                                            ExecuteNonQuery(sqlConnection, "update filters_conditions set [group_selector] = @group_selector, [selector] = @selector where id = @condition_id", CommandType.Text, p3, trans);
                                        }
                                    }
                                    else
                                    {
                                        addNew = true;
                                    }
                                }
                                else
                                {
                                    addNew = true;
                                }

                                //Adiciona a condição
                                if (addNew)
                                {
                                    DbParameterCollection p2 = new DbParameterCollection();
                                    p2.Add("@filter_id", typeof(Int64)).Value       = filterid;
                                    p2.Add("@group_id", typeof(String)).Value       = g.GroupId;
                                    p2.Add("@group_selector", typeof(String)).Value = g.Selector.ToString();
                                    p2.Add("@field_id", typeof(String)).Value       = f.FieldId;
                                    p2.Add("@text", typeof(String)).Value           = f.DataString;
                                    p2.Add("@condition", typeof(String)).Value      = f.ConditionType.ToString();
                                    p2.Add("@selector", typeof(String)).Value       = f.Selector.ToString();

                                    newItems.Add(p2);

                                    log.Add("Condition inserted: group = " + g.GroupId + ", condition = " + f.ToString());
                                }
                            }
                        }
                        log.Add("");

                        //Deleta as condições que não estão sendo utilizadas
                        if (contains.Count > 0)
                        {
                            DataTable dtFc = ExecuteDataTable(sqlConnection, "select f.*, f1.name field_name, f1.data_type from filters_conditions f with(nolock) inner join field f1 with(nolock) on f1.id = f.field_id where f.filter_id = @filter_id and f.id not in (" + String.Join(",", contains) + ")", CommandType.Text, par, trans);
                            if ((dtFc != null) && (dtFc.Rows.Count > 0))
                            {
                                FilterRule fdTmp = new FilterRule("");
                                foreach (DataRow dr2 in dtFc.Rows)
                                {
                                    fdTmp.AddCondition(dr2["group_id"].ToString(), dr2["group_selector"].ToString(), (Int64)dr2["field_id"], dr2["field_name"].ToString(), dr2["data_type"].ToString(), dr2["text"].ToString(), dr2["condition"].ToString(), dr2["selector"].ToString());
                                }

                                foreach (FilterGroup g in fdTmp.FilterGroups)
                                {
                                    foreach (FilterCondition f in g.FilterRules)
                                    {
                                        log.Add("Condition deleted: group = " + g.GroupId + ", condition = " + f.ToString());
                                    }
                                }
                            }

                            ExecuteNonQuery(sqlConnection, "delete from  filters_conditions where filter_id = @filter_id and id not in (" + String.Join(",", contains) + ")", CommandType.Text, par, trans);
                        }
                        else
                        {
                            ExecuteNonQuery(sqlConnection, "delete from  filters_conditions where filter_id = @filter_id", CommandType.Text, par, trans);
                        }

                        foreach (DbParameterCollection p2 in newItems)
                        {
                            ExecuteNonQuery(sqlConnection, "insert into filters_conditions ([filter_id] ,[group_id] ,[group_selector] ,[field_id] ,[text] ,[condition] ,[selector]) VALUES (@filter_id,@group_id,@group_selector,@field_id,@text,@condition,@selector)", CommandType.Text, p2, trans);
                        }
                    }

                    log.Add("");
                    log.Add("Filtro:");
                    log.Add(filterData.ToString());


                    AddUserLog(sqlConnection, LogKey.Filter_Changed, null, "API", UserLogLevel.Info, 0, this._enterpriseId, 0, 0, 0, 0, 0, "Filter changed", String.Join("\r\n", log), acl.EntityId, trans);

                    trans.Commit();
                    trans = null;
                }
                catch (Exception ex)
                {
                    Error(ErrorType.InvalidRequest, "Error on update filter", "", null);
                    return(null);
                }
                finally
                {
                    //Saída sem aviso, ou seja, erro
                    if (trans != null)
                    {
                        trans.Rollback();
                    }
                }
            }

            return(get(sqlConnection, parameters));
        }
Esempio n. 4
0
        /// <summary>
        /// Método privado para processamento do método 'user.resetpassword'
        /// </summary>
        /// <param name="sqlConnection">Conexão com o banco de dados MS-SQL</param>
        /// <param name="parameters">Dicionário (String, Object) contendo todos os parâmetros necessários</param>
        private List <Object> list(SqlConnection sqlConnection, Dictionary <String, Object> parameters)
        {
            List <Object> result = new List <Object>();

            String text = "";

            if (parameters.ContainsKey("text"))
            {
                text = (String)parameters["text"];
            }

            if (String.IsNullOrWhiteSpace(text))
            {
                text = "";
            }

            DbParameterCollection par = new DbParameterCollection();

            par.Add("@enterprise_id", typeof(Int64)).Value      = this._enterpriseId;
            par.Add("@text", typeof(String), text.Length).Value = text;

            Int32 page     = 1;
            Int32 pageSize = 10;

            if (parameters.ContainsKey("page"))
            {
                Int32.TryParse(parameters["page"].ToString(), out page);
            }

            if (parameters.ContainsKey("page_size"))
            {
                Int32.TryParse(parameters["page_size"].ToString(), out pageSize);
            }

            if (pageSize < 1)
            {
                pageSize = 1;
            }

            if (page < 1)
            {
                page = 1;
            }

            Int32 rStart = ((page - 1) * pageSize) + 1;
            Int32 rEnd   = rStart + (pageSize - 1);


            String sql = "";

            sql += "WITH result_set AS (";
            sql += "  SELECT ";
            sql += "    ROW_NUMBER() OVER (ORDER BY f.name) AS [row_number], f.*, ";
            sql += "    ignore_qty = (select COUNT(distinct i1.filter_id) from resource_plugin_ignore_filter i1 with(nolock) where i1.filter_id = f.id), ";
            sql += "    lock_qty = (select COUNT(distinct l1.filter_id) from resource_plugin_lock_filter l1 with(nolock) where l1.filter_id = f.id),";
            sql += "    role_qty = (select COUNT(distinct r1.filter_id) from resource_plugin_role_filter r1 with(nolock) where r1.filter_id = f.id) ";
            sql += "     from filters f ";
            sql += "     where (f.enterprise_id = @enterprise_id " + (String.IsNullOrWhiteSpace(text) ? "" : " and f.name like '%'+@text+'%'") + ")";
            sql += ") SELECT";
            sql += "  *";
            sql += " FROM";
            sql += "  result_set";
            sql += " WHERE";
            sql += "  [row_number] BETWEEN " + rStart + " AND " + rEnd;

            DataTable dtPlugins = ExecuteDataTable(sqlConnection, sql, CommandType.Text, par, null);

            if ((dtPlugins != null) && (dtPlugins.Rows.Count > 0))
            {
                foreach (DataRow dr1 in dtPlugins.Rows)
                {
                    Dictionary <string, object> newItem = new Dictionary <string, object>();
                    newItem.Add("enterprise_id", dr1["enterprise_id"]);
                    newItem.Add("filter_id", dr1["id"]);
                    newItem.Add("name", dr1["name"]);
                    newItem.Add("ignore_qty", dr1["ignore_qty"]);
                    newItem.Add("lock_qty", dr1["lock_qty"]);
                    newItem.Add("role_qty", dr1["role_qty"]);
                    newItem.Add("create_date", (dr1["create_date"] != DBNull.Value ? (Int32)((((DateTime)dr1["create_date"]) - new DateTime(1970, 1, 1)).TotalSeconds) : 0));


                    //Lista as condições
                    List <Dictionary <String, Object> > conditions = new List <Dictionary <string, object> >();

                    FilterRule f   = new FilterRule(dr1["name"].ToString());
                    DataTable  dt2 = ExecuteDataTable(sqlConnection, "select f.*, f1.name field_name, f1.data_type from filters_conditions f with(nolock) inner join field f1 with(nolock) on f1.id = f.field_id where f.filter_id = " + dr1["id"] + "  order by f.group_id, f1.name");
                    if ((dt2 != null) || (dt2.Rows.Count > 0))
                    {
                        foreach (DataRow dr2 in dt2.Rows)
                        {
                            Dictionary <string, object> c1 = new Dictionary <string, object>();
                            c1.Add("group_id", dr2["group_id"].ToString());
                            c1.Add("group_selector", dr2["group_selector"].ToString());
                            c1.Add("field_id", (Int64)dr2["field_id"]);
                            c1.Add("field_name", dr2["field_name"].ToString());
                            c1.Add("data_type", dr2["data_type"].ToString());
                            c1.Add("text", dr2["text"].ToString());
                            c1.Add("condition", dr2["condition"].ToString());
                            c1.Add("selector", dr2["selector"].ToString());

                            conditions.Add(c1);

                            f.AddCondition(dr2["group_id"].ToString(), dr2["group_selector"].ToString(), (Int64)dr2["field_id"], dr2["field_name"].ToString(), dr2["data_type"].ToString(), dr2["text"].ToString(), dr2["condition"].ToString(), dr2["selector"].ToString());
                        }
                    }

                    newItem.Add("conditions_description", f.ToString());
                    newItem.Add("conditions", conditions);

                    result.Add(newItem);
                }
            }

            return(result);
        }
Esempio n. 5
0
        /// <summary>
        /// Método privado para processamento do método 'user.resetpassword'
        /// </summary>
        /// <param name="sqlConnection">Conexão com o banco de dados MS-SQL</param>
        /// <param name="parameters">Dicionário (String, Object) contendo todos os parâmetros necessários</param>
        private Dictionary <String, Object> get(SqlConnection sqlConnection, Dictionary <String, Object> parameters)
        {
            Dictionary <String, Object> result = new Dictionary <String, Object>();

            if (!parameters.ContainsKey("filterid"))
            {
                Error(ErrorType.InvalidRequest, "Parameter filterid is not defined.", "", null);
                return(null);
            }


            String filter = parameters["filterid"].ToString();

            if (String.IsNullOrWhiteSpace(filter))
            {
                Error(ErrorType.InvalidRequest, "Parameter filterid is not defined.", "", null);
                return(null);
            }

            Int64 filterid = 0;

            try
            {
                filterid = Int64.Parse(filter);
            }
            catch
            {
                Error(ErrorType.InvalidRequest, "Parameter filterid is not a long integer.", "", null);
                return(null);
            }


            DbParameterCollection par = new DbParameterCollection();

            par.Add("@enterprise_id", typeof(Int64)).Value = this._enterpriseId;
            par.Add("@filter_id", typeof(Int64)).Value     = filterid;


            DataTable dtFilter = ExecuteDataTable(sqlConnection, "select f.*, ignore_qty = (select COUNT(distinct i1.filter_id) from resource_plugin_ignore_filter i1 with(nolock) where i1.filter_id = f.id), lock_qty = (select COUNT(distinct l1.filter_id) from resource_plugin_lock_filter l1 with(nolock) where l1.filter_id = f.id), role_qty = (select COUNT(distinct r1.filter_id) from resource_plugin_role_filter r1 with(nolock) where r1.filter_id = f.id)  from filters f with(nolock) where f.enterprise_id = @enterprise_id and f.id = @filter_id", CommandType.Text, par, null);

            if (dtFilter == null)
            {
                Error(ErrorType.InternalError, "", "", null);
                return(null);
            }

            if (dtFilter.Rows.Count == 0)
            {
                Error(ErrorType.InvalidRequest, "Filter not found.", "", null);
                return(null);
            }


            DataRow dr1 = dtFilter.Rows[0];

            Dictionary <string, object> newItem = new Dictionary <string, object>();

            newItem.Add("enterprise_id", dr1["enterprise_id"]);
            newItem.Add("filter_id", dr1["id"]);
            newItem.Add("name", dr1["name"]);
            newItem.Add("ignore_qty", dr1["ignore_qty"]);
            newItem.Add("lock_qty", dr1["lock_qty"]);
            newItem.Add("role_qty", dr1["role_qty"]);
            newItem.Add("create_date", (dr1["create_date"] != DBNull.Value ? (Int32)((((DateTime)dr1["create_date"]) - new DateTime(1970, 1, 1)).TotalSeconds) : 0));


            //Lista as condições
            List <Dictionary <String, Object> > conditions = new List <Dictionary <string, object> >();

            FilterRule f   = new FilterRule(dr1["name"].ToString());
            DataTable  dt2 = ExecuteDataTable(sqlConnection, "select f.*, f1.name field_name, f1.data_type from filters_conditions f with(nolock) inner join field f1 with(nolock) on f1.id = f.field_id where f.filter_id = " + dr1["id"] + " order by f.group_id, f1.name");

            if ((dt2 != null) || (dt2.Rows.Count > 0))
            {
                foreach (DataRow dr2 in dt2.Rows)
                {
                    Dictionary <string, object> c1 = new Dictionary <string, object>();
                    c1.Add("group_id", dr2["group_id"].ToString());
                    c1.Add("group_selector", dr2["group_selector"].ToString());
                    c1.Add("field_id", (Int64)dr2["field_id"]);
                    c1.Add("field_name", dr2["field_name"].ToString());
                    c1.Add("data_type", dr2["data_type"].ToString());
                    c1.Add("text", dr2["text"].ToString());
                    c1.Add("condition", dr2["condition"].ToString());
                    c1.Add("selector", dr2["selector"].ToString());

                    conditions.Add(c1);

                    f.AddCondition(dr2["group_id"].ToString(), dr2["group_selector"].ToString(), (Int64)dr2["field_id"], dr2["field_name"].ToString(), dr2["data_type"].ToString(), dr2["text"].ToString(), dr2["condition"].ToString(), dr2["selector"].ToString());
                }
            }

            newItem.Add("conditions_description", f.ToString());
            newItem.Add("conditions", conditions);

            result.Add("info", newItem);


            return(result);
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            String data = "Integrity check error: Multiplus entities (10583, 13065) found at this filtered data";

            List <String> duplicatedEntities = new List <String>();

            //Captura somente os IDs das entidades
            Regex rex = new Regex(@"\((.*?)\)");
            Match m   = rex.Match(data);

            if (m.Success)
            {
                String[] entities = m.Groups[1].Value.Replace(" ", "").Split(",".ToCharArray());
                duplicatedEntities.AddRange(entities);
            }


            FilterRule r = new FilterRule("teste001");

            r.AddCondition("g1", FilterSelector.AND, 1, "Nome", DataType.Text, "Helvio", FilterConditionType.Equal, FilterSelector.OR);
            r.AddCondition("g1", FilterSelector.OR, 1, "Nome", DataType.Text, "Thais", FilterConditionType.Equal, FilterSelector.OR);
            r.AddCondition("g2", FilterSelector.AND, 2, "Setor", DataType.Text, "Financeiro", FilterConditionType.Equal, FilterSelector.OR);
            r.AddCondition("g3", FilterSelector.OR, 3, "Cidade", DataType.Text, "Curitiba", FilterConditionType.Equal, FilterSelector.OR);

            FilterRuleCollection frCol = new FilterRuleCollection();

            frCol.AddFilterRule(r);

            foreach (FilterRule r1 in frCol)
            {
                Console.WriteLine(r1.ToString());
                Console.WriteLine(r1.ToSqlString());
            }

            FilterChecker chk = new FilterChecker(frCol);

            for (Int32 i = 10; i <= 100; i++)
            {
                chk.AddFieldData(i, DataType.Text, "Test 0" + i);
            }

            for (Int32 i = 10; i <= 100; i++)
            {
                chk.AddFieldData(1, DataType.Text, "Teste 1 " + i);
            }

            for (Int32 i = 10; i <= 100; i++)
            {
                chk.AddFieldData(2, DataType.Text, "Teste 2 " + i);
            }

            for (Int32 i = 10; i <= 100; i++)
            {
                chk.AddFieldData(3, DataType.Text, "Teste 3 " + i);
            }

            chk.AddFieldData(1, DataType.Text, "Helvio");
            chk.AddFieldData(1, DataType.Text, "SafeTrend.com.br");
            chk.AddFieldData(1, DataType.Text, "Helvio Carvalho");
            chk.AddFieldData(1, DataType.Text, "Thais Freitas Lima");
            chk.AddFieldData(2, DataType.Text, "Financeiro");
            chk.AddFieldData(3, DataType.Text, "Curitiba");

            FilterMatchCollection col = chk.Matches();

            return;

            String tstj = "{ \"type\":\"SpecificTime\", \"start_time\":\"07:30:00\", \"end_time\":\"19:00:00\", \"week_day\":[\"monday\",\"tuesday\",\"wednesday\",\"thursday\",\"friday\"] }";

            IAM.TimeACL.TimeAccess acl = new IAM.TimeACL.TimeAccess();
            acl.FromJsonString(tstj);
            Console.WriteLine(acl.BetweenTimes(DateTime.Now));


            return;

            String   tst  = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff");
            DateTime tst2 = DateTime.Parse(tst);

            EnterpriseKey ent = new EnterpriseKey(new Uri("//demo.safeid.com.br"), "SafeID - Demo");

            ent.BuildCerts(); //Cria os certificados

            StringBuilder text = new StringBuilder();

            text.AppendLine("Server cert");
            text.AppendLine(ent.ServerCert);
            text.AppendLine("");

            text.AppendLine("Server PKCS#12 cert");
            text.AppendLine(ent.ServerPKCS12Cert);
            text.AppendLine("");

            text.AppendLine("Client PKCS#12 cert");
            text.AppendLine(ent.ClientPKCS12Cert);

            File.WriteAllText("certdata.txt", text.ToString());


            /*
             * Dictionary<String, String> properties = new Dictionary<string, string>();
             * properties.Add("locked", "false");
             *
             * UserData user = new UserData(properties);
             *
             * //string parsestr = "(u.ContainsProperty('locked'))";
             * string parsestr = "(u.PropertyIsEqual('locked', 'false'))";
             * var p = new CompiledExpression(parsestr);
             * p.RegisterType("u", user);
             * p.Parse();
             * p.Compile();
             * Console.WriteLine("Result: {0} {1}", p.Eval(), p.Eval().GetType().Name);*/

            //"(vars.myExternalVar + 3) / 2 * 4.5 " // returns 20.25
            //"vars.getRandomNumber()"  // returns a random number
        }
Esempio n. 7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.HttpMethod != "POST")
            {
                return;
            }

            String area = "";

            if (!String.IsNullOrWhiteSpace((String)RouteData.Values["area"]))
            {
                area = (String)RouteData.Values["area"];
            }

            Int64 enterpriseId = 0;

            if ((Session["enterprise_data"]) != null && (Session["enterprise_data"] is EnterpriseData))
            {
                enterpriseId = ((EnterpriseData)Session["enterprise_data"]).Id;
            }

            Boolean newItem = false;

            if ((RouteData.Values["new"] != null) && (RouteData.Values["new"] == "1"))
            {
                newItem = true;
            }

            String ApplicationVirtualPath = Session["ApplicationVirtualPath"].ToString();

            LMenu menu1 = new LMenu("Dashboard", ApplicationVirtualPath + "admin/");
            LMenu menu2 = new LMenu("Filtros", ApplicationVirtualPath + "admin/filter/" + (Request.Form["hashtag"] != null ? "#" + Request.Form["hashtag"].ToString() : ""));
            LMenu menu3 = new LMenu("Filtros", ApplicationVirtualPath + "admin/filter/" + (Request.Form["hashtag"] != null ? "#" + Request.Form["hashtag"].ToString() : ""));

            WebJsonResponse contentRet = null;

            String html  = "";
            String eHtml = "";
            String js    = null;

            String errorTemplate = "<span class=\"empty-results\">{0}</span>";

            //Verifica se está sendo selecionada uma role
            Int64 filterId = 0;

            try
            {
                filterId = Int64.Parse((String)RouteData.Values["id"]);

                if (filterId < 0)
                {
                    filterId = 0;
                }
            }
            catch { }

            String          error     = "";
            FilterGetResult retFilter = null;
            String          filter    = "";
            HashData        hashData  = new HashData(this);

            String rData = null;
            //SqlConnection conn = null;
            String jData = "";

            Int32   page     = 1;
            Int32   pageSize = 20;
            Boolean hasNext  = true;

            if (!String.IsNullOrWhiteSpace((String)RouteData.Values["filter"]))
            {
                filter = (String)RouteData.Values["filter"];
            }

            if ((filterId > 0) && (area.ToLower() != "search"))
            {
                try
                {
                    rData = SafeTrend.Json.JSON.Serialize2(new
                    {
                        jsonrpc    = "1.0",
                        method     = "filter.get",
                        parameters = new
                        {
                            filterid = filterId
                        },
                        id = 1
                    });
                    jData = "";
                    using (IAMDatabase database = new IAMDatabase(IAMDatabase.GetWebConnectionString()))
                        jData = WebPageAPI.ExecuteLocal(database, this, rData);


                    if (String.IsNullOrWhiteSpace(jData))
                    {
                        throw new Exception("");
                    }

                    retFilter = JSON.Deserialize <FilterGetResult>(jData);
                    if (retFilter == null)
                    {
                        error = MessageResource.GetMessage("filter_not_found");
                        //ret = new WebJsonResponse("", MessageResource.GetMessage("user_not_found"), 3000, true);
                    }
                    else if (retFilter.error != null)
                    {
                        error     = retFilter.error.data;
                        retFilter = null;
                    }
                    else if (retFilter.result == null || retFilter.result.info == null)
                    {
                        error     = MessageResource.GetMessage("filter_not_found");
                        retFilter = null;
                    }
                    else
                    {
                        menu3.Name = retFilter.result.info.name;
                    }
                }
                catch (Exception ex)
                {
                    error = MessageResource.GetMessage("api_error");
                    Tools.Tool.notifyException(ex, this);
                    retFilter = null;
                    //ret = new WebJsonResponse("", MessageResource.GetMessage("api_error"), 3000, true);
                }
            }

            String infoTemplate = "<tr><td class=\"col1\">{0}</td><td class=\"col2\"><span class=\"no-edit\">{1}</span></td></tr>";

            String groupTemplate          = "<div id=\"{0}\"><div class=\"group\" group-id=\"{0}\"><div class=\"wrapper\"><div class=\"cmd-bar\"><div class=\"ico icon-close floatright\"></div></div>{1}<div class=\"cmd-bar1\"><div class=\"ico icon-plus floatright\"></div></div></div><div class=\"clear-block\"></div></div><div class=\"selector-wrapper\">{2}</div></div>";
            String groupSelectorTemplate  = "<div class=\"group-selector\"><select type=\"checkbox\" name=\"group_{0}_selector\"><option value=\"or\" {1}>or</option><option value=\"and\" {2}>and</option></select><div class=\"item {1}\" value=\"or\">OU</div><div class=\"item {2}\" value=\"and\">E</div><div class=\"clear-block\"></div></div>";
            String filterSelectorTemplate = "<div class=\"filter-selector\"><select type=\"checkbox\" name=\"filter_{0}_selector\"><option value=\"or\" {1}>or</option><option value=\"and\" {2}>and</option></select> <div class=\"item {1}\" value=\"or\">OU</div><div class=\"item {2}\" value=\"and\">E</div><div class=\"clear-block\"></div></div>";


            switch (area)
            {
            case "":
            case "search":
            case "content":
                if (newItem)
                {
                    rData = SafeTrend.Json.JSON.Serialize2(new
                    {
                        jsonrpc    = "1.0",
                        method     = "field.list",
                        parameters = new
                        {
                            page_size = Int32.MaxValue
                        },
                        id = 1
                    });
                    jData = "";
                    using (IAMDatabase database = new IAMDatabase(IAMDatabase.GetWebConnectionString()))
                        jData = WebPageAPI.ExecuteLocal(database, this, rData);

                    List <FieldData> fieldList = new List <FieldData>();
                    FieldListResult  flR       = JSON.Deserialize <FieldListResult>(jData);
                    if ((flR != null) && (flR.error == null) && (flR.result != null))
                    {
                        fieldList = flR.result;
                    }

                    String filterTemplate = GetFilterTemplate(fieldList, 0, "", "");

                    html  = "<h3>Adição do filtro</h3>";
                    html += "<form id=\"form_add_role\" method=\"post\" action=\"" + ApplicationVirtualPath + "admin/filter/action/add_filter/\">";
                    html += "<div class=\"no-tabs fields\"><table><tbody>";
                    html += String.Format(infoTemplate, "Nome", "<input id=\"filter_name\" name=\"filter_name\" placeholder=\"Digite o nome do filtro\" type=\"text\"\">");
                    html += "</tbody></table><div class=\"clear-block\"></div></div>";

                    html += "<h3>Parametros de filtragem</h3><div class=\"no-tabs pb10\">";
                    html += "<div id=\"filter_conditions\"><div><div class=\"a-btn blue secondary\" onclick=\"iamfnc.addGroup();\">Inserir grupo</div></div>";
                    html += "<div class=\"filter-groups\">";


                    String filters = String.Format(filterTemplate, "F0", "0", "");
                    html += String.Format(groupTemplate, "0", filters, "");

                    html += "</div>";

                    html += "</div><div class=\"clear-block\"></div></div>";
                    html += "<button type=\"submit\" id=\"user-profile-password-save\" class=\"button secondary floatleft\">Salvar</button>    <a href=\"" + ApplicationVirtualPath + "admin/filter/" + (Request.Form["hashtag"] != null ? "#" + Request.Form["hashtag"].ToString() : "") + "\" class=\"button link floatleft\">Cancelar</a></form>";

                    contentRet    = new WebJsonResponse("#content-wrapper", (eHtml != "" ? eHtml : html));
                    contentRet.js = GetFilterJS(groupTemplate, groupSelectorTemplate, filterTemplate, filterSelectorTemplate);
                }
                else
                {
                    if (retFilter == null)
                    {
                        Int32.TryParse(Request.Form["page"], out page);

                        if (page < 1)
                        {
                            page = 1;
                        }

                        String proxyTemplate = "<div id=\"proxy-list-{0}\" data-id=\"{0}\" data-name=\"{1}\" data-total=\"{2}\" class=\"app-list-item\">";
                        proxyTemplate += "<table>";
                        proxyTemplate += "   <tbody>";
                        proxyTemplate += "       <tr>";
                        proxyTemplate += "           <td class=\"col1\">";
                        proxyTemplate += "               <span id=\"total_{0}\" class=\"total \">{2}</span>";
                        proxyTemplate += "               <a href=\"" + ApplicationVirtualPath + "admin/filter/{0}/use/\">";
                        proxyTemplate += "                   <div class=\"app-btn a-btn\"><span class=\"a-btn-inner\">Ver utilizações</span></div>";
                        proxyTemplate += "               </a>";
                        proxyTemplate += "           </td>";
                        proxyTemplate += "           <td class=\"col2\">";
                        proxyTemplate += "               <div class=\"title\"><span class=\"name field-editor\" id=\"filter_name_{0}\" data-id=\"{0}\" data-function=\"iamadmin.editTextField('#filter_name_{0}',null,filterNameEdit);\">{1}</span><span class=\"date\">{3}</span><div class=\"clear-block\"></div></div>";
                        proxyTemplate += "               <div class=\"description\">";
                        proxyTemplate += "                   <div class=\"first\">{4}</div>";
                        proxyTemplate += "               </div>";
                        proxyTemplate += "               <div class=\"links\">";
                        proxyTemplate += "                   <div class=\"last\">{5}</div>";
                        proxyTemplate += "               </div>";
                        proxyTemplate += "           </td>";
                        proxyTemplate += "       </tr>";
                        proxyTemplate += "   </tbody>";
                        proxyTemplate += "</table></div>";

                        js += "filterNameEdit = function(thisId, changedText) { iamadmin.changeName(thisId,changedText); };";

                        html += "<div id=\"box-container\" class=\"box-container\">";

                        String query = "";
                        try
                        {
                            rData = "";

                            if (!String.IsNullOrWhiteSpace((String)RouteData.Values["query"]))
                            {
                                query = (String)RouteData.Values["query"];
                            }

                            if (String.IsNullOrWhiteSpace(query) && !String.IsNullOrWhiteSpace(hashData.GetValue("query")))
                            {
                                query = hashData.GetValue("query");
                            }

                            if (String.IsNullOrWhiteSpace(query))
                            {
                                rData = SafeTrend.Json.JSON.Serialize2(new
                                {
                                    jsonrpc    = "1.0",
                                    method     = "filter.list",
                                    parameters = new
                                    {
                                        page_size = pageSize,
                                        page      = page
                                    },
                                    id = 1
                                });
                            }
                            else
                            {
                                rData = SafeTrend.Json.JSON.Serialize2(new
                                {
                                    jsonrpc    = "1.0",
                                    method     = "filter.search",
                                    parameters = new
                                    {
                                        text      = query,
                                        page_size = pageSize,
                                        page      = page
                                    },
                                    id = 1
                                });
                            }

                            jData = "";
                            using (IAMDatabase database = new IAMDatabase(IAMDatabase.GetWebConnectionString()))
                                jData = WebPageAPI.ExecuteLocal(database, this, rData);

                            if (String.IsNullOrWhiteSpace(jData))
                            {
                                throw new Exception("");
                            }

                            FilterListResult ret2 = JSON.Deserialize <FilterListResult>(jData);
                            if (ret2 == null)
                            {
                                eHtml  += String.Format(errorTemplate, MessageResource.GetMessage("filter_not_found"));
                                hasNext = false;
                            }
                            else if (ret2.error != null)
                            {
#if DEBUG
                                eHtml += String.Format(errorTemplate, ret2.error.data + ret2.error.debug);
#else
                                eHtml += String.Format(errorTemplate, ret2.error.data);
#endif
                                hasNext = false;
                            }
                            else if (ret2.result == null || (ret2.result.Count == 0 && page == 1))
                            {
                                eHtml  += String.Format(errorTemplate, MessageResource.GetMessage("filter_not_found"));
                                hasNext = false;
                            }
                            else
                            {
                                foreach (FilterData f in ret2.result)
                                {
                                    String text = "<span>" + f.conditions_description + "</span>";

                                    String links = "";
                                    links += "<a href=\"" + ApplicationVirtualPath + "admin/filter/" + f.filter_id + "/" + (Request.Form["hashtag"] != null ? "#" + Request.Form["hashtag"].ToString() : "") + "\"><div class=\"ico icon-change\">Editar</div></a>";
                                    links += (f.ignore_qty > 0 || f.lock_qty > 0 || f.role_qty > 0 ? "" : "<a class=\"confirm-action\" href=\"" + ApplicationVirtualPath + "admin/filter/" + f.filter_id + "/action/delete/" + (Request.Form["hashtag"] != null ? "#" + Request.Form["hashtag"].ToString() : "") + "\" confirm-title=\"Exclusão\" confirm-text=\"Deseja excluir definitivamente o filtro '" + f.name + "'?\" ok=\"Excluir\" cancel=\"Cancelar\"><div class=\"ico icon-close\">Apagar</div></a>");

                                    html += String.Format(proxyTemplate, f.filter_id, f.name, f.ignore_qty + f.lock_qty + f.role_qty, (f.create_date > 0 ? "Criado em " + MessageResource.FormatDate(new DateTime(1970, 1, 1).AddSeconds(f.create_date), true) : ""), text, links);
                                }

                                if (ret2.result.Count < pageSize)
                                {
                                    hasNext = false;
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            eHtml += String.Format(errorTemplate, MessageResource.GetMessage("api_error"));
                        }

                        if (page == 1)
                        {
                            html += "</div>";

                            html += "<span class=\"empty-results content-loading proxy-list-loader hide\"></span>";

                            contentRet = new WebJsonResponse("#content-wrapper", (eHtml != "" ? eHtml : html));
                        }
                        else
                        {
                            contentRet = new WebJsonResponse("#content-wrapper #box-container", (eHtml != "" ? eHtml : html), true);
                        }

                        contentRet.js = js + "$( document ).unbind('end_of_scroll');";

                        if (hasNext)
                        {
                            contentRet.js += "$( document ).bind( 'end_of_scroll.loader_role', function() { $( document ).unbind('end_of_scroll.loader_role'); $('.proxy-list-loader').removeClass('hide'); iamadmin.getPageContent2( { page: " + ++page + ", search:'" + (!String.IsNullOrWhiteSpace(query) ? query : "") + "' }, function(){ $('.proxy-list-loader').addClass('hide'); } ); });";
                        }
                    }
                    else    //Esta sendo selecionado o filtro
                    {
                        if (error != "")
                        {
                            contentRet = new WebJsonResponse("#content-wrapper", String.Format(errorTemplate, error));
                        }
                        else
                        {
                            switch (filter)
                            {
                            case "":

                                rData = SafeTrend.Json.JSON.Serialize2(new
                                {
                                    jsonrpc    = "1.0",
                                    method     = "field.list",
                                    parameters = new
                                    {
                                        page_size = Int32.MaxValue
                                    },
                                    id = 1
                                });
                                jData = "";
                                using (IAMDatabase database = new IAMDatabase(IAMDatabase.GetWebConnectionString()))
                                    jData = WebPageAPI.ExecuteLocal(database, this, rData);

                                List <FieldData> fieldList = new List <FieldData>();
                                FieldListResult  flR       = JSON.Deserialize <FieldListResult>(jData);
                                if ((flR != null) && (flR.error == null) && (flR.result != null))
                                {
                                    fieldList = flR.result;
                                }


                                String filterTemplate = GetFilterTemplate(fieldList, 0, "", "");

                                html  = "<h3>Edição do filtro</h3>";
                                html += "<form id=\"form_add_role\" method=\"post\" action=\"" + ApplicationVirtualPath + "admin/filter/" + retFilter.result.info.filter_id + "/action/change/\">";
                                html += "<div class=\"no-tabs fields\"><table><tbody>";
                                html += String.Format(infoTemplate, "Nome", "<input id=\"filter_name\" name=\"filter_name\" placeholder=\"Digite o nome do filtro\" type=\"text\"\" value=\"" + retFilter.result.info.name + "\">");
                                html += "</tbody></table><div class=\"clear-block\"></div></div>";

                                html += "<h3>Parametros de filtragem</h3><div class=\"no-tabs pb10\">";
                                html += "<div id=\"filter_conditions\"><div><div class=\"a-btn blue secondary\" onclick=\"iamfnc.addGroup();\">Inserir grupo</div></div>";
                                html += "<div class=\"filter-groups\">";

                                FilterRule fr = new FilterRule(retFilter.result.info.name);
                                foreach (IAM.GlobalDefs.WebApi.FilterCondition cond in retFilter.result.info.conditions)
                                {
                                    fr.AddCondition(cond.group_id.ToString(), cond.group_selector, cond.field_id, cond.field_name, cond.data_type, cond.text, cond.condition, cond.selector);
                                }

                                for (Int32 g = 0; g < fr.FilterGroups.Count; g++)
                                {
                                    String filters = "";

                                    for (Int32 fIndex = 0; fIndex < fr.FilterGroups[g].FilterRules.Count; fIndex++)
                                    {
                                        String fId = fr.FilterGroups[g].GroupId + "-" + fIndex;

                                        String ft = GetFilterTemplate(fieldList, fr.FilterGroups[g].FilterRules[fIndex].FieldId, fr.FilterGroups[g].FilterRules[fIndex].DataString, fr.FilterGroups[g].FilterRules[fIndex].ConditionType.ToString());

                                        filters += String.Format(ft, fId, fr.FilterGroups[g].GroupId, (fIndex < fr.FilterGroups[g].FilterRules.Count - 1 ? (fr.FilterGroups[g].FilterRules[fIndex].Selector == FilterSelector.AND ? String.Format(filterSelectorTemplate, fId, "", "selected") : String.Format(filterSelectorTemplate, fId, "selected", "")) : ""));
                                    }

                                    html += String.Format(groupTemplate, fr.FilterGroups[g].GroupId, filters, (g < fr.FilterGroups.Count - 1 ? (fr.FilterGroups[g].Selector == FilterSelector.AND ? String.Format(groupSelectorTemplate, fr.FilterGroups[g].GroupId, "", "selected") : String.Format(groupSelectorTemplate, fr.FilterGroups[g].GroupId, "selected", "")) : ""));
                                }

                                html += "</div>";

                                html += "</div><div class=\"clear-block\"></div></div>";
                                html += "<button type=\"submit\" id=\"user-profile-password-save\" class=\"button secondary floatleft\">Salvar</button>    <a href=\"" + ApplicationVirtualPath + "admin/filter/" + (Request.Form["hashtag"] != null ? "#" + Request.Form["hashtag"].ToString() : "") + "\" class=\"button link floatleft\">Cancelar</a></form>";

                                contentRet = new WebJsonResponse("#content-wrapper", (eHtml != "" ? eHtml : html));

                                contentRet.js = GetFilterJS(groupTemplate, groupSelectorTemplate, filterTemplate, filterSelectorTemplate);

                                break;

                            case "use":
                                if (retFilter != null)
                                {
                                    Int32.TryParse(Request.Form["page"], out page);

                                    if (page < 1)
                                    {
                                        page = 1;
                                    }

                                    if (page == 1)
                                    {
                                        html  = "<h3>Utilização deste perfil</h3>";
                                        html += "<table id=\"users-table\" class=\"sorter\"><thead>";
                                        html += "    <tr>";
                                        html += "        <th class=\"w50 mHide {sorter: false}\"><div class=\"select-all\"></div></th>";
                                        html += "        <th class=\"pointer header headerSortDown\" data-column=\"name\">Recurso x Plugin <div class=\"icomoon\"></div></th>";
                                        html += "        <th class=\"pointer tHide mHide header\" data-column=\"login\">Bloqueio <div class=\"icomoon\"></div></th>";
                                        html += "        <th class=\"pointer tHide mHide header\" data-column=\"login\">Vínculo com perfil <div class=\"icomoon\"></div></th>";
                                        html += "        <th class=\"pointer tHide mHide header\" data-column=\"login\">Desconsiderar registros <div class=\"icomoon\"></div></th>";
                                        html += "        <th class=\"pointer w200 tHide mHide header\" data-column=\"last_login\">Ações <div class=\"icomoon\"></div></th>";
                                        html += "    </tr>";
                                        html += "</thead>";

                                        html += "<tbody>";
                                    }

                                    String trTemplate = "    <tr class=\"user\" data-userid=\"{0}\">";
                                    trTemplate += "            <td class=\"select mHide\"><div class=\"checkbox\"></div></td>";
                                    trTemplate += "            <td class=\"ident10\">{2}</td>";
                                    trTemplate += "            <td class=\"tHide mHide\">{3}</td>";
                                    trTemplate += "            <td class=\"tHide mHide\">{4}</td>";
                                    trTemplate += "            <td class=\"tHide mHide\">{5}</td>";
                                    trTemplate += "            <td class=\"tHide mHide\"><button class=\"a-btn\" onclick=\"window.location = '" + ApplicationVirtualPath + "admin/resource_plugin/{1}/';\">Abrir</button></td>";
                                    trTemplate += "    </tr>";

                                    try
                                    {
                                        rData = SafeTrend.Json.JSON.Serialize2(new
                                        {
                                            jsonrpc    = "1.0",
                                            method     = "filter.use",
                                            parameters = new
                                            {
                                                page_size = pageSize,
                                                page      = page,
                                                filterid  = retFilter.result.info.filter_id
                                            },
                                            id = 1
                                        });

                                        jData = "";
                                        using (IAMDatabase database = new IAMDatabase(IAMDatabase.GetWebConnectionString()))
                                            jData = WebPageAPI.ExecuteLocal(database, this, rData);

                                        if (String.IsNullOrWhiteSpace(jData))
                                        {
                                            throw new Exception("");
                                        }

                                        FilterUseResult ret2 = JSON.Deserialize <FilterUseResult>(jData);
                                        if (ret2 == null)
                                        {
                                            eHtml += String.Format(errorTemplate, MessageResource.GetMessage("filter_not_found"));
                                            //ret = new WebJsonResponse("", MessageResource.GetMessage("user_not_found"), 3000, true);
                                            hasNext = false;
                                        }
                                        else if (ret2.error != null)
                                        {
                                            eHtml += String.Format(errorTemplate, ret2.error.data);
                                            //ret = new WebJsonResponse("", ret2.error.data, 3000, true);
                                            hasNext = false;
                                        }
                                        else if (ret2.result == null || (ret2.result.Count == 0 && page == 1))
                                        {
                                            eHtml  += String.Format(errorTemplate, MessageResource.GetMessage("filter_not_found"));
                                            hasNext = false;
                                        }
                                        else
                                        {
                                            foreach (FilterUseData f in ret2.result)
                                            {
                                                html += String.Format(trTemplate, f.filter_id, f.resource_plugin_id, f.resource_plugin_name, f.lock_qty, f.role_qty, f.ignore_qty);
                                            }

                                            if (ret2.result.Count < pageSize)
                                            {
                                                hasNext = false;
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        eHtml += String.Format(errorTemplate, MessageResource.GetMessage("api_error"));
                                        //ret = new WebJsonResponse("", MessageResource.GetMessage("api_error"), 3000, true);
                                    }

                                    if (page == 1)
                                    {
                                        html += "</tbody></table>";

                                        html += "<span class=\"empty-results content-loading user-list-loader hide\"></span>";

                                        contentRet = new WebJsonResponse("#content-wrapper", (eHtml != "" ? eHtml : html));
                                    }
                                    else
                                    {
                                        contentRet = new WebJsonResponse("#content-wrapper tbody", (eHtml != "" ? eHtml : html), true);
                                    }

                                    contentRet.js = "$( document ).unbind('end_of_scroll.loader_usr');";

                                    if (hasNext)
                                    {
                                        contentRet.js += "$( document ).bind( 'end_of_scroll.loader_usr', function() { $( document ).unbind('end_of_scroll.loader_usr'); $('.user-list-loader').removeClass('hide'); iamadmin.getPageContent2( { page: " + ++page + ", search:'' }, function(){ $('.user-list-loader').addClass('hide'); } ); });";
                                    }
                                }
                                break;
                            }
                        }
                    }
                }
                break;



            case "sidebar":
                if (menu1 != null)
                {
                    html += "<div class=\"sep\"><div class=\"section-nav-header\">";
                    html += "    <div class=\"crumbs\">";
                    html += "        <div class=\"subject subject-color\">";
                    html += "            <a href=\"" + menu1.HRef + "\">" + menu1.Name + "</a>";
                    html += "        </div>";
                    if (menu2 != null)
                    {
                        html += "        <div class=\"topic topic-color\">";
                        html += "            <a href=\"" + menu2.HRef + "\">" + menu2.Name + "</a>";
                        html += "        </div>";
                    }
                    html += "    </div>";
                    if (menu3 != null)
                    {
                        html += "    <div class=\"crumbs tutorial-title\">";
                        html += "        <h2 class=\"title tutorial-color\">" + menu3.Name + "</h2>";
                        html += "    </div>";
                    }
                    html += "</div></div>";
                }

                if (!newItem)
                {
                    html += "<div class=\"sep\"><button class=\"a-btn-big a-btn\" type=\"button\" onclick=\"window.location='" + ApplicationVirtualPath + "admin/filter/new/" + (Request.Form["hashtag"] != null ? "#" + Request.Form["hashtag"].ToString() : "") + "'\">Novo filtro</button></div>";
                }

                contentRet = new WebJsonResponse("#main aside", html);
                break;

            case "mobilebar":
                break;


            case "buttonbox":
                break;
            }

            if (contentRet != null)
            {
                if (!String.IsNullOrWhiteSpace((String)Request["cid"]))
                {
                    contentRet.callId = (String)Request["cid"];
                }

                Retorno.Controls.Add(new LiteralControl(contentRet.ToJSON()));
            }
        }
Esempio n. 8
0
        private FilterRule GetFilterByForm(out WebJsonResponse contentRet)
        {
            contentRet = null;

            String name = Request.Form["filter_name"];

            if (String.IsNullOrEmpty(name))
            {
                contentRet = new WebJsonResponse("", MessageResource.GetMessage("invalid_name"), 3000, true);
                return(null);
            }

            String filters = Request.Form["filter_name"];

            if (String.IsNullOrEmpty(name))
            {
                contentRet = new WebJsonResponse("", MessageResource.GetMessage("invalid_name"), 3000, true);
                return(null);
            }

            //Verifica e trata as regras

            if (String.IsNullOrEmpty(Request.Form["filter_id"]))
            {
                contentRet = new WebJsonResponse("", MessageResource.GetMessage("conditions_is_empty"), 3000, true);
                return(null);
            }

            String rData = JSON.Serialize2(new
            {
                jsonrpc    = "1.0",
                method     = "field.list",
                parameters = new
                {
                    page_size = Int32.MaxValue
                },
                id = 1
            });
            //SqlConnection //conn = DB.GetConnection();
            String jData = "";

            try
            {
                using (IAMDatabase database = new IAMDatabase(IAMDatabase.GetWebConnectionString())) jData = WebPageAPI.ExecuteLocal(database, this, rData);
            }
            finally
            {
            }

            List <FieldData> fieldList = new List <FieldData>();
            FieldListResult  flR       = JSON.Deserialize <FieldListResult>(jData);

            if ((flR != null) && (flR.error == null) && (flR.result != null))
            {
                fieldList = flR.result;
            }

            if (fieldList.Count == 0)
            {
                contentRet = new WebJsonResponse("", MessageResource.GetMessage("field_not_found"), 3000, true);
                return(null);
            }

            FilterRule newItem = new FilterRule(name);


            String[] fIds = Request.Form["filter_id"].Split(",".ToCharArray());
            foreach (String fid in fIds)
            {
                if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_group"]))
                {
                    contentRet = new WebJsonResponse("", "Grupo não localizado na condição " + fid, 3000, true);
                    break;
                }

                if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_field_id"]))
                {
                    contentRet = new WebJsonResponse("", "ID do campo não localizado na condição " + fid, 3000, true);
                    break;
                }

                String fGroup = Request.Form["filter_" + fid + "_group"].Split(",".ToCharArray())[0];

                FieldData fieldData = null;
                try
                {
                    Int64 tmp = Int64.Parse(Request.Form["filter_" + fid + "_field_id"].Split(",".ToCharArray())[0]);
                    foreach (FieldData fd in fieldList)
                    {
                        if (fd.field_id == tmp)
                        {
                            fieldData = fd;
                        }
                    }

                    if (fieldData == null)
                    {
                        throw new Exception();
                    }
                }
                catch
                {
                    contentRet = new WebJsonResponse("", "ID do campo inválido na condição " + fid, 3000, true);
                    break;
                }

                FilterSelector filterSelector = FilterSelector.AND;

                if (!String.IsNullOrEmpty(Request.Form["filter_" + fid + "_selector"]))
                {
                    switch (Request.Form["filter_" + fid + "_selector"].Split(",".ToCharArray())[0].ToLower())
                    {
                    case "or":
                        filterSelector = FilterSelector.OR;
                        break;

                    default:
                        filterSelector = FilterSelector.AND;
                        break;
                    }
                }

                FilterConditionType condition = FilterConditionType.Equal;
                switch (fieldData.data_type)
                {
                case "numeric":
                    if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_condition_numeric"]))
                    {
                        contentRet = new WebJsonResponse("", "Condição de comparação não localizada na condição " + fid, 3000, true);
                        break;
                    }

                    if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_text_numeric"]))
                    {
                        contentRet = new WebJsonResponse("", "Valor não localizado na condição " + fid, 3000, true);
                        break;
                    }

                    Int64 nValue = 0;
                    try
                    {
                        nValue = Int64.Parse(Request.Form["filter_" + fid + "_text_numeric"].Split(",".ToCharArray())[0]);
                    }
                    catch
                    {
                        contentRet = new WebJsonResponse("", "Valor inválido na condição " + fid, 3000, true);
                        break;
                    }

                    String c1 = Request.Form["filter_" + fid + "_condition_numeric"].Split(",".ToCharArray())[0].ToLower();
                    foreach (FilterConditionType ft in IAM.Filters.FilterCondition.ConditionByDataType(DataType.Numeric))
                    {
                        if (c1 == ft.ToString().ToLower())
                        {
                            condition = ft;
                        }
                    }

                    newItem.AddCondition(fGroup, FilterSelector.AND, fieldData.field_id, "", DataType.Numeric, nValue.ToString(), condition, filterSelector);

                    break;

                case "datetime":
                    if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_condition_datetime"]))
                    {
                        contentRet = new WebJsonResponse("", "Condição de comparação não localizada na condição " + fid, 3000, true);
                        break;
                    }

                    if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_text_date"]))
                    {
                        contentRet = new WebJsonResponse("", "Valor de data não localizado na condição " + fid, 3000, true);
                        break;
                    }

                    if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_text_time"]))
                    {
                        contentRet = new WebJsonResponse("", "Valor de hora não localizado na condição " + fid, 3000, true);
                        break;
                    }

                    String dtValue = "";
                    try
                    {
                        if (Request.Form["filter_" + fid + "_text_date"].Split(",".ToCharArray())[0].ToLower() == "now")
                        {
                            dtValue = "now";
                        }
                        else
                        {
                            DateTime tmp = DateTime.Parse(Request.Form["filter_" + fid + "_text_date"].Split(",".ToCharArray())[0] + " " + Request.Form["filter_" + fid + "_text_time"].Split(",".ToCharArray())[0]);
                            dtValue = tmp.ToString("o");
                        }
                    }
                    catch
                    {
                        contentRet = new WebJsonResponse("", "Valor de data e hora inválidos na condição " + fid, 3000, true);
                        break;
                    }

                    String c2 = Request.Form["filter_" + fid + "_condition_datetime"].Split(",".ToCharArray())[0].ToLower();
                    foreach (FilterConditionType ft in IAM.Filters.FilterCondition.ConditionByDataType(DataType.DateTime))
                    {
                        if (c2 == ft.ToString().ToLower())
                        {
                            condition = ft;
                        }
                    }

                    newItem.AddCondition(fGroup, FilterSelector.AND, fieldData.field_id, "", DataType.DateTime, dtValue, condition, filterSelector);

                    break;

                default:
                    if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_condition_string"]))
                    {
                        contentRet = new WebJsonResponse("", "Condição de comparação não localizada na condição " + fid, 3000, true);
                        break;
                    }

                    if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_text_string"]))
                    {
                        contentRet = new WebJsonResponse("", "Valor não localizado na condição " + fid, 3000, true);
                        break;
                    }


                    String c3 = Request.Form["filter_" + fid + "_condition_string"].Split(",".ToCharArray())[0].ToLower();
                    foreach (FilterConditionType ft in IAM.Filters.FilterCondition.ConditionByDataType(DataType.Text))
                    {
                        if (c3 == ft.ToString().ToLower())
                        {
                            condition = ft;
                        }
                    }

                    newItem.AddCondition(fGroup, FilterSelector.AND, fieldData.field_id, "", DataType.Text, Request.Form["filter_" + fid + "_text_string"].Split(",".ToCharArray())[0], condition, filterSelector);
                    break;
                }
            }

            //Atualiza os seletores dos grupos caso haja mais de 1 grupo
            if (newItem.FilterGroups.Count > 1)
            {
                foreach (FilterGroup g in newItem.FilterGroups)
                {
                    if (!String.IsNullOrEmpty(Request.Form["group_" + g.GroupId + "_selector"]))
                    {
                        switch (Request.Form["group_" + g.GroupId + "_selector"].Split(",".ToCharArray())[0].ToLower())
                        {
                        case "and":
                            g.Selector = FilterSelector.AND;
                            break;

                        default:
                            g.Selector = FilterSelector.OR;
                            break;
                        }
                    }
                }
            }

            return(newItem);
        }