import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/operator/map';
 
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/toPromise';
import { Storage } from '@ionic/storage';
import { ToastController } from 'ionic-angular';


import { LoadingController, AlertController, Events   } from 'ionic-angular';

/* import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer';
import { File } from '@ionic-native/file';
import { ImagePicker } from '@ionic-native/image-picker';
,private transfer: FileTransfer, private file: File, private imagePicker: ImagePicker
*/

@Injectable()
export class Myservice {

  
   //webservice_url = 'http://localhost/fixmyauto/Webservice_user/';
   // webservice_url = 'http://192.168.140.22/fixmyauto/Webservice_user/';
  // webservice_url = 'http://localhost/fixmyauto/Webservice_user/';
   webservice_url = 'http://techlabz.in/fixmyauto/Webservice_user/';
  // webservice_url = 'http://www.garnedo.com/fixmyauto/Webservice_user/';
  // webservice_url = 'https://104.198.77.184:8443/fixmyauto/Webservice_user/';
   
  loader : any;
  alert : any;
  post_url : any;
  data : any;
  result:any;
  user_data:any;
  notify:any;
  
  constructor(public http: Http,
     public loadingCtrl: LoadingController,
      public alertCtrl: AlertController,
       public events: Events,
       public storage:Storage,
       public toastCtrl: ToastController ) {
	//const fileTransfer: TransferObject = this.transfer.create();
		this.storage.get('user_data').then((user_data) => {
		if(user_data){
			this.user_data =user_data;
		}
	})
  }
  
  show_loader() {
	this.loader = this.loadingCtrl.create({
      content: ""
    });
	this.loader.present();
  }
  
  
  presentLoadingCustom() {
  let loading = this.loadingCtrl.create({
    spinner: 'show',
    content: `
      <div class="custom-spinner-container">
        <div class="custom-spinner-box"></div>
      </div>
	  <h5>Please wait your image is being downloaded</h5>`,
    
  });

  loading.onDidDismiss(() => {
    console.log('Dismissed loading');
  });

  loading.present();
}
  
  show_alert(title, message) {
      this.alert = this.alertCtrl.create({
      title: title,
      subTitle: message,
      buttons: ['OK']
    });
    this.alert.present();
  }
      	fileUpload(data,fn_name){
		console.log(data);
		var post_url = this.webservice_url + fn_name; 
		return this.http.post(post_url, data) .map(res =>res.json()); 
	}
  
  hide_loader() {
	this.loader.dismissAll();
  }
  presentToast(message) {
    const toast = this.toastCtrl.create({
      message: message,
      duration: 3000
    });
    toast.present();
  }
  
 /* load_posts(post_data, fn_name) {
    
	post_data = JSON.stringify(post_data);
	
    this.post_url = this.webservice_url + fn_name;
	 
	 return this.http.post(`${this.post_url}`, `${post_data}`, {headers: {'Content-Type': 'application/x-www-form-urlencoded'}})
      .map(res => res.json());
	    
  }
  
  */

 load_post(post_data, fn_name) {
 
     var post_url = this.webservice_url + fn_name;
 post_data = JSON.stringify(post_data);
let headers = new Headers(
{
  'Content-Type' : 'application/json'
});
let options = new RequestOptions({ headers: headers });
 return this.http.post(post_url, post_data, options)
      .map(res => res.json());
}
  
  
  load_get(fn_name) {
    
	
    this.post_url = this.webservice_url + fn_name;
	 
	 
	  return this.http.get(`${this.post_url}`).map(res => res.json());
  } 
  

   /* 
  load_post_file(imageURI, post_data, fn_name) {
	  console.log(imageURI);
        let ft = this.transfer.create();
        let filename = imageURI.substr(imageURI.lastIndexOf('/')+1);
        let options = {
            fileKey: 'file',
            fileName: filename,
            mimeType: 'image/jpeg',
            chunkedMode: false,
            headers: {
                'Content-Type' : undefined
            },
            params: post_data
        }; 
        //ft.onProgress(this.onProgress);
		this.show_loader();
        ft.upload(imageURI, this.webservice_url+fn_name, options, false)
        .then((result: any) => {
            //this.success(result);
			this.hide_loader();
			console.log(result);
			  var res =JSON.parse(result.response);
				if(res.status == "failed") {
	  			this.show_alert("Error!", result.message);
			}
			else {
				
				this.show_alert("Success!", res.message);
				console.log("result", JSON.parse(result.response)  );
				console.log("reg data post", this.reg_data);
				console.log("pro pic", res.result.profile_pic);
				this.reg_data.profile_pic = res.result.profile_pic;
					this.reg_data.first_name = res.result.first_name;
					this.reg_data.last_name = res.result.last_name;
					console.log(this.reg_data);
					this.events.publish('user:update_profile', this.reg_data);
			}
        }).catch((error: any) => {
            //this.failed(error);
			console.log(error);
			//this.result = error;
			this.hide_loader();
			this.show_alert("Error!", 'Error occured. Please try again');
        });
		//console.log(this.result); 
		//return this.result;
  }
  
load_post_file(imageURI, post_data, fn_name) {
        let ft = this.transfer.create();
        let filename = imageURI.substr(imageURI.lastIndexOf('/')+1);
        let options = {
            fileKey: 'file',
            fileName: filename,
            mimeType: 'image/jpeg',
            chunkedMode: false,
            headers: { 
                'Content-Type' : undefined
            },
            params: post_data
        }; 
        //ft.onProgress(this.onProgress);
        ft.upload(imageURI, this.webservice_url+fn_name, options, false)
        .then((result: any) => {
            //this.success(result);
			console.log("1 ", result.response);
			this.result = result.response;
        }).catch((error: any) => {
            //this.failed(error);
			console.log(error);
			this.result = error;
        });
		console.log("r ", this.result); 
		return this.result;
  }  */
  
  load_new() {
  	this.http.get('https://randomuser.me/api/?results=10')
      .map(res => res.json())
      .subscribe(data => {
        this.data = data;
        console.log(this.data);
      });   
  }
  

}