Exemplo n.º 1
0
        /// <summary>
        /// Get all itens filtering direct in DB. Up: More optimized because filters DB. Down: less flexible, don't support dynamic filters.
        /// </summary>
        /// <param name="generalBodyGet"></param>
        /// <param name="error"></param>
        /// <returns></returns>
        public List <GetTerritoriesView> GetAllWithDBFilter(GeneralBodyGet generalBodyGet, out RestExceptionError error)
        {
            try
            {
                if ((generalBodyGet == null) || (generalBodyGet.Filters == null) || (generalBodyGet.Filters.Count == 0))
                {
                    error = new RestExceptionError();
                    error.ExceptionMessage = "";
                    error.InternalMessage  = "Url does not contains filter section";
                }

                error = null;
                TerritoriesBsn bsn = new TerritoriesBsn(restConfig);
                List <DataFilterExpressionDB> dbFilter = HelperRESTFilterToDB.FilterRestFilterToDBExpression(generalBodyGet.Filters);
                List <TerritoriesInfo>        dbItems  = bsn.GetAll(dbFilter);
                List <GetTerritoriesView>     result   = new List <GetTerritoriesView>();
                foreach (TerritoriesInfo item in dbItems)
                {
                    GetTerritoriesView view = new GetTerritoriesView();
                    Cloner.CopyAllTo(typeof(TerritoriesInfo), item, typeof(GetTerritoriesView), view);
                    result.Add(view);
                }

                return(result);
            }
            catch (Exception ex)
            {
                error = new RestExceptionError();
                error.ExceptionMessage = ex.Message;
            }
            return(null);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Get a list and apply linq send from request. Request must send one request using "Dynamic" filter type.
        /// Examples:
        /// "Where(GetAllTerritoriesView => (GetAllTerritoriesView.TerritoriesID = 4))"
        /// </summary>
        /// <param name="list"></param>
        /// <param name="GeneralBodyGet"></param>
        /// <param name="error"></param>
        /// <returns></returns>
        public List <GetTerritoriesView> DynamicLinqQuery(List <GetTerritoriesView> list, string linqQuery, out RestExceptionError error)
        {
            try
            {
                error = null;

                IQueryable <GetTerritoriesView> queryableData = list.AsQueryable <GetTerritoriesView>();
                var externals = new Dictionary <string, object>();
                externals.Add("list", queryableData);
                string query      = "list." + linqQuery;//Example: "list.Where(GetTerritoriesView => (GetTerritoriesView.TerritoriesID = 4))";
                var    expression = System.Linq.Dynamic.DynamicExpression.Parse(typeof(IQueryable <GetTerritoriesView>), query, new[] { externals });
                var    result     = queryableData.Provider.CreateQuery <GetTerritoriesView>(expression);
                return(result.ToList());
            }
            catch (Exception ex)
            {
                error = new RestExceptionError();
                error.ExceptionMessage = ex.Message;
                error.InternalMessage  = "Error ocurred during 'DynamicLinqQuery' ";
            }
            return(null);
        }
Exemplo n.º 3
0
        public List <GetTerritoriesView> OrderByAndTrim(List <GetTerritoriesView> list, GeneralBodyGet GeneralBodyGet, out RestExceptionError error)
        {
            try
            {
                error = null;
                if ((list == null) || (GeneralBodyGet == null))
                {
                    return(list);
                }
                IQueryable <GetTerritoriesView> queryableData = list.AsQueryable <GetTerritoriesView>();

                List <GetTerritoriesView> filteredList = null;
                //1)Ordering
                if (GeneralBodyGet.OrderBy != null)
                {
                    filteredList = queryableData.OrderBy(GeneralBodyGet.OrderBy).ToList();
                }
                else
                {
                    filteredList = queryableData.ToList();
                }

                //2)Skipping
                if (GeneralBodyGet.ItensToSkip > 0)
                {
                    filteredList = filteredList.Skip(GeneralBodyGet.ItensToSkip).ToList();
                }

                //3)Trimming
                if (GeneralBodyGet.NumberOfItens > 0)
                {
                    filteredList = filteredList.Take(GeneralBodyGet.NumberOfItens).ToList();
                }

                return(filteredList);
            }
            catch (Exception ex)
            {
                error = new RestExceptionError();
                error.ExceptionMessage = ex.Message;
                error.InternalMessage  = "Error ocurred during 'OrderByAndTrim' ";
            }
            return(null);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Filters a raw list based on GeneralBodyGet.Filters
        /// </summary>
        public List <GetTerritoriesView> Filter(List <GetTerritoriesView> rawList, GeneralBodyGet GeneralBodyGet, out RestExceptionError error)
        {
            try
            {
                error = null;
                if ((GeneralBodyGet == null) || (GeneralBodyGet.Filters == null) || (GeneralBodyGet.Filters.Count == 0))
                {
                    return(rawList);
                }

                //Search request data if dynamic filtering is send.
                DataFilterExpressionREST  linqQuery = GeneralBodyGet.Filters.Where(x => x.FilterType == DataFilterExpressionREST._FilterType.Dynamic).FirstOrDefault();
                List <GetTerritoriesView> result    = null;
                if (linqQuery != null)
                {
                    result = DynamicLinqQuery(rawList, linqQuery.Filter, out error);
                }
                else
                {
                    var filteredList = base.FilterRawList(rawList, GeneralBodyGet, out error);
                    result = filteredList.Cast <GetTerritoriesView>().ToList();
                }

                if (error != null)
                {
                    return(null);
                }
                return(result);
            }
            catch (Exception ex)
            {
                error = new RestExceptionError();
                error.ExceptionMessage = ex.Message;
                error.InternalMessage  = "Error ocurred during 'Filter' ";
            }
            return(null);
        }