public ActionResult Reorder(string button, IdentityDocumentImage identityDocumentImage)
        {
            using (var context = new DatabaseContext())
            {
                var images = context.IdentityDocuments
                    .Where(x => x.Id == identityDocumentImage.IdentityDocumentId)
                    .Include(x => x.IdentityDocumentImages)
                    .First().IdentityDocumentImages;
                var beforeImage = images
                    .Where(x => x.SequenceNumber < identityDocumentImage.SequenceNumber)
                    .OrderByDescending(x => x.SequenceNumber)
                    .FirstOrDefault();
                var currentImage = images
                    .First(x => x.SequenceNumber == identityDocumentImage.SequenceNumber);
                var afterImage = images
                    .Where(x => x.SequenceNumber > identityDocumentImage.SequenceNumber)
                    .OrderBy(x => x.SequenceNumber)
                    .FirstOrDefault();

                var otherImage = (button == "Поднять выше" ? beforeImage : button == "Опустить ниже" ? afterImage : null);
                if (otherImage != null)
                {
                    var swapNumber = otherImage.SequenceNumber;
                    otherImage.SequenceNumber = currentImage.SequenceNumber;
                    currentImage.SequenceNumber = swapNumber;
                    context.SaveChanges();
                }
            }
            return RedirectToAction("WithImages", "IdentityDocument", new { id = identityDocumentImage.IdentityDocumentId });
        }
        public ActionResult Upload(IdentityDocumentImage identityDocumentImage, HttpPostedFileBase file)
        {
            if (file != null && file.ContentLength > 0)
            {
                using (var context = new DatabaseContext())
                {
                    var identityDocumentImages = context.IdentityDocumentImages
                        .Where(x => x.IdentityDocumentId == identityDocumentImage.IdentityDocumentId).ToList();
                    var sequenceNumber = (byte)(identityDocumentImages.Count == 0 ? 1
                        : identityDocumentImages.Max(x => x.SequenceNumber) + 1);
                    identityDocumentImage.SequenceNumber = sequenceNumber;
                    var bytes = identityDocumentImage.Initialize(file.InputStream, file.ContentLength, file.FileName);

                    context.IdentityDocumentImages.Add(identityDocumentImage);
                    context.SaveChanges();

                    var storage = new IdentityDocumentImageStorage();
                    storage.Upload(identityDocumentImage.Id, bytes);
                }
            }
            return RedirectToAction("WithImages", "IdentityDocument", new { id = identityDocumentImage.IdentityDocumentId });
        }
        /// <summary>Creates POC object from its properties</summary>
        /// <returns>POC object</returns>
        private static IdentityDocumentImage ParseEntity(string folderName, string sequenceNumber, string identityDocumentId)
        {
            var identityDocumentImage = new IdentityDocumentImage();

            byte number;
            if (!byte.TryParse(sequenceNumber, out number))
                throw new Exception("Incorrect ID during instantiating of Identity Document Image");
            identityDocumentImage.SequenceNumber = number;

            int identityDocumentNo;
            if (!int.TryParse(identityDocumentId, out identityDocumentNo))
                throw new Exception("Incorrect Identity Document ID during instantiating of Identity Document Image with ID = " + identityDocumentImage.SequenceNumber);
            identityDocumentImage.IdentityDocumentId = identityDocumentNo;

            var imagePath = string.Format(Constants.Blobs.IdentityDocumentImageFormat, folderName, identityDocumentNo, number);
            var fileInfo = new FileInfo(imagePath);
            using (var stream = File.OpenRead(imagePath))
            {
                identityDocumentImage.Initialize(stream, (int) fileInfo.Length, fileInfo.Name);
            }

            return identityDocumentImage;
        }