public static async void showMusicHeroCard(IMessageActivity message, MusicSearchResult searchResult)
        {
            //Make reply activity and set layout
            Activity reply = ((Activity)message).CreateReply();

            reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;

            //Make each Card for each musician
            foreach (Value musician in searchResult.value)
            {
                List <CardImage> cardImages = new List <CardImage>();
                cardImages.Add(new CardImage(url: musician.imageURL));
                HeroCard card = new HeroCard()
                {
                    Title    = musician.Name,
                    Subtitle = $"Era: {musician.Era } | Search Score: {musician.searchscore}",
                    Text     = musician.Description,
                    Images   = cardImages
                };
                reply.Attachments.Add(card.ToAttachment());
            }

            //make connector and reply message
            ConnectorClient connector = new ConnectorClient(new Uri(reply.ServiceUrl));
            await connector.Conversations.SendToConversationAsync(reply);
        }
示例#2
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));
        }
示例#3
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));
        }
示例#4
0
        public ActionResult FavouriteMusics(int page = 1)
        {
            var user = User.GetUser();
            MusicSearchResult res = new MusicSearchResult();
            var favouriteMusics   = user.FavouriteMusics.
                                    Where(m => m.NCDataUpload == null &&
                                          (m.Status == MusicActiveStatus.Edited ||
                                           m.Status == MusicActiveStatus.Public));

            res.TotalResults = favouriteMusics.Count();
            res.TotalPages   = (int)Math.Ceiling((double)res.TotalResults / RESULTS_IN_PAGE);

            res.Musics = favouriteMusics?.
                         Skip((page - 1) * RESULTS_IN_PAGE).
                         Take(RESULTS_IN_PAGE).
                         Select(m => new MusicSearchModel(m, true)).
                         ToList();
            return(Json(res));
        }
示例#5
0
        public ActionResult MySongs(bool sortByDateDesc = false, int page = 1)
        {
            var user = User.GetUser();
            MusicSearchResult res = new MusicSearchResult();
            var artistMusics      = user.Artist.ArtistMusics
                                    .Where(m => m.NCDataUpload == null &&
                                           m.Status != MusicActiveStatus.Edited);

            if (sortByDateDesc)
            {
                artistMusics = artistMusics.OrderByDescending(m => m.CreateDate);
            }
            else
            {
                artistMusics = artistMusics.OrderBy(m => m.CreateDate);
            }
            res.TotalResults = artistMusics.Count();
            res.TotalPages   = (int)Math.Ceiling((double)res.TotalResults / RESULTS_IN_PAGE);
            res.Musics       = artistMusics
                               .Select(m => new MusicSearchModel(m, false, true))
                               .Skip((page - 1) * RESULTS_IN_PAGE)
                               .Take(RESULTS_IN_PAGE);
            return(Content(JsonConvert.SerializeObject(res), "application/json"));
        }