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