import NewAxiosInstanceFunc from '../Service/NewAxiosInstance'
import { INewResponse } from '../Service/INewResponse'
import { IGoodsListItem, IPaging } from 'Material/Material.service'
import { IAuthInfo, IIndustryVideo } from 'Indepth/Indepth.service'
import { INewestItem } from 'Newest/Newest.service'
export interface IActivityHomeListItem {
  ActivityTypeId: number //活动类型id
  Resource: number //来源 ，1：活动 ，2：专项产业调研
  ActivityTypeName: string //活动类型名称
  OnlineIco: string //线上线下Ico图标
  ImgUrlBgPc: string
  List: IActivityLabelTypeItem[]
}
export interface IActivityLabelTypeItem {
  KeyWord: string //主题
  ImgUrlBg: string
  ActivityId: number
  Resource: number //来源 ，1：活动 ，2：专项产业调研
  IsNew: boolean //是否为新：活动存在关联的的产业所关联的报告均在3个月内/无报告则标记新
  YidongActivityId: number
  IsExternalLabel: boolean //是否为外部资源
  City: string // 城市
  Days: number // ??
  IsShowSubjectName: number // ??
  TemporaryLabel: string // ??
  TripStatus: number // //行程进行状态 1：预报名，2：确定行程
  IsResearchPoints: boolean // 是否为研选扣点
  IsResearch: boolean // 是否为买方研选
}
export interface IPermissionItem {
  ChartPermissionId: number
  PermissionName: string
}
export interface IActivityTypeParams {
  PageSize: number
  CurrentIndex: number
  ActivityTypeId?: number // 动类型id 多个用 , 隔开
  Label?: string // 搜索主题
  ChartPermissionIds?: string // 行业id 多个用 , 隔开
  WhichDay?: string // 哪一天 今天：1、明天:2，本周：3 上周：4,本月：5上月：6 多个用 , 隔开
  ActiveState?: string // 活动进行状态 未开始：1、进行中2、已结束3；多个用 , 隔开
  IsPower?: number // 是否选择有权限行业 ，1是 0 否 默认0
  PlayBack?: number // 是否仅展示回放 1：是、0：否 默认0
  KeyWord?: string // 搜索关键词 多个用 , 隔开
  Filter?: number // 筛选条件 0:全部 1:视频 2:音频"
  ActivityId?: number // 活动列表传过来的活动ID 处理新标签
  IsExternalLabel?: number // 是否仅展示外部资源 1：是
  IsResearchPoints?: number // 是否仅展示研选扣点 1：是
  IsResearch?: boolean // 是否仅展示研选
}
export interface IActivityTypeListItem extends IActivityDetialBase {
  VoiceList: null //音频数据
}
export interface IActivityDetialBase {
  AuthInfo: IAuthInfo
  ActivityId: number //活动ID
  ActivityTypeId: number //活动类型id 1专家电话会，2分析师电话会，3公司调研电话会，4公司线下调研，5专家线下沙龙，6分析师线下沙龙，7分析师电话会（c类）
  ActivityTypeName: string //活动类型名称
  ChartPermissionId: number //行业id
  ChartPermissionName: string //行业名称
  IsLimitPeople: number //是否限制人数 1是，0否
  LimitPeopleNum: number //限制的人数数量
  LastUpdatedTime: string //更新时间
  ActivityTime: string //活动时间 (活动预期时间)
  ActivityTimeText: string //活动时间带文字
  DistinguishedGuest: string //嘉宾
  Host: string //主持人
  Speaker: string //主讲人
  MainlandTell: string //大陆拨入号
  HongKongTell: string //香港拨入号
  TaiwanTell: string //台湾拨入号
  AmericaTell: string //美国拨入号
  ParticipationCode: string //参会密码
  Theme: string //主题
  Expert: string //专家
  ActivityName: string //活动名称
  OnlineParticipation: string //网络参会
  LinkParticipants: string // 链接参会
  ReportLink: string //报告链接
  City: string //城市
  Address: string //活动地址
  Highlights: string //活动亮点
  Remarks: string //备注
  IsSignup: number //是否已报名 1是 ，0 否-是普通活动 (是否感兴趣 1是 ，0 否-专项调研的)(是否预约外呼 1是 ，0 否)
  IsAppointment: number //是否已预约纪要 1是 ，0 否
  IsCancelMeetingReminder: number //是否添加了消息消息提醒   1是 ，0 否
  ActiveState: string //活动进行状态 未开始：1、进行中2、已结束3
  IsShowSustainable: boolean //是否展示限免标签
  Description: string //研选内容说明
  IsResearch: boolean //是否属于研选
  IsResearchSpecial: boolean // 是否需要正式的买方研选权限
  IsHideAppointment: number //是否隐藏预约纪要按钮  1是，0 否
  IsCClassMeeting: boolean //是否是c类电话会
  Label: string //主题标签
  ImgUrl: string //行业图片链接
  ImgUrlText: string //活动类型图片链接
  ActivityType: number //活动线上线下类型 1线上，0 线下
  IsShowOutboundCall: boolean //是否展示预约外呼
  IsShowMeetingReminder: boolean //是否展示会议提醒
  IsShowHelpSsk: boolean //是否展示帮我带问
  IsShowSignup: boolean //是否展示我要报名
  IsShowAppointment: boolean //是否展示预约纪要
  IsShowDetails: boolean //是否展示查看详情按钮
  AudioLink: boolean //是否展示回放按钮
  FileType: number //类型: 1-音频; 2-视频
  SourceType: number //活动来源。 1：活动 、2：专项产业调研
  VoiceDetail: IAudioDetail //音频数据
  VideoDetail: {
    ActivityId: number //活动ID
    Id: number //视频id
    Title: string //视频名称
    ResourceUrl: string //视频地址
    VideoDuration: number //视频时长
  } //视频数据
  YidongActivityUrl: string // 易懂活动链接
  SignupType: number // 参会方式 1预约外呼，2自主拨入，3我要报名 4自主入会
  IsYidongActivity: boolean // 是否属于易董同步过来的活动
  IsYidongConduct: boolean // 是否属于易董办会
  IsCanOutboundCall: number // 是否有外呼 0为否，1为有
  TencentConferenceNumber: string // 腾讯会议号
  IsExternalLabel: boolean // 是否仅展示外部资源
  IsResearchPoints: boolean // 是否仅展示研选扣点
  SiginupDeadline: string // 报名截至日期
  AppAttendance: string // App参会
  ConferencePassword: string // 会议密码
  CancelDeadline: string // 取消报名截止时间
  TopTime: number // 置顶时间
  LabelKeywordImgLink: string // 标签关键字图片链接
  Days: number //调研天数
  Explain: string //说明
  IsTrip: number //是否报名 1是 ，0 否
  ShareImg: string //分享图片
  TripImgLink: string //行程图片链接
  TripStatus: number //行程进行状态 1：预报名，2：确定行程
  IsShowWxPay: boolean //是否是开启了支付
}
export interface IAudioDetail {
  ActivityId: number // 活动ID
  Name: string // 音频名称
  PlaySeconds?: number // 时长
  Url: string //地址
  Type?: number // 类型  1-音频; 2-活动视频; 3-产业视频
  SourceId?: number // ID
}
export interface IActivityTypeListRes {
  Paging: IPaging
  List: IActivityTypeListItem[]
  Label: string //主题
  ImgUrl: string //图片路径
  IsResearch: boolean //是否属于研选
  IsResearchSpecial: boolean // 是否属于特殊的研选
  IsJump: boolean //是否跳转
  IndustrialManagementId: number //产业ID
  IndustryNewLabel: boolean //产业是否新标签
  ChartPermissionId: number // 行业ID
  IsShowResearchPoints: boolean // 是否显示研选扣点
}
export interface IActivityTypeDetailRes {
  Detail: IActivityTypeDetail
  GoodsList: IGoodsListItem[] // 商品信息
  HasPermission: number //1:有该行业权限,正常展示，2：无该行业权限，不存在权益客户下（ficc），3:无该品类权限,已提交过申请，4：无该品类权限,未提交过申请，5：潜在客户，未提交过申请，6：潜在客户,已提交过申请
  IsCompanyApply: boolean // 机构是否申请过试用
  IsNeedBusinessCard: boolean // 是否需要上传名片
  IsResearch: boolean // 是否是买方研选
  IsResearchSpecial: boolean // 是否属于特殊的研选
  IsShowWxPay: boolean // 是否展示微信支付
  OrderCode: string // 订单号
  PayTimeCountdown: number // 支付倒计时
  PopupMsg: string //权限弹窗信息
  PopupPriceMsg: string //价格弹窗信息
  SellerMobile: string //销售电话
  SellerName: string //销售姓名
}
export interface IActivityTypeDetail extends IActivityDetialBase {
  IsNeedBusinessCard: boolean // 是否需要上传名片
  IsResearchPointsByUser: boolean //是否为扣用户点数的研选扣点
  SignupNum: number //已报名人数
  ArticleList: IArticleListItem[]
  Listndustrial: IListndustrialItem[] //活动关联的产业信息
}
export interface IArticleListItem {
  ArticleId: number // id
  ReportLink: string // 报告链接
  Title: string // 报告标题
}

export interface IListndustrialItem {
  ArticleReadNum: number // 文章阅读数量
  ChartPermissionId: number // 权限id
  IndustrialManagementId: number // 产业id
  IndustryName: string // 产业名称
  IndustryNewLabel: boolean // 产业是否新标签
  IsJump: boolean // 是否跳转
  IsResearch: boolean // 是否属于研选
  LayoutTime: string // 布局时间
  RecommendedIndex: number // 推荐指数
}
export interface IActivitySpecialListRes {
  IsFollow: boolean // 是否关注新调研通知
  IsBindingMobile: boolean // 是否绑定了手机号
  Paging: IPaging
  List: IActivitySpecialListItem[]
}
export interface IActivitySpecialListItem extends IActivityDetialBase {
  SpecialType: number //调研形式、 1 线上 ， 2 线下
  ResearchTheme: string //调研主题
  // TripImgLink: string //行程图片链接
  IndustrialName: string //产业名称
  IndustrialSubjectName: string //标的名称（相关公司
  Scale: string
  CustomerTypeIds: string
  // IsTrip: number //是否报名 1是 ，0 否
  TripNum: number //已报名人数
  // Days: number //调研天数
  PersonInCharge: number //纪要负责人
  TripImgLinkFix: string //确定行程之后的图片链接
  ActivityTimeTextByDay: number //活动预期时间带周日
  ActivityTimeEnd: string
  // TripStatus: number //行程进行状态 1：预报名，2：确定行程
  // Explain: string //说明
  AdminId: number
}
export interface IActivitySpecialDetailRes {
  HasPermission: number //1:有该行业权限,正常展示，2：无该行业权限，不存在权益客户下（ficc），3:无该品类权限,已提交过申请，4：无该品类权限,未提交过申请，5：潜在客户，未提交过申请，6：潜在客户,已提交过申请
  PopupMsg: string //权限弹窗信息
  SellerMobile: string //销售电话
  SellerName: string //销售姓名
  IsFollow: boolean //是否关注新调研通知
  Detail: IActivitySpecialListItem
}
export interface IActivitySignupRes {
  SignupStatus: string //返回状态：人数已满：FullStarffed、单机构超过两人：TwoPeople、爽约次数过多：BreakPromise、超时：Overtime 、成功：Success
  GoFollow: boolean //是否去关注公众号
  SignupType: number //报名方式，1预约外呼，2自主拨入，3我要报名
  ActivityId: number //活动ID
  HaqveJurisdiction: boolean //是否有权限
  HasPermission: number //1:有该行业权限,正常展示，2：无该行业权限，不存在权益客户下（ficc），3:无该品类权限,已提交过申请，4：无该品类权限,未提交过申请，5：潜在客户，未提交过申请，6：潜在客户,已提交过申请
  PopupMsg: string //权限弹窗信息
  SellerMobile: string //销售电话
  SellerName: string //销售姓名
  Mobile: string //外呼手机号
  CountryCode: string //外呼手机号区号
  GoOutboundMobile: boolean //是否去绑定手机号
  GoBindEmail: boolean //是否去绑定邮箱
  IsResearch: boolean // 是否属于研选
  IsResearchSpecial: boolean // 是否属于特殊的研选
}
export interface IActivityCheckRes {
  IsPayActivity: boolean //是否是付费活动
  IsNeedBusinessCard: boolean //已有归属机构
  CheckSiginUpNum: boolean //人数是否通过校验
  GoodsList: IGoodsListItem[]
  IsShowWxPay: boolean // 是否展示微信支付
  CheckPermission: boolean //权限是否通过校验
  HasPermission: number
  PopupMsg: string //权限弹窗信息
  SellerMobile: string //销售电话
  SellerName: string //销售姓名
  Mobile: string //手机号
  IsResearch: boolean //是否属于研选
  IsResearchSpecial: boolean //是否属于特殊的研选
  CheckTime: boolean //时间是否通过校验
  CheckEmail: boolean //邮箱是否通过校验
  CheckPoints: boolean //扣点是否通过校验
  CompanyPoints: string //公司剩余点数
  ActivityPoints: string //本场活动要扣除的点数
  CancelPopupMsg: string // 取消报名时间弹窗信息
}
export interface IActivitySpecialTripAddRes {
  ActivityId: number //活动ID
  HasPermission: number //1:有该行业权限,正常展示，2：无该行业权限，不存在权益客户下（ficc），3:无该品类权限,已提交过申请，4：无该品类权限,未提交过申请，5：潜在客户，未提交过申请，6：潜在客户,已提交过申请"
  PopupMsg: string //权限弹窗信息
  PopupMsg2: string //权限弹窗信息2
  Status: number //返回类型，1:添加，2：取消
  SellerMobile: string //销售电话
  SellerName: string //销售姓名
  SignupStatus: number //返回状态：1：成功 、2 ：人数已满 、3：调研次数已用完、 4：超时
}
export interface ISearchActivityRes {
  Paging: IPaging
  List: INewestItem[]
}
export interface IYidongDetialRes {
  HasPermission: number
  PopupMsg: string
  SellerMobile: string
  SellerName: string
  IsResearch: boolean
  IsResearchSpecial: boolean
  YidongActivityUrl: string
}

export const ActivityService = {
  getActivityHomeList: (
    ActiveState: string, // 活动进行状态 未开始：1、进行中2、已结束3 多个用 , 隔开
    WhichDay?: string, // 哪一天 今天：1、明天:2，多个用 , 隔开
    ChartPermissionIds?: string, // 行业id 多个用 , 隔开
    IsPower?: number // 是否选择有权限行业 ，1是 0 否 默认0
  ): INewResponse<{ List: IActivityHomeListItem[] }> =>
    NewAxiosInstanceFunc({
      url: `/activity/labelTypeList`,
      method: 'get',
      params: { ActiveState, WhichDay, ChartPermissionIds, IsPower }
    }),
  getActivityPermissionList: (): INewResponse<{ List: IPermissionItem[]; CheckList: number[] }> =>
    NewAxiosInstanceFunc({
      url: `/permission/listByActivity`,
      method: 'get'
    }),
  getActivityTypeList: (params: IActivityTypeParams): INewResponse<IActivityTypeListRes> =>
    NewAxiosInstanceFunc({
      url: `/activity/list`,
      method: 'get',
      params: params
    }),
  getActivityTypeDetail: (ActivityId: number, InviteShareCode?: string): INewResponse<IActivityTypeDetailRes> =>
    NewAxiosInstanceFunc({
      url: `/activity/detail`,
      method: 'get',
      params: { ActivityId, InviteShareCode }
    }),
  getActivitySpecialList: (params: IActivityTypeParams): INewResponse<IActivitySpecialListRes> =>
    NewAxiosInstanceFunc({
      url: `/activity_special/list`,
      method: 'get',
      params: params
    }),
  getActivitySpecialDetail: (ActivityId: number): INewResponse<IActivitySpecialDetailRes> =>
    NewAxiosInstanceFunc({
      url: `/activity_special/detail`,
      method: 'get',
      params: { ActivityId }
    }),
  getActivityVideoDetail: (VideoId: number): INewResponse<{ VideoDetail: IIndustryVideo; AuthInfo: IAuthInfo }> =>
    NewAxiosInstanceFunc({
      url: `/activity/detailVideo`,
      method: 'get',
      params: { VideoId }
    }),
  getYidongActivityDetail: (ActivityId: number): INewResponse<IYidongDetialRes> =>
    NewAxiosInstanceFunc({
      url: `/activity/get_yidong_url`,
      method: 'get',
      params: { ActivityId }
    }),
  getSearchActivityList: (params: IActivityTypeParams): INewResponse<ISearchActivityRes> =>
    NewAxiosInstanceFunc({
      url: `/activity/listSearch`,
      method: 'get',
      params: params
    }),
  // 报名方式，，1预约外呼，2自主拨入，3我要报名
  postActivitySignup: (ActivityId: number, SignupType: number, Email?: string): INewResponse<IActivitySignupRes> =>
    NewAxiosInstanceFunc({
      url: `/activity/signup/add`,
      method: 'post',
      data: { ActivityId, SignupType, Email }
    }),
  postActivityCheck: (ActivityId: number): INewResponse<IActivityCheckRes> =>
    NewAxiosInstanceFunc({
      url: `/activity/check`,
      method: 'post',
      data: { ActivityId }
    }),
  postActivityCancelSignup: (ActivityId: number): INewResponse =>
    NewAxiosInstanceFunc({
      url: `/activity/signup/cancel`,
      method: 'post',
      data: { ActivityId }
    }),
  postActivityFollow: (): INewResponse =>
    NewAxiosInstanceFunc({
      url: `/activity_special/follow`,
      method: 'post'
    }),
  postActivitySpectialTripAdd: (ActivityId: number): INewResponse<IActivitySpecialTripAddRes> =>
    NewAxiosInstanceFunc({
      url: `/activity_special/trip/add`,
      method: 'post',
      data: { ActivityId }
    }),
  postActivitySpectialTripCancel: (ActivityId: number): INewResponse =>
    NewAxiosInstanceFunc({
      url: `/activity_special/trip/cancel`,
      method: 'post',
      data: { ActivityId }
    }),
  postActivitySpectialSignup: (ActivityId: number): INewResponse<IActivitySpecialTripAddRes> =>
    NewAxiosInstanceFunc({
      url: `/activity_special/signup/add`,
      method: 'post',
      data: { ActivityId }
    }),
  postActAppointmentAdd: (ActivityId: number): INewResponse<IActivitySignupRes> =>
    NewAxiosInstanceFunc({
      url: `/activity/appointment/add`,
      method: 'post',
      data: { ActivityId }
    }),
  postActAppointmentCancel: (ActivityId: number): INewResponse<IActivitySignupRes> =>
    NewAxiosInstanceFunc({
      url: `/activity/appointment/cancel`,
      method: 'post',
      data: { ActivityId }
    }),
  postActMeetingReminderAdd: (ActivityId: number): INewResponse<IActivitySignupRes> =>
    NewAxiosInstanceFunc({
      url: `/activity/meetingReminder/add`,
      method: 'post',
      data: { ActivityId }
    }),
  postActMeetingReminderCancel: (ActivityId: number): INewResponse<IActivitySignupRes> =>
    NewAxiosInstanceFunc({
      url: `/activity/meetingReminder/cancel`,
      method: 'post',
      data: { ActivityId }
    }),
  postActAskAdd: (ActivityId: number, Content: string): INewResponse<IActivitySignupRes> =>
    NewAxiosInstanceFunc({
      url: `/activity/askAdd`,
      method: 'post',
      data: { ActivityId, Content }
    }),
  postCheckApplyBefore: (ActivityId: number): INewResponse<IActivitySignupRes> =>
    NewAxiosInstanceFunc({
      url: `/activity/checkAsk`,
      method: 'post',
      data: { ActivityId }
    }),

  postOrderCancel: (OrderCode: string): INewResponse =>
    NewAxiosInstanceFunc({
      url: `/order/cancel`,
      method: 'post',
      data: { OrderCode }
    }),
  bindingEmail: (Email: string): INewResponse =>
    NewAxiosInstanceFunc({
      url: `/user/email/binding`,
      method: 'post',
      data: { Email }
    })
}
