Exemplo n.º 1
0
        public ActionResult MusicByArtistId(string Id, int page = 1, SearchSortType sortType = SearchSortType.LengthDesc)
        {
            MusicSearchResult musicRes = new MusicSearchResult();

            PagingResponse <Music> res = _mscService.GetByArtistId(Id, sortType, new PagingRequest(page, RESULTS_IN_PAGE));

            if (res.Success)
            {
                var user = User.GetUser();
                ICollection <Music> favouriteMusic = new List <Music>();
                if (user?.FavouriteMusics != null)
                {
                    favouriteMusic = user.FavouriteMusics;
                }
                musicRes.TotalPages   = res.TotalPages;
                musicRes.TotalResults = res.TotalResults;
                musicRes.Musics       = res.Entities.Select(msc => new MusicSearchModel(msc, favouriteMusic.Any(fav => fav.ID == msc.ID)));
            }
            else
            {
                return(new HttpStatusCodeResult(500, res.Message));
            }

            return(Json(musicRes));
        }
Exemplo n.º 2
0
        public PagingResponse <Music> GetByArtistId(string artistId, SearchSortType sortType, PagingRequest pageRequest)
        {
            var res = new PagingResponse <Music>();

            try
            {
                RepositoryPagingResponse <Music> repositoryRes = (this._rep as IMusicsRepository).
                                                                 GetByArtistId(artistId,
                                                                               pageRequest.ResultInPage,
                                                                               (pageRequest.Page - 1) * pageRequest.ResultInPage,
                                                                               sortType);
                res.Entities      = repositoryRes.Entities;
                res.CurrPage      = pageRequest.Page;
                res.ResultsInPage = pageRequest.ResultInPage;
                res.TotalResults  = repositoryRes.TotalResults;

                res.Success = true;
            }
            catch (Exception e)
            {
                res.Success = false;
                res.Message = "אירעה שגיאה בחיפוש היצירות";
            }

            return(res);
        }
Exemplo n.º 3
0
        private RadioButton MakeSortCheckBox(string text, SearchSortType type, List <RadioButton> list)
        {
            var checkBox = new RadioButton(false);

            checkBox.Text            = text;
            checkBox.TextColor       = Color.Black;
            checkBox.FontFamily      = UIUtils.FONT_SFUIDISPLAY_REGULAR;
            checkBox.FontSize        = 16;
            checkBox.HeightRequest   = 50;
            checkBox.VerticalOptions = LayoutOptions.Center;
            checkBox.SetValue(UIUtils.TagProperty, type);
            list.Add(checkBox);
            checkBox.OnCheckedChange += (s, args) =>
            {
                foreach (var cb in list)
                {
                    if (s == cb)
                    {
                        SearchSort = (SearchSortType)cb.GetValue(UIUtils.TagProperty);
                        sortContainer.IsVisible = false;
                        OnSortChanged?.Invoke(this, EventArgs.Empty);
                    }
                    else
                    {
                        cb.IsChecked = false;
                    }
                }
            };
            return(checkBox);
        }
Exemplo n.º 4
0
        public RepositoryPagingResponse <Music> GetBySearch(string searchText, IEnumerable <Guid> tagIds,
                                                            int max, int skip, SearchSortType sortType)
        {
            var res = new RepositoryPagingResponse <Music>();
            IQueryable <Music> query = ActiveMusics;

            if (searchText.Trim() != string.Empty)
            {
                query = query.Where(msc => msc.HebrewName.Contains(searchText) || msc.SongText.Contains(searchText));
            }

            if (tagIds.Any())
            {
                foreach (Guid tgId in tagIds)
                {
                    query = query.Where(msc => msc.Tags.Any(tag => tag.ID == tgId));
                }
            }
            res.TotalResults = query.Count();
            IOrderedQueryable <Music> orderQuery = null;

            switch (sortType)
            {
            case SearchSortType.Relevant:
                orderQuery = query.OrderByDescending(msc => (msc.HebrewName == searchText) ? 4 : (msc.HebrewName.Contains(searchText) ? 2 : 1));
                break;

            case SearchSortType.LengthDesc:
                orderQuery = query.OrderByDescending(msc => msc.MusicLength);
                break;

            case SearchSortType.LengthAsc:
                orderQuery = query.OrderBy(msc => msc.MusicLength);
                break;
            }
            res.Entities = orderQuery
                           .Skip(skip)
                           .Take(max)
                           .ToList();
            return(res);
        }
 public static IEnumerable <Employee> OrderEmployeeWhere
     (this IEnumerable <Employee> source, SearchSortType type, bool isAscending)
 {
     if (type == SearchSortType.Default)
     {
         return(source);
     }
     else if (type == SearchSortType.DesignationType)
     {
         return(source.OrderByWithDirection(x => x.EmpDesignation, isAscending));
     }
     else if (type == SearchSortType.EmployeeName)
     {
         return(source.OrderByWithDirection(x => x.Name, isAscending));
     }
     else if (type == SearchSortType.EmployeeType)
     {
         return(source.OrderByWithDirection(x => x.EmpType, isAscending));
     }
     return(source);
 }
 public static IEnumerable <Employee> ConditionalEmployeeWhere
     (this IEnumerable <Employee> source, SearchSortType type, string searchvalue)
 {
     if (type == SearchSortType.Default)
     {
         return(source);
     }
     else if (type == SearchSortType.DesignationType)
     {
         return(source.Where(x => x.EmpDesignation.ToString().IndexOf(searchvalue, StringComparison.CurrentCultureIgnoreCase) >= 0));
     }
     else if (type == SearchSortType.EmployeeName)
     {
         return(source.Where(x => x.Name.IndexOf(searchvalue, StringComparison.CurrentCultureIgnoreCase) >= 0));
     }
     else if (type == SearchSortType.EmployeeType)
     {
         return(source.Where(x => x.EmpType.ToString().IndexOf(searchvalue, StringComparison.CurrentCultureIgnoreCase) >= 0));
     }
     return(source);
 }
Exemplo n.º 7
0
        public RepositoryPagingResponse <Music> GetByArtistId(string artistId, int max, int skip, SearchSortType sortType)
        {
            var res   = new RepositoryPagingResponse <Music>();
            var query = ActiveMusics.Where(m => m.ArtistID == artistId);

            res.TotalResults = query.Count();
            IOrderedQueryable <Music> orderQuery = null;

            switch (sortType)
            {
            case SearchSortType.LengthDesc:
                orderQuery = query.OrderByDescending(msc => msc.MusicLength);
                break;

            case SearchSortType.LengthAsc:
                orderQuery = query.OrderBy(msc => msc.MusicLength);
                break;

            default:
                orderQuery = query.OrderByDescending(msc => msc.CreateDate);
                break;
            }
            res.Entities = orderQuery
                           .Skip(skip)
                           .Take(max)
                           .ToList();
            return(res);
        }
Exemplo n.º 8
0
        public async Task <List <string> > SearchDocumentsAsync(IEnumerable <string> documentIds, SearchSortType sortType, int depth, ICollection <string> anyTags, ICollection <string> allTags)
        {
            if (depth < 1)
            {
                depth = 1;
            }
            if (depth > 3)
            {
                depth = 3;
            }

            var documentIdList = documentIds.ToList();

            using var client = _graphClientFactory.Create();

            await client.ConnectAsync();

            var queryPart = ChainQueryPart(client.Cypher, true)
                            .Union();

            ICypherFluentQuery <DocumentResult> query = ChainQueryPart(queryPart, false);

            var queryResults = (await query.ResultsAsync)
                               .Where(r => !documentIdList.Contains(r.Reference.Id))
                               .GroupBy(r => r.Reference.Id)
                               .Select(g => new
            {
                Count  = g.Count(),
                Result = g.First()
            });

            var results = (sortType switch
            {
                SearchSortType.PageRank => queryResults
                .OrderByDescending(r => r.Count)
                .ThenByDescending(r => r.Result.Reference.PageRank),
                SearchSortType.Recency => queryResults
                .OrderByDescending(d => d.Result.Reference.PublishYear),
                SearchSortType.AuthorPopularity => queryResults.OrderByDescending(d => d.Result.AuthorPopularity),
                _ => throw new ArgumentOutOfRangeException(nameof(sortType), sortType, null)
            }).Select(r => r.Result);
Exemplo n.º 9
0
        public ActionResult Search(string searchText, string strTagIds, int page = 1, SearchSortType sortType = SearchSortType.Relevant)
        {
            MusicSearchResult musicRes = new MusicSearchResult();

            if (!string.IsNullOrWhiteSpace(searchText) || !string.IsNullOrWhiteSpace(strTagIds))
            {
                var tagIds = strTagIds
                             .Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)
                             .Select(id => Guid.Parse(id));
                PagingResponse <Music> res =
                    _mscService.GetBySearch(searchText, tagIds, new PagingRequest(page, RESULTS_IN_PAGE), sortType);

                if (res.Success)
                {
                    var user = User.GetUser();
                    ICollection <Music> favouriteMusic = new List <Music>();
                    if (user?.FavouriteMusics != null)
                    {
                        favouriteMusic = user.FavouriteMusics;
                    }
                    musicRes.TotalPages   = res.TotalPages;
                    musicRes.TotalResults = res.TotalResults;
                    musicRes.Musics       = res.Entities.Select(msc => new MusicSearchModel(msc, favouriteMusic.Any(fav => fav.ID == msc.ID)));
                }
                else
                {
                    return(new HttpStatusCodeResult(500, res.Message));
                }
            }

            return(Json(musicRes));
        }