﻿import { Component } from '@angular/core';
import { TfabricaUserData } from '../models/tfabrica.userdata.model';
import { TfabricaSharedService } from './tfabrica.shared.service';
import { TfabricaLoginService } from '../login/tfabrica.login.service';
import { Subscription }   from 'rxjs/Subscription';
import { MdIcon } from '@angular/material/icon';
import { Router, ActivatedRoute, Params } from '@angular/router';

@Component({
    selector: 't-userdata',
    template: require('./tfabrica.userdata.component.html')
})
export class TfabricaUserDataComponent {

    userData: TfabricaUserData;
    subscription: Subscription;
    supportedLanguages: any[];
    languageName: string;

    constructor(
        private tfabricaSharedService: TfabricaSharedService,
        private tfabricaLoginService: TfabricaLoginService,
        private router: Router
    ) {
        console.log("TfabricaUserDataComponent constructor");

        this.userData = new TfabricaUserData();
        this.userData = this.userData.getUserData();
        this.supportedLanguages = this.tfabricaSharedService.supportedLanguages;
        console.log(this.supportedLanguages);

        if (this.tfabricaSharedService.isLogged) this.languageName = this.getLanguageName();
        
        this.subscription = tfabricaSharedService.userDataLogged$.subscribe(
            userData => {

                console.log("TfabricaUserDataComponent called from sharedService");

                this.userData = userData;
                this.supportedLanguages = this.tfabricaSharedService.supportedLanguages;
                console.log(this.supportedLanguages);

                this.languageName = this.getLanguageName();             
            }
        );
        
        this.subscription = tfabricaSharedService.translationsReady$.subscribe(
            userData => {
                console.log("TfabricaUserDataComponent called from sharedService");
                this.supportedLanguages = this.tfabricaSharedService.supportedLanguages;
                this.languageName = this.getLanguageName();
                console.log(this.supportedLanguages);
            }
        );
        
    }

    logout() {
        this.tfabricaLoginService.logout();
        this.tfabricaSharedService.userLogged(this.tfabricaLoginService.getUser());
        this.router.navigate(['/login']);
    }

    isCurrentLang(lang: string) {
        // check if the selected lang is current lang
        return this.tfabricaSharedService.isCurrentLang(lang);
    }

    getLanguageName() {
        let ActThis = this;
        let languageName = "";

        try {
            this.supportedLanguages.forEach(function (entry) {
                if (ActThis.isCurrentLang(entry.value)) {
                    languageName = entry.display;
                }
            });
        } catch (Err) { }
        return languageName;
    }

    selectLang(lang: string) {
        // set current lang;
        console.log("new lang: " + lang);
        this.tfabricaSharedService.selectLang(lang);
        this.languageName = this.getLanguageName();
    }

}