using Ropin.Inspection.Model;
using Ropin.Inspection.Model.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Ropin.Inspection.Model.ViewModel;

namespace Ropin.Inspection.Repository
{
    public interface ITmtnDevOpsRecordRepository : IRepositoryBase<TMTN_DevOpsRecord>, IRepositoryBaseById<TMTN_DevOpsRecord, Guid>
    {
        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);
        Task<IEnumerable<TMTN_DevOps>> GetDevOpsList(TmtnDevOpsDetailSearchModel searchModel);
    }

    public interface ITmtnDevOpsRepository : IRepositoryBase<TMTN_DevOps>, IRepositoryBaseById<TMTN_DevOps, string>
    {
        Task<IEnumerable<TmtnDevOpsWithImageViewModel>> GetDevOpsWithImageAsync(TmtnDevOpsOrderSearchModel searchModel);
        Task<IEnumerable<Record12MonthStatistics>> GetRecord12MonthStatisticsAsync(string storeCode);
        Task<IEnumerable<TispRecord30DaysStatistics>> GetRecords30DaysStatisticsAsync(string storeCode);
        Task<IEnumerable<DevOpsFullScreenRecord>> GetDevOpsFullScreenByDevIdAsync(DevOpsItemSearchModel searchModel);
        Task<IEnumerable<DevOpsFullScreenRecord>> GetDevRepairFullScreenByDevIdAsync(DevOpsItemSearchModel searchModel);
        Task<IEnumerable<DevOpsFullScreenRecord>> GetISPRecordAsync(DevOpsItemSearchModel searchModel);
    }
}