import {Component, OnDestroy, OnInit} from '@angular/core';
import {LoginService} from 'src/app/services/login.service';
import {Router} from '@angular/router';
import {LecturerViewService} from 'src/app/services/lecturer-view.service';
import {takeWhile} from 'rxjs/operators';
import {LecturerDataService} from '../../services/lecturer-data.service';

@Component({
  selector: 'app-lecturer-navbar',
  templateUrl: './lecturer-navbar.component.html',
  styleUrls: ['./lecturer-navbar.component.css']
})
export class LecturerNavbarComponent implements OnInit, OnDestroy {

  public onDashboard: Boolean;
  public onCreatePaper: Boolean;
  public onCreateTemplate: Boolean;
  public onTemplateView: Boolean;
  public isAlive = true;

  constructor(private loginService: LoginService,
              private lecturerDataService: LecturerDataService,
              private lecturerViewService: LecturerViewService,
              private router: Router) {
  }

  public logout(): void {
    this.loginService.logout();
    this.router.navigate(['/login']);
  }

  ngOnInit(): void {
    this.lecturerViewService.onDashboard$.subscribe(flag => {
      this.onDashboard = !flag;
    }).add(takeWhile(() => this.isAlive));
    this.lecturerViewService.onCreatePaper$.subscribe(flag => {
      this.onCreatePaper = !flag;
    }).add(takeWhile(() => this.isAlive));
    this.lecturerViewService.onCreateTemplate$.subscribe(flag => {
      this.onCreateTemplate = !flag;
    }).add(takeWhile(() => this.isAlive));
    this.lecturerViewService.onTemplateView$.subscribe(flag => {
      this.onTemplateView = !flag;
    }).add(takeWhile(() => this.isAlive));
  }

  ngOnDestroy(): void {
    this.isAlive = false;
  }

  public goToDashboard() {
    this.router.navigate(['ldashboard']);
  }

  public createPaper() {
    this.lecturerDataService.isTemplate = false;
    this.router.navigate(['creation-view']);
  }

  public createTemplate() {
    this.lecturerDataService.isTemplate = true;
    this.lecturerDataService.classCode = 'NO_CLASS';
    this.router.navigate(['creation-template-view']);
  }

  public goToTemplateView() {
    this.router.navigate(['template-view']);
  }
}