Beispiel #1
0
        public ViewSong SongRead(String artist, String song)
        {
            Dictionary <string, object> dictionary = new Dictionary <string, object>();

            dictionary.Add("artist_name", artist);
            dictionary.Add("song_name", song);
            CypherQuery query = new CypherQuery("MATCH (song:Song)-[relation:PERFORMED_BY]->(artist:Artist) WHERE song.name = {song_name} AND artist.name = {artist_name} RETURN song",
                                                dictionary, CypherResultMode.Set);
            List <Song> qresSongs = ((IRawGraphClient)client).ExecuteGetCypherResults <Song>(query).ToList();
            Song        rsong     = null;
            ViewSong    result    = null;

            if (qresSongs.Count > 0)
            {
                dictionary = new Dictionary <string, object>();
                dictionary.Add("artist_name", artist);
                dictionary.Add("song_name", song);
                query = new CypherQuery("MATCH (user:User)-[relation:CREATED]->(song:Song)-[relation1:PERFORMED_BY]->(artist:Artist) WHERE song.name = {song_name} AND artist.name = {artist_name} RETURN user",
                                        dictionary, CypherResultMode.Set);
                User qresUser = ((IRawGraphClient)client).ExecuteGetCypherResults <User>(query).ToList().FirstOrDefault();
                rsong = qresSongs.First();
                string user = null;
                if (qresUser != null)
                {
                    user = qresUser.name;
                }
                result = new ViewSong(rsong, user, artist);
            }
            return(result);
        }
Beispiel #2
0
        public List <ViewSong> SongRead(String user)
        {
            Dictionary <string, object> dictionary = new Dictionary <string, object>();

            dictionary.Add("name", user);
            CypherQuery query = new CypherQuery("MATCH (user:User)-[relation:CREATED]->(song:Song) WHERE user.name = {name} RETURN song",
                                                dictionary, CypherResultMode.Set);
            List <Song>     qres  = ((IRawGraphClient)client).ExecuteGetCypherResults <Song>(query).ToList();
            List <ViewSong> songs = new List <ViewSong>();

            foreach (Song song in qres)
            {
                dictionary = new Dictionary <string, object>();
                dictionary.Add("song_name", song.name);
                query = new CypherQuery("MATCH (song:Song)-[relation:PERFORMED_BY]->(artist:Artist) WHERE song.name = {song_name} RETURN artist",
                                        dictionary, CypherResultMode.Set);
                List <Artist> qresArtist = ((IRawGraphClient)client).ExecuteGetCypherResults <Artist>(query).ToList();
                Artist        artist     = null;
                if (qresArtist.Count > 0)
                {
                    artist = qresArtist.First();
                }
                ViewSong temp = new ViewSong(song, user, artist.name);
                songs.Add(temp);
            }
            return(songs);
        }
Beispiel #3
0
        //Vraca sve song draftove kao listu viewsonga za prikaz adminu
        public List <ViewSong> SongDraftRead()
        {
            CypherQuery query = new CypherQuery("MATCH (draft:SongDraft) RETURN draft",
                                                null, CypherResultMode.Set);

            List <SongDraft> qres  = ((IRawGraphClient)client).ExecuteGetCypherResults <SongDraft>(query).ToList();
            List <ViewSong>  songs = new List <ViewSong>();

            foreach (SongDraft draft in qres)
            {
                Dictionary <string, object> dictionary = new Dictionary <string, object>();
                dictionary.Add("draft_name", draft.name);
                dictionary.Add("artist_name", draft.artist);

                query = new CypherQuery("MATCH (user:User)-[relation:REQUESTED]->(draft:SongDraft) WHERE draft.name = {draft_name} AND draft.artist = {artist_name} RETURN user",
                                        dictionary, CypherResultMode.Set);
                List <User> qresUser = ((IRawGraphClient)client).ExecuteGetCypherResults <User>(query).ToList();
                User        user     = null;
                if (qresUser.Count > 0)
                {
                    user = qresUser.First();
                }
                ViewSong temp = new ViewSong(draft, user.name);
                songs.Add(temp);
            }
            return(songs);
        }
Beispiel #4
0
        public List <ViewSong> SongReadArtistSongs(String artist)
        {
            Dictionary <string, object> dictionary = new Dictionary <string, object>();

            dictionary.Add("artist_name", artist);
            CypherQuery query = new CypherQuery("MATCH (song:Song)-[relation:PERFORMED_BY]->(artist:Artist) WHERE artist.name = {artist_name} RETURN song",
                                                dictionary, CypherResultMode.Set);
            List <Song>     qres  = ((IRawGraphClient)client).ExecuteGetCypherResults <Song>(query).ToList();
            List <ViewSong> songs = new List <ViewSong>();

            foreach (Song song in qres)
            {
                ViewSong temp = new ViewSong(song, null, artist);
                songs.Add(temp);
            }
            return(songs);
        }
Beispiel #5
0
        //Vraca sve draftove koje je kreirao zadati korisnik
        public List <ViewSong> SongDraftRead(String user)
        {
            Dictionary <string, object> dictionary = new Dictionary <string, object>();

            dictionary.Add("user_name", user);
            CypherQuery query = new CypherQuery("MATCH (user:User)-[relation:REQUESTED]->(draft:SongDraft) WHERE user.name = {user_name} RETURN draft",
                                                dictionary, CypherResultMode.Set);
            List <SongDraft> qres  = ((IRawGraphClient)client).ExecuteGetCypherResults <SongDraft>(query).ToList();
            List <ViewSong>  songs = new List <ViewSong>();

            foreach (SongDraft draft in qres)
            {
                ViewSong temp = new ViewSong(draft, user);
                songs.Add(temp);
            }
            return(songs);
        }
Beispiel #6
0
        //Vraca draft za potrebe edita i pravljenja pesme
        public ViewSong SongDraftRead(String user, String artist, String song)
        {
            Dictionary <string, object> dictionary = new Dictionary <string, object>();

            dictionary.Add("user_name", user);
            dictionary.Add("artist", artist);
            dictionary.Add("song", song);
            CypherQuery query = new CypherQuery("MATCH (user:User)-[relation:REQUESTED]->(draft:SongDraft) WHERE user.name = {user_name} AND draft.artist = {artist} AND draft.name = {song} RETURN draft",
                                                dictionary, CypherResultMode.Set);
            List <SongDraft> qres = ((IRawGraphClient)client).ExecuteGetCypherResults <SongDraft>(query).ToList();

            if (qres.Count > 0)
            {
                SongDraft draft  = qres.First();
                ViewSong  result = new ViewSong(draft, user);
                return(result);
            }
            return(null);
        }
Beispiel #7
0
        public List <ViewSong> SearchResults(List <string> text)
        {
            List <ViewSong> matchedSongs = new List <ViewSong>();

            foreach (string word in text)
            {
                string song   = word.Substring(word.IndexOf(" - ") + 3);
                string artist = word.Substring(0, word.IndexOf(" - "));

                Dictionary <string, object> dictionary = new Dictionary <string, object>();
                dictionary.Add("artist", artist);
                dictionary.Add("song", song);

                CypherQuery query = new CypherQuery("MATCH (song:Song)-[relation:PERFORMED_BY]->(artist:Artist) WHERE song.name={song} AND artist.name={artist} RETURN song",
                                                    dictionary, CypherResultMode.Set);
                Song qres = ((IRawGraphClient)client).ExecuteGetCypherResults <Song>(query).ToList().FirstOrDefault();

                if (qres != null)
                {
                    query = new CypherQuery("MATCH (user:User)-[relation:CREATED]->(song:Song)-[relation2:PERFORMED_BY]->(artist:Artist) WHERE song.name={song} AND artist.name={artist} RETURN user",
                                            dictionary, CypherResultMode.Set);
                    User user = ((IRawGraphClient)client).ExecuteGetCypherResults <User>(query).ToList().FirstOrDefault();

                    ViewSong tmp = new ViewSong();
                    tmp.name     = qres.name;
                    tmp.artist   = artist;
                    tmp.date     = qres.date;
                    tmp.content  = qres.content;
                    tmp.link     = qres.link;
                    tmp.creator  = user.name;
                    tmp.approved = true;

                    matchedSongs.Add(tmp);
                }
            }

            return(matchedSongs);
        }
Beispiel #8
0
        //GET /Song/Approve/
        public ActionResult Approve(string user, string artist, string name, string content, string approve)
        {
            ViewBag.showNav = false;
            //Samo admin moze da appruvuje
            if (Session["user"] == null || ((ViewUser)Session["user"]).admin == false)
            {
                return(Redirect("/"));
            }

            PageViewModel pageModel = new PageViewModel();

            pageModel.user = (ViewUser)(Session["user"]);

            Neo4jDataProvider dbNeo4j = new Neo4jDataProvider();

            if (approve != null)
            {
                //Promenjeni podatci
                ViewSong draft = new ViewSong();
                draft.creator  = user;
                draft.name     = name;
                draft.content  = content;
                draft.artist   = artist;
                draft.approved = false;
                draft.date     = DateTime.Now.ToString("dd-MM-yyyy");

                ViewBag.draft = draft;
                if (artist == null && name == null && content == null)
                {
                    return(View(pageModel));
                }
                if (artist == null || name == null || content == null)
                {
                    ViewBag.error = "Data is missing from required fields.";
                }
                else if (artist.Length < 1 || name.Length < 1 || content.Length < 1)
                {
                    ViewBag.error = "Data is missing from required fields.";
                }

                if (ViewBag.error != null)
                {
                    return(View(pageModel));
                }

                //Provera da li postoji Artist
                List <string> allArtists = dbNeo4j.ArtistRead();
                if (!allArtists.Contains(artist))
                {
                    ViewBag.noArtist = true;
                    return(View(pageModel));
                }


                //Kriranje nove pesme
                Song song = new Song();
                song.name    = name;
                song.content = content;
                song.date    = DateTime.Now.ToString("dd-MM-yyyy");
                song.link    = "/" + artist + "/" + user + "/";

                dbNeo4j.SongCreate(song, user, artist);
                SongDraft songDraft = new SongDraft();
                songDraft.name   = name;
                songDraft.artist = artist;
                dbNeo4j.SongDraftDelete(songDraft, user);
                dbNeo4j.SongRequestDelete(artist, name);

                return(Redirect("/User/"));
            }
            ViewBag.draft = dbNeo4j.SongDraftRead(user, artist, name);

            return(View(pageModel));
        }