// GET: User/Login public ActionResult Login(string email, string password) { ViewBag.showNav = false; if (Session["user"] != null && Session["user"].GetType() == (typeof(ViewUser))) { return(Redirect("/")); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); User user = dbNeo4j.UserRead(email, password); if (user == null) { PageViewModel pageModel = new PageViewModel(); ViewBag.error = "Wrong email or password."; if (email == null && password == null) { ViewBag.error = null; } return(View(pageModel)); } ViewUser vuser = new ViewUser(user); Session["user"] = vuser; return(Redirect("/User")); }
//GET /User/CreateGenre/ public ActionResult CreateGenre(string name) { //Samo admin dodaje zanr if (Session["user"] == null || ((ViewUser)Session["user"]).admin == false) { return(Redirect("/")); } if (name == null || name == "") { return(Redirect("/User/")); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); List <string> check = dbNeo4j.GenreRead(); if (check.Contains(name)) { return(Redirect("/User/#addGenreModal")); } else { Genre genre = new Genre(); genre.name = name; dbNeo4j.GenreCreate(genre); return(Redirect("/User/")); } }
//GET /SongRequest/Create/ public ActionResult Create(string genre, string author, string artist, string song) { SongRequest songRequest = new SongRequest(); songRequest.author = author; if (author.Equals("")) { songRequest.author = "Anonymous"; } songRequest.artist = artist; songRequest.song = song; songRequest.date = DateTime.Now.ToString("dd-MM-yyyy"); if (!artist.Equals("") || !song.Equals("")) { Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); dbNeo4j.SongRequestCreate(songRequest); } string redirectUri = "/"; if (genre != null && genre != "") { redirectUri += "?genre=" + genre; } return(Redirect(redirectUri)); }
//GET /User/DeleteArtist/ public ActionResult DeleteArtist(string name) { //Samo admin brise zanr if (Session["user"] == null || ((ViewUser)Session["user"]).admin == false) { return(Redirect("/")); } if (name == null || name == "") { return(Redirect("/User/")); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); List <string> check = dbNeo4j.ArtistRead(); if (!check.Contains(name)) { return(Redirect("/User/#deleteArtistModal")); } else { dbNeo4j.ArtistDelete(name); return(Redirect("/User/")); } }
//GET /Song/DeleteFavorite/ public ActionResult DeleteFavorite(string artist, string name) { ViewUser user; if (Session["user"] != null && Session["user"].GetType() == (typeof(ViewUser))) { user = ((ViewUser)Session["user"]); } else { return(Redirect("/")); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); RedisDataProvider dbRedis = new RedisDataProvider(); dbNeo4j.SongRemoveFromFavorites(name, artist, user.name); string uri = ""; if (Request.UrlReferrer != null) { uri = Request.UrlReferrer.ToString(); } return(Redirect(uri)); }
public void DeleteAllData() { Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); RedisDataProvider dbRedis = new RedisDataProvider(); dbNeo4j.DeleteBase(); dbRedis.DeleteAll(); }
// GET: /Search/ public ActionResult Index(string text, string genre) { Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); RedisDataProvider dbRedis = new RedisDataProvider(); ViewBag.showNav = true; SearchPageViewModel pageModel = new SearchPageViewModel(); //Is loged if (Session["user"] != null && Session["user"].GetType() == (typeof(ViewUser))) { pageModel.user = (ViewUser)(Session["user"]); dbRedis.AddSearchPhraseFromUser(pageModel.user.name, text); } List <string> redisResults = dbRedis.AutoComplete(pageModel.user != null ? pageModel.user.name : null, text, false); #region NavBarData if (genre == "All" || genre == "") { pageModel.genre = null; } else { pageModel.genre = genre; } //Getting artists pageModel.artists = dbNeo4j.ArtistRead(pageModel.genre); for (char c = 'A'; c <= 'Z'; c++) { if (pageModel.artists.ContainsKey(c.ToString())) { List <ViewArtist> tmp = pageModel.artists[c.ToString()]; pageModel.artists[c.ToString()] = tmp.OrderBy(x => x.name).ToList(); } } //Getting genres pageModel.genres = dbNeo4j.GenreRead(); pageModel.genres.Sort(); #endregion //Getting artist songs pageModel.matched = dbNeo4j.SearchResults(redisResults); pageModel.matched = pageModel.matched.OrderBy(x => x.artist + " - " + x.name).ToList(); pageModel.text = text; return(View(pageModel)); }
//GET /User/Register public ActionResult Register(string name, string email, string password, string confirm) { PageViewModel pageModel = new PageViewModel(); if (Session["user"] != null && Session["user"].GetType() == (typeof(ViewUser))) { return(Redirect("/")); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); ViewBag.showNav = false; if (name == null && email == null && password == null && confirm == null) { return(View(pageModel)); } if (password != confirm) { ViewBag.error = "Passwords don't match."; } if (dbNeo4j.UserExists(email, name)) { ViewBag.error = "User already exists.Try different email or username."; } if (name == null || email == null || password == null || confirm == null) { ViewBag.error = "Data is missing from required fields."; } else if (name.Length < 1 || email.Length < 5 || password.Length < 5 || confirm.Length < 5) { ViewBag.error = "Some fields don't have required length."; } if (ViewBag.error != null) { return(View(pageModel)); } User user = new User(); user.name = name; user.email = email; user.password = password; user.admin = false; user.date = DateTime.Now.ToString("dd-MM-yyyy"); dbNeo4j.UserCreate(user); ViewUser vuser = new ViewUser(user); Session["user"] = vuser; return(Redirect("/")); }
// GET: /Artist/Index public ActionResult Index(string artist, string genre) { ArtistPageViewModel pageModel = new ArtistPageViewModel(); //Is loged if (Session["user"] != null && Session["user"].GetType() == (typeof(ViewUser))) { pageModel.user = (ViewUser)(Session["user"]); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); #region NavBarData if (genre == "All" || genre == "") { pageModel.genre = null; } else { pageModel.genre = genre; } //Getting artists pageModel.artists = dbNeo4j.ArtistRead(pageModel.genre); for (char c = 'A'; c <= 'Z'; c++) { if (pageModel.artists.ContainsKey(c.ToString())) { List <ViewArtist> tmp = pageModel.artists[c.ToString()]; pageModel.artists[c.ToString()] = tmp.OrderBy(x => x.name).ToList(); } } //Getting genres pageModel.genres = dbNeo4j.GenreRead(); pageModel.genres.Sort(); #endregion //Getting artist songs pageModel.artistSongs = dbNeo4j.SongReadArtistSongs(artist); pageModel.artistSongs = pageModel.artistSongs.OrderBy(x => x.artist + " - " + x.name).ToList(); //Geting artist info pageModel.artist = dbNeo4j.ArtistReadOne(artist); ViewBag.showNav = true; return(View(pageModel)); }
//GET /User/Delete public ActionResult Delete(string name) { //Samo admin moze da obrise korisnika if (Session["user"] == null || ((ViewUser)Session["user"]).admin == false) { return(Redirect("/")); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); dbNeo4j.UserDelete(name); return(Redirect("/User/")); }
//GET /Song/CreateDraft/ public ActionResult CreateDraft(string artist, string song, string content) { ViewBag.showNav = false; PageViewModel pageModel = new PageViewModel(); if (Session["user"] != null && Session["user"].GetType() == (typeof(ViewUser))) { pageModel.user = (ViewUser)(Session["user"]); } else { return(Redirect("/")); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); RedisDataProvider dbRedis = new RedisDataProvider(); if (artist == null && song == null && content == null) { return(View(pageModel)); } if (artist == null || song == null || content == null) { ViewBag.error = "Data is missing from required fields."; } else if (artist.Length < 1 || song.Length < 1 || content.Length < 1) { ViewBag.error = "Data is missing from required fields."; } if (ViewBag.error != null) { return(View(pageModel)); } SongDraft draft = new SongDraft(); draft.name = song; draft.artist = artist; draft.link = "/" + artist + "/" + song; draft.date = DateTime.Now.ToString("dd-MM-yyyy"); draft.content = content; dbNeo4j.SongDraftCreate(draft, pageModel.user.name); dbRedis.AddAdminNotification(); return(Redirect("/User/")); }
//GET /User/CreateArtist/ public ActionResult CreateArtist(string name, string bio, string website, string genres) { //Samo admin dodaje izvodjaca if (Session["user"] == null || ((ViewUser)Session["user"]).admin == false) { return(Redirect("/")); } if (name == null || name == "" || bio == null || bio == "" || website == null || website == "" || genres == null || genres == "") { return(Redirect("/User/")); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); List <string> checkArtists = dbNeo4j.ArtistRead(); if (checkArtists.Contains(name)) { return(Redirect("/User/#addArtistModal")); } else { string genresClean = Regex.Replace(genres, " *, *", ","); List <string> genreNames = genresClean.Split(',').ToList(); List <string> checkGenres = dbNeo4j.GenreRead(); List <string> validGenreNames = genreNames.Intersect(checkGenres).ToList(); List <Genre> validGenres = new List <Genre>(); foreach (string genreName in validGenreNames) { Genre tmp = new Genre(); tmp.name = genreName; validGenres.Add(tmp); } if (validGenres == null) { return(Redirect("/User/")); } Artist artist = new Artist(); artist.name = name; artist.biography = bio; artist.website = website; artist.link = "/" + artist; dbNeo4j.ArtistCreate(artist, validGenres); return(Redirect("/User/")); } }
//GET /SongRequest/Delete/ public ActionResult Delete(string artist, string song, string author, string genre) { //Samo admin moze da obrise request if (Session["user"] == null || ((ViewUser)Session["user"]).admin == false) { return(Redirect("/")); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); dbNeo4j.SongRequestDelete(artist, song, author); string redirectUri = "/"; if (genre != null && genre != "") { redirectUri += "?genre=" + genre; } return(Redirect(redirectUri)); }
//GET /Song/DeleteDraft/ public ActionResult DeleteDraft(string user, string artist, string name) { //Samo admin brise draft if (Session["user"] == null || ((ViewUser)Session["user"]).admin == false) { return(Redirect("/")); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); RedisDataProvider dbRedis = new RedisDataProvider(); SongDraft draft = new SongDraft(); draft.artist = artist; draft.name = name; dbNeo4j.SongDraftDelete(draft, user); dbRedis.ClearAdminNotifications(); return(Redirect("/User/")); }
//GET /Song/CreateComment/ public ActionResult CreateComment(string artist, string song, string title, string content) { string uri = ""; if (Request.UrlReferrer != null) { uri = Request.UrlReferrer.ToString(); } ViewUser user; if (Session["user"] != null && Session["user"].GetType() == (typeof(ViewUser))) { user = ((ViewUser)Session["user"]); } else { return(Redirect("/")); } if (content == null || content == "") { return(Redirect(uri)); } Comment comment = new Comment(); comment.title = title; comment.content = content; comment.date = DateTime.Now.ToString("dd-MM-yyyy"); Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); dbNeo4j.CommentCreate(comment, user.name, artist, song); return(Redirect(uri)); }
//GET /Home/Index public ActionResult Index(string genre) { #region Inicijalizacija baza podataka DBInitializer initializator = new DBInitializer(); initializator.Initialize(); #endregion HomePageViewModel pageModel = new HomePageViewModel(); //Is loged if (Session["user"] != null && Session["user"].GetType() == (typeof(ViewUser))) { pageModel.user = (ViewUser)(Session["user"]); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); RedisDataProvider dbRedis = new RedisDataProvider(); #region NavBarData if (genre == "All" || genre == "") { pageModel.genre = null; } else { pageModel.genre = genre; } //Getting artists pageModel.artists = dbNeo4j.ArtistRead(pageModel.genre); for (char c = 'A'; c <= 'Z'; c++) { if (pageModel.artists.ContainsKey(c.ToString())) { List <ViewArtist> tmp = pageModel.artists[c.ToString()]; pageModel.artists[c.ToString()] = tmp.OrderBy(x => x.name).ToList(); } } //Getting genres pageModel.genres = dbNeo4j.GenreRead(); pageModel.genres.Sort(); #endregion //Getting popular songs List <string> popularSongNames = dbRedis.GetMostPopularSongs(10); pageModel.popularSongs = dbNeo4j.SongRead(popularSongNames); //Getting latest songs List <string> latestSongNames = dbRedis.GetLatestSongs(); pageModel.latestSongs = dbNeo4j.SongRead(latestSongNames); //Getting songs requests pageModel.songRequests = dbNeo4j.SongRequestRead(); ViewBag.showNav = true; return(View(pageModel)); }
//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)); }
//GET /Song/Index/ public ActionResult Index(string artist, string song, string genre) { ViewBag.showNav = true; SongPageViewModel pageModel = new SongPageViewModel(); //Is loged if (Session["user"] != null && Session["user"].GetType() == (typeof(ViewUser))) { pageModel.user = (ViewUser)(Session["user"]); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); RedisDataProvider dbRedis = new RedisDataProvider(); dbRedis.IncrementSongVisitCount(artist + " - " + song); #region NavBarData if (genre == "All" || genre == "") { pageModel.genre = null; } else { pageModel.genre = genre; } //Getting artists pageModel.artists = dbNeo4j.ArtistRead(pageModel.genre); for (char c = 'A'; c <= 'Z'; c++) { if (pageModel.artists.ContainsKey(c.ToString())) { List <ViewArtist> tmp = pageModel.artists[c.ToString()]; pageModel.artists[c.ToString()] = tmp.OrderBy(x => x.name).ToList(); } } //Getting genres pageModel.genres = dbNeo4j.GenreRead(); pageModel.genres.Sort(); #endregion //Getting artist songs pageModel.artistSongs = dbNeo4j.SongReadArtistSongs(artist); pageModel.artistSongs = pageModel.artistSongs.OrderBy(x => x.artist + " - " + x.name).ToList(); //Getting song data pageModel.song = dbNeo4j.SongRead(artist, song); //Getting song comment pageModel.comments = dbNeo4j.CommentRead(artist, song); //Check is song favorite if (pageModel.user != null) { pageModel.favorite = dbNeo4j.SongCheckIsFavorite(song, artist, pageModel.user.name); } pageModel.artist = artist; return(View(pageModel)); }
// GET /User/Index public ActionResult Index(String genre) { UserPageViewModel pageModel = new UserPageViewModel(); if (Session["user"] != null && Session["user"].GetType() == (typeof(ViewUser))) { pageModel.user = (ViewUser)(Session["user"]); } else { return(Redirect("/")); } Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); RedisDataProvider dbRedis = new RedisDataProvider(); #region NavBarData if (genre == "All" || genre == "") { pageModel.genre = null; } else { pageModel.genre = genre; } //Getting artists pageModel.artists = dbNeo4j.ArtistRead(pageModel.genre); for (char c = 'A'; c <= 'Z'; c++) { if (pageModel.artists.ContainsKey(c.ToString())) { List <ViewArtist> tmp = pageModel.artists[c.ToString()]; pageModel.artists[c.ToString()] = tmp.OrderBy(x => x.name).ToList(); } } //Getting genres pageModel.genres = dbNeo4j.GenreRead(); pageModel.genres.Sort(); #endregion //Geting user created songs pageModel.userSongs = dbNeo4j.GetUserSongsAndDrafts(pageModel.user.name); //Geting user favorite songs pageModel.favoritSongs = dbNeo4j.UserGetFavoriteSongs(pageModel.user.name); //Getting user admin notification count pageModel.adminNotifications = dbRedis.GetAdminNotificationsCount(); //Geting user admin request songs pageModel.requestedSongs = dbNeo4j.SongDraftRead(); //User List pageModel.userList = dbNeo4j.UserRead(); //Getting statistics pageModel.songCount = dbRedis.GetSongCount(); if (pageModel.songCount == null || pageModel.songCount == "") { pageModel.songCount = "0"; } pageModel.artistCount = dbRedis.GetArtistCount(); if (pageModel.artistCount == null || pageModel.artistCount == "") { pageModel.artistCount = "0"; } pageModel.genreCount = dbRedis.GetGenreCount(); if (pageModel.genreCount == null || pageModel.genreCount == "") { pageModel.genreCount = "0"; } ViewBag.showNav = true; return(View(pageModel)); }
public void Initialize() { string date = DateTime.Now.ToString("dd-MM-yyyy"); Neo4jDataProvider dbNeo4j = new Neo4jDataProvider(); RedisDataProvider dbRedis = new RedisDataProvider(); StreamReader stream; //Check is database initialized if (dbNeo4j.UserExists("admin", "admin")) { return; } DeleteAllData(); dbRedis.ResetHashCounter(); #region Create users User admin = new User(); admin.name = "admin"; admin.email = "admin"; admin.password = "******"; admin.admin = true; admin.date = date; dbNeo4j.UserCreate(admin); try { stream = new StreamReader(HostingEnvironment.MapPath(userFilePath)); while (!stream.EndOfStream) { User user = new User(); user.name = stream.ReadLine(); user.email = stream.ReadLine(); user.password = stream.ReadLine(); user.admin = false; user.date = date; stream.ReadLine(); dbNeo4j.UserCreate(user); } stream.Close(); } catch (Exception e) { } #endregion #region Create genres try { stream = new StreamReader(HostingEnvironment.MapPath(genresFilePath)); while (!stream.EndOfStream) { Genre genre = new Genre(); genre.name = stream.ReadLine(); stream.ReadLine(); dbNeo4j.GenreCreate(genre); } stream.Close(); } catch (Exception e) { } #endregion #region Create artists try { stream = new StreamReader(HostingEnvironment.MapPath(artistFilePath)); while (!stream.EndOfStream) { Artist artist = new Artist(); artist.name = stream.ReadLine(); artist.biography = stream.ReadLine(); artist.website = stream.ReadLine(); string genresClean = Regex.Replace(stream.ReadLine(), " *, *", ","); List <string> genreNames = genresClean.Split(',').ToList(); List <string> checkGenres = dbNeo4j.GenreRead(); List <string> validGenreNames = genreNames.Intersect(checkGenres).ToList(); List <Genre> validGenres = new List <Genre>(); foreach (string genreName in validGenreNames) { Genre tmp = new Genre(); tmp.name = genreName; validGenres.Add(tmp); } dbNeo4j.ArtistCreate(artist, validGenres); stream.ReadLine(); } stream.Close(); } catch (Exception e) { } #endregion #region Create songs string[] songPaths = Directory.GetFiles(HostingEnvironment.MapPath(songFolderPath)); foreach (string songPath in songPaths) { try { stream = new StreamReader(songPath); Song song = new Song(); song.name = stream.ReadLine(); string artist = stream.ReadLine(); string user = stream.ReadLine(); stream.ReadLine(); song.content = stream.ReadToEnd(); song.date = date; dbNeo4j.SongCreate(song, user, artist); stream.Close(); } catch (Exception e) { } } #endregion #region Create favorites try { stream = new StreamReader(HostingEnvironment.MapPath(favoritesFilePath)); while (!stream.EndOfStream) { string song = stream.ReadLine(); string artist = stream.ReadLine(); string user = stream.ReadLine(); stream.ReadLine(); dbNeo4j.SongAddToFavorites(song, artist, user); } stream.Close(); } catch (Exception e) { } #endregion #region Create Comments try { stream = new StreamReader(HostingEnvironment.MapPath(commentsFilePath)); while (!stream.EndOfStream) { Comment comment = new Comment(); comment.title = stream.ReadLine(); comment.content = stream.ReadLine(); comment.date = date; string song = stream.ReadLine(); string artist = stream.ReadLine(); string user = stream.ReadLine(); stream.ReadLine(); dbNeo4j.CommentCreate(comment, user, artist, song); } stream.Close(); } catch (Exception e) { } #endregion #region Create requests try { stream = new StreamReader(HostingEnvironment.MapPath(songRequestFilePath)); while (!stream.EndOfStream) { SongRequest songRequest = new SongRequest(); songRequest.author = stream.ReadLine(); songRequest.artist = stream.ReadLine(); songRequest.song = stream.ReadLine(); songRequest.date = date; stream.ReadLine(); dbNeo4j.SongRequestCreate(songRequest); } stream.Close(); } catch (Exception e) { } #endregion #region Create songdrafts string[] songDraftPaths = Directory.GetFiles(HostingEnvironment.MapPath(songDraftFolderPath)); foreach (string songDraftPath in songDraftPaths) { try { stream = new StreamReader(songDraftPath); SongDraft songDraft = new SongDraft(); songDraft.name = stream.ReadLine(); songDraft.artist = stream.ReadLine(); string user = stream.ReadLine(); songDraft.content = stream.ReadToEnd(); songDraft.date = date; dbNeo4j.SongDraftCreate(songDraft, user); stream.Close(); dbRedis.AddAdminNotification(); } catch (Exception e) { } } #endregion }