import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { environment } from '../../environments/environment';
import { parse } from 'querystring';

@Injectable({
  providedIn: 'root'
})
export class MyService {
  constructor(private http: HttpClient) {
  }

  private API = environment.BACKEND_URL_CONFIG_VALUE;
  private ydapi = environment.ORIGINNAME;
  //  保存分享码
  shareCallBack(shareInfo) {
    const url = this.API + '/shareCallBack';
    return this.http
      .post(url, JSON.stringify(shareInfo));
  }

  //  文件下载
  filePath(itemType, itemId, fileCategory, code, mdDropOptionId) {
    const url = this.API + '/filePathQuery';
    return this.http
      .post(url, JSON.stringify({ itemType: itemType, itemId: itemId, fileCategory: fileCategory, code: code, mdDropOptionId: mdDropOptionId }));
  }

  //  重要公告
  announcementQuery(id, announcementTypeId) {
    const url = this.ydapi + '/market/announcementQuery';
    return this.http
      .post(url, JSON.stringify({ id: id, announcementTypeId: announcementTypeId }));
  }

  //  产品海报
  posterQuery(paginationInfo) {
    const url = this.ydapi + '/market/posterQuery';
    return this.http
      .post(url, JSON.stringify(paginationInfo));
  }

  //热销产品
  recommendPlanQuery(param) {
    const url = this.API + '/recommendPlanQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //培训资料分类
  dropOptionsQuery(param) {
    const url = this.API + "/metadata/dropOptionsQuery";
    return this.http.post(url, JSON.stringify(param)).pipe(res => {
      return res;
    });
  }

  queryproductlistbytag(param) {
    const url = this.API + "/queryproductlistbytag";
    return this.http.post(url, JSON.stringify(param)).pipe(res => {
      return res;
    });
  }

  //经纪人商机列表
  ownOpportunityQuery(param) {
    const url = this.ydapi + "/practitioner/ownOpportunityQuery";
    return this.http.post(url, JSON.stringify(param)).pipe(res => {
      return res;
    });
  }

  //经纪人商机详情
  ownOpportunityDetailQuery(param) {
    const url = this.ydapi + "/practitioner/ownOpportunityDetailQuery";
    return this.http.post(url, JSON.stringify(param)).pipe(res => {
      return res;
    });
  }
  //经纪人修改商机跟进信息
  ownOpportunityRecordSave(param) {
    const url = this.ydapi + "/practitioner/ownOpportunityRecordSave";
    return this.http.post(url, JSON.stringify(param)).pipe(res => {
      return res;
    });
  }

  //标签列表查询
  tagQuery(param) {
    const url = this.API + "/metadata/tagQuery";
    return this.http.post(url, JSON.stringify(param)).pipe(res => {
      return res;
    });
  }

  //商机基本信息保存
  ownOpportunityBasicInformationSave(param) {
    const url = this.ydapi + "/practitioner/ownOpportunityBasicInformationSave";
    return this.http.post(url, JSON.stringify(param)).pipe(res => {
      return res;
    });
  }
  //获取省份
  provinceqry(param) {
    const url = this.API + "/partner/provinceqry";
    return this.http.post(url, JSON.stringify(param)).pipe(res => {
      return res;
    });
  }

  /**
   * 获取城市
   * @param objParam
   * @returns {Promise<TResult2|TResult1>}
   */
  cityqry(param) {
    const url = this.API + '/partner/cityqry';
    return this.http.post(url, JSON.stringify(param)).pipe(res => {
      return res;
    });
  }

  //查保单明细(不包括寿险)
  practitionerPolicyListQuery(practitionerId) {
    const url = this.API + '/practitioner/practitionerPolicyListQuery';
    return this.http
      .post(url, JSON.stringify(practitionerId));
  }

  //保单明细列表包括寿险
  policyListQuery(practitionerId) {
    const url = this.ydapi + '/practitioner/policyListQuery';
    return this.http
      .post(url, JSON.stringify(practitionerId));
  }

  //保单明细详细信息
  policyInfoQuery(practitionerId) {
    const url = this.ydapi + '/practitioner/policyInfoQuery';
    return this.http
      .post(url, JSON.stringify(practitionerId));
  }
  //查询团队业绩及是否团队长
  subordinateSystemMemberQuery(practitionerId) {
    const url = this.ydapi + '/practitioner/subordinateSystemMemberQuery';
    return this.http
      .post(url, JSON.stringify(practitionerId));
  }

  //下载多媒体文件接口
  mediaGet(mediaId) {
    const url = this.ydapi + '/practitioner/mediaGet';
    return this.http.post(url, JSON.stringify(mediaId));
  }

  //设置查询
  mySettingQuery(practitionerId) {
    const url = this.ydapi + '/practitioner/settingQuery';
    return this.http.post(url, JSON.stringify(practitionerId));
  }

  //我的设置保存
  mySettingSave(param) {
    const url = this.ydapi + '/practitioner/settingSave';
    return this.http.post(url, JSON.stringify(param));
  }

  //删除生活照
  myImgDelete(param) {
    const url = this.ydapi + '/practitioner/imgDelete';
    return this.http.post(url, JSON.stringify(param));
  }

  //排行榜
  rank(param) {
    const url = this.ydapi + '/practitioner/rank';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //新增增员接口
  recruit(param) {
    const url = this.ydapi + '/practitioner/recruit';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //创建增员跟进记录
  addRecruitTrack(param) {
    const url = this.ydapi + '/practitioner/addRecruitTrack';
    return this.http
      .post(url, JSON.stringify(param));
  }
  //增员查询跟进接口
  recruitTrackQuery(param) {
    const url = this.ydapi + '/practitioner/recruitTrackQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  // 教育等级查询
  educationLevelQuery() {
    const url = this.API + '/metadata/educationLevelQuery';
    return this.http.get(url);
  }

  //增员列表查询
  recruitListQuery(param) {
    const url = this.ydapi + '/practitioner/recruitListQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //过渡页心灵鸡汤
  knowledgeQry(param) {
    const url = this.API + '/metadata/knowledgeQry';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //经纪人商机分数统计
  opportunityStatistics(param) {
    const url = this.ydapi + '/practitioner/opportunityStatistics';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //销售目标保存
  salesTargetSave(param) {
    const url = this.ydapi + '/practitioner/salesTargetSave';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //查询销售目标
  salesTargetQuery(param) {
    const url = this.ydapi + '/practitioner/salesTargetQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //月均销售活动量
  salesTargetMonthSave(param) {
    const url = this.ydapi + '/practitioner/salesTargetMonthSave';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //增员目标保存
  potentialGoalsSetting(param) {
    const url = this.ydapi + '/practitioner/potentialGoalsSetting';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //增员目标查询接口
  potentialGoalsQuery(param) {
    const url = this.ydapi + '/practitioner/potentialGoalsQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //增员活动量更新
  potentialGoalsActionsUpdate(param) {
    const url = this.ydapi + '/practitioner/potentialGoalsActionsUpdate';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //活动量查询
  potentialGoalsActionsQuery(param) {
    const url = this.ydapi + '/practitioner/potentialGoalsActionsQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //团队平均
  teamActionsAverageQuery(param) {
    const url = this.ydapi + '/practitioner/teamActionsAverageQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //增员统计
  potentialActivityQuery(param) {
    const url = this.ydapi + '/practitioner/potentialActivityQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //团队成员销售活动量得分
  playerSalesActivityQuery(param) {
    const url = this.ydapi + '/practitioner/playerSalesActivityQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //战队成员销售业绩预测
  salesPerformanceForecastListQuery(param) {
    const url = this.ydapi + '/practitioner/salesPerformanceForecastListQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //销售活动量分值详情
  salesScoreDetailQuery(param) {
    const url = this.ydapi + '/practitioner/salesScoreDetailQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //薪资列表
  payScaleListQuery(param) {
    const url = this.ydapi + '/practitioner/payScaleListQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //薪资pdf
  payScalePdf(param) {
    const url = this.ydapi + '/practitioner/payScalePdf';
    return this.http
      .post(url, JSON.stringify(param));
    // this.http.post(`${this.ydapi}/practitioner/payScalePdf`, param, { responseType: 'blob', observe: 'response' }).subscribe(data => {
    //   const link = document.createElement('a');
    //   const blob = new Blob([data.body], { type: 'application/pdf;charset=UTF-8' });
    //   link.setAttribute('href', window.URL.createObjectURL(blob));
    //   link.setAttribute('download', data.headers.get('Content-Disposition').split('filename=')[1]);
    //   link.style.visibility = 'hidden';
    //   document.body.appendChild(link);
    //   link.click();
    //   document.body.removeChild(link);
    // })
  }

  applyForExpertSupport(param){
  const url = this.ydapi + '/practitioner/applyForExpertSupport';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //日程跟进查询
  queryScheduleTrackList(param){
    const url = this.ydapi + '/practitioner/queryScheduleTrackList';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //新增日程
  addScheduleTrack(param){
    const url = this.ydapi + '/practitioner/addScheduleTrack';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //PEP得分查询
  queryPEPScore(param){
    const url = this.ydapi + '/practitioner/queryPEPScore';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //PEP详情得分
  queryPEPScoreDetail(param){
    const url = this.ydapi + '/practitioner/queryPEPScoreDetail';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //删除日程
  deleteScheduleTrackById(param){
    const url = this.ydapi + '/practitioner/deleteScheduleTrackById';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //经纪人级别查询
  practitionerTypeAndLevelQuery(param){
    const url = this.API + '/metadata/practitionerTypeAndLevelQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  // 经纪人列表查询
  practitionerListQuery(typeId?: number) {
    const url = this.API + "/erp/practitionerListQuery";
     return this.http
      .post(url, JSON.stringify({typeId:typeId}));
  }

  //经纪人详情
  practitionerDetailsQuery(param) {
    const url = this.API + "/erp/practitionerDetailsQuery";
    return this.http.post(url, JSON.stringify(param));
  }

  saveMembership(param){
    const url = this.ydapi + '/practitionerHiring/saveMembership';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //证件类型&保险公司&产品险种查询接口
  erpInitialize(){
      const url = this.API + "/erp/erpInitialize";
       return this.http
        .post(url, JSON.stringify({}));
  }

  /**
   * 查询省份和城市
   * @param planId
   * @param insurerId
   * @param productId
   * @returns {Promise<any|TResult2|TResult1>}
   */
  provCityQry() {
    const url = this.API + '/metadata/provCityQry';
    return this.http
      .post(url, JSON.stringify({insurerId:11}));
  }

  //报聘基本信息
  saveBasicInfo(param){
    const url = this.ydapi + '/practitionerHiring/saveBasicInfo';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //工作经历
  saveWorkingExperience(param){
    const url = this.ydapi + '/practitionerHiring/saveWorkingExperience';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //个人资料照片
  savePersonPicture(param){
    const url = this.ydapi + '/practitionerHiring/savePersonPicture';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //薪资单流水
  savePayrollPicture(param){
    const url = this.ydapi + '/practitionerHiring/savePayrollPicture';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //身份证
  saveIDPicture(param){
    const url = this.ydapi + '/practitionerHiring/saveIDPicture';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //学历
  saveLastGraduateGrade(param){
    const url = this.ydapi + '/practitionerHiring/saveLastGraduateGrade';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //银行信息保存
  saveBankAccount(param){
    const url = this.ydapi + '/practitionerHiring/saveBankAccount';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //个人申明
  savePersonalStatements(param){
    const url = this.ydapi + '/practitionerHiring/savePersonalStatements';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //合同文档查询接口
  queryContractTerms(){
    const url = this.ydapi + '/practitionerHiring/queryContractTerms';
    return this.http
      .post(url, JSON.stringify({}));
  }

  //合同文档
  saveContractTermsConfirms(param){
    const url = this.ydapi + '/practitionerHiring/saveContractTermsConfirms';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //被邀请人填写情况查询接口
  queryWholeInfo(param){
    const url = this.ydapi + '/practitionerHiring/queryWholeInfo';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //电子签名保存
  saveDigitalSignatures(param){
    const url = this.ydapi + '/practitionerHiring/saveDigitalSignatures';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //战队成员详情
  queryTeamMemberDetail(param){
    const url = this.ydapi + '/practitioner/queryTeamMemberDetail';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //审批列表
  listQuery(param){
    const url = this.ydapi + '/practitionerHiring/listQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

  //审批保存接口
  // hiringApprove(param){
  //   const url = this.ydapi + '/practitionerHiring/hiringApprove';
  //   return this.http
  //     .post(url, JSON.stringify(param));
  // }
  hiringApprove(param){
      const url = this.ydapi + '/agms/practitionerHiringApprove';
      return this.http
        .post(url, JSON.stringify(param));
    }


  //ydLife审批资料详情
  detailQuery(param){
    const url = this.ydapi + '/practitionerHiring/detailQuery';
    return this.http
      .post(url, JSON.stringify(param));
  }

   /**
   * 意见反馈接口
   * @param comment
   * @returns {Promise<any|TResult2|TResult1>}
   */

  customerComment(comment) {
    const url = this.API + '/customerComment';
    return this.http
      .post(url, JSON.stringify(comment));
  }

  queryPractitionerInfo(param){
    const url = this.ydapi + '/practitionerHiring/queryPractitionerInfo';
    return this.http
      .post(url, JSON.stringify(param));
  }

    // 查询分公司
    organizationQuery(organizationInfo) {
      const url = this.API + "/erp/organizationQuery";
      return this.http
      .post(url, JSON.stringify(organizationInfo));
    }

    //最后一步保存
    hiringSubmit(param){
      const url = this.ydapi + '/practitionerHiring/hiringSubmit';
      return this.http
        .post(url, JSON.stringify(param));
      }

    //区域负责人数字权限成员业绩信息查询
    employeePerformanceForAreaManagerQuery(param){
      const url = this.ydapi + "/practitioner/employeePerformanceForAreaManagerQuery";
      return this.http.post(url, JSON.stringify(param)).pipe(res => {
        return res;
      });
    }

    //销售业绩预测  保费/佣金/件数
    employeeFCTPerformanceForAreaManagerQuery(param){
      const url = this.ydapi + "/practitioner/employeeFCTPerformanceForAreaManagerQuery";
      return this.http.post(url, JSON.stringify(param)).pipe(res => {
        return res;
      });
    }

    //区域负责人查询战队PEP得分
    pepForAreaManagerQuery(param){
      const url = this.ydapi + "/practitioner/pepForAreaManagerQuery";
      return this.http.post(url, JSON.stringify(param)).pipe(res => {
        return res;
      });
    }

    canSeeSalaryList(params){
      const url = this.ydapi + "/practitioner/canSeeSalaryList/" + params ;
      return this.http.get(url);
    }

    //文章查询列表
    practitionerFileSharingList(param){
      const url = this.ydapi + '/agms/practitionerFileSharingList';
      return this.http.post(url, JSON.stringify(param)).pipe((res)=>{
        return res;
      });
    }

    /**
   * 获取微信用户的详细信息
   */
    getWxUserInfo(trackId) {
      const url = this.API + '/getSnsApiUserInfo?trackId=' + trackId;
      return this.http.get(url).pipe((res)=>{
        return res;
      });
    }

    //保存文章code
    articleShareCodeSave(param){
      const url = this.ydapi + '/practitionerArticle/articleShareCodeSave';
      return this.http.post(url, JSON.stringify(param)).pipe((res)=>{
        return res;
      });
    }

    //保存客户痕迹
    articleTrackSave(param){
    const url = this.ydapi + '/practitionerArticle/articleTrackSave';
      return this.http.post(url, JSON.stringify(param)).pipe((res)=>{
        return res;
      });
    }

    //用户信息跟踪
    articleTrackQuery(practitionerId,sharingId){
      const url = this.ydapi + '/practitionerArticle/articleTrackQuery?practitionerId=' + practitionerId + '&sharingId=' + sharingId;
      return this.http.get(url).pipe((res)=>{
        return res;
      });
    }
}
