using Ropin.Inspection.Model;
using Ropin.Inspection.Model.Entities;
using Ropin.Inspection.Model.SearchModel;
using Ropin.Inspection.Model.ViewModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ropin.Inspection.Repository
{
    public interface ITsysUserRepository : IRepositoryBase<TSYS_User>, IRepositoryBaseById<TSYS_User, Guid>
    {
        //Task<TSYS_User> GetUserAsync(Guid userId);
        //Task<PagedList<TSYS_User>> GetAllAsync(UserResourceParameters parameters);
        void CheckUser(TsysUserCreateViewModel user);
        TSYS_User GetUser(TsysUserSearchModel user);
        Task<IEnumerable<TSYS_User>> GetByStoreCodeAsync(string storeCode);
        Task<IEnumerable<TSYS_User>> GetByRecordItemCodeAsync(string itemCode);
        Task<TSYS_User> LoginByAsync(LoginModel loginModel);
        Task<TsysUserDetailViewModel> GetUserDetailByAsync(LoginModel loginModel);
        TsysUserDetailViewModel GetUserDetail(LoginModel loginModel);
        Task<IEnumerable<TSYS_User>> GetUserDetailByRole(TsysUserByRoleSearchModel roleSearchModel);
        Task<PageData<TsysUserDetailWithOrgRoleViewModel>> GetByNameAsync(TsysUserSearchByNameModel searchModel);
    }
}