public async Task<ActionResult> AddSong(Song model, HttpPostedFileBase song) {
            model.Id = Guid.NewGuid().ToString();
            model.DateCreated = DateTime.Now;
            var img = WebImage.GetImageFromRequest("img");
            if(img != null) {
                string imgPath = @"~/Content/Image/SongImages/" + model.Id + "_" + Path.GetFileName(img.FileName);
                await Task.FromResult(img.Save(imgPath));
                model.Thumbnail = imgPath.Replace("~", "");
            }
            else {
                model.Thumbnail = @"/Content/Image/SongImages/song_default.png";
            }

            model.Link = @"/Content/UploadedSongs/" + model.Id + "_" + Path.GetFileName(song.FileName);
            model.Name = song.FileName;

            if(ModelState.IsValid) {
                song.SaveAs(Path.Combine(Server.MapPath("~/Content/UploadedSongs"), model.Id + "_" + Path.GetFileName(song.FileName)));
                model.Length = SongLength(Path.Combine(Server.MapPath("~/Content/UploadedSongs"), model.Id + "_" + Path.GetFileName(song.FileName))).ToString(@"mm\:ss");
                db.Songs.Add(model);
                await db.SaveChangesAsync();
                return RedirectToAction("ListSongs");
            }
            return View("Error");
        }
        public async Task<ActionResult> EditSong(Song model) {
            model.DateModified = DateTime.Now;
            var img = WebImage.GetImageFromRequest("file");
            if(img != null) {
                string imgPath = @"~/Content/Image/SongImages/" + model.Id + "_" + Path.GetFileName(img.FileName);
                img.Save(imgPath);
                model.Thumbnail = imgPath.Replace("~", "");
            }
            else {
                model.Thumbnail = (await db.Songs.Where(s => s.Id.Equals(model.Id)).AsNoTracking().FirstOrDefaultAsync()).Thumbnail;
            }

            if(ModelState.IsValid) {
                db.Entry(model).State = EntityState.Modified;
                await db.SaveChangesAsync();
                return RedirectToAction("ListSongs");
            }
            return View("Error");

        }
 public async Task<ActionResult> AddSong() {
     var model = new Song();
     model.Categories = await Task.FromResult(db.Categories.ToList());
     model.Performers = await Task.FromResult(db.Performers.ToList());
     return View(model);
 }