diff --git a/src/app/group/components/group-edit/group-edit.component.html b/src/app/group/components/group-edit/group-edit.component.html index 591e0ef..f4d8433 100644 --- a/src/app/group/components/group-edit/group-edit.component.html +++ b/src/app/group/components/group-edit/group-edit.component.html @@ -23,7 +23,8 @@

Users:

+ [adminId]="group.admin.id" + (deleteUser)="onDeleteUser($event)">

Group candidates:

diff --git a/src/app/group/components/group-edit/group-edit.component.ts b/src/app/group/components/group-edit/group-edit.component.ts index fed1cbd..e14e518 100644 --- a/src/app/group/components/group-edit/group-edit.component.ts +++ b/src/app/group/components/group-edit/group-edit.component.ts @@ -37,7 +37,7 @@ export class GroupEditComponent implements OnInit { } onLeaveGroup(): void { - this.groupService.leaveGroup(this.groupId).subscribe(() => { + this.groupService.leaveGroup(this.groupId, localStorage.getItem('userId')).subscribe(() => { this.router.navigateByUrl('/group'); }); } @@ -55,4 +55,10 @@ export class GroupEditComponent implements OnInit { }); } + onDeleteUser(userId: string) { + this.groupService.leaveGroup(this.groupId, userId).subscribe(() => { + this.group$ = this.groupService.getGroup(this.groupId); + }); + } + } diff --git a/src/app/group/services/group.service.ts b/src/app/group/services/group.service.ts index 2dd2d29..a0f9435 100644 --- a/src/app/group/services/group.service.ts +++ b/src/app/group/services/group.service.ts @@ -28,8 +28,8 @@ export class GroupService { return this.http.get(`${environment.host}${environment.apiEndpoints.groups.getCurrentUserGroups}/${localStorage.getItem('userId')}`); } - leaveGroup(groupId: number): Observable { - return this.http.get(`${environment.host}${environment.apiEndpoints.groups.leave}/${groupId}/${localStorage.getItem('userId')}`); + leaveGroup(groupId: number, userId: string): Observable { + return this.http.get(`${environment.host}${environment.apiEndpoints.groups.leave}/${groupId}/${userId}`); } delete(groupId: number): Observable { diff --git a/src/app/subject/components/subject-edit/subject-edit.component.html b/src/app/subject/components/subject-edit/subject-edit.component.html index cb72912..2db178a 100644 --- a/src/app/subject/components/subject-edit/subject-edit.component.html +++ b/src/app/subject/components/subject-edit/subject-edit.component.html @@ -42,7 +42,7 @@
- +
@@ -68,7 +68,7 @@
- +
@@ -82,10 +82,10 @@
- +
- +
diff --git a/src/app/subject/components/subject-edit/subject-edit.component.ts b/src/app/subject/components/subject-edit/subject-edit.component.ts index 0995266..5a026ed 100644 --- a/src/app/subject/components/subject-edit/subject-edit.component.ts +++ b/src/app/subject/components/subject-edit/subject-edit.component.ts @@ -1,3 +1,4 @@ +import { GroupService } from './../../../group/services/group.service'; import { Assignment } from './../../interfaces/assignment.interface'; import { Component, OnInit } from '@angular/core'; import { FormGroup, FormControl, Validators, FormArray } from '@angular/forms'; @@ -18,9 +19,11 @@ export class SubjectEditComponent implements OnInit { subjectForm: FormGroup; subjectId: number; groupId: number; + editable: boolean; constructor(private activatedRoute: ActivatedRoute, private subjectService: SubjectService, + private groupService: GroupService, private router: Router) { } ngOnInit(): void { @@ -29,9 +32,13 @@ export class SubjectEditComponent implements OnInit { this.subjectForm = this.createSubjectForm(); this.subjectId = this.activatedRoute.snapshot.params.id; if (this.subjectId) { - this.subjectService.getById(this.subjectId).subscribe((subjectPayload) => { + this.subjectService.getById(this.subjectId, localStorage.getItem('userId')).subscribe((subjectPayload) => { this.subject = subjectPayload; this.updateSubjectForm(this.subject); + this.editable = this.subject.editedBy === localStorage.getItem('userId'); + if (!this.editable) { + this.subjectForm.disable(); + } }); } } @@ -45,6 +52,7 @@ export class SubjectEditComponent implements OnInit { labTeacher: '', mainExam: false, examDate: new Date(), + editedBy: null, tests: [], assignments: [], comments: [] @@ -60,6 +68,7 @@ export class SubjectEditComponent implements OnInit { labTeacher: new FormControl(''), mainExam: new FormControl(false), examDate: new FormControl(this.parseDateTimeToISOFormat(new Date())), + editedBy: new FormControl(null), tests: new FormArray([]), assignments: new FormArray([]), comments: new FormArray([]), diff --git a/src/app/subject/components/subject-list/subject-list.component.html b/src/app/subject/components/subject-list/subject-list.component.html index 1bd4d5b..1111e22 100644 --- a/src/app/subject/components/subject-list/subject-list.component.html +++ b/src/app/subject/components/subject-list/subject-list.component.html @@ -23,6 +23,7 @@
+
diff --git a/src/app/subject/components/subject-list/subject-list.component.ts b/src/app/subject/components/subject-list/subject-list.component.ts index 136787d..d4b078f 100644 --- a/src/app/subject/components/subject-list/subject-list.component.ts +++ b/src/app/subject/components/subject-list/subject-list.component.ts @@ -15,6 +15,7 @@ export class ListComponent implements OnInit { @Output() deleteSubject = new EventEmitter(); @Output() addNewSubject = new EventEmitter(); @Output() editSubject = new EventEmitter(); + @Output() unlockSubject = new EventEmitter(); displayedColumns: string[]; constructor() { } @@ -39,4 +40,8 @@ export class ListComponent implements OnInit { this.editSubject.emit(id); } + onUnlock(id: number): void { + this.unlockSubject.emit(id); + } + } diff --git a/src/app/subject/components/subject-main/subject-main.component.ts b/src/app/subject/components/subject-main/subject-main.component.ts index 931ffe5..46386ff 100644 --- a/src/app/subject/components/subject-main/subject-main.component.ts +++ b/src/app/subject/components/subject-main/subject-main.component.ts @@ -63,7 +63,13 @@ export class SubjectMainComponent implements OnInit { } onEditSubject(id: number): void { - this.router.navigateByUrl(`subject/edit/${id}/${this.groupId}`); + this.router.navigateByUrl(`subject/edit/${id}/${this.userId}`); + } + + onUnlockSubject(id: number): void { + this.subjectService.unlock(id).subscribe(() => { + this.subjects$ = this.subjectService.getListByGroupId(this.groupId); + }); } } diff --git a/src/app/subject/interfaces/subject.interface.ts b/src/app/subject/interfaces/subject.interface.ts index 189adca..dfb34d2 100644 --- a/src/app/subject/interfaces/subject.interface.ts +++ b/src/app/subject/interfaces/subject.interface.ts @@ -10,6 +10,7 @@ export interface Subject { labTeacher: string; mainExam: boolean; examDate: Date; + editedBy?: string; tests: Test[]; assignments: Assignment[]; comments: Comment[]; diff --git a/src/app/subject/services/subject.service.ts b/src/app/subject/services/subject.service.ts index aaee05b..510d1b4 100644 --- a/src/app/subject/services/subject.service.ts +++ b/src/app/subject/services/subject.service.ts @@ -19,8 +19,8 @@ export class SubjectService { return this.http.delete(`${environment.host + environment.apiEndpoints.subjects.delete}/${id}`); } - getById(id: number): Observable { - return this.http.get(`${environment.host + environment.apiEndpoints.subjects.getById}/${id}`); + getById(id: number, userId: string): Observable { + return this.http.get(`${environment.host + environment.apiEndpoints.subjects.getById}/${id}/${userId}`); } getListByGroupId(groupId: number): Observable { @@ -30,4 +30,8 @@ export class SubjectService { update(subject: Subject): Observable { return this.http.put(`${environment.host + environment.apiEndpoints.subjects.update}/${subject.id}`, subject); } + + unlock(id: number): Observable { + return this.http.get(`${environment.host + environment.apiEndpoints.subjects.unlock}/${id}`); + } } diff --git a/src/environments/environment.ts b/src/environments/environment.ts index e071207..35258fb 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -7,7 +7,8 @@ export const environment = { getById: 'api/subjects/get-by-id', delete: 'api/subjects/delete', add: 'api/subjects/add', - update: 'api/subjects/update' + update: 'api/subjects/update', + unlock: 'api/subjects/unlock' }, deleteRequests: { getListByGroupId: 'api/subjectDeleteRequests/list-by-group-id',