public ActionResult Upload()
        {
            try
            {
                string userId = User.Identity.GetUserId();
                var folders = db.Folders.Where(f => f.UserId == userId);
                var full = new List<ESO_Project.Entities.File>();
                foreach (var folder in folders)
                {
                    var files = db.Files.Where(c => c.FolderId == folder.Id);

                    foreach (var file in files)
                    {
                        full.Add(new ESO_Project.Entities.File()
                        {
                            Id = file.Id,
                            SyncTime = file.SyncTime,
                            Name = file.Name,
                            IsRoot = file.IsRoot,
                            Type = file.Type,
                            Size = file.Size,
                            Shared = file.Shared,
                            FolderId = file.FolderId
                        });
                    }
                }
                FilesManagerModel fileM = new FilesManagerModel();
                fileM.files = full;
                return PartialView(fileM);
            }
            catch(Exception e)
            {
                Logger.log(e.StackTrace);
                return RedirectToAction("DatabaseError", "Errors");
            }
        }
        public async Task<ActionResult> Upload(FilesManagerModel fileModel)
        {
            try
            {
                if(User.IsInRole("User"))
                {
                    if(fileModel.File.ContentLength > 100000000)
                    {
                        return RedirectToAction("Upload");
                    }
                }
                DirectoryInfo directorys = new DirectoryInfo(Server.MapPath(@"..\UserFiles\" + User.Identity.Name));
            
                //Na razie wszystko trafia do roota
                Boolean isRoot = true;
                if (!directorys.Exists)
                {
                    directorys.Create();
                    Folder root = new Folder();
                    root.UserId = User.Identity.GetUserId();
                    root.Name = User.Identity.Name;
                    root.Shared = 0;
                    db.Folders.Add(root);
                    await db.SaveChangesAsync();
                    isRoot = true;
                }

                var fileName = Path.GetFileName(fileModel.File.FileName);
                if (ModelState.IsValid && !db.Files.Any(fi => fi.Name == fileName))
                {
                    if (fileModel != null && fileModel.File != null && fileModel.File.ContentLength > 0)
                    {
                        ESO_Project.Entities.File file = new ESO_Project.Entities.File();
                        

                        using (var fileStream = System.IO.File.Create(Path.Combine(directorys.FullName, fileName)))
                        {
                            fileModel.File.InputStream.Seek(0, SeekOrigin.Begin);
                            fileModel.File.InputStream.CopyTo(fileStream);
                            byte[] fileInBytes = FileEncryption.getBytesFromFile(fileStream);
                        
                            byte[] keyToEncrypt = FileEncryption.getUserKey(User.Identity.GetUserId());
                            byte[] initializationVector = FileEncryption.getInitVector(User.Identity.GetUserId());
                            //byte[] initializationVector = FileEncryption.getInitializationVector();
                            //byte[] keyToEncrypt = FileEncryption.keyGenerator()

                            byte[] encryptedFile = FileEncryption.encrypt(fileInBytes, keyToEncrypt, initializationVector);
                            //keyToEncrypt = FileEncryption.getUserKey(User.Identity.GetUserId());
                            //byte[] decryptedFile = FileEncryption.decrypt(encryptedFile, keyToEncrypt, initializationVector);
                            fileStream.Seek(0,SeekOrigin.Begin);
                            fileStream.Write(encryptedFile, 0, encryptedFile.Length);
                        }
                    
                        //fileModel.File.SaveAs(Path.Combine(directorys.FullName, fileName));
                        if(isRoot)
                        {
                            if(db.Folders.Any(f => f.Name == User.Identity.Name))
                            {
                                    file.FolderId = (from f in db.Folders where f.Name == User.Identity.Name select f.Id).Single();
                                    file.Name = fileName;
                                    file.IsRoot = 0;
                                    file.Type = "." + fileName.Split('.')[1];
                                    file.Size = fileModel.File.ContentLength;
                                    file.Shared = 0;
                                    file.SyncTime = DateTime.Now;
                                    db.Files.Add(file);
                                    await db.SaveChangesAsync();
                                    Logger.log("Dodano plik.");
                            }
                        }
                    
                    }
                    
                }
                return RedirectToAction("Upload");
            }
            catch(Exception e)
            {
                Logger.log(e.StackTrace);
                return View();
            }
        }