Beispiel #1
0
        public IActionResult DeleteFile(int fileId)
        {
            UserStorageFileEntry delEntry = db.UserStorageFileEntries.Include(u => u.StorageFile).ThenInclude(s => s.UserStorageFileEntries).FirstOrDefault(u => u.UserName == User.Identity.Name && u.StorageFileId == fileId);

            db.UserStorageFileEntries.Remove(delEntry);

            if (delEntry.StorageFile.UserStorageFileEntries.Count == 1)
            {
                db.StorageFiles.Remove(delEntry.StorageFile);
            }

            db.SaveChanges();

            return(RedirectToAction("Index"));
        }
Beispiel #2
0
        public IActionResult AddFile(IFormFileCollection uploads)
        {
            DayFilesListViewModel newFiles = new DayFilesListViewModel()
            {
                storageFileModels = new List <StorageFileModel>()
            };


            foreach (var uploadedFile in uploads)
            {
                byte[] fileData = null;

                using (var binaryReader = new BinaryReader(uploadedFile.OpenReadStream()))
                {
                    fileData = binaryReader.ReadBytes((int)uploadedFile.Length);
                }

                byte[] hashCode = null;

                using (SHA256 sha256 = SHA256.Create())
                {
                    hashCode = sha256.ComputeHash(fileData);
                }


                var existFile = db.StorageFiles.FirstOrDefault(s => s.HashCode == hashCode);
                if (existFile != null)
                {
                    var existEntry = db.UserStorageFileEntries.FirstOrDefault(u => u.UserName == User.Identity.Name && u.StorageFileId == existFile.Id);
                    if (existEntry == null)
                    {
                        UserStorageFileEntry userStorageOldFileEntry = new UserStorageFileEntry {
                            StorageFile = existFile, UserName = User.Identity.Name
                        };
                        db.UserStorageFileEntries.Add(userStorageOldFileEntry);
                        db.SaveChanges();
                        newFiles.storageFileModels.Add(new StorageFileModel {
                            Id = existFile.Id, Name = existFile.Name, UploadDate = userStorageOldFileEntry.UploadDate
                        });
                    }
                    continue;
                }

                StorageFile storageFile = new StorageFile {
                    ContentType = uploadedFile.ContentType, Name = uploadedFile.FileName, HashCode = hashCode
                };
                FileBlob fileBlob = new FileBlob {
                    Blob = fileData, StorageFile = storageFile
                };
                UserStorageFileEntry userStorageNewFileEntry = new UserStorageFileEntry {
                    StorageFile = storageFile, UserName = User.Identity.Name
                };

                db.StorageFiles.Add(storageFile);
                db.FileBlobs.Add(fileBlob);
                db.UserStorageFileEntries.Add(userStorageNewFileEntry);
                db.SaveChanges();
                newFiles.storageFileModels.Add(new StorageFileModel {
                    Id = storageFile.Id, Name = storageFile.Name, UploadDate = userStorageNewFileEntry.UploadDate
                });
            }

            if (newFiles.storageFileModels.Count() != 0)
            {
                newFiles.Date = newFiles.storageFileModels.First().UploadDate.Date;
            }
            return(PartialView(newFiles));
        }