//[HttpGet] public ActionResult Index() { //ovde upiti ka bazi // +viewmodel za tabelu MovieGenre TitleGenreActorDirectorView probni = new TitleGenreActorDirectorView(); probni.title = ""; var data = WebApiConfig.GraphClient.Cypher .Match("(g:Genre)") .Return(g => g.As <Genre>()) .Results; var data1 = WebApiConfig.GraphClient.Cypher .Match("(d:Director)") .Return(d => d.As <Director>()) .Results; var data2 = WebApiConfig.GraphClient.Cypher .Match("(a:Actor)") .Return(a => a.As <Actor>()) .Results; var data3 = WebApiConfig.GraphClient.Cypher .Match("(movie:Movie)-[:OF_TYPE]->(genre:Genre)") .Return(() => new { Title = Return.As <string>("movie.title"), Genre = Return.As <string>("genre.name") }) .Results; //var res = q.Results; probni.genres.Add(""); probni.directors.Add(""); probni.actors.Add(""); foreach (Genre g in data) { probni.genres.Add(g.name); } foreach (Director d in data1) { probni.directors.Add(d.name); } foreach (Actor a in data2) { probni.actors.Add(a.name); } foreach (var m in data3) { //probni.moviegenre.Add(m.Title, m.Genre); probni.moviegenre.Add(new MovieGenre { movietitle = m.Title, moviegenre = m.Genre }); //probni.moviegenre[i].moviegenre = m.Genre; /*probni.movietitles.Add(m.Title); * probni.moviegenres.Add(m.Genre);*/ } //probni.genres.Add("Thriller"); return(View(probni)); }
public ActionResult GetMovies(TitleGenreActorDirectorView tgadv) { Dictionary <string, object> dictionary = new Dictionary <string, object>(); if (tgadv.title == null) { tgadv.title = string.Empty; } string title = tgadv.title; //string genre = ; string genre = tgadv.genres[0]; string director = tgadv.directors[0]; string actor = tgadv.actors[0]; List <MovieGenre> data; // var data1 = WebApiConfig.GraphClient.Cypher .Match("(g:Genre)") .Return(g => g.As <Genre>()) .Results; var data2 = WebApiConfig.GraphClient.Cypher .Match("(d:Director)") .Return(d => d.As <Director>()) .Results; var data3 = WebApiConfig.GraphClient.Cypher .Match("(a:Actor)") .Return(a => a.As <Actor>()) .Results; tgadv.genres[0] = ""; tgadv.directors[0] = ""; tgadv.actors[0] = ""; foreach (Genre g in data1) { tgadv.genres.Add(g.name); } foreach (Director d in data2) { tgadv.directors.Add(d.name); } foreach (Actor a in data3) { tgadv.actors.Add(a.name); } // if (title != string.Empty) { data = WebApiConfig.GraphClient.Cypher .Match("(movie:Movie {title:{title}})-[:OF_TYPE]->(genre:Genre)") .WithParam("title", title) .Return(() => new MovieGenre { movietitle = Return.As <string>("movie.title"), moviegenre = Return.As <string>("genre.name") }) .Results.ToList <MovieGenre>(); foreach (var m in data) { tgadv.moviegenre.Add(m); } return(View("Index", tgadv)); } else if (genre != string.Empty && director != string.Empty && actor != string.Empty) { dictionary.Add("genre", genre); dictionary.Add("director", director); dictionary.Add("actor", actor); var query = new Neo4jClient.Cypher.CypherQuery("match (movie:Movie) -[:OF_TYPE]->(: Genre { name: { genre} })," + "(movie) <-[:DIRECTED]-(: Director {name: {director} })," + "(movie) <-[:ACTED_IN]-(: Actor {name: {actor} })" + "return movie", dictionary, CypherResultMode.Set); List <Movie> movies = ((IRawGraphClient)WebApiConfig.GraphClient) .ExecuteGetCypherResults <Movie>(query).ToList(); foreach (Movie m in movies) { MovieGenre mg = new MovieGenre { movietitle = m.title, moviegenre = genre }; tgadv.moviegenre.Add(mg); } return(View("Index", tgadv)); } else if (genre != string.Empty && director != string.Empty) { dictionary.Add("genre", genre); dictionary.Add("director", director); var query = new Neo4jClient.Cypher.CypherQuery("match (movie:Movie) -[:OF_TYPE]->(: Genre { name: { genre} })," + "(movie) <-[:DIRECTED]-(: Director {name: {director} })" + "return movie", dictionary, CypherResultMode.Set); List <Movie> movies = ((IRawGraphClient)WebApiConfig.GraphClient) .ExecuteGetCypherResults <Movie>(query).ToList(); foreach (Movie m in movies) { MovieGenre mg = new MovieGenre() { movietitle = m.title, moviegenre = genre }; tgadv.moviegenre.Add(mg); } return(View("Index", tgadv)); } else if (genre != string.Empty && actor != string.Empty) { dictionary.Add("genre", genre); dictionary.Add("actor", actor); var query = new Neo4jClient.Cypher.CypherQuery("match (movie:Movie) -[:OF_TYPE]->(:Genre { name: {genre} })," + "(movie) <-[:ACTED_IN]-(: Actor {name: {actor} })" + "return movie", dictionary, CypherResultMode.Set); List <Movie> movies = ((IRawGraphClient)WebApiConfig.GraphClient) .ExecuteGetCypherResults <Movie>(query).ToList(); foreach (Movie m in movies) { MovieGenre mg = new MovieGenre { movietitle = m.title, moviegenre = genre }; tgadv.moviegenre.Add(mg); } return(View("Index", tgadv)); } else if (director != string.Empty && actor != string.Empty) { dictionary.Add("director", director); dictionary.Add("actor", actor); /*var query = new Neo4jClient.Cypher.CypherQuery("match (movie:Movie) <-[:DIRECTED]-(: Director { name: { director} })," + * "(movie) <-[:ACTED_IN]-(: Actor {name: {actor} })," + * "(movie) -[OF_TYPE]-> (g:Genre)" + * "return movie.title as movietitle,g.name as moviegenre", * dictionary, CypherResultMode.Set); * * List<MovieGenre> moviesgenres = ((IRawGraphClient)WebApiConfig.GraphClient) * .ExecuteGetCypherResults<MovieGenre>(query).ToList();*/ data = WebApiConfig.GraphClient.Cypher .Match("(movie:Movie)<-[:DIRECTED]-(: Director { name: { director} })," + "(movie) <-[:ACTED_IN]-(: Actor {name: {actor} })," + "(movie) -[OF_TYPE]-> (g:Genre)") .WithParams(dictionary) .Return(() => new MovieGenre { movietitle = Return.As <string>("movie.title"), moviegenre = Return.As <string>("g.name") }) .Results.ToList <MovieGenre>(); foreach (MovieGenre m in data) { //content += m.title + " " + m.description + "<hr>"; //MovieGenre mg = new MovieGenre() { movietitle = m.title, moviegenre = genre }; tgadv.moviegenre.Add(m); } return(View("Index", tgadv)); } else if (genre != string.Empty) { dictionary.Add("genre", genre); var query = new Neo4jClient.Cypher.CypherQuery("match (movie:Movie) -[:OF_TYPE]->(:Genre { name: {genre} })" + "return movie", dictionary, CypherResultMode.Set); List <Movie> movies = ((IRawGraphClient)WebApiConfig.GraphClient) .ExecuteGetCypherResults <Movie>(query).ToList(); foreach (Movie m in movies) { MovieGenre mg = new MovieGenre { movietitle = m.title, moviegenre = genre }; tgadv.moviegenre.Add(mg); } return(View("Index", tgadv)); } else if (director != string.Empty) { dictionary.Add("director", director); data = WebApiConfig.GraphClient.Cypher .Match("(movie:Movie)<-[:DIRECTED]-(:Director { name: {director} })," + "(movie) -[OF_TYPE]-> (g:Genre)") .WithParams(dictionary) .Return(() => new MovieGenre { movietitle = Return.As <string>("movie.title"), moviegenre = Return.As <string>("g.name") }) .Results.ToList <MovieGenre>(); foreach (MovieGenre m in data) { //content += m.title + " " + m.description + "<hr>"; //MovieGenre mg = new MovieGenre() { movietitle = m.title, moviegenre = genre }; tgadv.moviegenre.Add(m); } return(View("Index", tgadv)); } else if (actor != string.Empty) { dictionary.Add("actor", actor); data = WebApiConfig.GraphClient.Cypher .Match("(movie:Movie)<-[:ACTED_IN]-(: Actor { name: { actor} })," + "(movie) -[OF_TYPE]-> (g:Genre)") .WithParams(dictionary) .Return(() => new MovieGenre { movietitle = Return.As <string>("movie.title"), moviegenre = Return.As <string>("g.name") }) .Results.ToList <MovieGenre>(); foreach (MovieGenre m in data) { //content += m.title + " " + m.description + "<hr>"; //MovieGenre mg = new MovieGenre() { movietitle = m.title, moviegenre = genre }; tgadv.moviegenre.Add(m); } return(View("Index", tgadv)); } else { return(RedirectToAction("Index")); } }