Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.99 KB | None | 0 0
  1. import {Component} from '@angular/core';
  2. import {Validators, FormBuilder, FormGroup} from '@angular/forms';
  3.  
  4. import {
  5. App, NavController, ModalController, AlertController, ToastController, ViewController,
  6. LoadingController, Platform
  7. } from 'ionic-angular';
  8.  
  9.  
  10. import {GoogleAnalytics} from 'ionic-native';
  11.  
  12. import {GlobalValidators} from '../../shared/global.validators';
  13. import {AuthenticationService} from '../../shared/authentication/authentication.service';
  14.  
  15. import {User} from '../../shared/authentication/user.model';
  16. // import {UserUpdate} from '../../shared/authentication/user.model';
  17.  
  18. import {PropertiesService} from '../properties/properties.service';
  19.  
  20. import {nTranslateService} from '../../shared/nTranslate/nTranslate.service';
  21.  
  22. import {LoginPage} from '../login/login';
  23.  
  24. import 'rxjs/add/operator/concat';
  25. import 'rxjs/add/observable/forkJoin';
  26. import 'rxjs/add/operator/toPromise';
  27.  
  28. import {EditPasswordPage} from "./editPassword/editPassword";
  29.  
  30. @Component({
  31. selector: 'page-profile',
  32. templateUrl: 'profile.html'
  33. })
  34. export class ProfilePage {
  35.  
  36. public me: User;
  37. public user: FormGroup;
  38.  
  39. public isLoading: boolean = false;
  40. public showError: boolean = false;
  41.  
  42. public loadingPopup;
  43.  
  44. public translations = {
  45. uiTranslations: {},
  46. pageTranslations: {},
  47. validations: {},
  48. defaults: {},
  49. errors: {}
  50. };
  51.  
  52. constructor(public platform: Platform,
  53. private appCtrl: App,
  54. private modalCtrl: ModalController,
  55. private navCtrl: NavController,
  56. private propSvc: PropertiesService,
  57. private nTranslate: nTranslateService,
  58. private alertCtrl: AlertController,
  59. private toastCtrl: ToastController,
  60. private auth: AuthenticationService,
  61. private formBuilder: FormBuilder,
  62. private loadingCtrl: LoadingController,
  63. public viewCtrl: ViewController) {
  64. this.auth.currentUser.subscribe(
  65. user => {
  66.  
  67. console.log("inside");
  68. if(!user) {
  69. console.log(user);
  70. return
  71. }
  72.  
  73. this.me = user;
  74.  
  75. this.user = this.formBuilder.group({
  76. firstName: [user.firstName, Validators.compose([Validators.maxLength(30), Validators.pattern('[a-zA-ZæøåÅØÆ ]*')])],
  77. lastName: [user.lastName, Validators.compose([Validators.maxLength(30), Validators.pattern('[a-zA-ZæøåÅØÆ ]*')])],
  78. // address: [user.address, Validators.compose([Validators.maxLength(30), Validators.pattern('[A-Za-zÅåØøÆæ0-9.-][ ]]*')])],
  79. // zipcode: [user.zipCode, Validators.compose([Validators.maxLength(30), Validators.pattern('[0-9 ]*')])],
  80. // city: [user.city, Validators.compose([Validators.maxLength(30), Validators.pattern('[a-zA-ZæøåÅØÆ ]*')])],
  81. phone1: [user.phone1, Validators.compose([Validators.maxLength(30), Validators.pattern('[0-9 ]*')])],
  82. phone2: [user.phone2, Validators.compose([Validators.maxLength(30), Validators.pattern('[0-9 ]*')])],
  83.  
  84. email: [user.email, Validators.compose([
  85. Validators.required,
  86. GlobalValidators.validateEmail
  87. ])],
  88. oldPassword: '',
  89. newPassword: '',
  90. newPasswordRepeat: ''
  91.  
  92. }, {validator: GlobalValidators.validateEqualPasswords});
  93. }
  94. );
  95.  
  96. this.isLoading = true;
  97. }
  98.  
  99. ionViewWillEnter() {
  100.  
  101. this.platform.ready().then(() => {
  102. GoogleAnalytics.trackView('profile').then(
  103. (res) => {console.log(res);},
  104. (err) => {console.log(err);}
  105. )
  106. });
  107.  
  108.  
  109. console.log('useeer',User);
  110.  
  111. let pageTranslations = this.nTranslate.getSection('profile').toPromise().then(res => this.translations.pageTranslations = res);
  112. let uiTranslations = this.nTranslate.getSection('ui-pages').toPromise().then(res => this.translations.uiTranslations = res);
  113. let validationTranslations = this.nTranslate.getSection('validation').toPromise().then(res => this.translations.validations = res);
  114. let defaultTranslations = this.nTranslate.getSection('default').toPromise().then(res => this.translations.defaults = res);
  115. let errorTranslations = this.nTranslate.getSection('error').toPromise().then(res => this.translations.errors = res);
  116.  
  117. return Promise.all([pageTranslations, uiTranslations, validationTranslations, defaultTranslations, errorTranslations]);
  118.  
  119. }
  120.  
  121. save({value, valid}: {value: User, valid: boolean}) {
  122.  
  123. // if(value.newPassword.length < 1) {
  124. // value.newPassword = undefined;
  125. // }
  126. if(!valid){
  127. return
  128. }
  129. this.appCtrl.setEnabled(false);
  130. this.isLoading = true;
  131.  
  132. console.log("USER", value);
  133.  
  134. this.auth.updateMe(value)
  135. .subscribe(
  136. user => this._toastOnSuccess(),
  137. error => this._alertOnError(error)
  138. )
  139. }
  140.  
  141. logout() {
  142. this.propSvc.clearStoredPropertyId();
  143. this.auth.logout();
  144.  
  145. this.loadingPopup = this.loadingCtrl.create({
  146. content: this.translations.defaults['loading']
  147. });
  148. this.loadingPopup.present();
  149.  
  150. this.navCtrl.setRoot(LoginPage);
  151. this.propSvc.clearStoredPropertyId();
  152. this.loadingPopup.dismiss();
  153. // this.appCtrl.getRootNav().setRoot(LoginPage, null, {animate: true});
  154. }
  155.  
  156. editPassword(user) {
  157. let modal = this.modalCtrl.create(EditPasswordPage, {user: this.user});
  158. modal.present();
  159. }
  160.  
  161.  
  162. dismiss() {
  163. this.viewCtrl.dismiss();
  164. }
  165.  
  166. private _toastOnSuccess() {
  167.  
  168. let toast = this.toastCtrl.create({
  169. message: this.translations.pageTranslations['feedbackSaveSuccessful'],
  170. duration: 3000,
  171. position: 'bottom',
  172. showCloseButton: true,
  173. closeButtonText: this.translations.defaults['ok']
  174. });
  175.  
  176. this.appCtrl.setEnabled(true);
  177. this.isLoading = false;
  178.  
  179. toast.present();
  180. }
  181.  
  182. private _alertOnError(error) {
  183.  
  184. this.showError = true;
  185. var errors = [];
  186. for(let key in error) {
  187. if(error.hasOwnProperty(key)) {
  188. let errMsg = `${key}: ${error[key]}`;
  189. errors.push(errMsg);
  190. }
  191. }
  192.  
  193. let alert = this.alertCtrl.create({
  194. title: this.translations.errors['errorTitle'],
  195. subTitle: errors.join('\n'),
  196. buttons: [this.translations.defaults['ok']]
  197. });
  198. this.appCtrl.setEnabled(true);
  199. this.isLoading = false;
  200.  
  201. alert.present();
  202.  
  203. }
  204.  
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement