using System; using System.Linq; using System.Runtime.Serialization; using Sony.Filtr.Contracts.Entities; using Sony.Filtr.Contracts.Entities.Genre; using Sony.Filtr.Utility; namespace Sony.Filtr.API.ViewModels.v2 { [DataContract] [Serializable] public class TagViewModel { public TagViewModel() { } public TagViewModel(RankedItem genre, System.Collections.Generic.Dictionary genreCategories) { ID = "tag-" + genre.Item.Name; Label = genre.Item.Name; Match = genre.Weight; if (genreCategories.ContainsKey(genre.Item.GenreCategoryID)) Type = genreCategories[genre.Item.GenreCategoryID]; else Type = "Tag"; } public TagViewModel(Genre genre, System.Collections.Generic.Dictionary genreCategories) { ID = "tag-" + genre.Name; Label = genre.Name; Match = 0; if (genreCategories.ContainsKey(genre.GenreCategoryID)) Type = genreCategories[genre.GenreCategoryID]; else Type = "Tag"; } public TagViewModel(string artist) { ID = "artist-" + artist; Label = artist; Type = "artist"; } public TagViewModel(PlaylistCategory c) { ID = string.Format("category-{0}", TextUtility.GenerateSlug(c.Name)); Label = c.Name; Type = "Category"; } public TagViewModel(SimilarArtistMatch similarArtist) { var artistName = similarArtist.Artist.Name; ID = "artist-" + artistName; Label = artistName; Match = (int)similarArtist.Match; Type = "artist"; } [DataMember(Name = "id", Order = 1)] public string ID { get; set; } [DataMember(Name = "type", Order = 2)] public string Type { get; set; } [DataMember(Name = "label", Order = 3)] public string Label { get; set; } [DataMember(Name = "match", Order = 4, EmitDefaultValue = false)] public int Match { get; set; } } }