using Microsoft.AspNetCore.Http;
using Rs_system.Models.ViewModels;
namespace Rs_system.Services;
public interface IMiembroService
{
///
/// Gets all active members with their work group information
///
Task> GetAllAsync();
///
/// Gets a member by ID
///
Task GetByIdAsync(long id);
///
/// Creates a new member
///
Task CreateAsync(MiembroViewModel viewModel, string createdBy, IFormFile? fotoFile = null);
///
/// Updates an existing member
///
Task UpdateAsync(long id, MiembroViewModel viewModel, IFormFile? fotoFile = null);
///
/// Soft deletes a member
///
Task DeleteAsync(long id);
///
/// Gets all active work groups for dropdown
///
Task> GetGruposTrabajoAsync();
///
/// Imports members from a CSV stream
///
/// The stream of the CSV file
/// The user creating the members
/// A tuple with success count and a list of error messages
Task<(int SuccessCount, List Errors)> ImportarMiembrosAsync(Stream csvStream, string createdBy);
///
/// Gets paginated members with optional search
///
/// Current page number (1-based)
/// Number of items per page
/// Optional search query to filter by name
/// Paginated result with members
Task> GetPaginatedAsync(int page, int pageSize, string? searchQuery = null);
}