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

namespace Ropin.Inspection.Service
{
    public interface ITdevDevStoreService : IBaseService<TdevDevStoreViewModel>, IBaseServiceById<TdevDevStoreViewModel, string>
    {
        Task<IEnumerable<TdevDevStoreViewModel>> GetAllAsync();
        Task<IEnumerable<TdevDevStoreViewModel>> GetByConditionAsync(Expression<Func<TdevDevStoreViewModel, bool>> expression);
        Task UpdateAsync(string code, TdevDevStoreUpdateModel updateModel);
        Task<IEnumerable<TdevDevStoreViewModel>> GetConditionAsync(TdevDevStoreSearchModel searchModel);
        Task<IEnumerable<DevStoreStatusGroup>> GetDevStoreStatusCount(TdevDevStoreSearchModel searchModel);
        Task DeleteByConditionAsync(string code);
        Task<TdevDevStoreDetailViewModel> GetDevStoreByQRCodeAsync(string qRCode, string storeCode);
        Task<TsysUserViewModel> GetUserByDevStoreIdAndRoleNameAsync(string devStoreId, string roleName);
        Task DevOperateByQRCodeAsync(DevOperateCreateModel mode);
        Task<string> GetDevStoreQRCodeAsync(string devStore);
        Task UpdateDevStoreRunSpotConfigAsync(string code, TdevDevStoreRunSpotConfigViewModel updateModel);
        Task UpdateDevStoreUserConfigAsync(string code, TdevDevStoreUserConfigViewModel updateModel);
        Task CopyCreateOneAsync(string oldId);
    }
}