Esempio n. 1
0
 public static IOrderedQueryable <T> Order <T, TOrder>(
     this IQueryable <T> query,
     ISortParams sortParams,
     Expression <Func <T, TOrder> > ordersBy,
     SortDirs defaultSortDir = SortDirs.Asc)
 {
     return(query.Order(sortParams, new[] { ordersBy }, null, defaultSortDir));
 }
Esempio n. 2
0
        /// <summary>
        /// model内の対象列の現在の順序を取得する。
        /// </summary>
        /// <param name="model"></param>
        /// <param name="columnName">カラム名</param>
        /// <returns></returns>
        public static string GetCurrentSortOrder(this ISortParams model, string columnName)
        {
            if (model?.SortParams == null)
            {
                return("");
            }

            string result = model.SortParams.Where(m => m.ColumnName == columnName).Select(m => m.Order).FirstOrDefault();

            return(result);
        }
Esempio n. 3
0
        public static IOrderedQueryable <T> Order <T, TOrder>(
            this IQueryable <T> query,
            ISortParams sortParams,
            IEnumerable <Expression <Func <T, TOrder> > > ordersBy,
            SortDirs[] sortDirs     = null,
            SortDirs defaultSortDir = SortDirs.Asc)
        {
            //Choose between defaults and selected orders
            string[]   _ordersBy = null;
            SortDirs[] _sortDirs = null;
            if (sortParams != null && sortParams.SortBy != null && sortParams.SortBy.Any())
            {
                _ordersBy = sortParams.SortBy;
                _sortDirs = sortParams.SortDir;
            }
            else
            {
                _ordersBy = ordersBy.Select(o => ExpressionHelper.GetExpressionText(ExpressionHelper.RemoveConvert(o))).ToArray();
                _sortDirs = ordersBy.Select((o, i) => sortDirs != null && sortDirs.Where((x, ix) => i == ix).Any() ? sortDirs.Where((x, ix) => i == ix).FirstOrDefault() : defaultSortDir).ToArray();
            }

            //Apply Orders
            var y = 0;

            foreach (var o in _ordersBy)
            {
                if (y == 0)
                {
                    query = query.OrderByProperty(o, _sortDirs.ElementAt(y) == SortDirs.Asc);
                }
                else
                {
                    query = ((IOrderedQueryable <T>)query).ThenByProperty(o, _sortDirs.ElementAt(y) == SortDirs.Asc);
                }
                y++;
            }

            return((IOrderedQueryable <T>)query);
        }
Esempio n. 4
0
        public IQueryable <Note> Search(ISearchParams searchParams, ISortParams sortParams)
        {
            var query = _context.Notes.AsQueryable();

            if (searchParams.CourseId.HasValue)
            {
                query = query.Where(x => x.CourseId == searchParams.CourseId);
            }
            else if (searchParams.UniversityId.HasValue)
            {
                query = query.Where(x => x.Course.UniversityId == searchParams.UniversityId);
            }
            else if (searchParams.VoivodeshipId.HasValue)
            {
                query = query.Where(x => x.Course.University.VoivodeshipId == searchParams.VoivodeshipId);
            }

            if (!string.IsNullOrWhiteSpace(searchParams.NoteName))
            {
                query = query.Where(x => x.Name.Contains(searchParams.NoteName));
            }

            if (searchParams.Semester.HasValue)
            {
                query = query.Where(x => x.Semester == searchParams.Semester);
            }

            var sortColumn = new Func <Note, object>(x => x.Name);

            if (!string.IsNullOrWhiteSpace(sortParams.SortBy))
            {
                switch (sortParams.SortBy)
                {
                case "price":
                    sortColumn = x => x.Price;
                    break;

                case "name":
                    sortColumn = x => x.Name;
                    break;

                case "created":
                    sortColumn = x => x.CreatedAt;
                    break;

                case "updated":
                    sortColumn = x => x.ModifiedAt;
                    break;
                }
            }

            if (!string.IsNullOrEmpty(sortParams.SortOrder) && sortParams.SortOrder.ToUpper() == "DESC")
            {
                query = query.OrderByDescending(x => sortColumn(x));
            }
            else
            {
                query = query.OrderBy(x => sortColumn(x));
            }

            return(query);
        }
Esempio n. 5
0
        /// <summary>
        /// 検索対象列に含まれるかを確認する。
        /// </summary>
        /// <param name="model"></param>
        /// <param name="sortColumns">検索対象列</param>
        /// <returns></returns>
        public static List <SortParam> CheckSortParams(this ISortParams model, IEnumerable <string> sortColumns)
        {
            var result = CheckSortParams(model?.SortParams, sortColumns);

            return(result);
        }
Esempio n. 6
0
 private void CloseStartupForm(object sender, ISortParams e)
 {
     StartupForm.Hide();
 }
Esempio n. 7
0
 private void RunBackgroundWorker(object sender, ISortParams e)
 {
     BackgroundWorker.RunWorkerAsync();
 }
Esempio n. 8
0
 private void ShowProgressForm(object sender, ISortParams e)
 {
     ProgressForm.Show();
 }
Esempio n. 9
0
 private void UpdateProgressForm(object sender, ISortParams e)
 {
     ProgressForm.progressBar.Maximum = Service.Tasks.Count;
     ProgressForm.progressBar.Update();
     ProgressForm.UpdateReadyTotalField();
 }
Esempio n. 10
0
 private void PrepareBackgroundWork(object sender, ISortParams e)
 {
     Service.PrepareTasks(e);
 }
 public async Task <IList <PasswordSite> > GetAllPasswords(string userId, string search, ISortParams sortParams, IPageParams pageParams)
 => await dataContext.PasswordSites
 .Where(x => x.UserId == userId)
 .Where(string.IsNullOrEmpty(search), x => x.NameSite.Contains(search) || x.UserNameSite.Contains(search))
 .OrderBy(sortParams, "nameSite", x => x.NameSite)
 .ThenBy(sortParams, "userNameSite", x => x.UserNameSite)
 .ThenBy(sortParams, "password", x => x.Password)
 .Skip(pageParams.Skip)
 .Take(pageParams.Take)
 .ToListAsync();
 public static IOrderedQueryable <TSource> ThenBy <TSource, TProp>(this IOrderedQueryable <TSource> query, ISortParams sortParams, string prop, Expression <Func <TSource, TProp> > expression)
 {
     return(query.AsQueryable().OrderBy(sortParams, prop, expression));
 }
        public static IOrderedQueryable <TSource> OrderBy <TSource, TProp>(this IQueryable <TSource> query, ISortParams sortParams, string prop, Expression <Func <TSource, TProp> > expression)
        {
            if (sortParams == null || !sortParams.SortBy.Any(x => string.Compare(x, prop, true) == 0))
            {
                return((IOrderedQueryable <TSource>)query);
            }

            var index = Array.FindIndex(sortParams.SortBy, x => string.Compare(x, prop, true) == 0);
            var dir   = index > sortParams.SortDir.Length ? SortDirs.Asc : sortParams.SortDir[index];

            if (dir == SortDirs.Asc)
            {
                return(query.OrderBy(expression));
            }
            else
            {
                return(query.OrderByDescending(expression));
            }
        }