public virtual async Task ConsumeAsync(ConsumeGiftCardDto input) { var giftCard = await _giftCardManager.GetUsableAsync(input.Code, input.Password); var template = await _giftCardTemplateRepository.GetAsync(giftCard.GiftCardTemplateId); if (CurrentTenant.Id.HasValue && !template.TenantAllowed) { throw new GiftCardTemplateTenantNotAllowedException(template.Id); } if (!template.AnonymousConsumptionAllowed) { await AuthorizationService.CheckAsync(GiftCardManagementPermissions.GiftCards.Consume); } await _giftCardManager.ConsumeAsync(giftCard, CurrentUser.Id, input.ExtraProperties); }