using LSFE.Infrastructure.Model.Admin;
using LSFE.MobApp.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LSFE.MobApp.Contracts
{
    public interface IApiClient<T>
    {
        Task<LoginResponse> LoginAsync(LoginRequest entity);
        Task<List<T>> GetAllAsync();
        Task<T> GetByIdAsync(int id);
        Task<T> GetByIdAsync(Guid id);
        Task<List<T>> GetWithQueryAsync(Dictionary<string, string> queryParams);
        Task<ApiResponse<T>> CreateAsync(T entity);
        Task<ApiResponse<T>> UpdateAsync(Guid id, T entity);
        Task<ApiResponse<T>> DeleteAsync(Guid id);
        Task<ApiResponse<T>> CreateAttendanceAsync(T entity);
        Task<ApiResponse<T>> CreateCoveragePlanAsync(T entity);
    }
}