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(); }
private async Task ProcessDeleteConfirmed(ReceivedConfirmationDto dto) { var providers = GetScopeDbContext(); var _dbContext = providers.DbContext; //törölni onlineuserrepo-ból //törölni db-ből var user = await _dbContext.User.FirstOrDefaultAsync(x => x.Token1 == dto.Token1) ?? throw new OperationFailedException( $"The user {dto.Token1} not found", HttpStatusCode.NotFound, null); user.AllocatedSpace -= dto.FilePeaceSize; await _dbContext.SaveChangesAsync(); var filePeace = await _dbContext .VirtualFilePiece .Include(x => x.File) .FirstOrDefaultAsync(x => x.FilePieceId == dto.ReceiveId); DeleteFilesRequiredEntity deleteItem; try { deleteItem = await _dbContext.DeleteItems.FirstOrDefaultAsync(x => x.FileId == filePeace.FileId && x.UserId == dto.Token1); } catch (Exception) { _onlineUserRepository.RemoveFilePeaceFromUser(dto.ReceiveId, dto.Token1); providers.Scope.Dispose(); return; } _onlineUserRepository.RemoveFilePeaceFromUser(dto.ReceiveId, dto.Token1); if (deleteItem != null) { _dbContext.DeleteItems.Remove(deleteItem); await _dbContext.SaveChangesAsync(); if (!(await _dbContext.DeleteItems.AnyAsync(x => x.FileId == filePeace.FileId))) { _dbContext.VirtualFile.Remove(filePeace.File); } } await _dbContext.SaveChangesAsync(); providers.Scope.Dispose(); }
private async Task SendConfirm(Guid filePeaceId, IncomingRequestType webSocketRequestType, long fileSize = 0) { var dto = new ReceivedConfirmationDto { Token1 = UserService.Instance.GetCurrentUser().Token1, RequestType = WebSocketRequestType.RECEIVED_COMFIRMATION, ReceiveId = filePeaceId, Type = webSocketRequestType, FilePeaceSize = fileSize }; await WriteStringToWebSocket(JsonConvert.SerializeObject(dto), _clientWebSocket); }
private async Task ProcessReceivedConfirmation(ReceivedConfirmationDto dto, WebSocket webSocket) { var providers = GetScopeDbContext(); var _dbContext = providers.DbContext; var userEntity = _dbContext .User .FirstOrDefault(x => x.Token1 == dto.Token1 && _webSocketRepository.IsUserAuthenticated(x)) ?? throw new UserNotFoundException(null, webSocket); _webSocketRepository.InsertOrUpdateUser(userEntity, webSocket); switch (dto.Type) { case ConfirmationType.SEND_FILE: _logger.LogDebug($"Confirm arrived. {dto.Type} Arrived: {dto.ReceiveId} to user {dto.Token1}"); break; case ConfirmationType.DELETE_FILE: _logger.LogDebug($"Confirm arrived. {dto.Type} Arrived: {dto.ReceiveId} to user {dto.Token1}"); await ProcessDeleteConfirmed(dto); break; case ConfirmationType.SAVE_FILE: await SaveFileConfirmationProcess(dto, userEntity); break; default: throw new ArgumentOutOfRangeException(); } providers.Scope.Dispose(); }