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.Services
{
    public interface IUserInsightTrackerService
    {
        PageResponse<CallDetailsResponse> GetCallDetails(SearchRequest<CallDetailFilterRequest> searchRequest, JwtTokenDetail userDetails);
        PageResponse<SystemSleepDetailResponse> GetSystemSleepDetails(SearchRequest<SystemSleepRequest> searchRequest, JwtTokenDetail userDetails);
        PageResponse<EmployeeWorkingTimeResponse> GetEmployeeWorkingTime(SearchRequest<EmployeeWorkingTimeRequest> searchRequest, JwtTokenDetail userDetails);
        PageResponse<SystemLoginDetailsResponse> GetSystemLoginDetails(SearchRequest<SystemLoginDetailsRequest> searchRequest, JwtTokenDetail userDetails);
        Task<PageResponse<RunningApplicationResponse>> GetRunningApplications(SearchRequest<RunningApplicationRequest> searchRequest, JwtTokenDetail userDetails);
        PageResponse<GraphDetailsResponse> GetGraphicData(SearchRequest<GraphDetailsRequest> searchRequest, JwtTokenDetail userDetails);
        PageResponse<DashboardDetailsResponse> GetDashboardData(SearchRequest<DashboardDetailsRequest> searchRequest, JwtTokenDetail userDetails);

        PageResponse<UserProfileResponse> GetUserProfileData(SearchRequest<UserProfileRequest> searchRequest, JwtTokenDetail userDetails);

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

        PageResponse<UserActivityDetailsResponse> GetUserActivityDetails(SearchRequest<UserActivityDetailsRequest> searchRequest, JwtTokenDetail userDetails);

        List<ApplicationActivityReportResponseResult> GetApplicationActivityReport(ApplicationActivityReportRequest searchRequest, JwtTokenDetail userDetails);

        List<CallsActivityReportResponseResult> GetCallsActivityReport(CallsActivityReportRequest searchRequest, JwtTokenDetail userDetails);

        List<SessionActivityReportResponseResult> GetSessionsActivityReport(SessionActivityReportRequest searchRequest, JwtTokenDetail userDetails);

        List<LogInActivityReportResponseResult> GetLogInActivityReport(LogInActivityReportRequest searchRequest, JwtTokenDetail userDetails);

        public ReportActivityResponseData GetReportActivity(JwtTokenDetail userDetails);

        PageResponseRequest<AllUserDetailsResponse> GetAllUser(SearchRequestResponse<UserDetailedRequest> searchRequest, JwtTokenDetail userDetails);

        DeleteUserResponse DeleteUser(DeleteUserRequest searchRequest, JwtTokenDetail userDetails);

        UserActiveResponse UserActive(UserActiveRequest searchRequest, JwtTokenDetail userDetails);
        UserActiveResponse AddUpdateUser(AddUpdateUserRequest searchRequest, JwtTokenDetail userDetails);
        Task<PageResponseRequest<AllUserDetailsUser>> GetUserExists(JwtTokenDetail userDetails);

        PageResponseRequest<SummaryDetailsResponse> GetUserSummaryDetails(SearchRequestResponse<SummaryDetailsRequest> searchRequest, JwtTokenDetail userDetails);

        PageResponse<BrowsingHistoryResponse> GetBrowsingDetails(SearchRequest<BrowsingHistoryRequest> searchRequest, JwtTokenDetail userDetails);

        PageResponse<ApplicationTabResponse> GetApplicationTabDetails(SearchRequest<ApplicationTabRequest> searchRequest, JwtTokenDetail userDetails);
        PageResponse<TopBottomDetailsResponseResult> GetSummaryTopBottomDetails(SummaryTopBottomDetails searchRequest, JwtTokenDetail userDetails);
        PageResponse<ApplicationTabDetailsResponse> GetRunningApplicationsDetailed(SearchRequest<ApplicationTabDetailsRequest> searchRequest, JwtTokenDetail userDetails);

        PageResponse<LocationDetailsResponse> GetLocationDetails(SearchRequest<LocationDetailsRequest> searchRequest, JwtTokenDetail userDetails);

        List<DataContracts.PermissionResponseResult> GetPermissionDetails(PermissionDetailRequest permissionDetailRequest, JwtTokenDetail userDetails);

        PageResponse<ManagerRolesResponse> GetManagerRoles(ManagerRolesRequest managerRoles, JwtTokenDetail userDetails);

        PageResponse<RoleDetailsResponse> GetRoleDetails(RoleDetailsRequest roleDetails, JwtTokenDetail userDetails);

        PageResponse<CreateRolesResponse> CreateOrModifyRoles(CreateRolesRequest createRoles, JwtTokenDetail userDetails);

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


        PageResponse<ApplicationPropertyResponse> GetAllApplication(JwtTokenDetail userDetails);

        PageResponse<MenuListResponse> GetAllMenu(JwtTokenDetail userDetails);




    }
}
