diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 789cfea205a78f19caed0dadb2e377a8f6bc752b..f3361902d976debcf0a15c97487416a3d99efb2a 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -32,6 +32,7 @@ import { AppConfig } from './app.config'; import { ThemeModule } from '../theme/theme.module'; import { ServiceWorkerModule } from '@angular/service-worker'; import { environment } from '../environments/environment'; +import { ModeratorService } from './services/http/moderator.service'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { HttpClient } from '@angular/common/http'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; @@ -101,6 +102,7 @@ export function initializeApp(appConfig: AppConfig) { MarkedOptions, UserService, VoteService, + ModeratorService, WsConnectorService, { provide: MatDialogRef, diff --git a/src/app/components/creator/_dialogs/moderators/moderators.component.html b/src/app/components/creator/_dialogs/moderators/moderators.component.html new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/components/creator/_dialogs/moderators/moderators.component.scss b/src/app/components/creator/_dialogs/moderators/moderators.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/components/creator/_dialogs/moderators/moderators.ts b/src/app/components/creator/_dialogs/moderators/moderators.ts new file mode 100644 index 0000000000000000000000000000000000000000..03de99cbed094bdae06c1552963108c692d7835f --- /dev/null +++ b/src/app/components/creator/_dialogs/moderators/moderators.ts @@ -0,0 +1,28 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material'; +import { NotificationService } from '../../../../services/util/notification.service'; +import { TranslateService } from '@ngx-translate/core'; +import { ModeratorService } from '../../../../services/http/moderator.service'; +import { RoomCreatorPageComponent } from '../../room-creator-page/room-creator-page.component'; +import { LanguageService } from '../../../../services/util/language.service'; + +@Component({ + selector: 'app-moderators', + templateUrl: './moderators.component.html', + styleUrls: ['./moderators.component.scss'] +}) +export class ModeratorsComponent implements OnInit { + + constructor(public dialogRef: MatDialogRef<RoomCreatorPageComponent>, + public dialog: MatDialog, + public notificationService: NotificationService, + public translationService: TranslateService, + protected moderatorService: ModeratorService, + protected langService: LanguageService, + @Inject(MAT_DIALOG_DATA) public data: any) { + langService.langEmitter.subscribe(lang => translationService.use(lang)); + } + + ngOnInit() { + } +} diff --git a/src/app/components/creator/creator.module.ts b/src/app/components/creator/creator.module.ts index 349e8dbcfb28f4034306e854ed4c586a178778ae..23bd007379aff117db79cbfdfa886e0f333126df 100644 --- a/src/app/components/creator/creator.module.ts +++ b/src/app/components/creator/creator.module.ts @@ -22,6 +22,7 @@ import { ContentListComponent } from './content-list/content-list.component'; import { ContentEditComponent } from './_dialogs/content-edit/content-edit.component'; import { ContentPresentationComponent } from './content-presentation/content-presentation.component'; import { CommentExportComponent } from './_dialogs/comment-export/comment-export.component'; +import { ModeratorsComponent } from './_dialogs/moderators/moderators'; @NgModule({ imports: [ @@ -52,7 +53,8 @@ import { CommentExportComponent } from './_dialogs/comment-export/comment-export ContentListComponent, ContentEditComponent, ContentPresentationComponent, - CommentExportComponent + CommentExportComponent, + ModeratorsComponent ], entryComponents: [ RoomDeleteComponent, diff --git a/src/app/models/moderator.ts b/src/app/models/moderator.ts new file mode 100644 index 0000000000000000000000000000000000000000..8cea01448e4cd5b132053f6b3f4a9e87d395c016 --- /dev/null +++ b/src/app/models/moderator.ts @@ -0,0 +1,12 @@ +export class Moderator { + userId: string; + loginId: string; + + constructor( + userId: string = '', + loginId: string = '' + ) { + this.userId = userId; + this.loginId = loginId; + } +} diff --git a/src/app/services/http/moderator.service.ts b/src/app/services/http/moderator.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..47c7700baf49bd8c38cf628fb43a98f766c546b4 --- /dev/null +++ b/src/app/services/http/moderator.service.ts @@ -0,0 +1,48 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { Moderator } from '../../models/moderator'; +import { catchError, tap } from 'rxjs/operators'; +import { BaseHttpService } from './base-http.service'; + +const httpOptions = { + headers: new HttpHeaders({ 'Content-Type': 'application/json' }) +}; + +@Injectable() +export class ModeratorService extends BaseHttpService { + private apiUrl = { + base: '/api', + room: '/room', + moderator: '/moderator', + find: '/find' + }; + + constructor(private http: HttpClient) { + super(); + } + + get(roomId: string): Observable<Moderator[]> { + const url = `${this.apiUrl.base + this.apiUrl.room}/${roomId + this.apiUrl.moderator}`; + return this.http.get(url, httpOptions).pipe( + tap(_ => ''), + catchError(this.handleError<any>('getModerator')) + ); + } + + put(roomId: string, userId: string) { + const url = `${this.apiUrl.base + this.apiUrl.room}/${roomId + this.apiUrl.moderator}/${userId}`; + return this.http.put(url, httpOptions).pipe( + tap(_ => ''), + catchError(this.handleError<any>('putModerator')) + ); + } + + delete(roomId: string, userId: string) { + const url = `${this.apiUrl.base + this.apiUrl.room}/${roomId + this.apiUrl.moderator}/${userId}`; + return this.http.delete(url, httpOptions).pipe( + tap(_ => ''), + catchError(this.handleError<any>('deleteModerator')) + ); + } +}