예제 #1
0
 public JsonResult Filter(FilterModel filter)
 {
     ListProductModel result = service.GetProducts(filter);
     if (result != null)
     {
         result.page = filter.page;
     }
     return Json(result, JsonRequestBehavior.AllowGet);
 }
예제 #2
0
 public ActionResult CompetitionItem(LanguageType languagetype, FilterModel<BrokerType> filter, StateFilter state = StateFilter.All)
 {
     var dateTime = DateTime.UtcNow.Date;
     if (filter.date == DateTime.MinValue) {
         filter.FixDates(dateTime, dateTime);
     }
     filter.FixDates(new DateTime(2014, 01, 01), dateTime.AddDays(14));
     return View(new StaticPageBaseModel<WithFilterModel<BrokerType, List<RawCompetitionTransport>>>(this) {
         ControllerModel = new WithFilterModel<BrokerType, List<RawCompetitionTransport>>(new FilterModel<BrokerType>("CompetitionItem", "SystemState", CurrentLanguage, FilterSettings.ToDate, filter, new RouteValueDictionary(new { languagetype, state }))) {
             Data = _provider.GetCompetitionItems(filter.id, languagetype, filter.date, state)
         }
     });
 }
예제 #3
0
 public ActionResult Index(FilterModel<int> filter)
 {
     var dateTime = DateTime.UtcNow.Date;
     if (filter.date == DateTime.MinValue) {
         filter.FixDates(dateTime, dateTime);
     }
     filter.FixDates(new DateTime(2014, 01, 01), dateTime.AddDays(14));
     var fixUserTimeToSystem = FixUserTimeToSystem(filter.date);
     return View(new StaticPageBaseModel<WithFilterModel<List<SystemStateSummaryStatus>>>(this) {
         ControllerModel = new WithFilterModel<List<SystemStateSummaryStatus>>(new FilterModel<int>("Index", "SystemState", CurrentLanguage, _filterSettings, filter)) {
             Data = filter.all ? _provider.SummarySystemState() : _provider.SummarySystemState(fixUserTimeToSystem, fixUserTimeToSystem.AddDays(1))
         }
     });
 }
예제 #4
0
 public ActionResult Game(FilterModel<int> filter)
 {
     LogAction(ProjectBActions.PageLiveCompetitionItemIDConcrete, filter.id);
     var itemData = FrontCompetitionProvider.GetCompetitionItemLiveBetForCompetition(CurrentLanguage, null, null, filter.id);
     var model = new StaticPageBaseModel<CompetitionAdvancedTransport>(this) {
         ControllerModel = itemData
     };
     return new ActionResultCached(
         itemData?.CompetitionTransport != null,
         model.GetLastModifiedFunc(() => TryGetNotModifiedResultForGame(itemData, model.StaticPageTransport.LastModifyDateUtc)),
         () => {
             FixToUserTime(itemData.CompetitionTransport);
             return View(model);
         });
 }
예제 #5
0
        public ActionResult All(FilterModel model)
        {
            var universitiesList =
                this.Cache.Get(
                    "Universities",
                    () => this.universities.AllWithCountry().ToList(),
                    30 * 60);

            var filteredUnis = this.universities
                .FilterUniversities(universitiesList.AsQueryable(), model)
                .To<UniversitySimpleViewModel>();

            var universitiesCount = filteredUnis.Count();

            var page = 1;
            var pageSize = 10;

            if (model != null)
            {
                page = model.Page < 1 ? 1 : model.Page;
                pageSize = model.PageSize < 1 ? 1 : model.PageSize;
            }

            var resultUniversitiesList =
                filteredUnis
                    .Skip((page - 1) * pageSize)
                    .Take(pageSize)
                    .ToList();

            var query = string.Empty;

            if (model != null)
            {
                query = "&Filter=" + model.Filter + "&OrderBy=" + model.OrderBy + "&Order=" + model.Order;
            }

            var viewDataModel = new UniversitiesListViewModel()
            {
                Universities = resultUniversitiesList,
                Filter = model,
                UniversitiesCount = universitiesCount,
                Query = query,
                Page = model.Page
            };

            return this.View(viewDataModel);
        }
예제 #6
0
        public ActionResult All(FilterModel model)
        {
            var studentId = this.User.Identity.GetUserId();

            var filteredUnis = this.universities
                .FilterUniversities(this.universities.AllForStudent(studentId), model)
                .To<UniversitySimpleViewModel>();

            var universitiesCount = filteredUnis.Count();

            var page = 1;
            var pageSize = 10;

            if (model != null)
            {
                page = model.Page < 1 ? 1 : model.Page;
                pageSize = model.PageSize < 1 ? 1 : model.PageSize;
            }

            var resultUniversitiesList =
                filteredUnis
                    .Skip((page - 1) * pageSize)
                    .Take(pageSize)
                    .ToList();

            var query = string.Empty;

            if (model != null)
            {
                query = "&Filter=" + model.Filter + "&OrderBy=" + model.OrderBy + "&Order=" + model.Order;
            }

            var viewDataModel = new UniversitiesListViewModel()
            {
                Universities = resultUniversitiesList,
                Filter = model,
                UniversitiesCount = universitiesCount,
                Query = query,
                Page = model.Page
            };

            return this.View(viewDataModel);
        }
예제 #7
0
 public ActionResult EntityLinker(BrokerEntityType type, FilterModel<int> filter, int[] ids = null)
 {
     switch (Request.RequestType.ToUpper()) {
         case "GET":
             return PartialView(new Tuple<RawEntityWithLink>(_provider.GetEntity(filter.id, type)));
         case "PUT":
             _provider.EntityLinkerPut(filter.id, type);
             TaskRunner.Instance.AddAction(() => _provider.ApplyLinker(filter.id, type, false));
             break;
         case "POST":
             _provider.EntityLinkerPost(filter.id, type, ids);
             TaskRunner.Instance.AddAction(() => _provider.ApplyLinker(filter.id, type, false));
             break;
         case "DELETE":
             _provider.EntityLinkerDelete(filter.id, type);
             break;
     }
     return PartialView("_RawEntityWriter", new Tuple<RawEntityWithLink, string>(_provider.GetEntity(filter.id, type), string.Empty));
 }
예제 #8
0
 public ActionResult Item(FilterModel<int> filter)
 {
     LogAction(ProjectBActions.PageLiveCompetitionUniqueIDConcrete, filter.id);
     var itemData = FrontCompetitionProvider.GetCompetitionItemsLive(CurrentLanguage, true, null, null, null, new[] { filter.id });
     var staticPageBaseModel = new StaticPageBaseModel<CompetitionRegularModel<CompetitionItemBetTransport>>(this) {
         ControllerModel = new CompetitionRegularModel<CompetitionItemBetTransport>(new PageDisplaySettings {
                 DisplayColumn = DisplayColumnType.TraditionalOdds | DisplayColumnType.Result
             }) {
             Competitions = itemData
         }
     };
     return new ActionResultCached(
         itemData != null && itemData.Count > 0,
         staticPageBaseModel.GetLastModifiedFunc(() => TryGetNotModifiedResultForItems(itemData, staticPageBaseModel.StaticPageTransport.LastModifyDateUtc)),
         () => {
             itemData.Each(FixToUserTime);
             return View(staticPageBaseModel);
         });
 }
예제 #9
0
 public ActionResult Index(FilterModel<SportType> filter)
 {
     LogAction(ProjectBActions.PageLiveIndexConcrete, (short)filter.id);
     var itemData = FrontCompetitionProvider.GetCompetitionItemsLive(CurrentLanguage, filter.all, null, null, filter.id);
     var staticPageBaseModel = new StaticPageBaseModel<CompetitionRegularModel<CompetitionItemBetTransport>>(this) {
             ControllerModel = new CompetitionRegularModel<CompetitionItemBetTransport>(new PageDisplaySettings {
                 DisplayColumn = DisplayColumnType.TraditionalOdds | DisplayColumnType.Result
             }) {
             Competitions = itemData,
             Filter = new FilterModel<SportType>("Index", "CompetitionLive", CurrentLanguage, FilterSettings.BtnAll | FilterSettings.BtnWithOdds, filter)
         }
     };
     return new ActionResultCached(
         true,
         staticPageBaseModel.GetLastModifiedFunc(() => TryGetNotModifiedResultForItems(itemData, staticPageBaseModel.StaticPageTransport.LastModifyDateUtc)),
         () => {
             itemData.Each(FixToUserTime);
             return View(staticPageBaseModel);
         });
 }
예제 #10
0
 public ActionResult Index(FilterModel<SportType> filter)
 {
     LogAction(ProjectBActions.PageHistoryIndexConcrete, (short)filter.id);
     filter.FixDates(_minDateTime, MaxDateTime);
     var fromDate = FixUserTimeToSystem(filter.date);
     var itemData = FrontCompetitionProvider.GetCompetitionItemsHistory(CurrentLanguage, null, new[] {BrokerType.Default}, fromDate, fromDate.AddDays(1), filter.id);
     var model = new StaticPageBaseModel<CompetitionRegularModel<CompetitionItemBetTransport>>(this) {
         ControllerModel = new CompetitionRegularModel<CompetitionItemBetTransport>(new PageDisplaySettings {
                 DisplayColumn = DisplayColumnType.TraditionalOdds | DisplayColumnType.Result
             }) {
             Competitions = itemData,
             Filter = new FilterModel<SportType>("Index", "History" , CurrentLanguage, FilterSettings.ToDate, filter)
         }
     };
     return new ActionResultCached(
         true,
         model.GetLastModifiedFunc(() => TryGetNotModifiedResultForItems(itemData, model.StaticPageTransport.LastModifyDateUtc)),
         () => {
             itemData.Each(FixToUserTime);
             return View(model);
         });
 }
예제 #11
0
 public ActionResult Item(FilterModel<int> filter)
 {
     LogAction(ProjectBActions.PageHistoryCompetitionUniqueIDConcrete, filter.id);
     filter.FixDates(_minDateTime, MaxDateTime);
     var itemData = FrontCompetitionProvider
         .GetCompetitionItemsHistory(CurrentLanguage, null, new[] { BrokerType.Default }, filter.from, filter.date, null, new [] { filter.id });
     var staticPageBaseModel = new StaticPageBaseModel<CompetitionRegularModel<CompetitionItemBetTransport>>(this) {
             ControllerModel = new CompetitionRegularModel<CompetitionItemBetTransport>(new PageDisplaySettings {
                 DisplayColumn = DisplayColumnType.TraditionalOdds | DisplayColumnType.Result
             }) {
             Competitions = itemData,
                 Filter = new FilterModel<int>("Item", "History", CurrentLanguage, FilterSettings.FromDate | FilterSettings.ToDate, filter)
             }
     };
     return new ActionResultCached(
         itemData.Any(),
         staticPageBaseModel.GetLastModifiedFunc(() => TryGetNotModifiedResultForItems(itemData, staticPageBaseModel.StaticPageTransport.LastModifyDateUtc)),
         () => {
             itemData.Each(FixToUserTime);
             return View(staticPageBaseModel);
         });
 }
예제 #12
0
 public ActionResult Index(FilterModel<SportType> filter)
 {
     LogAction(ProjectBActions.PageCompetitionIndexConcrete, (short)filter.id);
     var dateDef = DateTime.UtcNow.Date;
     var maxDateDef = dateDef.AddDays(14);
     filter.FixDates(dateDef, maxDateDef);
     var itemData = FrontCompetitionProvider.GetCompetitionItemsFuturedNew(CurrentLanguage, filter.all ? null : (DateTime?)FixUserTimeToSystem(filter.from), null, null, filter.id);
     var model = new StaticPageBaseModel<CompetitionRegularModel<CompetitionItemBetTransport>>(this) {
         ControllerModel = new CompetitionRegularModel<CompetitionItemBetTransport>(new PageDisplaySettings {
             LimitToDisplayInGroup = 4,
             DisplayColumn = DisplayColumnType.TraditionalOdds
         }) {
             Competitions = itemData,
             Filter = new FilterModel<SportType>("Index", "Competition", CurrentLanguage, FilterSettings.BtnAll | FilterSettings.FromDate, filter)
         }
     };
     return new ActionResultCached(
         true,
         model.GetLastModifiedFunc(() => TryGetNotModifiedResultForItems(itemData, model.StaticPageTransport.LastModifyDateUtc)),
         () => {
             itemData.Each(FixToUserTime);
             return View(model);
         });
 }
예제 #13
0
 public async Task <List <T> > FindFromSubordinateAsync(FilterModel filterModel)
 {
     return(await FindFromSubordinateAsync(filterModel.GetSearchExpression <T>()));
 }
예제 #14
0
 public List <T> FindFromSubordinate(FilterModel filterModel)
 {
     return(FindFromSubordinate(filterModel.GetSearchExpression <T>()));
 }
예제 #15
0
        public ActionResult Index(FilterModel filterModel, string categoryName)
        {
            List <PageRanking> pageRankings = new List <PageRanking>
            {
                new PageRanking {
                    Id = 1, Name = "Alfabetik (A-Z)"
                },
                new PageRanking {
                    Id = 2, Name = "Alfabetik (Z-A)"
                },
                new PageRanking {
                    Id = 3, Name = "Azalan Fiyat"
                },
                new PageRanking {
                    Id = 4, Name = "Artan Fiyat"
                },
            };

            ViewBag.PageRanking = new SelectList(pageRankings, "Id", "Name");
            int page      = filterModel.Page ?? 1;
            int pageCount = filterModel.PageCount ?? 30;

            if (filterModel.Search != null && filterModel.searchCategory != 0)
            {
                filterModel.Products = db.Products.Where(x => x.Name.Contains(filterModel.Search) && x.CategoryId == filterModel.searchCategory).OrderBy(x => x.Name).ToPagedList(page, pageCount);
            }
            else if (filterModel.Search != null)
            {
                filterModel.Products = db.Products.Where(x => x.Name.Contains(filterModel.Search)).OrderBy(x => x.Name).ToPagedList(page, pageCount);
            }
            else if (filterModel.searchCategory != 0)
            {
                filterModel.Products = db.Products.Where(x => x.CategoryId == filterModel.searchCategory).OrderBy(x => x.Name).ToPagedList(page, pageCount);
            }
            else if (filterModel.Category != null)
            {
                filterModel.Products = db.Products.Include(x => x.Category).Where(x => x.CategoryId == filterModel.Category || x.Category.ParentCategoryId == filterModel.Category).OrderBy(x => x.Name).ToPagedList(page, pageCount);
            }
            else
            {
                switch (filterModel.PageRanking)
                {
                case 1:

                    filterModel.Products = db.Products.OrderBy(x => x.Name).ToPagedList(page, pageCount);
                    break;

                case 2:
                    filterModel.Products = db.Products.OrderByDescending(x => x.Name).ToPagedList(page, pageCount);
                    break;

                case 3:
                    filterModel.Products = db.Products.OrderBy(x => x.Price).ToPagedList(page, pageCount);
                    break;

                case 4:
                    filterModel.Products = db.Products.OrderByDescending(x => x.Price).ToPagedList(page, pageCount);
                    break;

                default:
                    //todo:performans düzenlemesi için AsNoTracking eklendi kontrol edilecek
                    filterModel.Products = db.Products.OrderByDescending(x => x.Name).AsNoTracking().ToPagedList(page, pageCount);
                    break;
                }
            }
            if (Request.IsAjaxRequest())
            {
                return(PartialView("_Products", filterModel));
            }
            else
            {
                return(View(filterModel));
            }
        }
예제 #16
0
 public async Task <List <WildCardModel> > GetWildCards(FilterModel filterModel)
 {
     return(await _context.Database.SqlQuery <WildCardModel>("USPGetAllWildCards @compId", new SqlParameter("@compId", ToDBNull(filterModel.CompId))).ToListAsync());
 }
        public async Task <IActionResult> SearchAsync(int page, bool excludeEmptyModules, bool exactMatch, FilterModel filterModel)
        {
            filterModel = filterModel ?? throw new ArgumentNullException(nameof(filterModel));
            this.logger.LogInformation("Learning modules search- HTTP Post Call initiated.");
            this.RecordEvent("Learning module search- HTTP Post call initiated.", RequestType.Initiated);

            try
            {
                if (page < 0)
                {
                    this.logger.LogError("Learning module search- HTTP Post call Failed, parameter pageCount is less than zero.");
                    this.RecordEvent("Learning module search- HTTP Post call Failed.", RequestType.Failed);
                    return(this.BadRequest($"Parameter {nameof(page)} cannot be less than zero."));
                }

                var skipRecords = page * Constants.LazyLoadPerPagePostCount;

                var learningModules = await this.unitOfWork.LearningModuleRepository.GetLearningModulesAsync(filterModel, Constants.LazyLoadPerPagePostCount, skipRecords, exactMatch, excludeEmptyModules);

                var moduleWithVotesAndResources = this.unitOfWork.LearningModuleRepository.GetModulesWithVotesAndResources(learningModules);

                // Get userId and user display name.
                var createdByObjectIds = learningModules.Select(module => module.CreatedBy).Distinct().Select(userObjectId => userObjectId.ToString());
                Dictionary <Guid, string> idToNameMap = new Dictionary <Guid, string>();
                if (createdByObjectIds.Any())
                {
                    idToNameMap = await this.usersService.GetUserDisplayNamesAsync(this.UserObjectId.ToString(), this.Request.Headers["Authorization"].ToString(), createdByObjectIds);
                }

                var learningModuleDetails = this.learningModuleMapper.MapToViewModels(
                    moduleWithVotesAndResources,
                    this.UserObjectId,
                    idToNameMap);

                this.logger.LogInformation("Learning module search- HTTP Post Call succeeded.");
                this.RecordEvent("Learning module search- HTTP Post call succeeded.", RequestType.Succeeded);

                return(this.Ok(learningModuleDetails));
            }
            catch (Exception ex)
            {
                this.RecordEvent("Learning module search- HTTP Post call failed.", RequestType.Failed);
                this.logger.LogError(ex, "Learning module search- HTTP Post call failed.");
                throw;
            }
        }
예제 #18
0
 public int Count(FilterModel filterModel, string categoryCode, string subCategoryCode, string productTypeCode)
 {
     return(_productRepository.Count(filterModel, categoryCode, subCategoryCode, productTypeCode));
 }
예제 #19
0
        public async Task ForeachFiltersAsync(Func <FilterModel, Task> todo, Height fromHeight, CancellationToken cancel = default)
        {
            using (await MatureIndexFileManager.Mutex.LockAsync(cancel).ConfigureAwait(false))
                using (await IndexLock.LockAsync(cancel).ConfigureAwait(false))
                {
                    var firstImmatureHeight = ImmatureFilters.FirstOrDefault()?.Header?.Height;
                    if (!firstImmatureHeight.HasValue || firstImmatureHeight.Value > fromHeight)
                    {
                        if (MatureIndexFileManager.Exists())
                        {
                            uint height = StartingHeight;
                            using var sr = MatureIndexFileManager.OpenText();
                            if (!sr.EndOfStream)
                            {
                                var    lineTask = sr.ReadLineAsync();
                                Task   tTask    = Task.CompletedTask;
                                string line     = null;
                                while (lineTask != null)
                                {
                                    if (firstImmatureHeight == height)
                                    {
                                        break;                                 // Let's use our the immature filters from here on. The content is the same, just someone else modified the file.
                                    }

                                    if (line is null)
                                    {
                                        line = await lineTask.ConfigureAwait(false);
                                    }

                                    lineTask = sr.EndOfStream ? null : sr.ReadLineAsync();

                                    if (height < fromHeight.Value)
                                    {
                                        height++;
                                        line = null;
                                        continue;
                                    }

                                    var filter = FilterModel.FromLine(line);

                                    await tTask.ConfigureAwait(false);

                                    tTask = todo(filter);

                                    height++;

                                    line = null;
                                }
                                await tTask.ConfigureAwait(false);
                            }

                            while (!sr.EndOfStream)
                            {
                                var line = await sr.ReadLineAsync().ConfigureAwait(false);

                                if (firstImmatureHeight == height)
                                {
                                    break;                             // Let's use our the immature filters from here on. The content is the same, just someone else modified the file.
                                }

                                if (height < fromHeight.Value)
                                {
                                    height++;
                                    continue;
                                }

                                var filter = FilterModel.FromLine(line);

                                await todo(filter).ConfigureAwait(false);

                                height++;
                            }
                        }
                    }

                    foreach (FilterModel filter in ImmatureFilters)
                    {
                        await todo(filter).ConfigureAwait(false);
                    }
                }
        }
예제 #20
0
 public T FirstOrDefaultFromSubordinate(FilterModel filterModel)
 {
     return(FirstOrDefaultFromSubordinate(filterModel.GetSearchExpression <T>()));
 }
예제 #21
0
 public int CountFromSubordinate(FilterModel filterModel)
 {
     return(CountFromSubordinate(filterModel.GetSearchExpression <T>()));
 }
예제 #22
0
 /// <summary>
 /// There was a bug when the server were sending wrong filters to the users for 24h. This function detects if the software tries to process the first wrong filter.
 /// </summary>
 private bool IsWrongFilter(FilterModel filter) =>
 Network == Network.Main && filter.Header.Height == 627278 && filter.ToLine() == "627278:00000000000000000002edea14cfbbcde1cdb6a14275d9ad36491aa5d8862747:fd4b018270de28c44316c049e4e4050d8a7de5746c7bb31d093831c56196e5f5464956c9ab7142b998a93cb80149b09353cb5d46dfeb44ecb0c8255fb0eb64247a405ab2305713e3418707be4fe87286b467ac86603749aeeac6c182022f0105b6c547b22b89608d0b57eaee2767150bff2354e4cdecef069d1a7f9356e5972ac7323c907b2e42775d032b4a12cc45e96eaa86d232e14808beca91f21c09003734bf77005d2dbfdfeaf19108e971f99b91046db0a021a128bb17b91c83766c65e924bb48af50c473f80e8e8569fd68aaba856b9e4f60efba08519d4ca0f1c0453e60f50a86398b11c860607f049e2bc5e1b6201470f5383601fcfbbea766f510768bac3145dc33443131e50d41bdfb92f5b3d9affc0bbaa85a4c40be2d9e582c3ca0c82251d191ec83dbd197cc1a9f070e6754d84c8ca1c0258d21264619cb523a9bda5556aded4f82e9a8955180c8c8772304bb5f2a5498d15f28b3f0d5d0b22aba14a18be7c8a100bb35b73385ce2b410126ac614f2260557444c3279b73dab148cd14e8800815a1248fa802901a4430817b59d936ceb3e1594d002c1b8d88ec8641f2b2d9827a42948c61c888fc32f070eeba19dda8f773c6cef04485575652f3e929507a9e24dcee53bdc548a317f1e019fbc7ac87c5314548cca6c0b85ebbca79bed2685ed7024a21349189d9a6c92b05aa53a7e241b6885575a19bd737040c263ac05b9920d2e31568afff3c545a827338e103096fbd8fb60ef317e55146b74260577064627bba812c7ca06c39b45d291d7bb9142c338012ccb97330873a0e256ca8aaff778348085e1c9e9942cd10a8444f0c708a798c1d701b4e1879d78ee51f3044ee0012e9929c6e5bfddba40ed04872065373af111ebe53a832f5563078ef274cd39a6b77c8155d8996b6a5617c2ff447dcf4a37a84bfbd1ab34b8a4012f0ccb82c8085668a52e722f8a59a63a07420d2fc67a4da39209fc0cdcd335b2b4670817218f92aee62c8d0e3e895d7aa0f3c69ba36687c9559cf38adfef8ef0ec90128d1efc3b69006ed2c026a1a904bdd1bc0aa1924c74e05b4fdd8316a4cc400d9ced30eaf0ed01f82a6ab59bdf1fbd7a7c6f7186e33411140b57673a0075946902c5890e5647df67183a84f5b2001be152a23741582b529116e2d3bd9964968b40080173e5339018edf609199f25021c757ff3b8d1add3731002784c4da7176cd8b201e3931c61272d17e4e58a2487666510889935d054f0b72817700:000000000000000000028dbd5c398fa064b00e07805af0a8806e6f3b6ffce2c0:1587639149";
예제 #23
0
 public async Task <bool> ExistedFromSubordinateAsync(FilterModel filterModel)
 {
     return(await ExistedFromSubordinateAsync(filterModel.GetSearchExpression <T>()));
 }
예제 #24
0
 public bool ExistedFromSubordinate(FilterModel filterModel)
 {
     return(ExistedFromSubordinate(filterModel.GetSearchExpression <T>()));
 }
예제 #25
0
 public async Task <T> FirstOrDefaultFromSubordinateAsync(FilterModel filterModel)
 {
     return(await FirstOrDefaultFromSubordinateAsync(filterModel.GetSearchExpression <T>()));
 }
 private FilterModel CreateFilterModel()
 {
     var model = new FilterModel();
     model.OrderBy = _orderby.Obj;
     model.Ascending = _ascendingElement.Value;
     return model;
 }
예제 #27
0
        public async void Filter_Clicked(object sender, EventArgs e)
        {
            FilterModel filterModel = new FilterModel();

            if (segmentPostType.SelectedIndex != -1)
            {
                filterModel.PostType = (short)segmentPostType.SelectedIndex;
            }

            if (viewModel.LoaiBatDongSan != null)
            {
                filterModel.LoaiBatDongSanId = viewModel.LoaiBatDongSan.Id;
            }

            if (viewModel.Project != null)
            {
                filterModel.ProjectId = viewModel.Project.Id;
            }

            if (viewModel.Province != null)
            {
                filterModel.ProvinceId = viewModel.Province.Id;
            }

            if (viewModel.District != null)
            {
                filterModel.DistrictId = viewModel.District.Id;
            }

            if (viewModel.Ward != null)
            {
                filterModel.WardId = viewModel.Ward.Id;
            }

            if (viewModel.Area != null)
            {
                if (viewModel.Area.ValueFrom.HasValue)
                {
                    filterModel.AreaFrom = viewModel.Area.ValueFrom.Value;
                }
                if (viewModel.Area.ValueTo.HasValue)
                {
                    filterModel.AreaTo = viewModel.Area.ValueTo.Value;
                }
            }
            if (viewModel.PriceFrom != null)
            {
                filterModel.PriceFrom = viewModel.PriceFrom.Value.Value;
            }
            if (viewModel.PriceTo != null)
            {
                filterModel.PriceTo = viewModel.PriceTo.Value.Value;
            }
            if (viewModel.SoPhongNgu.HasValue)
            {
                filterModel.SoPhongNgu = viewModel.SoPhongNgu.Value;
            }
            if (viewModel.SoPhongTam.HasValue)
            {
                filterModel.SoPhongTam = viewModel.SoPhongTam.Value;
            }
            if (!string.IsNullOrWhiteSpace(viewModel.Keyword))
            {
                filterModel.Keyword = viewModel.Keyword.Trim();
            }

            await Shell.Current.Navigation.PushAsync(new SearchResultPage(filterModel));
        }
 public ProductViewModel()
 {
     FilterModel = new FilterModel();
     WebGridModel = new WebgridModel();
 }
예제 #29
0
        public async Task <ResponseModel> GetList([FromBody] FilterModel filter)
        {
            var response = await _commendationService.GetList(filter);

            return(response);
        }
예제 #30
0
        public ListModel <PermissionModel> List(FilterModel filterModel)
        {
            var startDate = filterModel.StartDate.ResetTimeToStartOfDay();
            var endDate   = filterModel.EndDate.ResetTimeToEndOfDay();
            Expression <Func <Permission, bool> > expression;

            if (filterModel.Status != -1)
            {
                var status = filterModel.Status.ToString().ToBoolean();
                if (filterModel.Searched != null)
                {
                    if (status)
                    {
                        expression = c => c.IsApproved && c.Name.Contains(filterModel.Searched);
                    }
                    else
                    {
                        expression = c => c.IsApproved == false && c.Name.Contains(filterModel.Searched);
                    }
                }
                else
                {
                    if (status)
                    {
                        expression = c => c.IsApproved;
                    }
                    else
                    {
                        expression = c => c.IsApproved == false;
                    }
                }
            }
            else
            {
                if (filterModel.Searched != null)
                {
                    expression = c => c.Name.Contains(filterModel.Searched);
                }
                else
                {
                    expression = c => c.Id != Guid.Empty;
                }
            }

            expression = expression.And(e => e.CreationTime >= startDate && e.CreationTime <= endDate);

            var model = filterModel.CreateMapped <FilterModel, ListModel <PermissionModel> >();

            if (model.Paging == null)
            {
                model.Paging = new Paging
                {
                    PageSize   = filterModel.PageSize,
                    PageNumber = filterModel.PageNumber
                };
            }

            var sortHelper = new SortHelper <PermissionModel>();

            var query = _repositoryPermission
                        .Join(x => x.Creator.Person)
                        .Join(x => x.LastModifier.Person)
                        .Where(expression);

            sortHelper.OrderBy(x => x.DisplayOrder);

            model.Paging.TotalItemCount = query.Count();
            var items      = model.Paging.PageSize > 0 ? query.Skip((model.Paging.PageNumber - 1) * model.Paging.PageSize).Take(model.Paging.PageSize) : query;
            var modelItems = new HashSet <PermissionModel>();

            foreach (var item in items)
            {
                var modelItem = item.CreateMapped <Permission, PermissionModel>();
                modelItem.Creator      = new IdCodeName(item.Creator.Id, item.Creator.Username, item.Creator.Person.DisplayName);
                modelItem.LastModifier = new IdCodeName(item.LastModifier.Id, item.LastModifier.Username, item.LastModifier.Person.DisplayName);
                modelItems.Add(modelItem);
            }
            model.Items = modelItems.ToList();
            var pageSizeDescription = _serviceMain.ApplicationSettings.PageSizeList;
            var pageSizes           = pageSizeDescription.Split(',').Select(s => new KeyValuePair <int, string>(s.ToInt(), s)).ToList();

            pageSizes.Insert(0, new KeyValuePair <int, string>(-1, "[" + Dictionary.All + "]"));
            model.Paging.PageSizes = pageSizes;
            model.Paging.PageCount = (int)Math.Ceiling((float)model.Paging.TotalItemCount / model.Paging.PageSize);
            if (model.Paging.TotalItemCount > model.Items.Count)
            {
                model.Paging.HasNextPage = true;
            }

            // ilk sayfa ise

            if (model.Paging.PageNumber == 1)
            {
                if (model.Paging.TotalItemCount > 0)
                {
                    model.Paging.IsFirstPage = true;
                }

                // tek sayfa ise

                if (model.Paging.PageCount == 1)
                {
                    model.Paging.IsLastPage = true;
                }
            }

            // son sayfa ise
            else if (model.Paging.PageNumber == model.Paging.PageCount)
            {
                model.Paging.HasNextPage = false;
                // tek sayfa değilse

                if (model.Paging.PageCount > 1)
                {
                    model.Paging.IsLastPage      = true;
                    model.Paging.HasPreviousPage = true;
                }
            }

            // ara sayfa ise
            else
            {
                model.Paging.HasNextPage     = true;
                model.Paging.HasPreviousPage = true;
            }

            if (model.Paging.TotalItemCount > model.Items.Count && model.Items.Count <= 0)
            {
                model.Message = Messages.DangerRecordNotFoundInPage;
            }

            if (model.Paging.TotalItemCount == 0)
            {
                model.Message = Messages.DangerRecordNotFound;
            }
            return(model);
        }
 private void OnNewFilterProcessed(FilterModel filter) => NewFilterProcessed?.Invoke(this, filter);
예제 #32
0
        public async Task <IActionResult> GetFilteredHwItems(FilterModel filter)
        {
            var result = await _hardwareItemService.GetFilteredItems(filter);

            return(Ok(result));
        }
예제 #33
0
 public ActionResult Profitable(FilterModel<SportType> filter)
 {
     var itemData = FrontCompetitionProvider.GetCompetitionItemsFuturedProfitable(CurrentLanguage, null, null, filter.id);
     var model = new StaticPageBaseModel<CompetitionRegularModel<CompetitionItemRoiTransport>>(this) {
         ControllerModel = new CompetitionRegularModel<CompetitionItemRoiTransport>(new PageDisplaySettings {
                 LimitToDisplayInGroup = 4,
                 DisplayColumn = DisplayColumnType.Roi
             }) {
             Competitions = itemData,
             Filter = new FilterModel<SportType>(null, null, CurrentLanguage, FilterSettings.Default, filter)
         }
     };
     return new ActionResultCached(
         true,
         model.GetLastModifiedFunc(() => itemData.MaxOrDefault(i => i.CompetitionItems.Max(c => c.Roi.Max(r => r.Odds.Max(o => o.Value.DateTimeUtc))), DateTime.MinValue)),
         () => {
             itemData.Each(d => d.CompetitionItems.Each(ci => {
                 ci.DateUtc = FixSystemTimeToUser(ci.DateUtc);
                 ci.Roi.Each(r => {
                     r.Odds.Each(o => {
                         o.Value.DateTimeUtc = FixSystemTimeToUser(o.Value.DateTimeUtc);
                     });
                 });
             }));
             return View(model);
         });
 }
예제 #34
0
 public List <Product> GetAllWithBrandByProductType(FilterModel filterModel, string categoryCode, string subCategoryCode, string productType, int pageNumber, int itemsPerPage)
 {
     return(_productRepository.GetAllWithBrandByProductType(filterModel, categoryCode, subCategoryCode, productType, pageNumber, itemsPerPage));
 }
예제 #35
0
        public void Synchronize()
        {
            Task.Run(async() =>
            {
                try
                {
                    if (Interlocked.Read(ref _workerCount) >= 2)
                    {
                        return;
                    }

                    Interlocked.Increment(ref _workerCount);
                    while (Interlocked.Read(ref _workerCount) != 1)
                    {
                        await Task.Delay(100);
                    }

                    if (IsStopping)
                    {
                        return;
                    }

                    try
                    {
                        Interlocked.Exchange(ref _serviceStatus, Running);

                        SyncInfo syncInfo = null;
                        while (IsRunning)
                        {
                            try
                            {
                                // If we did not yet initialized syncInfo, do so.
                                syncInfo ??= await GetSyncInfoAsync().ConfigureAwait(false);

                                uint currentHeight  = 0;
                                uint256 currentHash = null;
                                using (await IndexLock.LockAsync())
                                {
                                    if (Index.Count != 0)
                                    {
                                        var lastIndex = Index[^ 1];
                                        currentHeight = lastIndex.Header.Height;
                                        currentHash   = lastIndex.Header.BlockHash;
                                    }
                                    else
                                    {
                                        currentHash = StartingHeight == 0
                                                                                        ? uint256.Zero
                                                                                        : await RpcClient.GetBlockHashAsync((int)StartingHeight - 1);
                                        currentHeight = StartingHeight - 1;
                                    }
                                }

                                var coreNotSynced   = !syncInfo.IsCoreSynchornized;
                                var tipReached      = syncInfo.BlockCount == currentHeight;
                                var isTimeToRefresh = DateTimeOffset.UtcNow - syncInfo.BlockchainInfoUpdated > TimeSpan.FromMinutes(5);
                                if (coreNotSynced || tipReached || isTimeToRefresh)
                                {
                                    syncInfo = await GetSyncInfoAsync();
                                }

                                // If wasabi filter height is the same as core we may be done.
                                if (syncInfo.BlockCount == currentHeight)
                                {
                                    // Check that core is fully synced
                                    if (syncInfo.IsCoreSynchornized && !syncInfo.InitialBlockDownload)
                                    {
                                        // Mark the process notstarted, so it can be started again
                                        // and finally block can mark it as stopped.
                                        Interlocked.Exchange(ref _serviceStatus, NotStarted);
                                        return;
                                    }
                                    else
                                    {
                                        // Knots is catching up give it a 10 seconds
                                        await Task.Delay(10000);
                                        continue;
                                    }
                                }

                                uint nextHeight        = currentHeight + 1;
                                uint256 blockHash      = await RpcClient.GetBlockHashAsync((int)nextHeight);
                                VerboseBlockInfo block = await RpcClient.GetVerboseBlockAsync(blockHash);

                                // Check if we are still on the best chain,
                                // if not rewind filters till we find the fork.
                                if (currentHash != block.PrevBlockHash)
                                {
                                    Logger.LogWarning("Reorg observed on the network.");

                                    await ReorgOneAsync();

                                    // Skip the current block.
                                    continue;
                                }

                                var scripts = FetchScripts(block);

                                GolombRiceFilter filter;
                                if (scripts.Any())
                                {
                                    filter = new GolombRiceFilterBuilder()
                                             .SetKey(block.Hash)
                                             .SetP(20)
                                             .SetM(1 << 20)
                                             .AddEntries(scripts.Select(x => x.ToCompressedBytes()))
                                             .Build();
                                }
                                else
                                {
                                    // We cannot have empty filters, because there was a bug in GolombRiceFilterBuilder that evaluates empty filters to true.
                                    // And this must be fixed in a backwards compatible way, so we create a fake filter with a random scp instead.
                                    filter = CreateDummyEmptyFilter(block.Hash);
                                }

                                var smartHeader = new SmartHeader(block.Hash, block.PrevBlockHash, nextHeight, block.BlockTime);
                                var filterModel = new FilterModel(smartHeader, filter);

                                await File.AppendAllLinesAsync(IndexFilePath, new[] { filterModel.ToLine() });

                                using (await IndexLock.LockAsync())
                                {
                                    Index.Add(filterModel);
                                }

                                // If not close to the tip, just log debug.
                                if (syncInfo.BlockCount - nextHeight <= 3 || nextHeight % 100 == 0)
                                {
                                    Logger.LogInfo($"Created filter for block: {nextHeight}.");
                                }
                                else
                                {
                                    Logger.LogDebug($"Created filter for block: {nextHeight}.");
                                }
                                LastFilterBuildTime = DateTimeOffset.UtcNow;
                            }
예제 #36
0
        private dynamic RouteSearch(string searchQuery, int page, string rarity, string category, string faction)
        {
            if (searchQuery == null)
            {
                searchQuery = "";
            }

            DataService db = new DataService(sql);

            sql.Open(WebSettings.Settings.CreateDescription());

            var parmeter = new List <Parameter>();

            bool hasFilter = !string.IsNullOrEmpty(searchQuery);

            FilterModel filterModel = new FilterModel
            {
                Categories = SelectCategories(sql),
                Rarities   = SelectRarities(sql),
                Factions   = SelectFactions(sql)
            };

            var rarityItem   = filterModel.VerifyRarity(rarity);
            var categoryItem = filterModel.VerifyCategory(category);
            var factionItem  = filterModel.VerifyFaction(faction);


            string sqlQuery = DataService.BuildSearchQuery(hasFilter, true, false, false, rarityItem != null, categoryItem != null, factionItem != null);

            if (hasFilter)
            {
                var p = new Parameter {
                    Identifier = "@filter", Value = $"%{searchQuery}%"
                };
                parmeter.Add(p);
            }

            if (rarityItem != null)
            {
                var p = new Parameter {
                    Identifier = "@rarity", Value = $"{rarityItem.Id}"
                };
                parmeter.Add(p);
            }

            if (categoryItem != null)
            {
                var p = new Parameter {
                    Identifier = "@category", Value = $"{categoryItem.Id}"
                };
                parmeter.Add(p);
            }

            if (factionItem != null)
            {
                var p = new Parameter {
                    Identifier = "@faction", Value = $"{factionItem.Id}"
                };
                parmeter.Add(p);
            }

            page = Math.Max(1, page);
            int entriesPerPage = 50;
            int from           = entriesPerPage * (page - 1);

            var limita = new Parameter {
                Identifier = "@from", Value = from
            };
            var limitb = new Parameter {
                Identifier = "@to", Value = entriesPerPage
            };

            parmeter.Add(limita);
            parmeter.Add(limitb);


            var count = GetCount(sql, hasFilter, parmeter, rarityItem, categoryItem, factionItem);

            int maxPages = (int)Math.Ceiling(count / (float)entriesPerPage);

            var ds           = sql.SelectDataSet(sqlQuery, parmeter);
            var searchResult = new List <Item>();

            foreach (var row in ds)
            {
                Item item = Item.Create(row);
                searchResult.Add(item);
            }
            //  CurrentPage = page, MaxRows = count, MaxPages = maxPages

            PagerModel pager = new PagerModel
            {
                CurrentPage = page,
                MaxRows     = count,
                MaxPages    = maxPages
            };
            SearchModel searchModel = new SearchModel {
                SearchResult = searchResult, Pager = pager, FilterModel = filterModel, CurrentQuery = searchQuery
            };

            var statusModel = db.SelectStatus();

            searchModel.Status = statusModel;

            return(View["search", searchModel]);
        }
예제 #37
0
 public List <employee> SearchListActiveMaid(FilterModel filter)
 {
     return(EmployeeRepository.FindBy(p => (filter.Id == -1 || p.employee_id == filter.Id) && (p.role == (int)RoleEmployee.MaidManager || p.role == (int)RoleEmployee.Maid)).OrderBy(p => p.last_name).ThenBy(p => p.first_name).Include(p => p.contract_employee.Select(q => q.contract)).Include(p => p.employee_note).ToList());
 }
예제 #38
0
        public ListModel <PartModel> List(FilterModel filterModel)
        {
            var model = filterModel.CreateMapped <FilterModel, ListModel <PartModel> >();

            return(List(filterModel.StartDate, filterModel.EndDate, filterModel.PageNumber, filterModel.PageSize, filterModel.Status, filterModel.Searched, Guid.Empty, model));
        }
예제 #39
0
        public async Task <ResponseModel> GetList([FromBody] FilterModel filter)
        {
            var response = await _trainingCenterService.GetList(filter);

            return(response);
        }
예제 #40
0
 public List <T> FindFromSubordinate(FilterModel filterModel, Expression <Func <T, object> > orderExpression, SortOrder sortOrder)
 {
     return(FindFromSubordinate(filterModel.GetSearchExpression <T>(), orderExpression, sortOrder));
 }
        /// </summary>
        /// 显示所有的通告
        /// </summary>
        /// <returns>显示所有的通告</returns>
        public ListResult <AnnouncementModel> List(int pageNo, int pageSize, SortModel sort, FilterModel filter)
        {
            using (var dbContext = new MissionskyOAEntities())
            {
                // 1、首先获取所有通告从数据库中
                var list = dbContext.Announcements.AsEnumerable();

                // 2、判断是否有排序
                if (sort != null)
                {
                    switch (sort.Member)
                    {
                    case "CreatedTime":
                        //
                        if (sort.Direction == SortDirection.Ascending)
                        {
                            list = list.OrderBy(item => item.CreatedTime);
                        }
                        else
                        {
                            list = list.OrderByDescending(item => item.CreatedTime);
                        }
                        break;

                    default:
                        break;
                    }
                }

                //
                var count = list.Count();
                // 分页
                list = list.Skip((pageNo - 1) * pageSize).Take(pageSize).ToList();

                ListResult <AnnouncementModel> result = new ListResult <AnnouncementModel>();
                result.Data = new List <AnnouncementModel>();

                list.ToList().ForEach(item =>
                {
                    result.Data.Add(item.ToModel());
                });

                result.Total = count;
                return(result);
            }
        }
예제 #42
0
 private FilterModel CreateFilterModel()
 {
     var model = new FilterModel();
     model.AssignedTo = _assignedTo.Value;
     model.ReportedBy = _reportedBy.Value;
     model.Status = _statusChoice.Obj;
     model.Priority = _priorityChoice.Obj;
     model.Kind = _kindChoice.Obj;
     model.OrderBy = _orderby.Obj;
     return model;
 }
예제 #43
0
		public void Synchronize()
		{
			Task.Run(async () =>
			{
				try
				{
					if (Interlocked.Read(ref _runner) >= 2)
					{
						return;
					}

					Interlocked.Increment(ref _runner);
					while (Interlocked.Read(ref _runner) != 1)
					{
						await Task.Delay(100);
					}

					if (Interlocked.Read(ref _running) >= 2)
					{
						return;
					}

					try
					{
						Interlocked.Exchange(ref _running, 1);

						var isImmature = false; // The last 100 blocks are reorgable. (Assume it is mature at first.)
						SyncInfo syncInfo = null;
						while (IsRunning)
						{
							try
							{
								// If we did not yet initialized syncInfo, do so.
								if (syncInfo is null)
								{
									syncInfo = await GetSyncInfoAsync();
								}

								Height heightToRequest = StartingHeight;
								uint256 currentHash = null;
								using (await IndexLock.LockAsync())
								{
									if (Index.Count != 0)
									{
										var lastIndex = Index.Last();
										heightToRequest = lastIndex.BlockHeight + 1;
										currentHash = lastIndex.BlockHash;
									}
								}

								// If not synchronized or already 5 min passed since last update, get the latest blockchain info.
								if (!syncInfo.IsCoreSynchornized || (syncInfo.BlockchainInfoUpdated - DateTimeOffset.UtcNow) > TimeSpan.FromMinutes(5))
								{
									syncInfo = await GetSyncInfoAsync();
								}

								if (syncInfo.BlockCount - heightToRequest <= 100)
								{
									// Both Wasabi and our Core node is in sync. Start doing stuff through P2P from now on.
									if (syncInfo.IsCoreSynchornized && syncInfo.BlockCount == heightToRequest - 1)
									{
										syncInfo = await GetSyncInfoAsync();
										// Double it to make sure not to accidentally miss any notification.
										if (syncInfo.IsCoreSynchornized && syncInfo.BlockCount == heightToRequest - 1)
										{
											// Mark the process notstarted, so it can be started again and finally block can mark it is stopped.
											Interlocked.Exchange(ref _running, 0);
											return;
										}
									}

									// Mark the synchronizing process is working with immature blocks from now on.
									isImmature = true;
								}

								Block block = await RpcClient.GetBlockAsync(heightToRequest);

								// Reorg check, except if we're requesting the starting height, because then the "currentHash" wouldn't exist.

								if (heightToRequest != StartingHeight && currentHash != block.Header.HashPrevBlock)
								{
									// Reorg can happen only when immature. (If it'd not be immature, that'd be a huge issue.)
									if (isImmature)
									{
										await ReorgOneAsync();
									}
									else
									{
										Logger.LogCritical("This is something serious! Over 100 block reorg is noticed! We cannot handle that!");
									}

									// Skip the current block.
									continue;
								}

								if (isImmature)
								{
									PrepareBech32UtxoSetHistory();
								}

								var scripts = new HashSet<Script>();

								foreach (var tx in block.Transactions)
								{
									// If stop was requested return.
									// Because this tx iteration can take even minutes
									// It does not need to be accessed with a thread safe fashion with Interlocked through IsRunning, this may have some performance benefit
									if (_running != 1)
									{
										return;
									}

									for (int i = 0; i < tx.Outputs.Count; i++)
									{
										var output = tx.Outputs[i];
										if (output.ScriptPubKey.IsScriptType(ScriptType.P2WPKH))
										{
											var outpoint = new OutPoint(tx.GetHash(), i);
											Bech32UtxoSet.Add(outpoint, output.ScriptPubKey);
											if (isImmature)
											{
												Bech32UtxoSetHistory.Last().StoreAction(ActionHistoryHelper.Operation.Add, outpoint, output.ScriptPubKey);
											}
											scripts.Add(output.ScriptPubKey);
										}
									}

									foreach (var input in tx.Inputs)
									{
										OutPoint prevOut = input.PrevOut;
										if (Bech32UtxoSet.TryGetValue(prevOut, out Script foundScript))
										{
											Bech32UtxoSet.Remove(prevOut);
											if (isImmature)
											{
												Bech32UtxoSetHistory.Last().StoreAction(ActionHistoryHelper.Operation.Remove, prevOut, foundScript);
											}
											scripts.Add(foundScript);
										}
									}
								}

								GolombRiceFilter filter = null;
								if (scripts.Count != 0)
								{
									filter = new GolombRiceFilterBuilder()
										.SetKey(block.GetHash())
										.SetP(20)
										.SetM(1 << 20)
										.AddEntries(scripts.Select(x => x.ToCompressedBytes()))
										.Build();
								}

								var filterModel = new FilterModel
								{
									BlockHash = block.GetHash(),
									BlockHeight = heightToRequest,
									Filter = filter
								};

								await File.AppendAllLinesAsync(IndexFilePath, new[] { filterModel.ToHeightlessLine() });
								using (await IndexLock.LockAsync())
								{
									Index.Add(filterModel);
								}
								if (File.Exists(Bech32UtxoSetFilePath))
								{
									File.Delete(Bech32UtxoSetFilePath);
								}
								await File.WriteAllLinesAsync(Bech32UtxoSetFilePath, Bech32UtxoSet
									.Select(entry => entry.Key.Hash + ":" + entry.Key.N + ":" + ByteHelpers.ToHex(entry.Value.ToCompressedBytes())));

								// If not close to the tip, just log debug.
								// Use height.Value instead of simply height, because it cannot be negative height.
								if (syncInfo.BlockCount - heightToRequest.Value <= 3 || heightToRequest % 100 == 0)
								{
									Logger.LogInfo($"Created filter for block: {heightToRequest}.");
								}
								else
								{
									Logger.LogDebug($"Created filter for block: {heightToRequest}.");
								}
							}
							catch (Exception ex)
							{
								Logger.LogDebug(ex);
							}
						}
					}
					finally
					{
						Interlocked.CompareExchange(ref _running, 3, 2); // If IsStopping, make it stopped.
						Interlocked.Decrement(ref _runner);
					}
				}
				catch (Exception ex)
				{
					Logger.LogError($"Synchronization attempt failed to start: {ex}");
				}
			});
		}
예제 #44
0
        public IQueryable<University> FilterUniversities(IQueryable<University> universities, FilterModel filter)
        {
            if (universities == null)
            {
                return universities;
            }

            universities = universities.OrderBy(u => u.Name);

            if (filter != null)
            {
                if (filter.Filter != null)
                {
                    universities = universities.Where(u => u.Name.Contains(filter.Filter));
                }

                if (filter.OrderBy != null)
                {
                    if (filter.Order == "asc")
                    {
                        if (filter.OrderBy == "name")
                        {
                            universities = universities.OrderBy(u => u.Name);
                        }
                        else if (filter.OrderBy == "country")
                        {
                            universities = universities.OrderBy(u => u.Country.Name);
                        }
                        else if (filter.OrderBy == "tuition")
                        {
                            universities = universities.OrderBy(u => u.TuitionFee);
                        }
                        else if (filter.OrderBy == "sat")
                        {
                            universities = universities.OrderBy(u => u.RequiredSAT);
                        }
                        else if (filter.OrderBy == "toeflpbt")
                        {
                            universities = universities.OrderBy(u => u.RequiredPBTToefl);
                        }
                        else if (filter.OrderBy == "toeflibt")
                        {
                            universities = universities.OrderBy(u => u.RequiredIBTToefl);
                        }
                    }
                    else
                    {
                        if (filter.OrderBy == "name")
                        {
                            universities = universities.OrderByDescending(u => u.Name);
                        }
                        else if (filter.OrderBy == "country")
                        {
                            universities = universities.OrderByDescending(u => u.Country);
                        }
                        else if (filter.OrderBy == "tuition")
                        {
                            universities = universities.OrderByDescending(u => u.TuitionFee);
                        }
                        else if (filter.OrderBy == "sat")
                        {
                            universities = universities.OrderByDescending(u => u.RequiredSAT);
                        }
                        else if (filter.OrderBy == "toeflpbt")
                        {
                            universities = universities.OrderByDescending(u => u.RequiredPBTToefl);
                        }
                        else if (filter.OrderBy == "toeflibt")
                        {
                            universities = universities.OrderByDescending(u => u.RequiredIBTToefl);
                        }
                    }
                }
            }

            return universities;
        }
예제 #45
0
        public async Task FilterBuilderTestAsync()
        {
            using (var builder = await NodeBuilder.CreateAsync())
            {
                await builder.CreateNodeAsync();

                await builder.StartAllAsync();

                CoreNode regtestNode = builder.Nodes[0];
                regtestNode.Generate(101);
                RPCClient rpc = regtestNode.CreateRpcClient();

                var indexBuilderServiceDir = Path.Combine(SharedFixture.DataDir, nameof(IndexBuilderService));
                var indexFilePath          = Path.Combine(indexBuilderServiceDir, $"Index{rpc.Network}.dat");
                var utxoSetFilePath        = Path.Combine(indexBuilderServiceDir, $"UtxoSet{rpc.Network}.dat");

                var indexBuilderService = new IndexBuilderService(rpc, indexFilePath, utxoSetFilePath);
                try
                {
                    indexBuilderService.Synchronize();

                    // Test initial synchronization.
                    var     times     = 0;
                    uint256 firstHash = await rpc.GetBlockHashAsync(0);

                    while (indexBuilderService.GetFilterLinesExcluding(firstHash, 102, out _).Count() != 101)
                    {
                        if (times > 500)                         // 30 sec
                        {
                            throw new TimeoutException($"{nameof(IndexBuilderService)} test timed out.");
                        }
                        await Task.Delay(100);

                        times++;
                    }

                    // Test later synchronization.
                    regtestNode.Generate(10);
                    times = 0;
                    while (indexBuilderService.GetFilterLinesExcluding(firstHash, 112, out bool found5).Count() != 111)
                    {
                        Assert.True(found5);
                        if (times > 500)                         // 30 sec
                        {
                            throw new TimeoutException($"{nameof(IndexBuilderService)} test timed out.");
                        }
                        await Task.Delay(100);

                        times++;
                    }

                    // Test correct number of filters is received.
                    var hundredthHash = await rpc.GetBlockHashAsync(100);

                    Assert.Equal(11, indexBuilderService.GetFilterLinesExcluding(hundredthHash, 12, out bool found).Count());
                    Assert.True(found);
                    var bestHash = await rpc.GetBestBlockHashAsync();

                    Assert.Empty(indexBuilderService.GetFilterLinesExcluding(bestHash, 1, out bool found2));
                    Assert.True(found2);
                    Assert.Empty(indexBuilderService.GetFilterLinesExcluding(uint256.Zero, 1, out bool found3));
                    Assert.False(found3);

                    // Test filter block hashes are correct.
                    var filters = indexBuilderService.GetFilterLinesExcluding(firstHash, 112, out bool found4).ToArray();
                    Assert.True(found4);
                    for (int i = 0; i < 111; i++)
                    {
                        var expectedHash = await rpc.GetBlockHashAsync(i + 1);

                        var filterModel = FilterModel.FromLine(filters[i], i);
                        Assert.Equal(expectedHash, filterModel.BlockHash);
                        Assert.Null(filterModel.Filter);
                    }
                }
                finally
                {
                    if (indexBuilderService != null)
                    {
                        await indexBuilderService.StopAsync();
                    }
                }
            }
        }
예제 #46
0
        /// <summary>
        /// 查询定时任务
        /// </summary>
        /// <param name="pageNo">页码</param>
        /// <param name="pageSize">页面大小</param>
        /// <param name="sort">排序</param>
        /// <param name="filter">查找条件</param>
        /// <returns>实时定时任务</returns>
        public ListResult <ScheduledTaskModel> TaskList(int pageNo, int pageSize, SortModel sort, FilterModel filter)
        {
            using (var dbContext = new MissionskyOAEntities())
            {
                var list = dbContext.ScheduledTasks.OrderBy(it => it.Id).ToList();

                //查询
                if (filter != null)
                {
                }

                //排序
                if (sort != null)
                {
                }

                //分页
                var count = list.Count();
                list = list.Skip((pageNo - 1) * pageSize).Take(pageSize).ToList();

                //转换
                var result = new ListResult <ScheduledTaskModel>();
                result.Data = new List <ScheduledTaskModel>();

                list.ToList().ForEach(item => result.Data.Add(item.ToModel()));

                result.Total = count;

                return(result);
            }
        }
예제 #47
0
 public async Task <List <T> > FindFromSubordinateAsync(FilterModel filterModel, Expression <Func <T, object> > orderExpression, SortOrder sortOrder)
 {
     return(await FindFromSubordinateAsync(filterModel.GetSearchExpression <T>(), orderExpression, sortOrder));
 }