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

namespace Ropin.Inspection.Service.Interface
{
    public interface ITispSpotUserService : IBaseService<TispSpotUserViewModel>, IBaseServiceById<TispSpotUserViewModel, Guid>
    {
        Task<IEnumerable<TispSpotUserViewModel>> GetAllAsync();
        Task<IEnumerable<TispSpotUserViewModel>> GetByConditionAsync(Expression<Func<TispSpotUserViewModel, bool>> expression);
        Task UpdateAsync(Guid id, TispSpotUserUpdateViewModel updateModel);
        Task<IEnumerable<TispSpotUserViewModel>> GetBySpotIdAsync(Guid spotId);
        Task<IEnumerable<TispUserStoreRouteSpotViewModel>> GetByUserIdAsync(Guid userId);
        Task<IEnumerable<TispSpotUserViewModel>> GetAsyncByPage(int pageSize, int pageIndex);
        Task<IEnumerable<TispSpotUsersViewModel>> GetSpotUsersAsyncByPage(TispSpotUserSearchModel searchViewModel);
        Task CreateSpotsUsersAsync(TispSpotUserCreateViewModel viewModel);
        Task CreateSpotsUserAsync(TispSpotUserCreateViewModel viewModel);
        Task<IEnumerable<TispSpotUsersViewModel>> GetSpotUsersAsyncByPage(int pageSize, int pageIndex);
    }
}