import { Injectable, Inject } from '@angular/core';
import { CookieService } from '../cookieService/cookie.service';
import { ModuleOptions } from '../moduleoptions/moduleoptions.service';

@Injectable()
export class SocialConnector {
  constructor(@Inject(CookieService) private cookie: CookieService,
              @Inject(ModuleOptions) private options: ModuleOptions) {}

  public login_Facebook() {
    let client_id = this.options.get().facebook_clientid;
    let redirect_uri = this.options.get().redirect_uri;

    localStorage.setItem('return', 'facebook');

    window.location.href = 'https://www.facebook.com/v2.8/dialog/oauth?client_id=' + client_id + '&redirect_uri=' + redirect_uri + '&scope=email'
  }

  public login_Google() {
    let client_id = this.options.get().google_clientid;
    let redirect_uri = this.options.get().redirect_uri;

    window.location.href = 'https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=' + client_id + '&redirect_uri=' + redirect_uri + '&scope=email%20profile';

    localStorage.setItem('return', 'google');
  }

  public login_PayPal() {
    let client_id = this.options.get().paypal_clientid;
    let redirect_uri = this.options.get().redirect_uri;

    window.location.href = 'https://www.paypal.com/signin/authorize?response_type=code&client_id=' + client_id + '&redirect_uri=' + redirect_uri + '&scope=profile+email+address';

    localStorage.setItem('return', 'paypal');
  }

  public reLogin(logininfo) {
    this.cookie.delete('InnotecApp');

    switch (logininfo.social) {
      case 'facebook':
        this.login_Facebook();
      break;

      case 'google':
        this.login_Google();
      break;

      case 'paypal':
        this.login_PayPal();
      break;
    }
  }
}
