import {Component, OnDestroy, OnInit} from '@angular/core';
import {LecturerDataService} from 'src/app/services/lecturer-data.service';
import {LecturerInfoService} from 'src/app/services/lecturer-info.service';
import {Router} from '@angular/router';
import {QuestionDao} from 'src/app/dao/question.dao';
import {AnswerSetDao} from 'src/app/dao/answer-set.dao';
import {ViewClassesButtonComponent} from '../../GridComponents/ViewClassesButton/view-classes-button.component';
import {GridOptions} from 'ag-grid-community';

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

  public lecturerId;
  public classCode;
  public paperId;
  public questions: QuestionDao[];
  public answers: AnswerSetDao[];
  public rowData: any;
  public gridOptions: GridOptions;
  public columnDefs = [
    {headerName: 'Class Code', field: 'classCode', sortable: true, lockPosition: true},
    {headerName: 'Class Name', field: 'classname', sortable: true, lockPosition: true},
    {headerName: 'Year', field: 'year', sortable: true, lockPosition: true},
    {headerName: 'View', field: '', cellRendererFramework: ViewClassesButtonComponent, lockPosition: true},
  ];

  constructor(private lecturerDataService: LecturerDataService,
              private lecturerInfoService: LecturerInfoService,
              private router: Router) {
  }

  ngOnInit(): void {
    this.questions = [];
    this.answers = [];
    this.lecturerId = this.lecturerDataService.lecturerId;
    this.classCode = this.lecturerDataService.classCode;
    this.paperId = this.lecturerDataService.currentPaper.paperId;
    this.getPaperQuestions();
    this.getPaperSubmissions();
  }

  ngOnDestroy(): void {
    this.questions = [];
    this.answers = [];
  }

  public goToResponse(set: AnswerSetDao): void {
    this.lecturerDataService.currentAnswerSet = set;
    this.lecturerDataService.currentQuestions = this.questions;
    this.router.navigate(['response-view']);
    this.ngOnDestroy();
  }

  private getPaperQuestions(): void {
    this.lecturerInfoService.getPaperQuestions(this.paperId).subscribe((data: QuestionDao[]) => {
      data.forEach(e => this.questions.push(e));
    });
  }

  private getPaperSubmissions(): void {
    this.lecturerInfoService.getPaperAnswers(this.paperId).subscribe((data: AnswerSetDao[]) => {
      data.forEach(e => this.answers.push(e));
    });
  }
}