public void CreateMusic(Music music)
 {
     db.Musics.Add(music);
     db.SaveChanges();
 }
        public ActionResult Create(Music music)
        {
            try
            {

                if (Session["UserAccountID"] == null)
                    return RedirectToAction("Validate", "Login");
                User user = (User)Session["User"];
                ViewData["LoginInfo"] = Utility.BuildUserAccountString(user.Username, Convert.ToString(Session["UserAccountName"]));
                if (user.IsAdmin)
                    ViewData["txtIsAdmin"] = "true";
                else
                    ViewData["txtIsAdmin"] = "false";

                if (ModelState.IsValid)
                {
                    // Set NULLs to Empty Strings
                    music = FillNulls(music);
                    music.AccountID = Convert.ToInt32(Session["UserAccountID"]);
                    Guid fileguid = Guid.NewGuid();

                    if (Request.Form["lstFile"] != null && !String.IsNullOrEmpty(Request.Form["lstFile"].ToString().Trim()))
                    {
                        music.OriginalFilename = Request.Form["lstFile"].ToString().Trim();
                        if (music.OriginalFilename != "0")
                        {
                            string extension = music.OriginalFilename.Substring(music.OriginalFilename.LastIndexOf('.'));
                            music.StoredFilename = fileguid + extension;
                        }
                        else
                        {
                            music.OriginalFilename = String.Empty;
                        }
                    }
                    else
                    {
                        music.OriginalFilename = String.Empty;
                        music.StoredFilename = String.Empty;
                    }

                    string validation = ValidateInput(music);
                    if (!String.IsNullOrEmpty(validation))
                    {
                        ViewData["ValidationMessage"] = validation;
                        ViewData["FileList"] = new SelectList(BuildFileList(Request.Form["lstFile"].ToString().Trim()), "Value", "Text", music.OriginalFilename);
                        ViewData["MusicURL"] = selectedfile;
                        return View(music);
                    }
                    else
                    {
                        try
                        {
                            // Move the music
                            string oldmusic = Server.MapPath(@"~/UploadedFiles");
                            if (!oldmusic.EndsWith(@"\"))
                                oldmusic += @"\";
                            oldmusic += Convert.ToString(Session["UserAccountID"]) + @"\Music\" + music.OriginalFilename;

                            string newmusic = Server.MapPath(@"~/Media");
                            if (!newmusic.EndsWith(@"\"))
                                newmusic += @"\";
                            newmusic += Convert.ToString(Session["UserAccountID"]) + @"\Music\" + music.StoredFilename;

                            System.IO.File.Copy(oldmusic, newmusic);
                            System.IO.File.Delete(oldmusic);
                        }
                        catch
                        {
                            ViewData["ValidationMessage"] = "Failed to copy file.";
                            ViewData["FileList"] = new SelectList(BuildFileList(Request.Form["lstFile"].ToString().Trim()), "Value", "Text", music.OriginalFilename);
                            ViewData["MusicURL"] = selectedfile;
                            return View(music);
                        }

                        repository.CreateMusic(music);

                        CommonMethods.CreateActivityLog((User)Session["User"], "Music", "Add",
                                "Added music '" + music.MusicName + "' - ID: " + music.MusicID.ToString());

                        return RedirectToAction("Index");
                    }
                }

                return View(music);
            }
            catch (Exception ex)
            {
                Helpers.SetupApplicationError("Music", "Create POST", ex.Message);
                return RedirectToAction("Index", "ApplicationError");
            }
        }
 public void UpdateMusic(Music music)
 {
     db.Entry(music).State = EntityState.Modified;
     db.SaveChanges();
 }
        private string ValidateInput(Music music)
        {
            if (music.AccountID == 0)
                return "Account ID is not valid.";

            if (music.OriginalFilename == "0" || String.IsNullOrEmpty(music.OriginalFilename))
                return "You must select a valid music file.";

            if (String.IsNullOrEmpty(music.MusicName))
                return "Music Name is required.";

            if (String.IsNullOrEmpty(music.OriginalFilename))
                return "Original Filename is required.";

            if (String.IsNullOrEmpty(music.StoredFilename))
                return "Stored Filename is required.";

            return String.Empty;
        }
        private Music FillNulls(Music music)
        {
            if (music.Tags == null) music.Tags = String.Empty;

            return music;
        }
        private Music CreateNewMusic()
        {
            Music music = new Music();
            music.MusicID = 0;
            music.AccountID = 0;
            music.OriginalFilename = String.Empty;
            music.StoredFilename = String.Empty;
            music.MusicName = String.Empty;
            music.Tags = String.Empty;
            music.IsActive = true;

            return music;
        }
        public ActionResult Upload(Music music)
        {
            try
            {

                if (Session["UserAccountID"] == null)
                    return RedirectToAction("Validate", "Login");
                User user = (User)Session["User"];
                ViewData["LoginInfo"] = Utility.BuildUserAccountString(user.Username, Convert.ToString(Session["UserAccountName"]));
                if (user.IsAdmin)
                    ViewData["txtIsAdmin"] = "true";
                else
                    ViewData["txtIsAdmin"] = "false";

                string validation = String.Empty;
                if (ModelState.IsValid)
                {
                    // Only one file is allowed per upload
                    HttpPostedFileBase file = Request.Files[0];
                    if (file != null && file.ContentLength > 0 && !String.IsNullOrEmpty(file.FileName))
                    {
                        if (file.ContentLength > 104000000)
                        {
                            ViewData["ValidationMessage"] = "Uploaded files must be 100MB or less.";
                        }
                        else
                        {
                            string fname = file.FileName.ToLower();
                            if (!fname.EndsWith(".mp3") && !fname.EndsWith(".wma"))
                            {
                                ViewData["ValidationMessage"] = "Only .mp3 and .wma music files can be uploaded.";
                            }
                            else
                            {
                                string filetype = "Music";
                                string filename = Path.GetFileName(file.FileName);
                                string serverpath = Server.MapPath("~/UploadedFiles");
                                if (!serverpath.EndsWith(@"\"))
                                    serverpath += @"\";
                                string path = serverpath + user.AccountID.ToString() + @"\" + filetype + @"\" + filename;
                                if (!System.IO.File.Exists(path))
                                    System.IO.File.Delete(path);
                                file.SaveAs(path);
                            }
                        }
                    }
                    else
                    {
                        ViewData["ValidationMessage"] = "You must select a file.";
                        return View(music);
                    }

                    // Set NULLs to Empty Strings
                    music = FillNulls(music);
                    music.AccountID = Convert.ToInt32(Session["UserAccountID"]);
                    Guid fileguid = Guid.NewGuid();

                    music.OriginalFilename = Path.GetFileName(file.FileName);
                    string extension = music.OriginalFilename.Substring(music.OriginalFilename.LastIndexOf('.'));
                    music.StoredFilename = fileguid + extension;

                    validation = ValidateInput(music);
                    if (!String.IsNullOrEmpty(validation))
                    {
                        ViewData["ValidationMessage"] = validation;
                        return View(music);
                    }
                    else
                    {
                        try
                        {
                            // Move the music
                            string oldmusic = Server.MapPath(@"~/UploadedFiles");
                            if (!oldmusic.EndsWith(@"\"))
                                oldmusic += @"\";
                            oldmusic += Convert.ToString(Session["UserAccountID"]) + @"\Music\" + music.OriginalFilename;

                            string newmusic = Server.MapPath(@"~/Media");
                            if (!newmusic.EndsWith(@"\"))
                                newmusic += @"\";
                            newmusic += Convert.ToString(Session["UserAccountID"]) + @"\Music\" + music.StoredFilename;

                            System.IO.File.Copy(oldmusic, newmusic);
                            System.IO.File.Delete(oldmusic);
                        }
                        catch
                        {
                            ViewData["ValidationMessage"] = "Failed to copy file.";
                            return View(music);
                        }

                        repository.CreateMusic(music);

                        CommonMethods.CreateActivityLog((User)Session["User"], "Music", "Upload",
                                "Added music '" + music.MusicName + "' - ID: " + music.MusicID.ToString());

                        return RedirectToAction("Index");
                    }
                }

                return View(music);
            }
            catch (Exception ex)
            {
                Helpers.SetupApplicationError("Music", "Upload POST", ex.Message);
                return RedirectToAction("Index", "ApplicationError");
            }
        }
        public ActionResult Edit(Music music)
        {
            try
            {
                if (Session["UserAccountID"] == null)
                    return RedirectToAction("Validate", "Login");
                User user = (User)Session["User"];
                ViewData["LoginInfo"] = Utility.BuildUserAccountString(user.Username, Convert.ToString(Session["UserAccountName"]));
                if (user.IsAdmin)
                    ViewData["txtIsAdmin"] = "true";
                else
                    ViewData["txtIsAdmin"] = "false";

                if (ModelState.IsValid)
                {
                    // Set NULLs to Empty Strings
                    music = FillNulls(music);

                    string validation = ValidateInput(music);
                    if (!String.IsNullOrEmpty(validation))
                    {
                        ViewData["MusicURL"] = @"~/Media/" + Convert.ToString(Session["UserAccountID"]) + @"/Music/" + music.StoredFilename;
                        ViewData["ValidationMessage"] = validation;
                        return View(music);
                    }

                    repository.UpdateMusic(music);

                    CommonMethods.CreateActivityLog((User)Session["User"], "Music", "Edit",
                            "Edited music '" + music.MusicName + "' - ID: " + music.MusicID.ToString());

                    return RedirectToAction("Index");
                }

                return View(music);
            }
            catch (Exception ex)
            {
                Helpers.SetupApplicationError("Music", "Edit POST", ex.Message);
                return RedirectToAction("Index", "ApplicationError");
            }
        }