Exemplo n.º 1
0
        // this method removes desired files and folders
        public bool RemoveFilesAndFolders(string userId, string[] foldersId, string[] filesId)
        {
            bool success = true;

            foreach (var id in foldersId)
            {
                Folder folder = _database.GetRepository <Folder>().Get(id);
                if (folder == null)
                {
                    throw new StatusCodeException($"The folder with ID = {id} doesn't exists.", StatusCodes.Status404NotFound);
                }

                FolderVM vm = new FolderVM {
                    IsShared = folder.IsShared, OwnerId = folder.OwnerId
                };
                if (CheckEditAccess(vm, userId))
                {
                    try
                    {
                        Directory.Delete(folder.Path, true);
                        Folder deletedFolder = _database.GetRepository <Folder>().Get(id);
                        RemoveChildrenFolders(deletedFolder);
                        _database.GetRepository <Folder>().Delete(id);
                        _database.Save();
                    }
                    catch
                    {
                        success = false;
                    }
                }
            }

            foreach (var id in filesId)
            {
                DAL.Entities.File file = _database.GetRepository <DAL.Entities.File>().Get(id);
                if (file == null)
                {
                    throw new StatusCodeException($"The file with ID = {id} doesn't exists.", StatusCodes.Status404NotFound);
                }

                FileVM vm = new FileVM {
                    IsShared = file.IsShared, OwnerId = _database.GetRepository <Folder>().Get(file.FolderId).OwnerId
                };
                if (CheckEditAccess(vm, userId))
                {
                    try
                    {
                        System.IO.File.Delete(file.Path);
                        _database.GetRepository <DAL.Entities.File>().Delete(id);
                        _database.Save();
                    }
                    catch
                    {
                        success = false;
                    }
                }
            }

            return(success);
        }
Exemplo n.º 2
0
        public void GetFileById_ReturnsFileVMWithCorrectContentType(string extension, string expected)
        {
            // arrange
            File fileFromDB = new File
            {
                Id       = "23",
                Path     = "C:\\User\\MyFolder\\file" + extension,
                FolderId = "1",
                IsShared = false
            };
            Folder folderFromDB = new Folder
            {
                Id             = "1",
                Path           = "C:\\User\\MyFolder",
                OwnerId        = "User",
                ParentFolderId = null,
                IsShared       = false
            };
            var mock = new Mock <IUnitOfWork>();

            mock.Setup(a => a.GetRepository <File>().Get("23")).Returns(fileFromDB);
            mock.Setup(a => a.GetRepository <Folder>().Get("1")).Returns(folderFromDB);
            FileSystemService service = new FileSystemService(mock.Object, _mapper);

            // act
            FileVM fileVM = service.GetFileById("23");
            string result = fileVM.ContentType;

            // assert
            Assert.AreEqual(expected, result);
        }
Exemplo n.º 3
0
        public void renameFile(FileVM file)
        {
            var fi         = new FileInfo(file.fullName);
            var renameFile = Path.Combine(fi.Directory.FullName, file.renameFile);

            MoveFile(file.fullName, renameFile);
        }
Exemplo n.º 4
0
        public static string SaveFile(FileVM file)
        {
            try
            {
                string FileName   = string.Empty,
                       ServerPath = "/Files/Images/";

                //if (file.FileBase64.StartsWith("data:image/jpeg;base64,"))
                //    file.FileBase64 = file.FileBase64.Replace("data:image/jpeg;base64,", string.Empty);
                //else if (file.FileBase64.StartsWith("data:image/png;base64,"))
                //    file.FileBase64 = file.FileBase64.Replace("data:image/png;base64,", string.Empty);
                //else if (file.FileBase64.StartsWith("data:image/jpg;base64,"))
                //    file.FileBase64 = file.FileBase64.Replace("data:image/jpg;base64,", string.Empty);


                if (string.IsNullOrEmpty(file.Extension))
                {
                    file.Extension = ".jpg";
                }
                else if (!file.Extension.StartsWith("."))
                {
                    file.Extension = "." + file.Extension;
                }

                FileName = "Tageer-Photo-" + Guid.NewGuid().ToString() + file.Extension;

                System.IO.File.WriteAllBytes(HttpContext.Current.Server.MapPath(ServerPath) + FileName, Convert.FromBase64String(file.FileBase64));

                return(ServerPath + FileName);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Exemplo n.º 5
0
        // this method recursively compresses a folder structure
        private void CompressFolder(Folder folder, string userId, ZipOutputStream zipStream, int folderOffset)
        {
            List <Folder>            childFolders = _database.GetRepository <Folder>().Find(f => f.ParentFolderId == folder.Id).ToList();
            List <DAL.Entities.File> childFiles   = _database.GetRepository <DAL.Entities.File>().Find(f => f.FolderId == folder.Id).ToList();

            foreach (var childFile in childFiles)
            {
                FileVM file = new FileVM {
                    IsShared = childFile.IsShared, OwnerId = _database.GetRepository <Folder>().Get(childFile.FolderId).OwnerId
                };
                if (CheckAccessToView(file, userId))
                {
                    CompressFile(childFile, zipStream, folderOffset);
                }
            }

            foreach (var childFolder in childFolders)
            {
                FolderVM vm = new FolderVM {
                    IsShared = childFolder.IsShared, OwnerId = childFolder.OwnerId
                };
                if (CheckAccessToView(vm, userId))
                {
                    CompressFolder(childFolder, userId, zipStream, folderOffset);
                }
            }
        }
Exemplo n.º 6
0
 /*
  * Constructor allows mapping ViewModel on DataTransferObject
  * to avoid repetition of code
  */
 public FileDTO(FileVM vModel)
 {
     Id          = vModel.Id;
     DisplayName = vModel.DisplayName;
     FileType    = vModel.DisplayName;
     FileName    = vModel.FileName;
     UploadTime  = vModel.UploadTime;
     HikeId      = vModel.HikeId;
 }
Exemplo n.º 7
0
        // GET: File
        public ActionResult Index(int Page = 1)
        {
            FileVM fileVM = new FileVM();

            fileVM.Paging   = new ForPaging(Page);
            fileVM.FileList = fileservice.GetFileList(fileVM.Paging);

            return(View(fileVM));
        }
Exemplo n.º 8
0
 public App()
 {
     MainVM                   = new MainVM();
     MainPageVM               = new MainPageVM();
     AddingBuyerPageVM        = new AddingBuyerPageVM();
     AddingEquipmentPageVM    = new AddingEquipmentPageVM();
     BackButtonVM             = new BackButtonVM();
     BuyersResultPageVM       = new BuyersResultPageVM();
     EquipmentsResultPageVM   = new EquipmentsResultPageVM();
     FileVM                   = new FileVM();
     SaveNotificationWindowVM = new SaveNotificationWindowVM();
 }
Exemplo n.º 9
0
        // this action returns a single file to download
        public IActionResult Download(string fileId)
        {
            FileVM file = _fileSystemService.GetFileById(fileId);

            if (_fileSystemService.CheckAccessToView(file, User.FindFirstValue(ClaimTypes.NameIdentifier)))
            {
                return(PhysicalFile(file.Path, file.ContentType, file.Name));
            }
            else
            {
                throw new StatusCodeException($"You don't have access to file with ID = {fileId}.", StatusCodes.Status403Forbidden);
            }
        }
Exemplo n.º 10
0
        // this method checks the current user for editing access to the needed file
        public bool CheckEditAccess(FileVM file, string currentId)
        {
            if (file == null)
            {
                throw new StatusCodeException("Unable to check access to the file.", StatusCodes.Status500InternalServerError);
            }

            if (file.OwnerId == currentId)
            {
                return(true);
            }
            return(false);
        }
Exemplo n.º 11
0
        public List <FileVM> addFiles(DirectoryInfo di)
        {
            var filesVM = new List <FileVM>();

            foreach (var f in di.GetFiles())
            {
                var ext    = f.Extension.Replace(".", "");
                var fileVM = new FileVM {
                    name = f.Name, fullName = f.FullName, dateCreated = f.CreationTime, Icon = $"/img/FileManager/FileIcons/{ext}.png"
                };
                filesVM.Add(fileVM);
            }
            return(filesVM);
        }
Exemplo n.º 12
0
        // this action returns a single file to display
        public IActionResult DisplayFile(string fileId)
        {
            FileVM file = _fileSystemService.GetFileById(fileId);

            if (_fileSystemService.CheckAccessToView(file, User.FindFirstValue(ClaimTypes.NameIdentifier)))
            {
                Response.Headers.Add("Content-Disposition", "inline; filename=" + file.Name);
                return(PhysicalFile(file.Path, file.ContentType));
            }
            else
            {
                throw new StatusCodeException($"You don't have access to file with ID = {fileId}.", StatusCodes.Status403Forbidden);
            }
        }
Exemplo n.º 13
0
      internal async void Upload_WithValidData_MustResultAsSpected()
      {
         var driveID = "driveID";
         var fileID = "fileID";
         var httpPath = $"drives/{driveID}/items/{driveID}!{fileID}/content";
         var fileDTO = new DTOs.File { id = "fileID", name = "fileName", parentReference = new DTOs.DirectoryParent { path = "/parentFolder", id = "parentID" } };
         var fileVM = new FileVM { ID = "fileID" };
         var client = ClientBuilder.Create().With(httpPath, fileDTO).Build();
         var service = new OneDriveService(client);

         var value = await service.Upload($"{driveID}!{fileID}", new byte[] { });

         Assert.NotNull(value);
         Assert.Equal(fileVM.ID, value.ID);
      }
Exemplo n.º 14
0
        public void CheckEditAccess_Returns500StatusCodeIfFileIsNull()
        {
            // arrange
            string            currUserId = "4321";
            FileVM            file       = null;
            var               mock       = new Mock <IUnitOfWork>();
            FileSystemService service    = new FileSystemService(mock.Object, _mapper);
            int               expected   = 500;

            // act
            StatusCodeException ex = Assert.Throws <StatusCodeException>(() => service.CheckEditAccess(file, currUserId));

            // assert
            Assert.AreEqual(expected, ex.Data["Status code"]);
        }
Exemplo n.º 15
0
        public void CheckAccessToView_ReturnsTrueIfFileIsShared()
        {
            // arrange
            FileVM file = new FileVM {
                IsShared = true, OwnerId = "1234"
            };
            var mock = new Mock <IUnitOfWork>();
            FileSystemService service    = new FileSystemService(mock.Object, _mapper);
            string            currUserId = "4321";

            // act
            bool result = service.CheckAccessToView(file, currUserId);

            // assert
            Assert.IsTrue(result);
        }
Exemplo n.º 16
0
        public void CheckEditAccess_ReturnsFalseIfYouAreNotFileOwner()
        {
            // arrange
            string currUserId = "4321";
            FileVM file       = new FileVM {
                IsShared = true, OwnerId = "1234"
            };
            var mock = new Mock <IUnitOfWork>();
            FileSystemService service = new FileSystemService(mock.Object, _mapper);

            // act
            bool result = service.CheckEditAccess(file, currUserId);

            // assert
            Assert.IsFalse(result);
        }
Exemplo n.º 17
0
        // this method checks access to view the needed file by current user
        public bool CheckAccessToView(FileVM file, string currentId)
        {
            if (file == null)
            {
                throw new StatusCodeException("Unable to check access to the file.", StatusCodes.Status500InternalServerError);
            }

            if (file.IsShared)
            {
                return(true);
            }
            else
            {
                return(CheckEditAccess(file, currentId));
            }
        }
Exemplo n.º 18
0
        internal async void Download_WithValidData_MustResultAsSpected()
        {
            var fileID   = "driveID!fileID";
            var expected = new FileVM {
                ID = "fileID"
            };
            var client  = ClientBuilder.Create().With("", expected).Build();
            var service = new OneDriveService(client);

            var valueStream = await service.Download(fileID);

            var value = await System.Text.Json.JsonSerializer.DeserializeAsync <FileVM>(valueStream);

            Assert.NotNull(value);
            Assert.Equal(expected.ID, value.ID);
        }
Exemplo n.º 19
0
        public void CheckAccessToView_ReturnsTrueIfFilerIsNonSharedButYouAreOwner()
        {
            // arrange
            string currUserId = "4321";
            FileVM file       = new FileVM {
                IsShared = false, OwnerId = currUserId
            };
            var mock = new Mock <IUnitOfWork>();
            FileSystemService service = new FileSystemService(mock.Object, _mapper);

            // act
            bool result = service.CheckAccessToView(file, currUserId);

            // assert
            Assert.IsTrue(result);
        }
Exemplo n.º 20
0
        // this method creates an archive and returns it for download
        public MemoryStream CreateArchive(string currFolderId, string userId, string[] foldersId, string[] filesId)
        {
            Folder parentFolder = _database.GetRepository <Folder>().Get(currFolderId);

            if (parentFolder == null)
            {
                throw new StatusCodeException($"Invalid current folder ID ({currFolderId}). Unable to create archive.",
                                              StatusCodes.Status500InternalServerError);
            }

            ZipStrings.UseUnicode = true;
            MemoryStream outputMemStream = new MemoryStream();

            using (var zipStream = new ZipOutputStream(outputMemStream))
            {
                zipStream.SetLevel(0);
                int folderOffset = parentFolder.Path.Length + (parentFolder.Path.EndsWith("\\") ? 0 : 1);

                foreach (var id in filesId)
                {
                    DAL.Entities.File file = _database.GetRepository <DAL.Entities.File>().Get(id);
                    FileVM            vm   = new FileVM {
                        IsShared = file.IsShared, OwnerId = _database.GetRepository <Folder>().Get(file.FolderId).OwnerId
                    };
                    if (CheckAccessToView(vm, userId))
                    {
                        CompressFile(file, zipStream, folderOffset);
                    }
                }

                foreach (var id in foldersId)
                {
                    Folder   folder = _database.GetRepository <Folder>().Get(id);
                    FolderVM vm     = new FolderVM {
                        IsShared = folder.IsShared, OwnerId = folder.OwnerId
                    };
                    if (CheckAccessToView(vm, userId))
                    {
                        CompressFolder(folder, userId, zipStream, folderOffset);
                    }
                }

                zipStream.IsStreamOwner = false;
            }
            outputMemStream.Position = 0;
            return(outputMemStream);
        }
Exemplo n.º 21
0
        private async void PathNavigate(object parameter)
        {
            string path = parameter as string;

            if (path == "Recovery")
            {
                RecVM ??= new RecoveryBoxViewModel();
                MainContainerContent = RecVM;
                await RecVM.LazyLoad();
            }
            else
            {
                FileVM ??= new FileListViewModel();
                MainContainerContent = FileVM;
                await FileVM.NavigateByPath("/" + path, true);
            }
            OnPropertyChanged(nameof(MainContainerContent));
        }
Exemplo n.º 22
0
        public void GetFileById_ReturnsTheSameFileVM()
        {
            // arrange
            File fileFromDB = new File
            {
                Id       = "23",
                Path     = "C:\\User\\MyFolder\\file.txt",
                FolderId = "1",
                IsShared = false
            };
            Folder folderFromDB = new Folder
            {
                Id             = "1",
                Path           = "C:\\User\\MyFolder",
                OwnerId        = "User",
                ParentFolderId = null,
                IsShared       = false
            };
            var mock = new Mock <IUnitOfWork>();

            mock.Setup(a => a.GetRepository <File>().Get("23")).Returns(fileFromDB);
            mock.Setup(a => a.GetRepository <Folder>().Get("1")).Returns(folderFromDB);
            FileSystemService service  = new FileSystemService(mock.Object, _mapper);
            FileVM            expected = new FileVM
            {
                Id          = "23",
                Path        = "C:\\User\\MyFolder\\file.txt",
                OwnerId     = "User",
                Name        = "file.txt",
                ContentType = "text/plain",
                FolderId    = "1",
                IsShared    = false
            };

            // act
            FileVM result = service.GetFileById("23");

            // assert
            Assert.AreEqual(expected, result);
        }
Exemplo n.º 23
0
        // this method returns file by id
        public FileVM GetFileById(string id)
        {
            FileVM file = _mapper.Map <DAL.Entities.File, FileVM>(_database.GetRepository <DAL.Entities.File>().Get(id));

            if (file == null)
            {
                throw new StatusCodeException($"The file with ID = {id} doesn't exists.", StatusCodes.Status404NotFound);
            }

            file.OwnerId = _database.GetRepository <Folder>().Get(file.FolderId).OwnerId;
            file.Name    = ElementHelperClass.DefineFileName(file.Path);

            var    provider = new FileExtensionContentTypeProvider();
            string contentType;

            if (!provider.TryGetContentType(file.Name, out contentType))
            {
                contentType = "application/octet-stream";
            }
            file.ContentType = contentType;

            return(file);
        }
Exemplo n.º 24
0
        // this method returns all folders and files that are contained in the needed folder
        public ICollection <ElementVM> GetElementsFromFolder(FolderVM folderVM, string userId)
        {
            if (folderVM == null)
            {
                throw new StatusCodeException("The needed folder doesn't exists.", StatusCodes.Status404NotFound);
            }

            DirectoryInfo dir = new DirectoryInfo(folderVM.Path);

            FileInfo[]      files;
            DirectoryInfo[] dirs;

            files = dir.GetFiles();
            dirs  = dir.GetDirectories();

            List <ElementVM> models = new List <ElementVM>();

            List <Folder>            childFolders = _database.GetRepository <Folder>().Find(f => f.ParentFolderId == folderVM.Id).ToList();
            List <DAL.Entities.File> childFiles   = _database.GetRepository <DAL.Entities.File>().Find(f => f.FolderId == folderVM.Id).ToList();

            foreach (var elem in dirs)
            {
                Folder folder = childFolders.Find(f => f.Path == elem.FullName);
                if (folder != null)
                {
                    if (CheckAccessToView(new FolderVM {
                        OwnerId = folder.OwnerId, IsShared = folder.IsShared
                    }, userId))
                    {
                        ElementVM model = new ElementVM
                        {
                            Id           = folder.Id,
                            IsFolder     = true,
                            Type         = ElementVM.FileType.Folder,
                            ElemName     = elem.Name,
                            LastModified = elem.LastWriteTime.ToShortDateString(),
                            Size         = null,
                            IsShared     = folder.IsShared
                        };

                        models.Add(model);
                    }
                }
            }

            foreach (var elem in files)
            {
                DAL.Entities.File file = childFiles.Find(f => f.Path == elem.FullName);
                if (file != null)
                {
                    FileVM vm = new FileVM {
                        IsShared = file.IsShared, OwnerId = _database.GetRepository <Folder>().Get(file.FolderId).OwnerId
                    };
                    if (CheckAccessToView(vm, userId))
                    {
                        // for a more convenient display of file size, call the conversion function
                        Tuple <double, ElementVM.Unit> size = new Tuple <double, ElementVM.Unit>(elem.Length, ElementVM.Unit.B);
                        size = ElementHelperClass.Recount(size);
                        ElementVM.FileType type = ElementHelperClass.DefineFileType(elem.Extension);

                        ElementVM model = new ElementVM
                        {
                            Id           = childFiles.Find(f => f.Path == elem.FullName).Id,
                            IsFolder     = false,
                            Type         = type,
                            ElemName     = elem.Name,
                            LastModified = elem.LastWriteTime.ToShortDateString(),
                            Size         = size,
                            IsShared     = file.IsShared
                        };
                        models.Add(model);
                    }
                }
            }

            return(models);
        }
Exemplo n.º 25
0
        // this method changes access to view for the selected folders and files and returns folder id
        public string ChangeAccess(string currFolderId, string userId, string[] foldersId, string[] filesId, bool openAccess)
        {
            Folder parent = _database.GetRepository <Folder>().Get(currFolderId);

            if (parent == null)
            {
                throw new StatusCodeException($"The folder with ID = {currFolderId} doesn't exists.", StatusCodes.Status404NotFound);
            }

            FolderVM parentVM = new FolderVM {
                IsShared = parent.IsShared, OwnerId = parent.OwnerId
            };

            if (CheckEditAccess(parentVM, userId))
            {
                string idForLink;
                if (foldersId.Length == 1 && filesId.Length == 0)
                {
                    idForLink = foldersId[0];
                }
                else
                {
                    idForLink = currFolderId;
                }

                foreach (string id in filesId)
                {
                    DAL.Entities.File file = _database.GetRepository <DAL.Entities.File>().Get(id);
                    if (file == null)
                    {
                        throw new StatusCodeException($"The file with ID = {id} doesn't exists.", StatusCodes.Status404NotFound);
                    }

                    FileVM vm = new FileVM {
                        IsShared = file.IsShared, OwnerId = _database.GetRepository <Folder>().Get(file.FolderId).OwnerId
                    };
                    if (CheckEditAccess(vm, userId))
                    {
                        file.IsShared = openAccess;
                        _database.GetRepository <DAL.Entities.File>().Update(file);
                    }
                }

                foreach (string id in foldersId)
                {
                    Folder folder = _database.GetRepository <Folder>().Get(id);
                    if (folder == null)
                    {
                        throw new StatusCodeException($"The folder with ID = {id} doesn't exists.", StatusCodes.Status404NotFound);
                    }

                    FolderVM vm = new FolderVM {
                        IsShared = folder.IsShared, OwnerId = folder.OwnerId
                    };
                    if (CheckEditAccess(vm, userId))
                    {
                        folder.IsShared = openAccess;
                        _database.GetRepository <Folder>().Update(folder);
                        ChangeChildrenAccess(folder, openAccess);
                    }
                }

                _database.Save();
                return(idForLink);
            }
            else
            {
                throw new StatusCodeException($"You don't have access to folder with ID = {currFolderId}.", StatusCodes.Status403Forbidden);
            }
        }
Exemplo n.º 26
0
        //[Route("[action]")]
        //public async Task<ActionResult<FileVM>> PostImage(FileVM UploadedImage)
        public async Task <IActionResult> PostImage(FileVM UploadedImage)
        {
            byte[] bytes = Convert.FromBase64String(UploadedImage.FileAsBase64);

            var credentials = new BasicAWSCredentials("AKIAYFOXPUFXRIBLXF4O", "kt30oEKBt35RZRxXD6rLRd2uxITL0aYX24qFXnox");

            var config = new AmazonS3Config
            {
                RegionEndpoint = Amazon.RegionEndpoint.USEast1
            };

            var image = new Image();

            using (var client = new AmazonS3Client(credentials, config))
            {
                using (var newMemoryStream = new MemoryStream(bytes))
                {
                    //file.CopyTo(newMemoryStream);

                    var uploadRequest = new TransferUtilityUploadRequest
                    {
                        InputStream = newMemoryStream,
                        Key         = UploadedImage.FileName,
                        BucketName  = "quickquoteitem",
                        CannedACL   = S3CannedACL.PublicRead
                    };

                    var fileTransferUtility = new TransferUtility(client);

                    try
                    {
                        await fileTransferUtility.UploadAsync(uploadRequest);
                    }
                    catch (Exception err)
                    {
                        throw err;
                    }
                }
            }

            AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient(credentials, Amazon.RegionEndpoint.USEast1);

            DetectLabelsRequest detectlabelsRequest = new DetectLabelsRequest()
            {
                Image = new Image()
                {
                    S3Object = new S3Object()
                    {
                        Name   = UploadedImage.FileName,
                        Bucket = "quickquoteitem"
                    },
                },
                MaxLabels     = 10,
                MinConfidence = 75F
            };

            try
            {
                var Labels = new List <LabelVM>();

                DetectLabelsResponse detectLabelsResponse =
                    await rekognitionClient.DetectLabelsAsync(detectlabelsRequest);

                //Console.WriteLine("Detected labels for " + photo);
                foreach (Label label in detectLabelsResponse.Labels)
                {
                    var item = new LabelVM();
                    item.LabelName       = label.Name;
                    item.LabelConfidence = label.Confidence.ToString();
                    Labels.Add(item);
                }
                return(Ok(Labels));
                //Console.WriteLine("{0}: {1}", label.Name, label.Confidence);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            //return CreatedAtAction("GetQuote", new { id = quote.QuoteID }, quote);
            return(Ok());
        }
Exemplo n.º 27
0
 public FileItemControl()
 {
     this.InitializeComponent();
     vm = DataContext as FileVM;
 }
Exemplo n.º 28
0
 public IHttpActionResult PostFile(FileVM file)
 {
     return(Json(FileService.SaveFile(file)));
 }