import { Component, OnChanges, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { Account } from 'app/core/auth/account.model'; import { AccountService } from 'app/core/auth/account.service'; import { SearchService } from 'app/search/service/search-service'; import { Exercise, searchResultToExercise } from 'app/shared/model/exercise.model'; import { SearchResultsDTO } from 'app/shared/model/search/search-results-dto.model'; import { UserManagementService } from '../user-management/service/user-management.service'; import { User } from '../user-management/user-management.model'; import { MultiSelectDropdownExerciseComponent } from './multi-select-dropdown-exercise/multi-select-dropdown-exercise.component'; import { ReviewManagementService } from './review-management.service'; import { Review } from './review.model'; import { ReviewRequest } from './reviewRequest.model'; @Component({ selector: 'jhi-review-management', templateUrl: './review-management.component.html', styleUrls: ['./review-management.component.scss'], }) export class ReviewManagementComponent implements OnInit, OnChanges { currentAccount: Account | null = null; users: User[] | undefined; results: Exercise[] = []; selectedUsers: string[] | undefined; selectedExercise: Exercise | undefined; reviews: Review[] = []; selectedReview = new Review('', [''], [''], ['']); constructor( private userService: UserManagementService, private accountService: AccountService, private searchService: SearchService, private reviewManagementService: ReviewManagementService, private multiSelectDropdownExerciseComponent: MultiSelectDropdownExerciseComponent, private route: ActivatedRoute ) {} ngOnInit(): void { this.accountService.identity().subscribe(account => (this.currentAccount = account)); this.route.params.subscribe(() => { this.loadAll(); }); } ngOnChanges() { this.loadAll(); } loadAll(): void { this.userService.loadAll().subscribe(users => { this.users = users; }); this.searchService.getAllResources().subscribe( (data: SearchResultsDTO) => { const searchResults = data.searchResult.map(searchResultToExercise); this.results = this.results .concat(searchResults) .filter((value, index, self) => self.findIndex(t => t.title === value.title) === index); }, () => (this.results = []) ); this.reviewManagementService.getAll().subscribe(reviews => { this.reviews = reviews; }); } shareCheckedUserList(users: string[]) { this.selectedUsers = users; } shareExercise(exercise: Exercise) { this.selectedExercise = exercise; } submitReview() { this.reviewManagementService .create(new ReviewRequest(this.selectedExercise!.title, this.selectedUsers!, this.selectedExercise!.gitlabURL)) .subscribe(() => { this.multiSelectDropdownExerciseComponent.checkedList = []; this.loadAll(); }); } deleteReview(review: Review) { this.reviewManagementService.delete(review.id!).subscribe(() => this.loadAll()); } }