import { Injectable } from '@angular/core';
import { Headers, Http } from '@angular/http';

import 'rxjs/add/operator/toPromise';


import { DesignerType } from '../types/designer';
import { DesignerType2 } from '../types/designer2';
// Helpers
import { HelperService } from './svc.helper';

@Injectable()
export class DesignerService {

    result: any;

    constructor(
        private http: Http,
        private helper: HelperService
    ) { }

    api = this.helper.server+'feed/get/block'
    key = this.helper.getCustomCredentials(20)

    // feed/get/block?websiteId=1&storeId=101&block=editorials&debug&find=blockId:editorials,id:102
    getDesigners = this.api+this.key+'&block=designers';
    singleDesigner = this.getDesigners+'&extend&find=title:';
    singleDesignerByUrlKey = this.getDesigners+'&extend&find=content.urlKey:'
    
    private handleError(error: any): Promise<any> {
        console.error('An error occurred', error); // for demo purposes only
        return Promise.reject(error.message || error);
    }

    httpGetDesigners(designer: string): Promise<any> {
        
        if(!!designer) {
            return this.http.get(this.singleDesigner+designer)
                .toPromise()
                .then(response => response.json().data.list as DesignerType2[])
                .catch(this.handleError);
        } else {
            return this.http.get(this.getDesigners)
                .toPromise()
                .then(response => response.json().data)
                .catch(this.handleError);
        }
    }

    getDesignersByUrlKey(designer: string): Promise<any> {
        return this.http.get(this.singleDesignerByUrlKey+designer+'&wrapContent')
            .toPromise()
            .then(response => response.json().data)
            .catch(this.handleError)
    }
}