using LittleShop.DTOs;
using LittleShop.Models;

namespace LittleShop.Services;

public interface ICustomerService
{
    Task<CustomerDto?> GetCustomerByIdAsync(Guid id);
    Task<CustomerDto?> GetCustomerByTelegramUserIdAsync(long telegramUserId);
    Task<CustomerDto> CreateCustomerAsync(CreateCustomerDto createCustomerDto);
    Task<CustomerDto?> UpdateCustomerAsync(Guid id, UpdateCustomerDto updateCustomerDto);
    Task<bool> DeleteCustomerAsync(Guid id);
    Task<IEnumerable<CustomerDto>> GetAllCustomersAsync();
    Task<IEnumerable<CustomerDto>> SearchCustomersAsync(string searchTerm);
    Task<CustomerDto?> GetOrCreateCustomerAsync(long telegramUserId, string displayName, string username = "", string firstName = "", string lastName = "");
    Task UpdateCustomerMetricsAsync(Guid customerId);
    Task<bool> BlockCustomerAsync(Guid customerId, string reason);
    Task<bool> UnblockCustomerAsync(Guid customerId);
}