//[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"));
            }
        }