import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { Exercise } from 'app/shared/model/exercise.model';
import { SearchService } from 'app/search/service/search-service';
import { WatchlistManager } from 'app/shared/watchlist/watchlist-manager';
import { LikesService } from 'app/entities/likes/likes.service';
import { ExerciseService } from '../service/exercise.service';

@Component({
  selector: 'jhi-exercise-card',
  templateUrl: './exercise-card.component.html',
  styleUrls: ['./exercise-card.component.scss'],
})
export class ExerciseCardComponent  {
  @Input() exercise: Exercise | undefined;

  @Output() exerciseSelectionEvent = new EventEmitter<Exercise>();

  constructor(
    protected searchService: SearchService,
    private watchlistManager: WatchlistManager,
    private likesService: LikesService,
    private exerciseService: ExerciseService
  ) {}

  selectExercise(): void {
    this.exercise = this.exerciseService.populateExerciseWithData(this.exercise!);
    this.exerciseSelectionEvent.emit(this.exercise);
  }

  isOnCurrentWatchlist(e: Exercise): boolean {
    return this.watchlistManager.isExerciseOnCurrentWatchlist(e);
  }

  handleForCurrentWatchlist(e: Exercise):void {
    this.watchlistManager.handleCheckForCurrentWatchlist(e);
  }

  /**
   * correct missing image urls
   */
  correctImageURL(event: Event): void {
    const img = event.srcElement as HTMLImageElement;
    if (img) {
      img.src = '/content/images/Logo_codeAbility_4c_300dpi_RGB3.gif';
    }
  }
}