using Health.Domain.Entities;

namespace Health.Application.Users;

public sealed record UserProfileDto(
    Guid Id,
    string Phone,
    string Role,
    string? Name,
    string? Gender,
    string? BirthDate,
    string? AvatarUrl);

public sealed record UserProfileUpdateRequest(
    string? Name,
    string? Gender,
    DateOnly? BirthDate);

public interface IUserService
{
    Task<UserProfileDto?> GetProfileAsync(Guid userId, CancellationToken ct);
    Task<bool> UpdateProfileAsync(Guid userId, UserProfileUpdateRequest request, CancellationToken ct);
    Task DeleteAccountAsync(Guid userId, CancellationToken ct);
}

public interface IUserRepository
{
    Task<User?> GetAsync(Guid userId, CancellationToken ct);
    Task SaveChangesAsync(CancellationToken ct);
    Task DeleteAccountDataAsync(Guid userId, CancellationToken ct);
}
