app.directive('zlSignup', function() {
  return {
    restrict: 'E',
    scope: true,
    replace: false,
    templateUrl: 'directives/signup/signup.html',
    controller: function($scope, blockUI, $entity, $uibModalStack) {
      $scope.signup = function(item) {
        if ($scope.validateSignup(item)) {
          return;
        }

        blockUI.start("A reservar conta...");
        $entity.add('user', item)
        .then(function(response) {
          swal("Está quase!", "Consulte o seu email para ativar a conta de utilizador", "success");
          $uibModalStack.dismissAll();
        })
        .catch(function(response) {
          swal("Erro", "Ocorreu um erro ao reservar a sua conta", "error");
        })
        .finally(function() {
          blockUI.stop();
        });
      };

      $scope.validateSignup = function(item) {
        if (!item) {
          return true;
        }

        if (!item.username) {
          return true;
        }

        if (!item.email) {
          return true;
        }

        return false;
      };
    }
  };
});
