using Ropin.Inspection.Model;
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 ITmtnDevOpsRecordService : IBaseService<TmtnDevOpsRecordViewModel>, IBaseServiceById<TmtnDevOpsRecordViewModel, Guid>
    {
        Task<IEnumerable<TmtnDevOpsRecordViewModel>> GetAllAsync();
        Task<IEnumerable<TmtnDevOpsRecordViewModel>> GetByConditionAsync(Expression<Func<TmtnDevOpsRecordViewModel, bool>> expression);
        Task UpdateAsync(string code, TmtnDevOpsRecordUpdateModel updateModel);
        Task<IEnumerable<TmtnDevOpsRecordViewModel>> GetConditionAsync(TmtnDevOpsRecordSearchModel searchModel);
        Task DeleteAsync(string code);
        Task CreateDevOpsRecordListAsync(TmtnDevOpsRecordListCreateModel model);
        Task UpdataDevOpsRecordListAsync(TmtnDevOpsRecordListUpdataModel model);
        Task<IEnumerable<TmtnDevOpsRecordDetailViewModel>> GetRecordsConditionAsync(TmtnDevOpsRecordDetailSearchModel searchModel);
        Task<IEnumerable<TmtnDevOpsDetailViewModel>> GetDevOpsAsync(TmtnDevOpsDetailSearchModel searchModel);
        Task<List<List<TmtnDevOpsRecordDetailWithImageViewModel>>> GetRecordItemsGroupByRecordIdAsync(string recordId);
        Task<IEnumerable<TmtnDevOpsRecordDetailWithImageViewModel>> GetRecordItemsByRecordIdAsync(string recordId);
    }
}