import { Injectable } from '@angular/core';
import {HttpClient} from "@angular/common/http";
import {AlertController, App, Events, LoadingController, Platform} from "ionic-angular";
import {HTTP} from "@ionic-native/http";
@Injectable()
export class MyProvider {
  myMethod() {
    console.log("I'm afraid I can't do that.");
  }
  _address = ":9997";
  constructor(public httpClient:HttpClient,public alertCtrl:AlertController,public app:App,
              public loadingCtrl:LoadingController,public events:Events,private nativeHttp: HTTP,public platform:Platform
  ){}

  debug = "";
  port = "9997";
  public getUrl(){
    let address ="";
    // if(this.port =="9998"){
    //   localStorage.setItem("ipAddress","http://weiapp.pw")
    //   // localStorage.setItem("ipAddress","http://113.229.123.104")
    //   localStorage.setItem("port",":9998")
    // }else if(this.port =="9997"){
    localStorage.setItem("ipAddress","http://weiapp.pw")
    // localStorage.setItem("ipAddress","http://113.229.123.104")
    localStorage.setItem("port",":9997")
    // }
    // localStorage.setItem("ipAddress","http://sulixin.qicp.vip")
    // // localStorage.setItem("ipAddress","http://113.229.123.104")
    // localStorage.setItem("port",":80")
    address = localStorage.getItem("ipAddress")+localStorage.getItem("port");//外网 测试
    localStorage.setItem("address",address);
    let strUrl = address+"/contract";
    return strUrl;
  }


  public postData (url:string,body:any,successCallback,isLoading?:any,errorCallback?:any){
    let loading = this.loadingCtrl.create({
      content:"请等待...",
      // duration:5000
    });
    if (isLoading){
      loading.present();
    }
    let headers = new Headers();
    headers.append('Content-Type','application/x-www-form-urlencoded;charset=UTF-8');
    headers.append('type','app');
    // alert(this.platform.is("mobileweb"))
    if (!this.platform.is("mobileweb")){
      this.nativeHttp.setDataSerializer('urlencoded');
      this.nativeHttp.post(url, body, {type:"app"})
        .then(data => {
          if (isLoading){
            loading.dismiss();
          }

          // if(data.data.toString().indexOf("login.jsp")){
          //   this.errorCallback( "登录超时，请重新登录");
          //   this.events.publish("toLogin")
          //   return;
          // }
          let res = JSON.parse(data.data);
          if(successCallback){
            if(res["success"]=="true"||res["success"]=="success"||res["success"]){
              successCallback(res);
              // alert("success")
            }else{
              if (res['msg'] == "-2"){
                this.errorCallback( "登录超时，请重新登录");
                this.events.publish("toLogin")
                // if (localStorage.getItem("userCode")){
                //   this.postData(this.getUrl()+"/api/v1/login/login.do", {userCode:localStorage.getItem("userCode"),password:localStorage.getItem("password")},(data)=>{
                //     this.postData(url,body,successCallback,false,errorCallback)
                //   }, false)
                // }
              }else {
                if (errorCallback){
                  errorCallback(res['msg']);
                }
                else {
                  this.errorCallback(res['msg']);
                }
              }
            }
          }
        })
        .catch(error => {
          if (isLoading){
            loading.dismiss();
          }
          let errMsg = "网络通信异常";
          switch (error.status) {
            case 401:
              errMsg = "登录超时，请重新登录";
              break;
            case 404:
              errMsg = '抱歉，后台服务找不到对应接口';
              break;
            case 0:
              errMsg = '网络无法连接';
            default:
              break;
          }
          if (errMsg!=""){
            if (errorCallback){
              errorCallback(errMsg);
            }
            else {
              this.errorCallback(errMsg);
            }
          }
        })
    }
    else {

   let   options ={
        headers: {'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8',
      'type':'app'},
        withCredentials: true
      }

      return this.httpClient.post(url,body,options).subscribe(
        (res)=>{
          console.log(res)
          if (isLoading){
            loading.dismiss();
          }
          if(successCallback){
            if(res["success"]=="true"||res["success"]=="success"||res["success"]){
              successCallback(res);
            }else{
              if (res['msg'] == "-2"){
                this.errorCallback( "登录超时，请重新登录");
                this.events.publish("toLogin")
                // if (localStorage.getItem("userCode")){
                //   this.postData(this.getUrl()+"/api/v1/login/login.do", {userCode:localStorage.getItem("userCode"),password:localStorage.getItem("password")},(data)=>{
                //     this.postData(url,body,successCallback,false,errorCallback)
                //   }, false)
                // }
              }else {
                if (errorCallback){
                  errorCallback(res['msg']);
                }
                else {
                  this.errorCallback(res['msg']);
                }
              }

            }
          }
        },(err)=>{
          if (isLoading){
            loading.dismiss();
          }
          let errMsg = "网络通信异常";
          switch (err.status) {
            case 401:
              errMsg = "登录超时，请重新登录";
              break;
            case 404:
              errMsg = '抱歉，后台服务找不到对应接口';
              break;
            case 0:
              errMsg = '网络无法连接';
            default:
              break;
          }
          if (errMsg!=""){
            if (errorCallback){
              errorCallback(errMsg);
            }
            else {
              this.errorCallback(errMsg);
            }
          }
        }
      );
    }
  };

  private transformRequest(obj){
    var str=[];
    for (var s in obj){
      str.push(encodeURIComponent(s)+"="+encodeURIComponent(obj[s]))
    }
    return str.join("&");
  }
  private errorCallback(msg){
    let alertCtrl = this.alertCtrl.create({
      title:msg
    });
    alertCtrl.present();
  }




}
