private async Task SaveFileConfirmationProcess(ReceivedConfirmationDto dto, UserEntity userEntity) { var providers = GetScopeDbContext(); var _dbContext = providers.DbContext; _logger.LogDebug($"Confirm arrived. {dto.Type} Arrived: {dto.ReceiveId} to user {dto.Token1}"); _onlineUserRepository.AddFilePieceToUser(userEntity, dto.ReceiveId); var filePeace = await _dbContext .VirtualFilePiece .Include(x => x.File) .FirstOrDefaultAsync(x => x.FilePieceId == dto.ReceiveId); filePeace.IsConfirmed = true; await _dbContext.SaveChangesAsync(); var connectedFilePeEntities = _dbContext .VirtualFilePiece .Where(x => x.FileId == filePeace.FileId); if (!connectedFilePeEntities.Any(x => x.IsConfirmed == false)) { filePeace.File.IsConfirmed = true; await _dbContext.SaveChangesAsync(); _logger.LogInformation($"The file {filePeace.FileId} ONLINE"); } providers.Scope.Dispose(); }
public async Task AddFilePiecesToOnlineUserAsync(IEnumerable <VirtualFileInput> filePieces, Guid userId) { var providers = GetScopeDbContext(); var _dbContext = providers.DbContext; if (filePieces == null) { throw new ArgumentNullException(nameof(filePieces)); } var userEntity = await _dbContext.User.FirstOrDefaultAsync(x => x.Token1 == userId) ?? throw new OperationFailedException($"The user {userId} not found", HttpStatusCode.NotFound, null); _onlineUserRepository.AddOnlineUser(userEntity); foreach (var filePiece in filePieces) { _onlineUserRepository.AddFilePieceToUser( user: userEntity, filePieceId: Guid.Parse(filePiece.Id)); } providers.Scope.Dispose(); }