Esempio n. 1
0
        public ActionResult AddSongsConfirmed(Playlist model)
        {
            if (ModelState.IsValid)
            {
                using (var database = new PlaylistSharingDbContext())
                {
                    // Get author id
                    var userId = database.Users
                                 .First(u => u.UserName == this.User.Identity.Name)
                                 .Id;


                    var playlist = new Playlist(userId, model.Title);


                    // Save article in DB
                    database.Playlists.Add(playlist);
                    database.SaveChanges();


                    return(RedirectToAction("UploadSongs", "File", new { playlistId = playlist.Id }));
                }
            }
            return(View(model));
        }
        public ActionResult DeleteConfirmed(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            using (var db = new PlaylistSharingDbContext())
            {
                // Get user from database
                var user = db.Users
                           .FirstOrDefault(u => u.Id.Equals(id));

                // Get user playlists from database
                var userPlaylists = db.Playlists
                                    .Where(u => u.User.Id.Equals(user.Id));

                // Delete user playlists
                foreach (var playlist in userPlaylists)
                {
                    db.Playlists.Remove(playlist);
                }

                // Get user ProfilePicturePaths from Database
                var userProfilePicturePaths = db.ProfilePicturePaths
                                              .Where(u => u.User.Id.Equals(user.Id));

                // Delete user profile pictures
                foreach (var userProfilePicturePath in userProfilePicturePaths)
                {
                    db.ProfilePicturePaths.Remove(userProfilePicturePath);
                }

                // Delete User folder with all the files on Server
                var fullPath             = Server.MapPath("~/Users/" + user.Id);
                var isUserDirectoryValid = Directory.Exists(fullPath);
                if (isUserDirectoryValid)
                {
                    Directory.Delete(fullPath, true);
                }

                // Delete user and save database
                db.Users.Remove(user);
                db.SaveChanges();

                return(RedirectToAction("List"));
            }
        }
        public ActionResult UploadSongsConfirmed(Playlist model, IEnumerable <HttpPostedFileBase> uploadSongs)
        {
            if (model == null || uploadSongs == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            if (ModelState.IsValid)
            {
                // Get server folder or create one for the current user
                var folder = Directory.CreateDirectory(Server.MapPath("~/Users"));
                folder.CreateSubdirectory(this.User.Identity.GetUserId());

                using (PlaylistSharingDbContext db = new PlaylistSharingDbContext())
                {
                    foreach (var file in uploadSongs)
                    {
                        if (file.ContentLength > 0)
                        {
                            // Upload to server folder /Users/{user.Id}/fileName
                            var fileName   = Path.GetFileName(file.FileName);
                            var serverPath = Path.Combine(Server.MapPath("~/Users"), this.User.Identity.GetUserId(), fileName);
                            file.SaveAs(serverPath);

                            TagLib.File fileDetails = TagLib.File.Create(serverPath);
                            // populate a song file

                            var song = new AudioFile(fileName, serverPath, fileDetails.Tag, fileDetails.Properties);

                            // Add songs to playlist
                            var playlist = db.Playlists.FirstOrDefault(p => p.Id == model.Id);
                            if (playlist != null)
                            {
                                playlist.AudioFiles.Add((song));
                            }
                        }
                    }

                    // Save to Database
                    db.SaveChanges();

                    return(RedirectToAction("List", "Playlist"));
                }
            }

            return(View());
        }
        public ActionResult DeleteSong(int?playlistId, int?songId)
        {
            if (playlistId == null || songId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            using (var db = new PlaylistSharingDbContext())
            {
                var playlist = db.Playlists.FirstOrDefault(p => p.Id == playlistId);

                // Check if playlist exists
                if (playlist == null)
                {
                    return(HttpNotFound());
                }

                var song = playlist.AudioFiles.FirstOrDefault(a => a.Id == songId);

                // Check if song exists
                if (song == null)
                {
                    return(HttpNotFound());
                }

                if (IsUserAuthorizedToEdit(playlist))
                {
                    var serverPath = Path.Combine(Server.MapPath("~/Users"), playlist.UserId, song.NameOnServer);
                    if (System.IO.File.Exists(serverPath))
                    {
                        System.IO.File.Delete(serverPath);
                    }

                    playlist.AudioFiles.Remove(song);
                }

                // Save
                db.SaveChanges();

                return(RedirectToAction("Details", "Playlist", new { id = playlistId }));
            }
        }
        public ActionResult Edit(string id, EditUserViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                using (var db = new PlaylistSharingDbContext())
                {
                    // Get user from database
                    var user = db.Users
                               .FirstOrDefault(a => a.Id == id);

                    // Check if user exists
                    if (user == null)
                    {
                        return(HttpNotFound());
                    }

                    // If password field is not empty, change password
                    if (!string.IsNullOrEmpty(viewModel.Password))
                    {
                        var hasher       = new PasswordHasher();
                        var passwordHash = hasher.HashPassword(viewModel.Password);
                        user.PasswordHash = passwordHash;
                    }
                    // Set user properties
                    user.Email    = viewModel.User.Email;
                    user.FullName = viewModel.User.FullName;
                    user.UserName = viewModel.User.Email;
                    this.SetUserRoles(viewModel, user, db);

                    // Save changes
                    db.Entry(user).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();

                    return(RedirectToAction("List"));
                }
            }

            return(View(viewModel));
        }
Esempio n. 6
0
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            using (var db = new PlaylistSharingDbContext())
            {
                var playlist = db.Playlists.FirstOrDefault(p => p.Id == id);

                // Check if playlist exists
                if (playlist == null)
                {
                    return(HttpNotFound());
                }


                if (IsUserAuthorizedToEdit(playlist))
                {
                    foreach (var song in playlist.AudioFiles)
                    {
                        var serverPath = Path.Combine(Server.MapPath("~/Users"), playlist.UserId, song.NameOnServer);
                        if (System.IO.File.Exists(serverPath))
                        {
                            System.IO.File.Delete(serverPath);
                        }
                    }
                    playlist.AudioFiles.Clear();
                    db.Playlists.Remove(playlist);
                }

                // Save
                db.SaveChanges();

                return(RedirectToAction("List", "Playlist"));
            }
        }