private TasteRecommend GetRecommendationBaseOnInitialSelection(string userId, string initialType) { switch (initialType) { case "genre": try { var genreRecommendations = new TasteRecommend(); var genrePoints = this.cassandraConnector.getMapper() .SingleOrDefault <InitProfileGenre>("WHERE uid = ?", userId) .profile .ToArray(); var firstGenreIndex = 0; for (int i = 0; i < genrePoints.Length; i++) { if (genrePoints[i] > 0) { firstGenreIndex = i; break; } } var firstGenre = this.cassandraConnector.getMapper() .SingleOrDefault <Genre>("WHERE idx=?", firstGenreIndex) .name; genreRecommendations.uid = userId; genreRecommendations.recommendType = initialType; genreRecommendations.recommendations = this.cassandraConnector.getMapper() .Fetch <Song>("WHERE genre=? LIMIT ?", firstGenre, 10) .ToList(); return(genreRecommendations); } catch (System.Exception) { return(null); } case "artist": try { var artistRecommendations = new TasteRecommend(); var artistPoints = this.cassandraConnector.getMapper() .SingleOrDefault <InitProfileArtist>("WHERE uid = ?", userId) .profile .ToArray(); var firstArtistIndex = 0; for (int i = 0; i < artistPoints.Length; i++) { if (artistPoints[i] > 0) { firstArtistIndex = i; break; } } var firstArtist = this.cassandraConnector.getMapper() .SingleOrDefault <Artist>("WHERE idx=?", firstArtistIndex) .name; artistRecommendations.uid = userId; artistRecommendations.recommendType = initialType; artistRecommendations.recommendations = this.cassandraConnector.getMapper() .Fetch <Song>("WHERE artist=? LIMIT ?", firstArtist, 10) .ToList(); return(artistRecommendations); } catch (System.Exception) { return(null); } case "composer": try { var composerRecommendations = new TasteRecommend(); var composerPoints = this.cassandraConnector.getMapper() .SingleOrDefault <InitProfileComposer>("WHERE uid = ?", userId) .profile .ToArray(); var firstComposerIndex = 0; for (int i = 0; i < composerPoints.Length; i++) { if (composerPoints[i] > 0) { firstComposerIndex = i; break; } } var firstComposer = this.cassandraConnector.getMapper() .SingleOrDefault <Composer>("WHERE idx=?", firstComposerIndex) .name; composerRecommendations.uid = userId; composerRecommendations.recommendType = initialType; composerRecommendations.recommendations = this.cassandraConnector.getMapper() .Fetch <Song>("WHERE composer=? LIMIT ?", firstComposer, 10) .ToList(); return(composerRecommendations); } catch (System.Exception) { return(null); } default: return(null); } }
private TasteRecommend GetRecommendationsBaseOnTaste(string userId, string tasteType, int numberOfRecommendationPerEvent) { List <string> songIds = new List <string>(); switch (tasteType) { case "genre": try { var genreRecommendations = new TasteRecommend(); songIds = this.cassandraConnector.getMapper() .SingleOrDefault <RecommendationByGenre>("WHERE uid = ?", userId) .recommendations; genreRecommendations.uid = userId; genreRecommendations.recommendType = tasteType; genreRecommendations.recommendations = this.cassandraConnector.getMapper() .Fetch <Song>("WHERE sid IN ? LIMIT ?", songIds, numberOfRecommendationPerEvent) .ToList(); return(genreRecommendations); } catch (System.Exception) { return(null); } case "artist": try { var artistRecommendations = new TasteRecommend(); songIds = this.cassandraConnector.getMapper() .SingleOrDefault <RecommendationByArtist>("WHERE uid = ?", userId) .recommendations; artistRecommendations.uid = userId; artistRecommendations.recommendType = tasteType; artistRecommendations.recommendations = this.cassandraConnector.getMapper() .Fetch <Song>("WHERE sid IN ? LIMIT ?", songIds, numberOfRecommendationPerEvent) .ToList(); return(artistRecommendations); } catch (System.Exception) { return(null); } case "composer": try { var composerRecommendations = new TasteRecommend(); songIds = this.cassandraConnector.getMapper() .SingleOrDefault <RecommendationByComposer>("WHERE uid = ?", userId) .recommendations; composerRecommendations.uid = userId; composerRecommendations.recommendType = tasteType; composerRecommendations.recommendations = this.cassandraConnector.getMapper() .Fetch <Song>("WHERE sid IN ? LIMIT ?", songIds, numberOfRecommendationPerEvent) .ToList(); return(composerRecommendations); } catch (System.Exception) { return(null); } default: return(null); } }