using Abp.Dependency; using Abp.Domain.Repositories; using Abp.Domain.Uow; using Abp.Webhooks; namespace VberZero.Webhooks; /// /// Implements using repositories. /// public class WebhookEventStore : IWebhookEventStore, ITransientDependency { private readonly IRepository _webhookRepository; private readonly IUnitOfWorkManager _unitOfWorkManager; public WebhookEventStore( IRepository webhookRepository, IUnitOfWorkManager unitOfWorkManager) { _webhookRepository = webhookRepository; _unitOfWorkManager = unitOfWorkManager; } public virtual async Task InsertAndGetIdAsync(WebhookEvent webhookEvent) { return await _unitOfWorkManager.WithUnitOfWorkAsync(async () => { using (_unitOfWorkManager.Current.SetTenantId(webhookEvent.TenantId)) { var id = await _webhookRepository.InsertAndGetIdAsync(webhookEvent); await _unitOfWorkManager.Current.SaveChangesAsync(); return id; } }); } public virtual Guid InsertAndGetId(WebhookEvent webhookEvent) { return _unitOfWorkManager.WithUnitOfWork(() => { using (_unitOfWorkManager.Current.SetTenantId(webhookEvent.TenantId)) { var id = _webhookRepository.InsertAndGetId(webhookEvent); _unitOfWorkManager.Current.SaveChanges(); return id; } }); } public virtual async Task GetAsync(int? tenantId, Guid id) { return await _unitOfWorkManager.WithUnitOfWorkAsync(async () => { using (_unitOfWorkManager.Current.SetTenantId(tenantId)) { return await _webhookRepository.GetAsync(id); } }); } public virtual WebhookEvent Get(int? tenantId, Guid id) { return _unitOfWorkManager.WithUnitOfWork(() => { using (_unitOfWorkManager.Current.SetTenantId(tenantId)) { return _webhookRepository.Get(id); } }); } }