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 IUserInsightTrackerProvider
    {
        List<CallDetail> GetEmployeeCallDetails(SearchRequest<CallDetailFilterRequest> filters, JwtTokenDetail userDetails);
        List<SystemSleepDetail> GetSystemSleepDetails(SearchRequest<SystemSleepRequest> filters, JwtTokenDetail userDetails);
        List<EmployeeWorkingTime> GetEmployeeWorkingTime(SearchRequest<EmployeeWorkingTimeRequest> filters, JwtTokenDetail userDetails);
        List<SystemLoginDetail> GetSystemLoginDetails(SearchRequest<SystemLoginDetailsRequest> filters, JwtTokenDetail userDetails);
        Task<List<RunningApplicationDetail>> GetRunningApplications(SearchRequest<RunningApplicationRequest> filters, JwtTokenDetail userDetails);
        List<GraphDetail> GetGraphicData(SearchRequest<GraphDetailsRequest> filters, JwtTokenDetail userDetails);
        List<DashboardDetails> GetDashboardData(SearchRequest<DashboardDetailsRequest> filters, JwtTokenDetail userDetails);
        List<UserProfile> GetUserProfileData(SearchRequest<UserProfileRequest> filters, JwtTokenDetail userDetails);

        List<ActivityDetails> GetAllActivity(int Type , JwtTokenDetail userDetails);

        List<UserActivityDetails> GetUserActivityDetails(SearchRequest<UserActivityDetailsRequest> filters, JwtTokenDetail userDetails);

        List<ApplicationActivityReportResult> GetApplicationActivityReport(ApplicationActivityReportRequest searchrequest, JwtTokenDetail userDetails);

        List<CallsActivityReportResult> GetCallsActivityReport(CallsActivityReportRequest searchrequest, JwtTokenDetail userDetails);

        List<SessionActivityReportResult> GetSessionsActivityReport(SessionActivityReportRequest searchrequest, JwtTokenDetail userDetails);

        List<LogInActivityReportResult> GetLogInActivityReport(LogInActivityReportRequest searchrequest, JwtTokenDetail userDetails);

        List<ReportActivityDetailsResults> GetReportActivity(JwtTokenDetail userDetails);

        List<AllUserDetails> GetAllUser(SearchRequestResponse<UserDetailedRequest> searchrequest, JwtTokenDetail userDetails);

        string DeleteUser(DeleteUserRequest searchrequest, JwtTokenDetail userDetails);

        UserActiveResponse UserActive(UserActiveRequest searchrequest , JwtTokenDetail userDetails);

        string AddUpdateUser(AddUpdateUserRequest searchrequest, JwtTokenDetail userDetails);

        Task<List<AllUser>> GetUserDetails(string Email);

        List<SummaryDetails> GetUserSummaryDetails(SearchRequestResponse<SummaryDetailsRequest> searchrequest, JwtTokenDetail userDetails);

        List<BrowsingHistoryDetails> GetBrowsingDetails(SearchRequest<BrowsingHistoryRequest> searchrequest, JwtTokenDetail userDetails);

        List<ApplicationTabDetail> GetApplicationTabDetails(SearchRequest<ApplicationTabRequest> searchrequest, JwtTokenDetail userDetails);

        List<TopBottomDetailsResponseResult> GetSummaryTopBottomDetails(SummaryTopBottomDetails searchrequest, JwtTokenDetail userDetails);
        List<ApplicationTabDetailsView> GetRunningApplicationsDetailed(SearchRequest<ApplicationTabDetailsRequest> searchrequest, JwtTokenDetail userDetails);

        List<LocationDetails> GetLocationDetails(SearchRequest<LocationDetailsRequest> filters, JwtTokenDetail userDetails);

        List<PermissionDetails> GetPermissionDetails(PermissionDetailRequest permissionDetailRequest, JwtTokenDetail userDetails);

        List<ManagerRoles> GetManagerRoles(ManagerRolesRequest managerRoles, JwtTokenDetail userDetails);

        List<RoleDetails> GetRoleDetails(RoleDetailsRequest roleDetails, JwtTokenDetail userDetails);

        List<CreateRoles> CreateOrModifyRoles(CreateRolesRequest createRoles, JwtTokenDetail userDetails);

        List<UpdateRoles> UpdateRolePermission(UpdateRoleRequest roleRequest, JwtTokenDetail userDetails);

        List<ApplicationProperties> GetAllApplication(JwtTokenDetail userDetails);

        List<MenuList> GetAllMenu(JwtTokenDetail userDetails);




    }
}
