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();
        }
예제 #2
0
        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();
        }