Project

General

Profile

1
import {Component, Input, OnChanges, SimpleChanges, ViewChild} from '@angular/core';
2
import { Repository, User } from '../../../domain/typeScriptClasses';
3
import { RepositoryService } from '../../../services/repository.service';
4
import {loadingRepoMessage} from '../../../domain/shared-messages';
5
import {ConfirmationDialogComponent} from '../../../shared/reusablecomponents/confirmation-dialog.component';
6
import {FormControl} from '@angular/forms';
7

    
8
declare var UIkit: any;
9

    
10
@Component ({
11
  selector: 'app-update-repo-admins',
12
  templateUrl: 'update-repo-admins.component.html',
13
})
14

    
15
export class UpdateRepoAdminsComponent implements OnChanges {
16

    
17
  @Input() repo: Repository;
18

    
19
  loadingMessage: string;
20
  errorMessage: string;
21

    
22
  repoAdmins: User[];
23

    
24
  selectedAdminForDelete: User;
25

    
26
  isDeleteModalShown: boolean;
27
  @ViewChild('deleteRepositoryAdminModal')
28
  public deleteRepositoryAdminModal: ConfirmationDialogComponent;
29

    
30
  isAddModalShown: boolean;
31
  @ViewChild('addRepositoryAdminModal')
32
  public addRepositoryAdminModal: ConfirmationDialogComponent;
33

    
34
  modalErrorMessage: string;
35
  modalLoadingMessage: string;
36

    
37
  emailControl = new FormControl();
38

    
39
  constructor (private repoService: RepositoryService) { }
40

    
41
  ngOnChanges(changes: SimpleChanges): void {
42
    this.getRepositoryAdmins();
43
  }
44

    
45
  getRepositoryAdmins() {
46

    
47
    this.loadingMessage = 'Retrieving repository\'s admins...';
48

    
49
    this.repoService.getRepositoryAdmins(this.repo.id).subscribe(
50
      users => {
51
        this.repoAdmins = users;
52
      },
53
      error => {
54
        console.log(error);
55
        this.loadingMessage = '';
56
        this.errorMessage = 'Error retrieving the repository\'s admins';
57
      },
58
      () => {
59
        this.loadingMessage = '';
60
      }
61
    );
62
  }
63

    
64
  showDeletionModal(repoAdmin: User) {
65

    
66
    this.errorMessage = '';
67
    this.loadingMessage = '';
68

    
69
    this.selectedAdminForDelete = repoAdmin;
70
    if (this.selectedAdminForDelete) {
71
      this.deleteRepositoryAdminModal.showModal();
72
      // UIkit.modal('#deletionModal').show();
73
    }
74
  }
75

    
76
  closeDeletionModal() {
77
    this.selectedAdminForDelete = null;
78
    this.deleteRepositoryAdminModal.hideModal();
79
    // UIkit.modal('#deletionModal').hide();
80
  }
81

    
82
  deleteRepoAdmin(event: any) {
83
    console.log('deleting: ', this.selectedAdminForDelete.email);
84

    
85
    // this.deleteRepositoryAdminModal.hideModal();
86
    this.modalLoadingMessage = 'Deleting admin...';
87

    
88
    this.repoService.deleteRepositoryAdmin(this.repo.id, this.selectedAdminForDelete.email).subscribe(
89
      res => {
90
        this.selectedAdminForDelete = null;
91
        this.deleteRepositoryAdminModal.hideModal();
92
        this.getRepositoryAdmins();
93
      },
94
      error => {
95
        console.log('Error deleting repository\'s admins', error);
96
        this.modalLoadingMessage = '';
97
        this.modalErrorMessage = 'Error deleting admin';
98
      },
99
      () => {
100
        this.modalLoadingMessage = '';
101
        // this.deleteRepositoryAdminModal.hideModal();
102
      }
103
    );
104

    
105
  }
106

    
107
  showAddRepoAdminModal() {
108

    
109
    this.emailControl.reset();
110

    
111
    this.modalErrorMessage = '';
112
    this.modalLoadingMessage = '';
113

    
114
    this.addRepositoryAdminModal.showModal();
115
    // UIkit.modal('#addAdminModal').show();
116
  }
117

    
118
  addRepositoryAdmin() {
119

    
120
    this.modalLoadingMessage = 'Adding repository admin';
121

    
122
    console.log('Adding repository admin..', this.emailControl.value);
123

    
124
    this.repoService.addRepositoryAdmin(this.repo.id, this.emailControl.value).subscribe(
125
      res => {
126
        this.addRepositoryAdminModal.hideModal();
127
        this.getRepositoryAdmins();
128
      }, error => {
129
        console.log('Error adding repository admin', error);
130
        this.modalLoadingMessage = '';
131
        if(error.status === 404) {
132
          this.modalErrorMessage = 'This email address is not associated with an OpenAIRE user account.\n' +
133
            'Please make sure the user has an OpenAIRE account and then try again.';
134
        } else {
135
          this.modalErrorMessage = 'Error deleting the user admin, please try again. If the error persists, ' +
136
            'please contact helpdesk@openaire.eu';
137
        }
138
      },
139
      () => {
140
        this.modalLoadingMessage = '';
141
      }
142
    );
143

    
144
    // UIkit.modal('#addAdminModal').hide();
145
  }
146

    
147
}
(4-4/4)