using DataBase.Entities.Models;
using User.Insight.Tracker.DataContracts;
using User.Insight.Tracker.DataContracts.Requests;
using User.Insight.Tracker.DataContracts.Response;

namespace User.Insight.Tracker.DataProviders
{
    public interface ICommonServiceProvider
    {
        List<AuditDetails> GetAudit(SearchRequest<AuditRequest> filters, JwtTokenDetail userDetails);

        List<DeleteRole> DeleteRoles(SearchRequest<DeleteRoleRequest> filters, JwtTokenDetail userDetails);

        List<SmartSearch> GetSmartSearch(JwtTokenDetail userDetails , string EmpCode);

        List<GlobalConfiguration> GetGlobalConfiguration(SearchRequest<GlobalConfigurationRequest> filters, JwtTokenDetail userDetails);

        List<GlobalConfigurationUpdatePropertiesStatusDB> GlobalPropertiesStatus(SearchRequest<GlobalConfigurationUpdatePropertiesStatus> filters, JwtTokenDetail userDetails);

        List<GlobalConfigurationUpdatePropertiesValueDB> GlobalPropertiesValue(SearchRequest<GlobalConfigurationUpdatePropertiesRequest> filters, JwtTokenDetail userDetails);

        Task UpsertStafflineUsersAsync(List<EmployeeData> users);
        Task<bool> HasStafflineUsersAsync();
    }
}
