import {Injectable} from "@angular/core";
import {AlertController, ToastController} from "ionic-angular";

@Injectable()

export class CommonService{
    constructor(public toastCtrl:ToastController,public alertCtrl:AlertController){}

    /**
     * JSON格式数据转化为字符串 接口调用
     * @param data  json格式的数据
     * @returns {string}
     */
    toQuery(data){
        let str = '';
        for (let key in data) {
            if (data.hasOwnProperty(key)) {
                const value = data[key];
                str += key + '=' + value + '&';
            }
        }
        str = str.substring(0, str.length - 1);
        return str;
    }

    /**
     * JSON格式对象转为form表单的格式，用来接口传递数据
     * @param json   需要转化的json
     * @returns {FormData}   formData数据
     */
    toFormData(json){
        let formData = new FormData();
        for(let k in json){
            formData.append(k,json[k])
        }
        return formData;
    }

    /**
     * 提示信息 位置：居中，延时2s
     * @param message  提示文字
     * @param callback  提示信息之后执行的方法
     */
    toast(message, callback?) {
        let toast = this.toastCtrl.create({
            message: message,
            duration: 2000,
            position:'middle',
            dismissOnPageChange: true,
        });
        toast.present();
        if (callback) {
            callback();
        }
    }

    /**
     * alert弹窗
     * @param message  弹窗内的文字
     * @param callback  如果有回调方法 就有确定、取消两个按钮，没有回调方法 则只有确认一个按钮
     */
    alert(message, callback?) {
        console.log(message)
        if (callback) {
            let alert = this.alertCtrl.create({
                title: '提示',
                message: message,
                buttons: ['取消', {
                    text: "确定",
                    handler: data => {
                        callback();
                    }
                }]
            });
            alert.present();
        } else {
            let alert = this.alertCtrl.create({
                title: '提示',
                message: message,
                buttons: ["确定"]
            });
            alert.present();
        }
    }

    /**
     * 下载文件
     * @param url 文件URL
     */
    downloadFile(title,data: Response) {
        const blob = new Blob([data]);
        const url= window.URL.createObjectURL(blob);
        let link = document.createElement("a");
        link.setAttribute("href", url);
        link.setAttribute("download", title);
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
    }
}