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); } } }
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); }
/// <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)); }
/// <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); }
/// <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); }
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 }
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())); } }
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); }