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 })); }
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); } }
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); }
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()); }