Exemplo n.º 1
0
        public JsonResult Songs()
        {
            var userId = GetUser();

            var songs      = _songRepository.All(userId);
            var references = _tagRepository.AllReferences(userId);

            foreach (var song in songs)
            {
                var tags = new List <TagReferences>();
                foreach (var reference in references)
                {
                    if (reference.YouTubeId == song.YouTubeId)
                    {
                        var tag = new TagReferences()
                        {
                            TagReferenceId = reference.TagReferenceId,
                            Tag            = reference.Tag,
                            Fixed          = reference.Fixed,
                            Color          = reference.Color
                        };
                        tags.Add(tag);
                    }
                }
                song.Tags = tags;
            }

            songs.OrderBy(s => s.Name).ToList();

            return(Json(new { songs }));
        }
Exemplo n.º 2
0
            public virtual void ReadChildData(BinaryReader reader)
            {
                int x = 0;

                for (x = 0; (x < _tagReferences.Count); x = (x + 1))
                {
                    TagReferences.Add(new TagreferenceBlock());
                    TagReferences[x].Read(reader);
                }
                for (x = 0; (x < _tagReferences.Count); x = (x + 1))
                {
                    TagReferences[x].ReadChildData(reader);
                }
            }
Exemplo n.º 3
0
        public ContentItem Import(ImportSettings importSettings, object objectToImport, IContent parentContent)
        {
            TagReferences tagsToImport = (TagReferences)objectToImport;

            if (tagsToImport.TagReferenceList.Count == 0)
            {
                return(null);
            }

            var taxonomyPart = _taxonomyImportService.CreateTaxonomy("Tags");

            var currentTerms = _taxonomyService.GetTermsForContentItem(parentContent.ContentItem.Id, "Tags").ToList();

            foreach (var tagReference in tagsToImport.TagReferenceList)
            {
                if (string.IsNullOrWhiteSpace(tagReference.Title))
                {
                    continue;
                }

                var term = _taxonomyService.GetTermByName(taxonomyPart.Id, tagReference.Title);

                if (term == null)
                {
                    TagReference reference = tagReference;

                    term = _tags.GetOrAdd(reference.ID, (o) => _taxonomyImportService.CreateTermFor(taxonomyPart, reference.Title, reference.ID));
                }

                var currentTerm = currentTerms.FirstOrDefault(o => o.Id == term.Id);

                if (currentTerm == null)
                {
                    currentTerms.Add(term);
                }
            }

            _taxonomyService.UpdateTerms(parentContent.ContentItem, currentTerms, "Tags");

            return(null);
        }
Exemplo n.º 4
0
        private List <Songs> RunSearch(string search, string userId)
        {
            string[] searchingFor   = new string[] { };
            string[] doesNotContain = new string[] { };

            while (search.Contains('-'))
            {
                var dashLocation = search.IndexOf('-');
                if (search[dashLocation + 1] == '"')
                {
                    var startQuote = search.IndexOf('"', dashLocation);
                    var endQuote   = search.IndexOf('"', startQuote + 1);

                    var quotedTerm = search.Substring(startQuote + 1, endQuote - (startQuote + 1)).Trim();
                    doesNotContain = doesNotContain.Concat(new string[] { quotedTerm }).ToArray();
                    search         = search.Remove(dashLocation, endQuote - dashLocation + 1);
                }
                else
                {
                    var endOfWord  = search.IndexOf(' ', dashLocation);
                    var quotedTerm = search.Substring(dashLocation + 1, endOfWord - dashLocation).Trim();
                    doesNotContain = doesNotContain.Concat(new string[] { quotedTerm }).ToArray();
                    search         = search.Remove(dashLocation, endOfWord - dashLocation + 1);
                }
            }

            while (search.Contains('"'))
            {
                if (search.Count(s => s == '"') % 2 == 1)
                {
                    break;
                }
                var startQuote = search.IndexOf('"');
                var endQuote   = search.IndexOf('"', startQuote + 1);

                var quotedTerm = search.Substring(startQuote + 1, endQuote - (startQuote + 1)).Trim();
                searchingFor = searchingFor.Concat(new string[] { quotedTerm }).ToArray();
                search       = search.Remove(startQuote, endQuote - startQuote + 1);
            }

            string[] searchTerms = search.Split(' ');
            searchingFor = searchingFor.Concat(searchTerms).ToArray();

            var fullPlayList = _songRepository.All(userId);
            var results      = new List <Songs>();

            foreach (var term in searchingFor)
            {
                var songMatches = fullPlayList.Where(s => s.Name.ToLower().Contains(term.ToLower()));
                results.AddRange(songMatches);

                var songsForTag = _songRepository.GetByTag(term);
                results.AddRange(songsForTag);
            }

            foreach (var term in doesNotContain)
            {
                results.RemoveAll(r => r.Name.ToLower().Contains(term.ToLower()));
            }

            var distinct = results.Distinct().ToList();

            var references = _tagRepository.AllReferences(userId);

            foreach (var song in distinct)
            {
                var tags = new List <TagReferences>();
                foreach (var reference in references)
                {
                    if (reference.YouTubeId == song.YouTubeId)
                    {
                        var tag = new TagReferences()
                        {
                            TagReferenceId = reference.TagReferenceId,
                            Tag            = reference.Tag,
                            Fixed          = reference.Fixed,
                            Color          = reference.Color
                        };
                        tags.Add(tag);
                    }
                }
                song.Tags = tags;
            }

            Random rnd   = new Random();
            var    songs = from song in distinct
                           orderby rnd.Next()
                           select song;

            return(songs.ToList());
        }