using ASHermed.SinoInterface.Api.ContractModel;
using ASHermed.SinoInterface.Api.ContractModel.App;
using ASHermed.SinoInterface.Api.ContractModel.App.Entity;
using ASHermed.SinoInterface.Api.ContractModel.App.Model;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using ASHermed.SinoInterface.ContractModel;

namespace ASHermed.SinoInterface.Api.IService.App
{
    public interface INewPortalService
    {
        /// <summary>
        /// 获取医生详情
        /// </summary>
        /// <param name="docId"></param>
        /// <param name="language"></param>
        /// <returns></returns>
        Dic_Doctor GetDoctorDetail(int docId, int language);
        /// <summary>
        /// 获取科室详情
        /// </summary>
        /// <param name="deptId"></param>
        /// <param name="language"></param>
        /// <returns></returns>
        DeptModel GetDeptDetail(int deptId, int language);

        List<NewPortalSlotDateForDeptModel> GetSchedulingForDept(int language, double lon, double lat, int deptId, string taday, int hosId = 0, bool isShowAll = true);
        NewPortalDeptDetail GetNewPortalDeptDetail(int deptId, int language);
        /// <summary>
        /// 获取预约页医生信息
        /// </summary>
        /// <param name="language"></param>
        /// <returns></returns>
        Task<AptDocInfo> GetAptDocInfo(int docId, int language);

        Task<AptDocScheduling> GetDocScheduling(int docId, int deptId, string dateTime, double lon, double lat, int language);
        Task<AptRecordModel> GetUserLockRecord();
        Task<bool> UserAbandonApt();
        Task<AptDetail> GetOutAptInfoDetail(int aptId, int WechatStatus, int language);
        Task<BaseResponse<int>> AgainApt(int aptId);
        bool CheckQuest(AptCommitModel model);
        Task<int> UserFeedback(UserFeedback feedback);
        /// <summary>
        /// 获取授权申请内容
        /// </summary>
        /// <returns></returns>
        List<Pub_Authorization_Detail> GetAuthorizationDetail(int language);
        /// <summary>
        /// 创建授权申请
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        bool CreateAuthorization(Pub_AuthorizationDto model, int language);
        /// <summary>
        /// 获取用户最新提交的授权申请
        /// </summary>
        /// <returns></returns>
        Pub_AuthorizationDto GetAuthorization(int patId);

        PubAuthorizationView GetAuthorizationForId(int id);

        BaseResponse<bool> Authorization(Pub_AuthorizationDto model);
        BaseResponse<bool> CheckAuthorization(int patid, bool isAdd, int language);
        bool NoAuthorization(int id);
        List<PubAuthorizationView> AuthorizationList();
        List<PubAuthorizationView> BindList();
        Tuple<bool, string> UpdateAuthorizationStatus(Pub_AuthorizationDto model);
        bool RelieveAuthorization(int id);
        bool InitQueue();
        BaseResponse<bool> CancelOutApt(int id);
    }
}
