private async Task <DeviceResponse> HandleAccountStatus(Device device, string type) { var now = DateTime.UtcNow.ToTotalSeconds(); var account = await _accountRepository.GetByIdAsync(device.AccountUsername).ConfigureAwait(false); if (account == null) { return(new DeviceResponse { Status = "error", Error = $"Failed to lookup account by username {device.AccountUsername}", }); } switch (type.ToLower()) { case "account_banned": if (account.FirstWarningTimestamp == null || string.IsNullOrEmpty(account.Failed)) { account.FailedTimestamp = now; account.Failed = "banned"; } break; case "account_warning": if (account.FirstWarningTimestamp == null) { account.FirstWarningTimestamp = now; } break; case "account_invalid_credentials": if (account.FirstWarningTimestamp == null || string.IsNullOrEmpty(account.Failed)) { account.FailedTimestamp = now; account.Failed = "invalid_credentials"; } break; } //await _accountRepository.UpdateAsync(account); await _accountRepository.AddOrUpdateAsync(account).ConfigureAwait(false); return(new DeviceResponse { Status = "ok", }); }