public virtual Task <bool> IsSubscribedAsync(int?tenantId, string webhookName) { return(_asyncQueryableExecuter.AnyAsync(_webhookSubscriptionRepository.GetAll() .Where(subscriptionInfo => subscriptionInfo.TenantId == tenantId && subscriptionInfo.IsActive && subscriptionInfo.Webhooks.Contains("\"" + webhookName + "\"") ))); }
public async Task <bool> HasXConsecutiveFailAsync(long?tenantId, Guid subscriptionId, int failCount) { using (_unitOfWorkManager.Current.SetTenantId(tenantId)) { if (await _webhookSendAttemptRepository.CountAsync(x => x.WebhookSubscriptionId == subscriptionId) < failCount) { return(false); } return(!await _asyncQueryableExecuter.AnyAsync( _webhookSendAttemptRepository.GetAll() .OrderByDescending(attempt => attempt.CreationTime) .Take(failCount) .Where(attempt => attempt.ResponseStatusCode == HttpStatusCode.OK) )); } }