Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import {Component} from '@angular/core';
- import {NavController, NavParams, ViewController, App, ModalController, Platform} from 'ionic-angular';
- import {Validators, FormGroup, FormBuilder} from "@angular/forms";
- import {GlobalValidators} from "../../shared/global.validators";
- import {GoogleAnalytics} from 'ionic-native';
- import {UserRegister} from "../../shared/authentication/user.model";
- import {AuthenticationService} from "../../shared/authentication/authentication.service";
- import {FiltersPage} from "../filters/filters";
- import {LanguagePage} from "../language/language";
- import {CountryPage} from "../country/country";
- import {nTranslateService} from "../../shared/nTranslate/nTranslate.service";
- import {LocalStorageService} from 'angular-2-local-storage';
- import {LoginPage} from "../login/login";
- @Component({
- selector: 'page-registration',
- templateUrl: 'registration.html'
- })
- export class RegistrationPage {
- public userRegister: FormGroup;
- public user;
- public filteredCountry;
- public filteredCountryFromLocal;
- public filteredLanguage;
- public filteredCLangFromLocal;
- public inputPristine = true;
- public showError: boolean = false;
- public isLoading: boolean = false;
- public translations = {
- uiTranslations: {},
- pageTranslations: {},
- defaults: {},
- errors: {}
- };
- constructor(public navCtrl: NavController,
- public navParams: NavParams,
- public viewCtrl: ViewController,
- private formBuilder: FormBuilder,
- private appCtrl: App,
- private platform: Platform,
- private auth: AuthenticationService,
- private modalCtrl: ModalController,
- private nTranslate: nTranslateService,
- private localStorageService: LocalStorageService) {
- this.userRegister = this.formBuilder.group({
- name: ['', [Validators.required]],
- password: ['', [
- Validators.required,
- // GlobalValidators.validatePassword
- ]],
- email: ['', Validators.compose([
- Validators.required,
- GlobalValidators.validateEmail
- ])],
- locale: ['', Validators.required],
- country: ['', Validators.required]
- });
- }
- ionViewWillEnter() {
- this.platform.ready().then(() => {
- GoogleAnalytics.trackView('registration').then(
- (res) => {
- console.log(res);
- },
- (err) => {
- console.log(err);
- }
- )
- });
- let pageTranslations = this.nTranslate.getSection('keychain').toPromise().then(res => this.translations.pageTranslations = res);
- let uiTranslations = this.nTranslate.getSection('uipages').toPromise().then(res => this.translations.uiTranslations = res);
- let defaultTranslations = this.nTranslate.getSection('default').toPromise().then(res => this.translations.defaults = res);
- let errorTranslations = this.nTranslate.getSection('error').toPromise().then(res => this.translations.errors = res);
- return Promise.all([pageTranslations, uiTranslations, defaultTranslations, errorTranslations]);
- }
- registerUser({value, valid}: { value: UserRegister, valid: boolean }) {
- if (!valid) {
- this.showError = true;
- return;
- }
- this.appCtrl.setEnabled(false);
- this.isLoading = true;
- this.auth.registerUser(value.name, value.password, value.email, value.locale, value.country)
- .subscribe(
- success => this._navigateOnLoginSuccess(value.email, value.password),
- error => {
- this._alertOnLoginError(error)
- }
- );
- }
- dismiss() {
- this.viewCtrl.dismiss();
- }
- private _navigateOnLoginSuccess(email, password) {
- this.auth.login(email, password)
- .subscribe(
- user => this._loginSuccess(),
- error => {
- this._loginError()
- }
- );
- }
- private _loginSuccess() {
- let modal = this.modalCtrl.create(FiltersPage);
- modal.present();
- }
- private _loginError() {
- this.isLoading = false;
- this.showError = true;
- }
- private _alertOnLoginError(error) {
- console.log(error);
- this.isLoading = false;
- this.showError = true;
- }
- gotToCountryPage() {
- let modal = this.modalCtrl.create(CountryPage);
- modal.onDidDismiss(() => {
- this.userRegister.get('country').setValue(this.localStorageService.get('COUNTRY'));
- this.filteredCountry = this.localStorageService.get('COUNTRY');
- });
- modal.present();
- }
- gotToLanguagePage() {
- let modal = this.modalCtrl.create(LanguagePage);
- modal.onDidDismiss(() => {
- this.userRegister.get('locale').setValue(this.localStorageService.get('DEFAULT_LANGUAGE')['locale']);
- this.filteredLanguage = this.localStorageService.get('DEFAULT_LANGUAGE')['name'];
- });
- modal.present();
- }
- onKey(event: any) {
- this.inputPristine = false;
- }
- userFormInvalid(): boolean {
- return this.inputPristine;
- }
- checkInvalidity(formControlName: string, formValidatorName: string): boolean {
- if (!this.userRegister.controls[formControlName].errors || this.userRegister.controls[formControlName].errors === null) {
- return;
- }
- return (
- this.userRegister.controls[formControlName].errors[formValidatorName] === true &&
- this.userRegister.controls[formControlName].touched &&
- this.userRegister.controls[formControlName].dirty
- );
- }
- public setTouched(controlName: string) {
- this.userRegister.get(controlName).markAsTouched();
- }
- }
Add Comment
Please, Sign In to add comment