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

namespace Ropin.Inspection.Repository.Interface
{
    public interface ITispRecordRepository : IRepositoryBase<TISP_Record>, IRepositoryBaseById<TISP_Record, Guid>
    {
        Task<TispRecordViewModel> GetRecordAsync(Guid id);
        Task<IEnumerable<TispRecordDetailViewModel>> GetRecordsConditionAsync(TispRecordSearchModel searchModel);
        Task<IEnumerable<AllSpotRecordWithDevViewModel>> GetAllSpotRecordAsync(AllSpotRecordSearchModel searchModel);
        Task<IEnumerable<AllSpotRecordViewModel>> GetUserSpotRecordAsync(UserSpotRecordSearchModel searchModel);
        Task<int> GetUserTodaySpotRecordCountAsync(Guid id, string storeCode);
        //Task<int> GetAllTodaySpotRecordCountAsync(string storeCode);
        Task<int> GetUserTodayNotSpotRecordCountAsync(Guid id, string storeCode);
        //Task<int> GetAllTodayNotSpotRecordCountAsync();
        //Task<IEnumerable<AllSpotRecordViewModel>> GetUserTodaySpotRecordsAsync(Guid id);
        //Task<IEnumerable<AllSpotRecordViewModel>> GetUserTodayNotSpotRecordsAsync(Guid id);
        //Task<IEnumerable<TispRecord30DaysStatistics>> GetRecords30DaysStatisticsAsync();
        //Task<IEnumerable<AlarmRecovery7DaysStatistics>> GetAlarmRecovery7DaysStatisticsAsync();
        //Task<TodaySpotStatistics> GetTodaySpotStatisticsAsync();
        //Task<TodaySpotContentStatistics> GetTodaySpotContentStatisticsAsync();
        //Task<IEnumerable<Record12MonthStatistics>> GetRecord12MonthStatisticsAsync();
        Task<int> GetAllTodaySpotRecordCountAsync(string storeCode);
        Task<int> GetAllTodayNotSpotRecordCountAsync(string storeCode);
        Task<IEnumerable<AllSpotRecordViewModel>> GetUserTodaySpotRecordsAsync(Guid id, string storeCode);
        Task<IEnumerable<AllSpotRecordViewModel>> GetUserTodayNotSpotRecordsAsync(Guid id, string storeCode);
        Task<IEnumerable<TispRecord30DaysStatistics>> GetRecords30DaysStatisticsAsync(string storeCode);
        Task<IEnumerable<AlarmRecovery7DaysStatistics>> GetAlarmRecovery7DaysStatisticsAsync(string storeCode);
        Task<TodaySpotStatistics> GetTodaySpotStatisticsAsync(string storeCode);
        Task<TodaySpotContentStatistics> GetTodaySpotContentStatisticsAsync(string storeCode);
        Task<IEnumerable<Record12MonthStatistics>> GetRecord12MonthStatisticsAsync(string storeCode);
    }
}