Skip to content
Snippets Groups Projects
course-item.component.ts 4.11 KiB
Newer Older
import { DegreePlannerDataService } from './../../../core/service/degree-planner-data.service';
import { ActivatedRoute } from '@angular/router';
import { Component, Input, ChangeDetectorRef, OnInit } from '@angular/core';
import { Course } from '../../../core/models/course';
import { Subject } from '@app/core/models/course-details';
import { Term } from '../../../core/models/term';
import { DegreePlan } from '../../../core/models/degree-plan';
import { SavedForLaterCourse } from '../../../core/models/saved-for-later-course';
import { DataService } from '../../../core/data.service';
import { CourseDetailsDialogComponent } from '../../dialogs/course-details-dialog/course-details-dialog.component';
// tslint:disable-next-line:max-line-length
import { RemoveCourseConfirmDialogComponent } from '../../dialogs/remove-course-confirm-dialog/remove-course-confirm-dialog.component';
import { MatDialog } from '@angular/material';

@Component({
Joe Van Boxtel's avatar
Joe Van Boxtel committed
	selector: 'cse-course-item',
	templateUrl: './course-item.component.html',
	styleUrls: ['./course-item.component.scss']

export class CourseItemComponent implements OnInit {
	termsInAcademicYear: [];
	// favoriteCourse: FavoriteCourse;
	degreePlans: DegreePlan[];
	selectedDegreePlan: number;
	// termCodes: any;
	termCodes: any;
	@Input() course: Course;
	@Input() status: string;
	@Input() disabled: string;
	// @Input() term: Term;
	// @Input() termsByAcademicYear: Object;
	// @Input() refreshContent;
	@Input() savedForLater: Boolean;
	subjects: Object;

	constructor(
		private dataService: DataService,
		public dialog: MatDialog,
		private route: ActivatedRoute,
		private degreePlannerDataSvc: DegreePlannerDataService,
		private cdRef: ChangeDetectorRef) {
			this.degreePlans = route.snapshot.data.requiredData.degreePlans;
			this.selectedDegreePlan = this.degreePlans[0].roadmapId;
			this.subjects = route.snapshot.data.requiredData.subjects;
			this.termCodes =  this.degreePlannerDataSvc.getAllTerms();
	// removeCourseFromUI(courseItem) {
	// 	const index = courseItem.indexOf(this.course, 0);
	// 	if (index > -1) {
	// 		courseItem = courseItem.splice(index, 1);
	// 	}
	// }

	openCourseDetailsDialog(course) {
		this.dataService.getCourseDetails(course.termCode, course.subjectCode, course.courseId)
		.subscribe(courseDetails => {
			const dialogRef = this.dialog.open(CourseDetailsDialogComponent, {
				data: { courseDetails: courseDetails }
			});
		});
	}

	// Get term codes to display in the course item menu
	// getAllTermCodes() {
	// 	const termYears: any = Object.values(this.termsByAcademicYear);
	// 	this.termsInAcademicYear = termYears.map(year => year.terms).flat();
	// }

	// Add this coruse to the favorites list
	moveToFavorites(course) {
		this.dataService.saveFavoriteCourse(course.subjectCode, course.courseId)
		.subscribe(favoriteCourse => {
Scott Berg's avatar
Scott Berg committed
			console.log('Update UI missing');
			// this.favoriteCourses.push(this.course);
		});
		// Remove this course from term
		this.dataService.removeCourse(this.degreePlannerDataSvc.getPlanId(), course.id)
Scott Berg's avatar
Scott Berg committed
			console.log('Update UI missing');
			// this.removeCourseFromUI(this.courses);
		});
	}

	// Add Favorite course to term
	addToTerm(newTermCode) {
		this.dataService.addCourse( this.course.subjectCode, this.course.courseId, newTermCode, this.degreePlannerDataSvc.getPlanId())
Scott Berg's avatar
Scott Berg committed
			console.log('Update UI missing');
		});

		// Remove course from favorites list
		this.dataService.removeFavoriteCourse(this.course.subjectCode, this.course.courseId)
		.subscribe(data => {
Scott Berg's avatar
Scott Berg committed
			console.log('Update UI missing');
	// Move course to another term
	switchTerm(newTermCode) {
		this.dataService.updateCourseTerm(this.degreePlannerDataSvc.getPlanId(), this.course.id, newTermCode)
Scott Berg's avatar
Scott Berg committed
		.subscribe(data => { console.log('Update UI missing');
	openRemoveConfirmationDialog(savedForLater) {
		const dialogRef = this.dialog.open(RemoveCourseConfirmDialogComponent, {
			data: { course: this.course, courses: this.courses, favoriteCourses: this.favoriteCourses, savedForLater }
		});
	}