<?php

namespace App\Services\Admin\Contracts;

use Illuminate\Pagination\LengthAwarePaginator;

interface AdminServiceInterface
{
    public function getUserListWithStats(
        string|\App\DTOs\UserFilterDto $monthOrFilters,
        ?string $search = null,
        ?string $status = '1',
        ?string $role = null,
        ?string $department = null,
        ?string $flagSend = null
    ): array;

    public function getUserTransactions(string $msnv, string $selectedMonth): LengthAwarePaginator;

    public function createUser(array $data): void;

    public function updateUser(string|\App\Models\User $userOrMsnv, array $data): void;

    public function deactivateUser(string $msnv): void;

    public function resetAllCards(): void;

    public function updateAddCard(int $id, array $data): void;

    public function destroyAddCard(int $id): void;

    public function getUserByMsnv(string $msnv): \App\Models\User;

    public function getAddCardsHistory(string $buyerMsnv, ?string $selectedMonth = null): \Illuminate\Database\Eloquent\Collection;

    public function getActiveAdmins(): \Illuminate\Database\Eloquent\Collection;
}