using Ropin.Inspection.Model;
using Ropin.Inspection.Model.Entities;
using Ropin.Inspection.Model.SearchModel.MTN;
using Ropin.Inspection.Model.ViewModel.DEV;
using Ropin.Inspection.Model.ViewModel.MTN;
using Ropin.Inspection.Service.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;

namespace Ropin.Inspection.Service.MTN.Interface
{
    /// <summary>
    /// 报警工单
    /// </summary>
    public interface ITmtnAlarmOrderService : IBaseService<AlarmOrderViewModel>, IBaseServiceById<AlarmOrderViewModel, string>
    {
        /// <summary>
        /// 工单创建+工单记录
        /// </summary>
        /// <param name="viewModel"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        Task CreateOrderAsync(AddAlarmOrderViewModel viewModel);
        /// <summary>
        /// 工单修改
        /// </summary>
        /// <param name="code"></param>
        /// <param name="updateModel"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
       Task UpdateAsync(string code, AlarmOrderViewModel updateModel);
        /// <summary>
        /// 工单流程
        /// </summary>
        /// <param name="code"></param>
        /// <param name="updateModel"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        Task OrderFlowAsync(string code, UpdateAlarmOrderViewModel updateModel);
        /// <summary>
        /// 工单表列表
        /// </summary>
        /// <param name="searchModel"></param>
        /// <returns></returns>
        Task<IEnumerable<AlarmOrderViewModel>> GetAlarmOrderList(AlarmOrderSearchModel searchModel);
        /// <summary>
        /// 工单表移动端统计(6个月)
        /// </summary>
        /// <param name="storeCode"></param>
        /// <returns></returns>
        Task<RepairStatistics> GetAlarmOrderStatisticsAsync(string storeCode);
        /// <summary>
        /// 工单处理记录列表
        /// </summary>
        /// <param name="searchModel"></param>
        /// <returns></returns>
        Task<IEnumerable<AlarmOrderRecordViewModel>> GetAlarmOrderRecordList(AlarmOrderSearchModel searchModel);
        /// <summary>
        /// 工单处理记录附件列表
        /// </summary>
        /// <param name="searchModel"></param>
        /// <returns></returns>
        Task<IEnumerable<AlarmOrderFile>> GetAlarmOrderRecordAppList(string RecordId);
        /// <summary>
        /// 工单统计-状态
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<AlarmOrderStatistics> AlarmOrderStatistics(AlarmOrderSearchModel searchModel);
        /// <summary>
        /// 工单表详情-根据消息编号获取
        /// </summary>
        /// <param name="messageCode"></param>
        /// <returns></returns>
        Task<AlarmOrderViewModel> GetByMessageCodeAsync(string messageCode);
    }
}