File

src/app/components/professor/course-details/course-details.component.ts

Metadata

selector app-course-details
styleUrls course-details.component.css
templateUrl course-details.component.html

Constructor

constructor(apiService: any, apiProfessorService: any, actRoute: ActivatedRoute, dialog: MatDialog)

Methods

changeState
changeState(newState: State)
Returns: void
openUserDialog
openUserDialog()
Returns: void
addUserToCourse
addUserToCourse(usersToAdd: any[])
Returns: void
openSurveyDialog
openSurveyDialog()
Returns: void
addSurveyToCourse
addSurveyToCourse(surveysToAdd: any[])
Returns: void
openQuestionDialog
openQuestionDialog()
Returns: void
addQuestionsToCourse
addQuestionsToCourse(questionsToAdd: any[])
Returns: void
openCreateOnlineGameDialog
openCreateOnlineGameDialog(survey_id: number)
Returns: void
deleteSurveyFromCourse
deleteSurveyFromCourse(survey: any)
Returns: void
deleteQuestionFromCourse
deleteQuestionFromCourse(question: any)
Returns: void
deleteUserFromCourse
deleteUserFromCourse(user: any)
Returns: void

Properties

course
course: any
dialog
dialog: MatDialog
games
games: any[]
questions
questions: any[]
state
state: State
stateType
stateType: typeof State
Default value: State
surveys
surveys: any[]
users
users: any[]
import { Component } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute } from '@angular/router';
import { Course, QuestionCourse, SurveyCourse, UserCourse } from '@app/core/models/course.model';
import { Survey } from '@app/core/models/survey.model';
import { User } from '@app/core/models/user.model';
import { ApiService } from '@app/core/services/admin/api.admin.service';
import { ApiProfessorService } from '@app/core/services/professor/api.professor.service';
import { isEmpty } from 'rxjs';
import { CreateGameDialogComponent } from '../dialogs/create-game-dialog/create-game-dialog.component';
import { LinkQuestionCourseComponent } from '../dialogs/link-question-course/link-question-course.component';
import { LinkSurveyCourseComponent } from '../dialogs/link-survey-course/link-survey-course.component';
import { LinkUserCourseComponent } from '../dialogs/link-user-course/link-user-course.component';
import { Question } from '@app/core/models/question.model';
import { Message } from '@app/core/models/message.model';
import { Game } from '@app/core/models/game.model';

enum State {
  surveys,
  users,
  questions,
  games
}

@Component({
  selector: 'app-course-details',
  templateUrl: './course-details.component.html',
  styleUrls: ['./course-details.component.css']
})
export class CourseProfessorDetailsComponent {

  constructor(
    private apiService: ApiService,
    private apiProfessorService: ApiProfessorService,
    private actRoute: ActivatedRoute,
    public dialog: MatDialog) {
    const id = this.actRoute.snapshot.paramMap.get('id');
    this.apiService
      .getCourse(Number(id))
      .subscribe(course => {
        this.course = course
        this.apiProfessorService
          .getUsersByCourse(this.course.id)
          .subscribe(users => this.users = users)
        this.apiProfessorService
          .getSurveysByCourse(this.course.id)
          .subscribe(surveys => { this.surveys = surveys })
        this.apiProfessorService
          .getQuestionsByCourse(this.course.id)
          .subscribe(questions => { this.questions = questions })
        this.apiProfessorService
          .getGamesByCourse(this.course.id)
          .subscribe(games => { this.games = games })
      })
  }

  course: Course = <Course>{};
  users: User[] = [];
  surveys: Survey[] = [];
  questions: Question[] = []
  games: Game[] = []

  state: State = State.surveys;
  stateType = State;

  changeState(newState: State) {
    this.state = newState;
  }

  openUserDialog(): void {
    const dialogRef = this.dialog.open(LinkUserCourseComponent, {
      data: this.users,
    });

    dialogRef.afterClosed().subscribe(result => {
      if (result == undefined)
        return
      if (result.length != 0) {
        this.addUserToCourse(result);
      }
    })
  }

  addUserToCourse(usersToAdd: User[]) {
    const userToCourse: UserCourse = {
      course_id: this.course.id,
      users: usersToAdd
    }
    this.apiService
      .addUserToCourse(userToCourse)
      .subscribe((msg: Message) => alert(msg.message))
  }

  openSurveyDialog(): void {
    const dialogRef = this.dialog.open(LinkSurveyCourseComponent, {
      data: this.surveys,
    });
    dialogRef.afterClosed().subscribe(result => {
      if (result == undefined)
        return
      if (result.length != 0) {
        this.addSurveyToCourse(result)
      }

    })
  }

  addSurveyToCourse(surveysToAdd: Survey[]) {
    const surveyToCourse: SurveyCourse = {
      course_id: this.course.id,
      surveys: surveysToAdd
    }
    this.apiService
      .addSurveyToCourse(surveyToCourse)
      .subscribe((msg: Message) => alert(msg.message))
  }

  openQuestionDialog(): void {
    const dialogRef = this.dialog.open(LinkQuestionCourseComponent, {
      data: this.questions,
    });
    dialogRef.afterClosed().subscribe(result => {
      if (result == undefined)
        return
      if (result.length != 0) {
        this.addQuestionsToCourse(result)
      }

    })
  }

  addQuestionsToCourse(questionsToAdd: Question[]) {
    const questionToCourse: QuestionCourse = {
      course_id: this.course.id,
      questions: questionsToAdd
    }
    this.apiService
      .addQuestionToCourse(questionToCourse)
      .subscribe((msg: Message) => alert(msg.message))
  }

  openCreateOnlineGameDialog(survey_id: number): void {
    this.dialog.open(CreateGameDialogComponent, {
      data: { course_id: this.course.id, survey_id }
    });
  }

  deleteSurveyFromCourse(survey: Survey) {
    if (confirm("Seguro que quieres eliminar el cuestionario del curso")) {
      this.apiProfessorService
        .deleteSurveyFromCourse(this.course.id, survey.id!)
        .subscribe((msg: Message) => {
          alert(msg.message)
          this.surveys = this.surveys.filter((s) => s.id != survey.id)
        })
    }
  }

  deleteQuestionFromCourse(question: Question) {
    if (confirm("Seguro que quieres eliminar la pregunta del curso")) {
      this.apiProfessorService
        .deleteQuestionFromCourse(this.course.id, question.id)
        .subscribe((msg: Message) => {
          alert(msg.message)
          this.questions = this.questions.filter((q) => q.id != question.id)
        })
    }
  }

  deleteUserFromCourse(user: User) {
    if (confirm("Seguro que quieres eliminar el usuario del curso")) {
      this.apiProfessorService
        .deleteUserFromCourse(this.course.id, user.id)
        .subscribe((msg: Message) => {
          alert(msg.message)
          this.users = this.users.filter((u) => u.id != user.id)
        })
    }
  }
}

results matching ""

    No results matching ""