'use strict';

//HCM Installer User

app.service('User', function ($rootScope, $http, $q, $window, baseUrl, Auth, jwtHelper) {

  /**
   * 시스템 생성을 위한 로그인
   * @memberof User
   * @param {String} data 사용자 아이디/패스워드 json string
   * @returns {Promise} Future object
   */
  this.loginForCreate = function(data) {
    var d = $q.defer();

    // 시스템 생성을 위한 로그인 api 호출
    $http.post('/api/user/login_for_create', data).success(function(response) {
      d.resolve(response);
    }).error(function(error) {
      d.reject(error);
    });

    return d.promise;
  };

  this.login = function(data) {
    var self = this,
        d = $q.defer();

    $http.post(baseUrl + '/user/login', data).success(function(response) {
      if (response.result) {
        var token = jwtHelper.decodeToken(response.token);
        var name = token.sub;
        var id = token.usr_id;
        var user = { id: id, username: name, email: response.email, token: response.token, companyName: response.company, companyId: response.companyId};
        Auth.setCurrentUser(user);
        d.resolve(response); 
      } else {
        d.reject(response.error);
      }
      
    }).error(function (error) {
      d.reject(error);
    });

    return d.promise;
  };
  

  this.logout = function() {
    var d = $q.defer();
    Auth.removeCurrentUser();
    d.resolve();
    return d.promise;
  };

  // this.changeEmail = function(data) {
  //   var d = $q.defer(),
  //    self = this;

  //   $http.post('/api/user/new_email', data).
  //   success(function(response) {
  //     console.log(response);
  //     if(response.result) {
  //       d.resolve(response.data);
  //     }
  //     else {
  //       d.reject(response.error);
  //     }
  //   }).
  //   error(function(error) {
  //     d.reject(error);
  //   });

  //   return d.promise;
  // }

  // this.changePassword = function(data) {
  //   var d = $q.defer(),
  //    self = this;

  //   $http.post('/api/user/new_password', data).
  //   success(function(response) {
  //     console.log(response);
  //     if(response.result) {
  //       d.resolve(response);
  //     }
  //     else {
  //       d.reject(response.error);
  //     }
  //   }).
  //   error(function(error) {
  //     d.reject(error);
  //   });

  //   return d.promise;
  // }

});
