using Ropin.Inspection.Model;
using Ropin.Inspection.Model.Entities;
using Ropin.Inspection.Service.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;

namespace Ropin.Inspection.Service
{
    public interface ITbdmCodeService : IBaseService<TbdmCodeViewModel>, IBaseServiceById<TbdmCodeViewModel, string>
    {
        Task<List<TbdmCodeViewModel>> GetCodeListTreeAsync();
        Task<IEnumerable<TbdmDetailCode>> GetConditionDetailAsync(TbdmCodeSearchModel searchModel);
        Task<IEnumerable<TbdmCodeViewModel>> GetConditionAsync(TbdmCodeSearchModel searchModel);
        Task<IEnumerable<TbdmCodeViewModel>> GetByConditionAsync(Expression<Func<TbdmCodeViewModel, bool>> expression);
        Task CreateDetailAsync(TbdmCodeDetailCreateModel viewModel);
        Task DisabledStatusAsync(string id);
        Task DisabledDetailStatusAsync(string id);
        Task UpdateAsync(string code, TbdmCodeViewModel updateModel);
        Task UpdateDetailAsync(string code, TbdmCodeDetailUpdateModel updateModel);
        Task DeleteDetailAsync(string id);
    }
}