Guest User

Untitled

a guest
Jul 7th, 2017
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.09 KB | None | 0 0
  1. import {Component} from '@angular/core';
  2. import {NavController, NavParams, ViewController, App, ModalController, Platform} from 'ionic-angular';
  3. import {Validators, FormGroup, FormBuilder} from "@angular/forms";
  4. import {GlobalValidators} from "../../shared/global.validators";
  5.  
  6. import {GoogleAnalytics} from 'ionic-native';
  7. import {UserRegister} from "../../shared/authentication/user.model";
  8. import {AuthenticationService} from "../../shared/authentication/authentication.service";
  9. import {FiltersPage} from "../filters/filters";
  10. import {LanguagePage} from "../language/language";
  11. import {CountryPage} from "../country/country";
  12. import {nTranslateService} from "../../shared/nTranslate/nTranslate.service";
  13.  
  14. import {LocalStorageService} from 'angular-2-local-storage';
  15. import {LoginPage} from "../login/login";
  16.  
  17.  
  18. @Component({
  19. selector: 'page-registration',
  20. templateUrl: 'registration.html'
  21. })
  22. export class RegistrationPage {
  23.  
  24. public userRegister: FormGroup;
  25.  
  26. public user;
  27. public filteredCountry;
  28. public filteredCountryFromLocal;
  29. public filteredLanguage;
  30. public filteredCLangFromLocal;
  31.  
  32. public inputPristine = true;
  33.  
  34. public showError: boolean = false;
  35. public isLoading: boolean = false;
  36.  
  37. public translations = {
  38. uiTranslations: {},
  39. pageTranslations: {},
  40. defaults: {},
  41. errors: {}
  42. };
  43.  
  44. constructor(public navCtrl: NavController,
  45. public navParams: NavParams,
  46. public viewCtrl: ViewController,
  47. private formBuilder: FormBuilder,
  48. private appCtrl: App,
  49. private platform: Platform,
  50. private auth: AuthenticationService,
  51. private modalCtrl: ModalController,
  52. private nTranslate: nTranslateService,
  53. private localStorageService: LocalStorageService) {
  54.  
  55. this.userRegister = this.formBuilder.group({
  56. name: ['', [Validators.required]],
  57. password: ['', [
  58. Validators.required,
  59. // GlobalValidators.validatePassword
  60. ]],
  61. email: ['', Validators.compose([
  62. Validators.required,
  63. GlobalValidators.validateEmail
  64. ])],
  65. locale: ['', Validators.required],
  66. country: ['', Validators.required]
  67. });
  68.  
  69. }
  70.  
  71. ionViewWillEnter() {
  72.  
  73. this.platform.ready().then(() => {
  74. GoogleAnalytics.trackView('registration').then(
  75. (res) => {
  76. console.log(res);
  77. },
  78. (err) => {
  79. console.log(err);
  80. }
  81. )
  82. });
  83.  
  84. let pageTranslations = this.nTranslate.getSection('keychain').toPromise().then(res => this.translations.pageTranslations = res);
  85. let uiTranslations = this.nTranslate.getSection('uipages').toPromise().then(res => this.translations.uiTranslations = res);
  86. let defaultTranslations = this.nTranslate.getSection('default').toPromise().then(res => this.translations.defaults = res);
  87. let errorTranslations = this.nTranslate.getSection('error').toPromise().then(res => this.translations.errors = res);
  88.  
  89. return Promise.all([pageTranslations, uiTranslations, defaultTranslations, errorTranslations]);
  90.  
  91. }
  92.  
  93. registerUser({value, valid}: { value: UserRegister, valid: boolean }) {
  94.  
  95. if (!valid) {
  96. this.showError = true;
  97. return;
  98. }
  99. this.appCtrl.setEnabled(false);
  100. this.isLoading = true;
  101. this.auth.registerUser(value.name, value.password, value.email, value.locale, value.country)
  102. .subscribe(
  103. success => this._navigateOnLoginSuccess(value.email, value.password),
  104. error => {
  105. this._alertOnLoginError(error)
  106. }
  107. );
  108.  
  109. }
  110.  
  111. dismiss() {
  112. this.viewCtrl.dismiss();
  113. }
  114.  
  115. private _navigateOnLoginSuccess(email, password) {
  116. this.auth.login(email, password)
  117. .subscribe(
  118. user => this._loginSuccess(),
  119. error => {
  120. this._loginError()
  121. }
  122. );
  123.  
  124. }
  125.  
  126. private _loginSuccess() {
  127. let modal = this.modalCtrl.create(FiltersPage);
  128. modal.present();
  129. }
  130.  
  131. private _loginError() {
  132. this.isLoading = false;
  133. this.showError = true;
  134. }
  135.  
  136. private _alertOnLoginError(error) {
  137. console.log(error);
  138. this.isLoading = false;
  139. this.showError = true;
  140. }
  141.  
  142. gotToCountryPage() {
  143.  
  144. let modal = this.modalCtrl.create(CountryPage);
  145. modal.onDidDismiss(() => {
  146.  
  147. this.userRegister.get('country').setValue(this.localStorageService.get('COUNTRY'));
  148. this.filteredCountry = this.localStorageService.get('COUNTRY');
  149. });
  150.  
  151. modal.present();
  152. }
  153.  
  154. gotToLanguagePage() {
  155.  
  156. let modal = this.modalCtrl.create(LanguagePage);
  157. modal.onDidDismiss(() => {
  158.  
  159. this.userRegister.get('locale').setValue(this.localStorageService.get('DEFAULT_LANGUAGE')['locale']);
  160. this.filteredLanguage = this.localStorageService.get('DEFAULT_LANGUAGE')['name'];
  161.  
  162. });
  163.  
  164. modal.present();
  165. }
  166.  
  167. onKey(event: any) {
  168. this.inputPristine = false;
  169. }
  170.  
  171. userFormInvalid(): boolean {
  172. return this.inputPristine;
  173. }
  174.  
  175. checkInvalidity(formControlName: string, formValidatorName: string): boolean {
  176.  
  177. if (!this.userRegister.controls[formControlName].errors || this.userRegister.controls[formControlName].errors === null) {
  178. return;
  179. }
  180.  
  181. return (
  182. this.userRegister.controls[formControlName].errors[formValidatorName] === true &&
  183. this.userRegister.controls[formControlName].touched &&
  184. this.userRegister.controls[formControlName].dirty
  185. );
  186. }
  187.  
  188. public setTouched(controlName: string) {
  189. this.userRegister.get(controlName).markAsTouched();
  190. }
  191.  
  192. }
Add Comment
Please, Sign In to add comment