'use strict';

angular.module('yololiumApp')
  .controller('MyAccountController', [
    '$scope'
  , '$location'
  , '$http'
  , 'DaplieApiConfig'
  , 'DaplieApiSession'
  , 'DaplieApiRequest'
  //, 'LdsAccount'
  , function ($scope, $location, $http, DaplieApiConfig, DaplieApiSession, DaplieApiRequest, LdsAccount) {
    var scope = this;

    function init(session) {
      if (!session || session.message) {
        scope.session = null;
        scope.account = null;
        scope.accounts = null;
        $location.url('/');
        return;
      }

      scope.session = session;
      scope.accounts = session.accounts;
      scope.account = DaplieApiSession.account(session);

      console.log('session', session);
      return DaplieApiRequest.profile(session).then(function (profile) {
        return LdsAccount.verifyAccount(session, profile);
      });
    }

    scope.showLoginModal = function () {
      // TODO profile manager
      return DaplieApiSession.openAuthorizationDialog();
    };

    scope.logout = function () {
      // TODO which token(s) to destroy?
      return DaplieApiSession.logout();
    };

    DaplieApiSession.checkSession().then(init, init).catch(init);
    DaplieApiSession.onLogin($scope, init);
    DaplieApiSession.onLogout($scope, init);
  }]);