84 lines
2.4 KiB
TypeScript
84 lines
2.4 KiB
TypeScript
import { Component, OnInit, ViewChild } from '@angular/core';
|
|
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
|
import { take } from 'rxjs/operators';
|
|
import { MemberService } from 'src/app/_services/member.service';
|
|
import { Member } from 'src/app/_models/member';
|
|
import { User } from 'src/app/_models/user';
|
|
import { AccountService } from 'src/app/_services/account.service';
|
|
import { LibraryAccessModalComponent } from '../_modals/library-access-modal/library-access-modal.component';
|
|
import { ToastrService } from 'ngx-toastr';
|
|
|
|
@Component({
|
|
selector: 'app-manage-users',
|
|
templateUrl: './manage-users.component.html',
|
|
styleUrls: ['./manage-users.component.scss']
|
|
})
|
|
export class ManageUsersComponent implements OnInit {
|
|
|
|
members: Member[] = [];
|
|
loggedInUsername = '';
|
|
|
|
// Create User functionality
|
|
createMemberToggle = false;
|
|
|
|
constructor(private memberService: MemberService,
|
|
private accountService: AccountService,
|
|
private modalService: NgbModal,
|
|
private toastr: ToastrService) {
|
|
this.accountService.currentUser$.pipe(take(1)).subscribe((user: User) => {
|
|
this.loggedInUsername = user.username;
|
|
});
|
|
}
|
|
|
|
ngOnInit(): void {
|
|
this.loadMembers();
|
|
}
|
|
|
|
loadMembers() {
|
|
this.memberService.getMembers().subscribe(members => {
|
|
this.members = members.filter(member => member.username !== this.loggedInUsername);
|
|
});
|
|
}
|
|
|
|
canEditMember(member: Member): boolean {
|
|
return this.loggedInUsername !== member.username;
|
|
}
|
|
|
|
createMember() {
|
|
this.createMemberToggle = true;
|
|
}
|
|
|
|
onMemberCreated(success: boolean) {
|
|
this.createMemberToggle = false;
|
|
this.loadMembers();
|
|
}
|
|
|
|
openEditLibraryAccess(member: Member) {
|
|
const modalRef = this.modalService.open(LibraryAccessModalComponent);
|
|
modalRef.componentInstance.member = member;
|
|
modalRef.closed.subscribe((closeResult: any) => {
|
|
console.log('Closed Result', closeResult);
|
|
});
|
|
}
|
|
|
|
openChangeRole(member: Member) {
|
|
|
|
}
|
|
|
|
deleteUser(member: Member) {
|
|
if (confirm('Are you sure you want to delete this user?')) {
|
|
this.memberService.deleteMember(member.username).subscribe(() => {
|
|
this.loadMembers();
|
|
this.toastr.success(member.username + ' has been deleted.');
|
|
});
|
|
}
|
|
}
|
|
|
|
formatLibraries(member: Member) {
|
|
if (member.libraries.length === 0) {
|
|
return 'None';
|
|
}
|
|
|
|
return member.libraries.map(item => item.name + ', ');
|
|
}
|
|
}
|