QrRapido/Services/IUserService.cs
Ricardo Carneiro 16a9720a12
All checks were successful
Deploy QR Rapido / test (push) Successful in 59s
Deploy QR Rapido / build-and-push (push) Successful in 9m57s
Deploy QR Rapido / deploy-staging (push) Has been skipped
Deploy QR Rapido / deploy-production (push) Successful in 2m11s
feat: qrcode por creditos.
2026-01-26 20:13:45 -03:00

46 lines
2.4 KiB
C#

using QRRapidoApp.Models;
using QRRapidoApp.Models.ViewModels;
namespace QRRapidoApp.Services
{
public interface IUserService
{
Task<User?> GetUserAsync(string userId);
Task<User?> GetUserByEmailAsync(string email);
Task<User?> GetUserByProviderAsync(string provider, string providerId);
Task<User> CreateUserAsync(string email, string name, string provider, string providerId);
Task UpdateLastLoginAsync(string userId);
Task ActivatePremiumStatus(string userId, string stripeSubscriptionId, DateTime expiryDate);
Task DeactivatePremiumStatus(string stripeSubscriptionId);
Task UpdateUserStripeCustomerIdAsync(string userId, string stripeCustomerId);
Task<User?> GetUserByStripeCustomerIdAsync(string customerId);
Task<bool> UpdateUserAsync(User user);
Task<int> GetDailyQRCountAsync(string? userId);
Task<int> IncrementDailyQRCountAsync(string userId);
Task<int> GetRemainingQRCountAsync(string userId);
Task<bool> CanGenerateQRAsync(string? userId, bool isPremium);
Task SaveQRToHistoryAsync(string? userId, QRGenerationResult qrResult, int costInCredits = 0);
Task<List<QRCodeHistory>> GetUserQRHistoryAsync(string userId, int limit = 50);
Task<QRCodeHistory?> GetQRDataAsync(string qrId);
Task<bool> DeleteQRFromHistoryAsync(string userId, string qrId);
Task<int> GetQRCountThisMonthAsync(string userId);
Task<string> GetUserEmailAsync(string userId);
Task MarkPremiumCancelledAsync(string userId, DateTime cancelledAt);
Task<List<User>> GetUsersForHistoryCleanupAsync(DateTime cutoffDate);
Task DeleteUserHistoryAsync(string userId);
// QR Code Tracking (Analytics) - Premium feature
Task<QRCodeHistory?> GetQRByTrackingIdAsync(string trackingId);
Task IncrementQRScanCountAsync(string trackingId);
// Credit System & Deduplication
Task<bool> DeductCreditAsync(string userId);
Task<bool> AddCreditsAsync(string userId, int amount);
Task<bool> IncrementFreeUsageAsync(string userId);
Task<QRCodeHistory?> FindDuplicateQRAsync(string userId, string contentHash);
// Anonymous Security
Task<bool> CheckAnonymousLimitAsync(string ipAddress, string deviceId);
Task RegisterAnonymousUsageAsync(string ipAddress, string deviceId, string qrId);
}
}