Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }