'use strict';
/**
 * @ngdoc controller
 * @name ChangeEmailController
 * @description
 *  email 변경 화면
 */
app.controller('ChangeEmailController', function ($scope, $state, $window, toastr, User, Auth) {
  $scope.save = function () {

    var password = $scope.formData.password;
    var newEmail = $scope.formData.newEmail;
    var jsonData = JSON.stringify( { password : password, email : newEmail });

    // 사용자 email 변경
    User.changeEmail(jsonData).then( function() {
      var user = JSON.parse($window.localStorage.getItem('hcm_editor'));
      angular.extend(user, {'email': newEmail});
      Auth.setCurrentUser(user);
      toastr.success('Successfully changed email!');
      $state.transitionTo('account-settings.main', null, { reload: true, inherit: true, notify: true  });
    }).
    catch(function (error) {
      toastr.error(error);
    });
  };
});

/**
 * @ngdoc controller
 * @name ChangePasswordController
 * @description
 *  password 변경 화면
 */
app.controller('ChangePasswordController', function ($scope, $state, toastr, User) {
  $scope.save = function () {

    var oldPassData = $scope.formData.currentPassword;
    var newPassData = $scope.formData.newPassword;
    var jsonData = JSON.stringify( { old_password : oldPassData, new_password : newPassData });

    // 사용자 password 변경
    User.changePassword(jsonData).then(function (data) {
      toastr.success('Successfully changed password!');
      $state.transitionTo('account-settings.main', null, { reload: true, inherit: true, notify: true  });
    }).
    catch(function (error) {
      toastr.error(error);
    });
  };
});

/**
 * @ngdoc controller
 * @name RestrictProgrammingAccessController
 * @description
 *  programming access 변경 화면
 */
app.controller('RestrictProgrammingAccessController', function ($scope, $state, $modal, option, User) {
  $scope.allow_edit = +option.allow_edit;

  $scope.setInstallerOption = function(allowEdit) {
    $scope.allow_edit = allowEdit;
    var jsonData = JSON.stringify( { allow_edit : $scope.allow_edit });

    User.setInstallerOption(jsonData).then(function (data) {
      var modal = $modal({
        backdrop: 'static',
        container: '.editor-container',
        template: 'views/user-login-change/modal-tpls/programming-access.html',
        scope: $scope,
        show: false
      });

      modal.$promise.then(modal.show);
    }).
    catch(function (error) {
      toastr.error(error);
    });
  };

  $scope.enable = function() {
    $scope.setInstallerOption(1);
  };

  $scope.disable = function() {
    $scope.setInstallerOption(0);
  };

  $scope.goSettings = function() {
    $state.go('account-settings.main');
  };
});



'use strict';
/**
 * @ngdoc controller
 * @name LoginController
 * @description
 *  로그인, 비밀번호 리셋 관련
 */
app.controller('LoginController', function ($rootScope, $scope, $state, $stateParams, toastr, Systems, Auth, User) {
  // 로그인이 필요한 url 에 로그인 없이 접근하면 e=401 파리미터를 가지고 /login 으로 오는데 그때에 대한 처리
  if (!_.isEmpty($stateParams)) {
    if ($stateParams.e === '401') {
      $scope.error = '<div class="alert alert-warning"><i class="fa fa-lg fa-warning"></i>&nbsp;&nbsp;You must log in to access this page.</div>';
    }
  }

  // 이미 로그인한 사용자면 account-settings 메뉴로 이동시킴
  Auth.currentUser().then(function(user) {
    if(user) {
      $state.go('account-settings.main');
    }
  });

  // 로그인 화면에서 아이디/패스워드 입력 후 Sign in 버튼 클릭하면 실행되는 함수
  $scope.login = function() {
    var data = angular.copy($scope.credentials);
    data.simple = 1;

    var jsonData = JSON.stringify(data);  // 아이디/패스워드/simple
    console.log(jsonData);

    // 로그인
    User.login(jsonData)
      .then( function(data) {
        if(data.result) {
          if (data.status) {  // result=true, status=true 일 때 로그인 처리
            // 로그인 성공하면 account-settings.main 으로 이동
            $state.go('account-settings.main');
          } else {  // result=true, status=false 인 경우: forgot password 로 reset 했는데 base station 이 없거나 통신문제가 발생한 경우
            $rootScope.systemsInfo = angular.copy(data.info);
            $rootScope.credentials = angular.copy($scope.credentials);
            $state.go('login');
          }
        } else {
          toastr.error(data.error);
          $scope.credentials.password = '';
          $scope.loginForm.$setPristine();
        }
      })
      .catch(toastr.error);
  };

});


/**
 * @ngdoc controller
 * @name ForgotController
 * @description
 *  로그인 화면 하단의 "Forgot your password?" 를 클릭해서 들어온 경우 password reset 처리
 */
app.controller('ForgotController', function ($scope, $state, toastr, Auth, User){
  $scope.forgot = {};

  // 로그인 된 상태에서 접근하면 account-settings.main 으로 이동
  Auth.currentUser().then(function(user) {
    if(user) {
      $state.go('account-settings.main');
    }
  });

  $scope.resetPassword = function() {
 
    var jsonData = JSON.stringify( $scope.forgot );
    console.log(jsonData);

    // reset password
    User.resetPassword($scope.forgot)
      .then(function() {
        toastr.success('Your password has been reset.');
        $state.go('login');
      })
      .catch(toastr.error);

  };
});
