/// <summary>
 /// gets the filter for the given field name, if not existing creates a new not-active one with the default 'Contains' field operator
 /// </summary>
 /// <param name="fieldName"></param>
 /// <returns></returns>
 public FltAtomExprData GetFilter(string fieldName)
 {
     if (!FieldFilters.ContainsKey(fieldName))
     {
         FieldFilters[fieldName] = new FltAtomExprData()
         {
             Field    = fieldName,
             Operator = FilterFieldOperator.Equal,
             Value    = "",
             IsActive = false
         };
     }
     return(FieldFilters[fieldName]);
 }
        public void SetFieldFilterPropertyType(string fieldName, PropertyType type)
        {
            if (!FieldFilters.ContainsKey(fieldName))
            {
                FieldFilters[fieldName] = new FltAtomExprData()
                {
                    Field    = fieldName,
                    Operator = FilterFieldOperator.Equal,
                    IsActive = false
                };
            }
            FltAtomExprData fa = FieldFilters[fieldName];

            fa.PropertyType = type;
        }
        /// <summary>
        /// sets the field filter, if not exist, creates it, with default 'Contains' operator. If value is empty string or null or white space, deactivates the filter
        /// </summary>
        /// <param name="fieldName"></param>
        /// <param name="value"></param>
        public void SetFieldFilter(string fieldName, string value)
        {
            if (!FieldFilters.ContainsKey(fieldName))
            {
                FieldFilters[fieldName] = new FltAtomExprData()
                {
                    Field    = fieldName,
                    Operator = FilterFieldOperator.Equal,
                };
            }
            FltAtomExprData fa = FieldFilters[fieldName];

            if (value.IsNotEmpty())
            {
                fa.IsActive = true;
                fa.Value    = value;
            }
            else
            {
                fa.IsActive = false;
                fa.Value    = "";
            }
        }
예제 #4
0
        public object GetAll()
        {
            var queryValues = Request.RequestUri.ParseQueryString();

            int page  = Convert.ToInt32(queryValues["page"]);
            int start = Convert.ToInt32(queryValues["start"]);
            int limit = Convert.ToInt32(queryValues["limit"]);
            int id    = Convert.ToInt32(queryValues["id"]);
            int orden = Convert.ToInt32(queryValues["orden"]);

            string strFieldFilters = queryValues["fieldFilters"];

            FieldFilters fieldFilters = new FieldFilters();

            if (!String.IsNullOrEmpty(strFieldFilters))
            {
                fieldFilters = JsonConvert.DeserializeObject <FieldFilters>(strFieldFilters);
            }


            #region Configuramos el orden de la consulta si se obtuvo como parametro
            string strOrder = !string.IsNullOrWhiteSpace(queryValues["sort"]) ? queryValues["sort"] : "";
            strOrder = strOrder.Replace('[', ' ');
            strOrder = strOrder.Replace(']', ' ');

            Sort sort;

            if (!string.IsNullOrWhiteSpace(strOrder))
            {
                sort = JsonConvert.DeserializeObject <Sort>(strOrder);
            }
            else
            {
                sort = new Sort();
            }
            #endregion

            string query = !string.IsNullOrWhiteSpace(queryValues["query"]) ? queryValues["query"] : "";

            int totalRecords = 0;

            try
            {
                if (id == 0)
                {
                    object json;
                    var    lista = repository.GetList(query, fieldFilters, sort, page, start, limit, ref totalRecords);

                    json = new
                    {
                        total   = totalRecords,
                        data    = lista,
                        success = true
                    };

                    return(json);
                }
                else
                {
                    Interested model = repository.Get(id);

                    object json = new
                    {
                        data    = model,
                        success = true
                    };

                    return(json);
                }
            }
            catch (Exception ex)
            {
                LogManager.Write("ERROR:" + Environment.NewLine + "\tMETHOD = " + this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name + Environment.NewLine + "\tMESSAGE = " + ex.Message);

                object json = new
                {
                    message = ex.Message,
                    success = false
                };

                return(json);
            }
        }
        public IList <CustomsClearence> GetList(FieldFilters fieldFilters, string query, Sort sort, int page, int start, int limit, ref int totalRecords)
        {
            limit = limit + start;

            SqlConnection oConn = null;

            try
            {
                oConn = ConnManager.OpenConn();
            }
            catch (Exception ex)
            {
                LogManager.Write("ERROR:" + Environment.NewLine + "\tMETHOD = " + this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name + Environment.NewLine + "\tMESSAGE = " + ex.Message);
                throw;
            };

            string wherepage = (page != 0) ? String.Format("row>{0} and row<={1} ", start, limit) : "1=1";

            string where = "1=1";

            #region Field Filters
            if (fieldFilters.fields != null && fieldFilters.fields.Count > 0)
            {
                foreach (var item in fieldFilters.fields)
                {
                    string value = item.value;
                    string name  = item.name;

                    if (item.type == "string" || item.type == "date")
                    {
                        value = "'" + value + "'";
                    }

                    if (item.type == "date")
                    {
                        name = String.Format("CAST({0} as DATE)", name);
                    }

                    where += String.Format(" AND {0} = {1}", name, value);
                }
            }
            #endregion Field Filters


            if (!string.IsNullOrEmpty(query))
            {
                string fieldName = "CClearenceId";
                where += (!string.IsNullOrEmpty(where) ? " and " : "") +
                         EnumExtension.generateLikeWhere(query, fieldName);
            }

            // Handle Order
            string order     = "CClearenceId";
            string direction = "ASC";

            if (!string.IsNullOrWhiteSpace(sort.property))
            {
                order     = sort.property;
                direction = sort.direction;
            }

            string sql = @"WITH qData 
                            AS
                            ( 
                                SELECT *, ROW_NUMBER() OVER (ORDER BY {2} {3}) as row
                                FROM vCustomsClearence
                                WHERE {0}
                            )
                            SELECT {4} *, t5.TotalRecords
                            FROM qData
                            INNER JOIN ((select TOP 1 row as TotalRecords from qData order by row desc)) as t5 on 1=1
                            WHERE {1}  
                            ORDER BY row ";

            where = (where.StartsWith("1=1 AND ")) ? where.Replace("1=1 AND ", "") : where;
            string topLimit = ((@limit > 0) ? String.Format(" TOP {0} ", @limit) : "");
            sql = String.Format(sql, where, wherepage, order, direction, topLimit);

            SqlDataAdapter da = new SqlDataAdapter(sql, oConn);

            DataSet ds = new DataSet();

            try
            {
                da.Fill(ds);
            }
            catch (Exception ex)
            {
                ConnManager.CloseConn(oConn);
                LogManager.Write("ERROR:" + Environment.NewLine + "\tMETHOD = " + this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name + Environment.NewLine + "\tMESSAGE = " + ex.Message);
                throw;
            }

            ConnManager.CloseConn(oConn);

            DataTable dt;
            dt = ds.Tables[0];

            totalRecords = dt.Rows.Count;

            if (totalRecords > 0)
            {
                IList <CustomsClearence> data = EnumExtension.ToList <CustomsClearence>(dt);
                totalRecords = Convert.ToInt32(dt.Rows[0]["TotalRecords"]);
                return(data);
            }
            else
            {
                return(null);
            }
        }