UNPKG

unserver-unify

Version:

383 lines (377 loc) 12 kB
'use strict'; // coffeescript's for in loop var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; angular.module('bamboo.setting').controller('SignupCtrl', function($scope, $rootScope, ApiService,AppConfig, CommonService, loginService, $state, $stateParams, $timeout, formService, $localStorage, localStorageHelper, $translate) { this.userCredentials = {}; this.company = {}; var self = this; $scope.datePicker = {}; this.companycategory = ApiService.companycategory; console.log(this.companycategory); var _vrr; var _vtitle = {}; $scope.regex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,}$/; /** * get local footer register data */ if (localStorageHelper.get('FOOTER_SIGNUP_DATA')) { self.userCredentials = localStorageHelper.get('FOOTER_SIGNUP_DATA'); } /** * get local normal register data */ if (localStorageHelper.get('REGISTER_INFO')) { self.userCredentials = localStorageHelper.get('REGISTER_INFO'); } self.regWizardstep = 1; this.smsVerify = false; if(ApiService.school.smsVerification){ self.regWizardstep = 0; self.smsVerify = true; } function getArray(obj, level, parent, flag) { if ((typeof obj) === "object") { for (var key in obj) { var fullkey; if (parent == '' || flag) { fullkey = key; } else { fullkey = parent + "," + key; } var _i = { key: fullkey, value: level, title: key, }; _vtitle[fullkey] = key; _vrr.push(_i); var info = obj[key]; if (typeof info === "object") { getArray(info, level + 1, fullkey, flag); } } } } function getKeysArray(obj, callback, _flag) { _vrr = []; getArray(obj, 0, '', _flag); var _rrr = {}; for (var i = 0; i < _vrr.length; i++) { var info = _vrr[i]; var key = info.key; _rrr[key] = []; _rrr[key].push(key); // first value will be key itself for (var j = i + 1; j < _vrr.length; j++) { // search all the item until the same level key found var next = _vrr[j]; if (info.value < next.value) { _rrr[key].push(_vrr[j].key); } else { break; } } } callback(_vrr, _rrr); } getKeysArray(self.companycategory, function(vrr, rrr) { self.CompanyTypes = vrr; console.log(self.CompanyTypes); }); $scope.submitted = false; this.role = $stateParams.role; if (this.role == 'comadmin') { this.userCredentials.companyUser = true; } console.log(this.role); $scope.userTypes = g_userTypes; $scope.edus = g_edus; $scope.jobTitles = g_jobTitles; $scope.provinces = g_provinces; this.wizardstep = 0; this.maxstep = 0; this.backtostep = function(step) { self.wizardstep = step; if (self.wizardstep > self.maxstep) { self.maxstep = self.wizardstep; } } this.nextfrombasic = function(form) { $scope.submitted = true; console.log(form); if (form.$invalid) { $scope.shaking = true; $timeout(function() { $scope.shaking = false; }, 500); console.log(form.$invalid); return; } $scope.submitted = false; self.wizardstep = 1; if (self.wizardstep > self.maxstep) { self.maxstep = self.wizardstep; } } var nurseProfile = isNurseProfile($rootScope.currentSchool); if (nurseProfile) { this.userCredentials.user_profiles = getInitNurseProfile(); $scope.userProfiles = this.userCredentials.user_profiles; } var userProfiledoc = loginService.school.userProfiledoc; console.log(userProfiledoc); if (userProfiledoc) { ApiService.get('/schooldoc/' + userProfiledoc).then(function(result) { console.log(result); if (result.data.success) { self.userProfiles = result.data.data.content; console.log(self.userProfiles); } }); } $rootScope.$watch('currentLanguage', function(newValue, oldValue) { if (nurseProfile) { notifyLocaleChanged($scope.userProfiles); } }); formService.initFormDate(); this.registerWithCompany = function(form) { $scope.submitted = true; if ($scope.form.$invalid) { $scope.shaking = true; $timeout(function() { $scope.shaking = false; }, 500); return; } var info = self.userCredentials; info.companyUser = true; info.company = self.company; info.url = ApiService.HOST + "#/active_account"; info.ownername = loginService.school.name; console.log(info); ApiService.post('/signup', info).then(function(result) { //console.log(result); if (result.data.success) { CommonService.showInfo(" " + result.data.success); $state.go('index.home'); } else { if (result.data.errorCode && AppConfig.ErrorSignUp[result.data.errorCode]) { // console.log(window.sessionStorage.language); var _err = AppConfig.ErrorSignUp[result.data.errorCode]; if (window.sessionStorage.language == 'Chinese') { CommonService.showError(_err.cn); } else { CommonService.showError(_err.en); } } else { CommonService.showError(result.data.error); } return; } }); } this.register = function(flag) { $scope.submitted = true; this.userCredentials.user_profiles = formService.getFormData(); if (!flag) { if ($scope.form.$invalid) { $scope.shaking = true; $timeout(function() { $scope.shaking = false; }, 500); return; } } var info = self.userCredentials; console.info(info); if (info.pass != info.re_pass) { CommonService.showError("Password not matched"); return; } info.url = ApiService.HOST + "#/active_account"; info.ownername = loginService.school.name; console.log(info); var serverPath = '/signup'; if(ApiService.school.smsVerification){ serverPath = '/smssignup'; } ApiService.post(serverPath, info).then(function(result) { //console.log(result); if (result.data.success) { //CommonService.showInfo(" " + result.data.success); if(ApiService.school.smsVerification){ CommonService.showInfo($translate.instant('Account is created successfully'),function(){ $state.go('index.home'); }) } else { $state.go('index.setting.signuplink'); } } else { if (result.data.errorCode && AppConfig.ErrorSignUp[result.data.errorCode]) { // console.log(window.sessionStorage.language); var _err = AppConfig.ErrorSignUp[result.data.errorCode]; if (window.sessionStorage.language == 'Chinese') { CommonService.showError(_err.cn); } else { CommonService.showError(_err.en); } } else { CommonService.showError(result.data.error); } return; } }); }; $scope.showDatePicker = function(event, key) { event.preventDefault(); event.stopPropagation(); $scope.datePicker[key] = true; }; $scope.readTerms = function(form) { console.log(self.userCredentials); localStorageHelper.put('REGISTER_INFO', self.userCredentials); console.log($localStorage); $state.go('index.agreement'); } this.requestToken = function() { if (!self.userCredentials.mobile || self.userCredentials.mobile.length < 8) { CommonService.showError($translate.instant('Invalid Mobile Number')); return; } var isnum = /^\d+$/.test(self.userCredentials.mobile); if (!isnum) { CommonService.showError($translate.instant('Invalid Mobile Number')); return; } var info = { action: 'verifymobile', mobile: self.userCredentials.mobile, } ApiService.post('/messages', info).then(function(result) { console.log(result); if (result.data.success) { //self.showTab = 'tab2'; self.disableReq = true; } else { CommonService.showNoBlockInfo(result.data.error); } }); } this.verifyToken = function() { if (!self.userCredentials.verifycode || self.userCredentials.verifycode.length < 6) { CommonService.showError($translate.instant('Invalid Mobile Number')); return; } var isnum = /^\d+$/.test(self.userCredentials.verifycode); if (!isnum) { CommonService.showError($translate.instant('Invalid Code')); return; } var info = { action: 'checkverification', mobile: self.userCredentials.mobile, code:self.userCredentials.verifycode } ApiService.post('/messages', info).then(function(result) { console.log(result); if (result.data.success) { self.regWizardstep = 1; } else { CommonService.showError($translate.instant('Invalid Code')); } }); } }).service('formService', function() { var formData = {}; return { initFormDate: function() { formData = {}; return; }, saveFormData: function(newformdata) { angular.forEach(newformdata, function(value, key) { formData[key] = value; }) return; }, getFormData: function() { return formData; } } }).directive('formDirective', function() { return { controller: function($scope) { $scope.submit = function() { alert('Form submitted..'); $scope.form.submitted = true; } $scope.cancel = function() { alert('Form canceled..'); } }, templateUrl: 'assets/directive-templates/form/form.html', restrict: 'E', scope: { form: '=' } }; }).directive('fieldDirective', function($http, $compile, formService) { var getTemplateUrl = function(field) { var type = field.field_type; var templateUrl = 'assets/directive-templates/field/'; var supported_fields = ['textfield', 'email', 'textarea', 'checkbox', 'date', 'dropdown', 'hidden', 'password', 'radio', 'numberinput'] if (__indexOf.call(supported_fields, type) >= 0) { return templateUrl += type + '.html'; } } var linker = function(scope, element) { // GET template content from path var templateUrl = getTemplateUrl(scope.field); $http.get(templateUrl).then(function(data) { element.html(data); $compile(element.contents())(scope); if (scope.field.field_type == 'numberinput') { scope.$watch('field.field_number', function(newVal, oldVal) { if (newVal != oldVal) { var key = scope.field.field_title; var value = scope.field.field_number; var obj = {}; obj[key] = value; formService.saveFormData(obj); } }) } else { scope.$watch('field.field_value', function(newVal, oldVal) { if (newVal != oldVal) { var key = scope.field.field_title; var value = scope.field.field_value; var obj = {}; obj[key] = value; formService.saveFormData(obj); } }) } }); } return { controller: function($scope) { // logic function for datepicker $scope.opened = false; $scope.open = function(e) { e.preventDefault(); e.stopPropagation(); $scope.opened = true; } }, template: '<div ng-bind="field"></div>', restrict: 'E', scope: { field: '=' }, link: linker }; });