public ActionResult Edit(Medium medium) { if (ModelState.IsValid) { var dbmedium = _db.Media.Where(m => m.MediaID == medium.MediaID).SingleOrDefault(); dbmedium.Name = medium.Name; dbmedium.Url = medium.Url; dbmedium.Duration = medium.Duration; dbmedium.Tags = medium.Tags; UploadedContent upload; var location = UploadRepository.GetFileUrl(this.HttpContext, dbmedium.MediaID.ToString(), dbmedium.MediaID.ToString(), UploadType.Media, out upload); if (upload != null) { dbmedium.Duration = new TimeSpan(upload.Duration.Ticks); } var shouldCalculatenewHash = false; if (location != null) { if (location[0] != dbmedium.Location) { dbmedium.Location = location[0]; shouldCalculatenewHash = true; } if (location[1] != dbmedium.ThumbnailUrl) { dbmedium.ThumbnailUrl = location[1]; } } if (dbmedium.Hash == null || dbmedium.Size == 0) { shouldCalculatenewHash = true; } // Calculate new hash/size if (shouldCalculatenewHash) { using (var fs = new FileStream(Server.MapPath("~/" + dbmedium.Location), FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { dbmedium.Hash = Hashes.MD5(fs); dbmedium.Size = new FileInfo(Server.MapPath("~/" + dbmedium.Location)).Length; } } foreach (var mosaic in dbmedium.Positions.Select(p => p.Mosaic)) { mosaic.Updated = DateTime.Now; } dbmedium.Updated = DateTime.Now; _db.SaveChanges(); return(RedirectToAction("Index")); } return(View("Edit", medium)); }
public ActionResult Create(Medium medium) { if (ModelState.IsValid) { medium.Created = DateTime.Now; _db.Media.AddObject(medium); _db.SaveChanges(); UploadedContent upload; var location = UploadRepository.GetFileUrl(this.HttpContext, medium.MediaID.ToString(), medium.MediaID.ToString(), UploadType.Media, out upload); if (upload != null) { if (medium.Duration == TimeSpan.Zero) { medium.Duration = new TimeSpan(upload.Duration.Ticks); } else { } } if (location != null && location[0] != null) { medium.Location = location[0]; using (var fs = new FileStream(Server.MapPath("~/" + location[0]), FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { medium.Hash = Hashes.MD5(fs); } if (location.Length > 1) { medium.ThumbnailUrl = location[1]; } } _db.SaveChanges(); return(RedirectToAction("Index")); } return(View(medium)); }