<?php

namespace App\Repositories\Interfaces;

use App\Models\User;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;

interface CustomerRepositoryInterface extends RepositoryInterface
{
    /**
     * Get active customers.
     */
    public function getActive(): Collection;

    /**
     * Get inactive customers.
     */
    public function getInactive(): Collection;

    /**
     * Search customers by name or mobile.
     */
    public function search(string $term): self;

    /**
     * Filter by date range.
     */
    public function createdBetween(string $from, string $to): self;

    /**
     * Get customers with orders.
     */
    public function withOrders(): self;

    /**
     * Get customer by mobile.
     */
    public function findByMobile(string $mobile): ?User;

    /**
     * Force delete soft-deleted customers by mobile.
     */
    public function forceDeleteByMobile(string $mobile): int;
}
