public IEnumerable <PrintingEdition> FilterPrintEdidtionsByPriceAnfType(PrintingEditionType printingEditionType, int minPrice, int maxPrice)
        {
            var type = (int)printingEditionType;

            using (IDbConnection db = Connection)
            {
                return(db.Query <PrintingEdition>($"SELECT * FROM PrintingEditions WHERE Type = {type} AND Price BETWEEN {minPrice} AND  {maxPrice}"));
            }
        }
        public IEnumerable <PrintingEdition> FilterByType(PrintingEditionType printingEditionType)
        {
            var type = (int)printingEditionType;

            using (IDbConnection db = Connection)
            {
                return(db.Query <PrintingEdition>($"SELECT * FROM PrintingEditions WHERE Type = {type}"));
            }
        }
Beispiel #3
0
        private string MakeFilterString(string column, string filter, PrintingEditionType type, PrintingEditionStatus status)
        {
            string columnName = GetColumn(column);
            string result     = null;

            if (filter != "none")
            {
                result = $"WHERE {columnName} LIKE '%{filter}%'";
            }

            if (type != PrintingEditionType.None)
            {
                if (!String.IsNullOrEmpty(result))
                {
                    result = $"{result} AND PrintingEditions.Type = '{(int)type}' ";
                }

                if (String.IsNullOrEmpty(result))
                {
                    result = $"WHERE PrintingEditions.Type = '{(int)type}' ";
                }
            }

            if (status != PrintingEditionStatus.None && status != PrintingEditionStatus.NotAvailable)
            {
                if (!String.IsNullOrEmpty(result))
                {
                    result = $"{result} AND PrintingEditions.Status = '{(int)status}' ";
                }

                if (String.IsNullOrEmpty(result))
                {
                    result = $"WHERE PrintingEditions.Status = '{(int)status}' ";
                }
            }

            if (status == PrintingEditionStatus.NotAvailable)
            {
                if (!String.IsNullOrEmpty(result))
                {
                    result = $"{result} AND PrintingEditions.Status <> '{(int)status}' ";
                }

                if (String.IsNullOrEmpty(result))
                {
                    result = $"WHERE PrintingEditions.Status <> '{(int)status}' ";
                }
            }

            return(result);
        }
 public IEnumerable <PrintingEdition> FilterPrintEdidtionsByPriceAnfType(PrintingEditionType printingEditionType, int minPrice, int maxPrice)
 {
     return(Context.PrintingEditions
            .Where(print => print.Type == printingEditionType && (print.Price >= minPrice && print.Price <= maxPrice)));
 }
 public IEnumerable <PrintingEdition> FilterByType(PrintingEditionType typeName)
 {
     return(Context.PrintingEditions.Where(print => print.Type == typeName));
 }
        private Func <AuthorInPrintingEditions, bool> MakefilterExpression(string sortedElement, string filter, PrintingEditionType type, PrintingEditionStatus status)
        {
            Expression          body      = null;
            ParameterExpression parameter = Expression.Parameter(typeof(AuthorInPrintingEditions));

            if (filter != "none")
            {
                Expression property  = GetProperty(sortedElement, parameter);
                MethodInfo method    = typeof(string).GetMethod("Contains", new[] { typeof(string) });
                var        someValue = Expression.Constant(filter, typeof(string));
                body = Expression.Call(property, method, someValue);
            }

            if (type != PrintingEditionType.None)
            {
                Expression       property  = GetProperty(_printTypeColumn, parameter);
                var              someValue = Expression.Constant(type, typeof(PrintingEditionType));
                BinaryExpression containsMethodExpForType = Expression.Equal(property, someValue);

                if (body != null)
                {
                    body = Expression.And(body, containsMethodExpForType);
                }

                if (body == null)
                {
                    body = containsMethodExpForType;
                }
            }

            if (status != PrintingEditionStatus.None && status != PrintingEditionStatus.NotAvailable)
            {
                Expression       property  = GetProperty(_printStatusColumn, parameter);
                var              someValue = Expression.Constant(status, typeof(PrintingEditionStatus));
                BinaryExpression containsMethodExpForStatus = Expression.Equal(property, someValue);

                if (body != null)
                {
                    body = Expression.And(body, containsMethodExpForStatus);
                }

                if (body == null)
                {
                    body = containsMethodExpForStatus;
                }
            }

            if (status == PrintingEditionStatus.NotAvailable)
            {
                Expression       property  = GetProperty(_printStatusColumn, parameter);
                var              someValue = Expression.Constant(status, typeof(PrintingEditionStatus));
                BinaryExpression containsMethodExpForStatus = Expression.NotEqual(property, someValue);

                if (body != null)
                {
                    body = Expression.And(body, containsMethodExpForStatus);
                }

                if (body == null)
                {
                    body = containsMethodExpForStatus;
                }
            }

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

            Func <AuthorInPrintingEditions, bool> filterExpression = Expression.Lambda <Func <AuthorInPrintingEditions, bool> >(body, parameter).Compile();

            return(filterExpression);
        }
        public IEnumerable <AuthorInPrintingEditions> SortAndFilterData(SortOrder sortOrder, string sortedElement, int firstElement, int lastElement,
                                                                        string filter, PrintingEditionType type, PrintingEditionStatus status)
        {
            IQueryable <AuthorInPrintingEditions> result = Context.AuthorInPrintingEditions
                                                           .Include(authInPe => authInPe.Author)
                                                           .Include(authInPe => authInPe.PrintingEdition)
                                                           .ThenInclude(printEd => printEd.Currency);

            ParameterExpression parameter = Expression.Parameter(typeof(AuthorInPrintingEditions));
            Expression          property  = GetProperty(sortedElement, parameter);
            Func <AuthorInPrintingEditions, dynamic> sortBy = null;

            IEnumerable <AuthorInPrintingEditions> authorInPrintingEditions = new List <AuthorInPrintingEditions>();

            if (property != null)
            {
                sortBy = Expression.Lambda <Func <AuthorInPrintingEditions, dynamic> >(Expression.TypeAs(property, typeof(object)), parameter).Compile();
            }

            var filterExpression = MakefilterExpression(sortedElement, filter, type, status);

            if (filterExpression != null && sortOrder == SortOrder.Ascending)
            {
                authorInPrintingEditions = result.AsEnumerable().Where(filterExpression).OrderBy(sortBy).AsEnumerable()
                                           .Skip(firstElement).Take(lastElement - firstElement);
            }

            if (filterExpression != null && sortOrder == SortOrder.Descending)
            {
                authorInPrintingEditions = result.AsEnumerable().Where(filterExpression).OrderByDescending(sortBy)
                                           .Skip(firstElement).Take(lastElement - firstElement);
            }

            if (filterExpression == null && property != null)
            {
                authorInPrintingEditions = (sortOrder == SortOrder.Ascending ? result.OrderBy(sortBy) : result.OrderByDescending(sortBy)).AsQueryable()
                                           .Skip(firstElement).Take(lastElement - firstElement);
                result.AsEnumerable();
            }

            if (property == null)
            {
                authorInPrintingEditions = result.AsEnumerable().Skip(firstElement).Take(lastElement - firstElement);
            }

            return(authorInPrintingEditions);
        }
        public IEnumerable <AuthorsInPrintingEditionsViewModel> GetAuthorsInPrintingEditionsPage(SortOrder order, int firstElement, int lastElement,
                                                                                                 string currentCurrencyName, string filter, string column, PrintingEditionStatus status, PrintingEditionType type)
        {
            IEnumerable <AuthorsInPrintingEditionsViewModel> modelsList =
                _printStoreService.SortAndFilterData(order, currentCurrencyName, column, firstElement, lastElement, filter, type, status);

            return(modelsList);
        }
Beispiel #9
0
        public IEnumerable <AuthorsInPrintingEditionsViewModel> SortAndFilterData(SortOrder sortOrder, string currentCurrencyName,
                                                                                  string column, int firstElement, int lastElement, string filter, PrintingEditionType type, PrintingEditionStatus status)
        {
            IEnumerable <AuthorInPrintingEditions> authorsInPriningEditions = _authorInPrintingEditionRepository
                                                                              .SortAndFilterData(sortOrder, column, firstElement, lastElement, filter, type, status);
            IEnumerable <AuthorsInPrintingEditionsViewModel> modelsList = AuthorsInPrintForming(authorsInPriningEditions, currentCurrencyName);

            return(modelsList);
        }
Beispiel #10
0
        public IEnumerable <AuthorInPrintingEditions> SortAndFilterData(SortOrder sortOrder, string column, int firstElement, int lastElement,
                                                                        string filter, PrintingEditionType type, PrintingEditionStatus status)
        {
            var    rows = lastElement - firstElement;
            string sort = "";

            if (sortOrder == SortOrder.Ascending)
            {
                sort = "ASC";
            }
            if (sortOrder == SortOrder.Descending)
            {
                sort = "DESC";
            }

            string columnName = GetColumn(column);

            string filterString = MakeFilterString(column, filter, type, status);

            var query = $"SELECT * FROM AuthorInPrintingEditions " +
                        $"JOIN PrintingEditions ON PrintingEditions.Id = AuthorInPrintingEditions.PrintingEditionId " +
                        $"JOIN Authors ON Authors.Id = AuthorInPrintingEditions.AuthorId " +
                        $"JOIN Currencies on Currencies.Id = PrintingEditions.CurrencyId " +
                        $"{filterString}" +
                        $"ORDER BY {columnName} {sort} " +
                        $"OFFSET {firstElement} ROWS FETCH NEXT {rows} ROWS ONLY";

            return(GetResultList(query));
        }