twoBookApp.controller('SettingsPanelController',['$scope','SessionService','tboFocus','RequestsErrorHandler',function($scope,SessionService,tboFocus,RequestsErrorHandler){var self=this;this.settings={HiddenColumns:{Info1:false,Info2:false,Note:false}} this.status={isopen:false};this.show={alertConfirmPassword:false,alertNewPassword:false,alertOldPassword:false,alertOldPassword2:false,alertEmail:false,alertSave:false,confirmedSave:false} this.user={};this.formUser={Email:"",NewPassword:"",ConfirmPassword:"",OldPassword:""} $scope.toggled=function(open){DEBUG&&console.log('Dropdown is now: ',open);self.show.confirmedSave=false;if(open==false){SessionService.setSettings(self.settings);}};$scope.toggleDropdown=function($event){$event.preventDefault();$event.stopPropagation();$scope.status.isopen=!$scope.status.isopen;};this.getSettings=function getSettings(){DEBUG&&console.log('getSettings');SessionService.progressSymbol(true);SessionService.getSettings().then(function(response){self.settings=response;SessionService.progressSymbol(false);},function(response){SessionService.progressSymbol(false);});SessionService.progressSymbol(true);SessionService.getUserInfo().then(function(response){self.user=response;self.formUser.Email=self.user.Email;SessionService.progressSymbol(false);},function(response){SessionService.progressSymbol(false);});};this.saveUser=function(){DEBUG&&console.log("save User");if(!self.userForm.$dirty){return;} self.show.alertSave=false;var allOk=true;self.hideAllMessages();if(self.userForm.$dirty&&self.formUser.OldPassword==""){self.show.alertOldPassword=true;tboFocus('OldPassword');allOk=false;}else{self.show.alertOldPassword=false;} if(self.formUser.NewPassword!=""){if(self.formUser.NewPassword!=self.formUser.ConfirmPassword){self.show.alertConfirmPassword=true;tboFocus('ConfirmPassword');allOk=false;}else{self.show.alertConfirmPassword=false;} re=(/(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*)(?=.*[^a-zA-Z\d].*)/) if(!(re.test(self.formUser.NewPassword)&&self.formUser.NewPassword.length>=8)){self.show.alertNewPassword=true;tboFocus('NewPassword');allOk=false;}else{self.show.alertNewPassword=false;}} if(!validateEmail(self.formUser.Email)){self.show.alertEmail=true;tboFocus('Email');allOk=false;} if(!allOk){self.formUser.OldPassword="";return;} RequestsErrorHandler.specificallyHandled(function(){SessionService.setUserInfo(self.formUser).then(function(response){DEBUG&&console.log("User Info saved");self.getSettings();self.formUser.OldPassword="";self.formUser.ConfirmPassword="";self.formUser.NewPassword="";self.userForm.$setPristine();self.show.confirmedSave=true;tboFocus('email');return;},function(response){DEBUG&&console.log("User Info Error");if((response.data&&response.data.ModelState&&response.data.ModelState[""]&&response.data.ModelState[""][0])||(response.data&&response.data=="Invalid password.")){self.show.alertOldPassword2=true;self.formUser.OldPassword="";tboFocus('OldPassword');}else{self.errorSave=response.status+" "+response.statusText+': '+((typeof(response.data)==='object')?response.data.Message:response.data);self.formUser.OldPassword="";self.formUser.ConfirmPassword="";self.formUser.NewPassword="";} self.show.alertSave=true;return;})});};this.resetUser=function(){self.formUser.Email=self.user.Email;self.formUser.NewPassword="";self.formUser.ConfirmPassword="";self.formUser.OldPassword="";self.hideAllMessages();self.userForm.$setPristine();tboFocus('email');} this.hideAllMessages=function(){for(var property in self.show){self.show[property]=false;}} $scope.$on('$includeContentLoaded',function(){self.getSettings();});}]);