using Ropin.Inspection.Model;
using Ropin.Inspection.Model.ViewModel;
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 ITmtnRepairOrderService : IBaseService<TmtnRepairOrderViewModel>, IBaseServiceById<TmtnRepairOrderViewModel, string>
    {
        Task<IEnumerable<TmtnRepairOrderViewModel>> GetAllAsync();
        Task<IEnumerable<TmtnRepairOrderViewModel>> GetByConditionAsync(Expression<Func<TmtnRepairOrderViewModel, bool>> expression);
        Task UpdateAsync(string code, TmtnRepairOrderUpdateModel updateModel);
        Task<IEnumerable<TmtnRepairOrderViewModel>> GetConditionAsync(TmtnRepairOrderSearchModel searchModel);
        Task DeleteAsync(string code);
        Task CreateRepairOrderAsync(TmtnRepairOrderViewModel content);
        Task<IEnumerable<TmtnRepairOrderWithImageViewModel>> GetRepairOrderWithImageAsync(TmtnRepairOrderSearchModel searchModel);
        Task<IEnumerable<TmtnRepairOrderRecordDetailViewMode>> GetRecordsConditionAsync(TmtnRepairOrderRecordSearchModel searchModel);

        Task<TispRecord30DaysStatisticsViewModel> GetRecords30DaysStatisticsAsync(string storeCode);
        Task<RepairStatistics> GetRepairStatisticsAsync(string storeCode);
        Task<IEnumerable<FullScreenRecordItem>> GetRepairStatisticsFullScreenAsync(string storeCode);
    }
}