QrRapido/Services/IUserService.cs
2025-07-29 19:11:47 -03:00

30 lines
1.5 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> DecrementDailyQRCountAsync(string userId);
Task<bool> CanGenerateQRAsync(string? userId, bool isPremium);
Task SaveQRToHistoryAsync(string? userId, QRGenerationResult qrResult);
Task<List<QRCodeHistory>> GetUserQRHistoryAsync(string userId, int limit = 50);
Task<QRCodeHistory?> GetQRDataAsync(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);
}
}