// GET: FileConfigs
        public void DefaultConfigs(GroupFileOfOneUpload groupFiles)
        {
            const int   FILE_LIFE_TIME = 5;
            FileConfigs fileConfigs    = new FileConfigs
            {
                GroupFileId     = groupFiles.GroupFileId,
                DateOfDeletion  = groupFiles.FileUploadDate.AddDays(FILE_LIFE_TIME),
                DownloadCounter = 0
            };

            RepositoryFileConfigs.AddConfig(fileConfigs);
        }
        public ActionResult SaveFiles(HttpPostedFileBase[] file)
        {
            if (file == null || file[0] == null)
            {
                return(RedirectToAction("ErrorPage", "ErrorController"));
            }

            const int    NUMBER_OF_ATTEMPTS_TO_GENERATE = 10;
            const string ROOT_PATH = @"~\AllUsersFiles\";
            string       fileGuid  = null;

            #region генерация guid для папки файла
            //если за 10 попыток не генерируется уникальный guid, то возвращается страница с ошибкой
            for (int i = 0; i < NUMBER_OF_ATTEMPTS_TO_GENERATE; i++)
            {
                fileGuid = CreateFolderGuid();

                if (fileGuid != null)
                {
                    break;
                }
            }

            if (fileGuid == null)
            {
                return(RedirectToAction("ErrorPage", "ErrorController"));
            }
            #endregion

            string fullPathForAllFiles   = ROOT_PATH + fileGuid;
            int    userFilesIndexCounter = 0;
            string fullPathForEachFiles;
            Directory.CreateDirectory(Server.MapPath(fullPathForAllFiles));

            List <AllFiles> allFiles = new List <AllFiles>(file.Length);

            AllFilesAndGroupFilesLink filesLink = new AllFilesAndGroupFilesLink();

            GroupFileOfOneUpload groupFilesOfOneUpload = new GroupFileOfOneUpload
            {
                UserName       = Request.IsAuthenticated ? User.Identity.GetUserName() : "Anonymous",
                FileUploadDate = DateTime.Now,
                GroupFileGuid  = fileGuid
            };

            //Добавляем в таблицу групповую инфу о файлах
            RepositoryGroupFiles.AddGroup(groupFilesOfOneUpload);

            //Добавляем дефолтную инфу о файле
            new FileConfigsController(groupFilesOfOneUpload, RepositoryFileConfigs);

            //получаем из файлов инфу и добавляем ее в таблицу по каждому файлу
            foreach (var item in file)
            {
                allFiles.Add(new AllFiles
                {
                    FileName      = item.FileName,
                    FileExtension = Path.GetExtension(item.FileName),
                    //FileGuid = fileGuid,
                    FileSize = item.ContentLength,
                    //FileUploadTime = DateTime.Now,
                    //UserLogin = Request.IsAuthenticated ? User.Identity.GetUserName() : "Anonymous"
                });

                RepositoryAllFiles.AddFile(allFiles[userFilesIndexCounter]);

                //Добавляем в линкующую таблицу, айдишники отдельных файлов и айдишник группы этих файлов
                filesLink.FileId      = allFiles[userFilesIndexCounter].FileId;
                filesLink.GroupFileId = groupFilesOfOneUpload.GroupFileId;
                RepositoryLinkFiles.AddLink(filesLink);

                fullPathForEachFiles = Server.MapPath(fullPathForAllFiles) + @"\" + allFiles[userFilesIndexCounter].FileId;

                Directory.CreateDirectory(fullPathForEachFiles);
                item.SaveAs(fullPathForEachFiles + @"\" + item.FileName);
                userFilesIndexCounter++;
            }

            return(RedirectToAction("ShowUploadedFile", new { id = fileGuid }));
        }
 public FileConfigsController(GroupFileOfOneUpload groupFiles, IFileConfigsRepository fileConfigs)
 {
     RepositoryFileConfigs = fileConfigs;
     DefaultConfigs(groupFiles);
 }
Example #4
0
 public void AddGroup(GroupFileOfOneUpload groupFiles)
 {
     context.GroupFilesOfOneUpload.Add(groupFiles);
     context.SaveChanges();
 }