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