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 ITsysLicenseService : IBaseService<TsysLicenseViewModel>, IBaseServiceById<TsysLicenseViewModel, Guid>
    {
        Task<IEnumerable<TsysLicenseViewModel>> GetAllAsync();
        Task<IEnumerable<TsysLicenseViewModel>> GetAllByOrgTypeAsync();
        Task<IEnumerable<TsysLicenseViewModel>> GetByConditionAsync(Expression<Func<TsysLicenseViewModel, bool>> expression);
        Task UpdateAsync(Guid id, TsysLicenseUpdateModel updateModel);
        Task<IEnumerable<TsysLicenseViewModel>> GetConditionAsync(TsysLicenseSearchModel searchModel);
        Task<IList<TsysLicenseTypeViewModel>> GetALLLicenseType();
        Task CreateLicenseTypeOneAsync(TSYS_LicenseType content);
        Task UpdateLicenseTypeAsync(string id, TSYS_LicenseType updateModel);
        Task<TsysLicenseTypePrivViewModel> GetLicensePrivByType(string typeCode);
        Task<IEnumerable<LicenseTypePrivViewModel>> GetLicensePrivsByTypeIdAsync(string typeId);
        Task CreateLicensePrivByType(string typeCode, IEnumerable<string> privCodes);
    }
}