public async Task <string> CreateFromBase64( FilesTypes fileType, Guid entityId, Guid creatorId, SrbacRoles creatorRole, string contentBase64 = null, string fileName = null ) { try { if (string.IsNullOrWhiteSpace(contentBase64)) { return(null); } if (string.IsNullOrWhiteSpace(fileName)) { fileName = Guid.NewGuid().ToString(); } var name = Path.GetFileNameWithoutExtension(fileName); var extension = GetFileExtension(contentBase64); using var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled); var fileModel = await _fileRepository.Create(new FileModel { EntityType = fileType, Extension = extension, Name = name, EntityId = entityId, CreatorId = creatorId }); var path = Path.Combine( _fileStorageConfiguration.AbsolutePath, fileType.ToString(), entityId.ToString() ); Directory.CreateDirectory(path); var filePath = Path.Combine(path, $"{fileModel.Id.ToString()}.{extension}"); await File.WriteAllBytesAsync(filePath, Convert.FromBase64String(contentBase64)); await _auditService.Success( AuditOperationTypes.CreateFile, "", fileModel, fileModel.Id, creatorId, creatorRole ); scope.Complete(); return(await GetFileUrl(entityId, fileType)); } catch (Exception e) { await _auditService.Error( AuditOperationTypes.CreateFile, e.Message, new AuditErrorObjectContainer { Model = new FileModel { EntityType = fileType, Name = fileName, EntityId = entityId }, Error = e }, null, creatorId, creatorRole ); throw; } }
public IEnumerable <string> GetFileUrls(Guid entityId, FilesTypes filesType) { throw new NotImplementedException(); }
public IFileReader UseRoleBaseSystem(FilesTypes fileType, FileData fileData) { while (true) { Console.WriteLine("Do you want to use role based security system?"); Console.WriteLine(" 1 - Yes"); Console.WriteLine(" 2 - No"); string input = Console.ReadLine(); switch (input) { case "1": if (fileType == FilesTypes.Text) { if (fileData == FileData.Decrypted) { return(Factory(ReaderType.TextFileRoleBased)); } else { return(Factory(ReaderType.TextFileEncryptRoleBased)); } } else if (fileType == FilesTypes.XML) { if (fileData == FileData.Decrypted) { return(Factory(ReaderType.XmlFileRoleBased)); } else { return(Factory(ReaderType.XmlFileEncryptRoleBased)); } } else { if (fileData == FileData.Decrypted) { return(Factory(ReaderType.JsonFileRoleBased)); } else { return(Factory(ReaderType.JsonFileEncryptRoleBased)); } } case "2": if (fileType == FilesTypes.Text) { if (fileData == FileData.Decrypted) { return(Factory(ReaderType.TextFile)); } else { return(Factory(ReaderType.TextFileEncrypt)); } } else if (fileType == FilesTypes.XML) { if (fileData == FileData.Decrypted) { return(Factory(ReaderType.XmlFile)); } else { return(Factory(ReaderType.XmlFileEncrypt)); } } else { if (fileData == FileData.Decrypted) { return(Factory(ReaderType.JsonFile)); } else { return(Factory(ReaderType.JsonFileEncrypt)); } } default: Console.WriteLine("Invalid option!"); break; } } }
public async Task <string> GetFileUrl(Guid entityId, FilesTypes filesType) { throw new NotImplementedException(); }
public IFileReader SubMenuEncryptSystem(FilesTypes fileType) { IFileReader reader; while (true) { Console.WriteLine("Do you want to use encryption system?"); Console.WriteLine(" 1 - Yes"); Console.WriteLine(" 2 - No"); string inputEncryptSystem = Console.ReadLine(); switch (inputEncryptSystem) { case "1": reader = UseRoleBaseSystem(fileType, FileData.Encrypted); if (reader != null) { return(reader); } if (fileType == FilesTypes.Text) { return(GenerateReaderTextFileEncrypt()); } else if (fileType == FilesTypes.XML) { return(GenerateReaderXmlFileEncrypt()); } else { return(GenerateReaderJsonFileEncrypt()); } case "2": reader = UseRoleBaseSystem(fileType, FileData.Decrypted); if (reader != null) { return(reader); } if (fileType == FilesTypes.Text) { return(GenerateReaderTextFile()); } else if (fileType == FilesTypes.XML) { return(GenerateReaderXmlFile()); } else { return(GenerateReaderJsonFile()); } default: Console.WriteLine("Invalid option!"); break; } } }