File

src/app/components/admin/user-list/user-list.component.ts

Metadata

selector app-user-list
styleUrls user-list.component.css
templateUrl user-list.component.html

Inputs

isSelecting

Type: boolean

Default value: false

usersAdded

Type: any[]

Outputs

userToAdd $event type: EventEmitter

Constructor

constructor(apiService: any, router: Router, authService: any)

Methods

onCreateUser
onCreateUser()
Returns: void
onDeleteUser
onDeleteUser(id: number)
Returns: void
onFileSelected
onFileSelected(event: Event)
Returns: void
addUserToCourse
addUserToCourse(user: any)
Returns: void
isInclude
isInclude(user: any)
Returns: void

Properties

fileName
fileName: string
isAdmin
isAdmin: boolean
isLoading
isLoading: boolean
Default value: true
isProfessor
isProfessor: boolean
requiredFileType
requiredFileType: string
Default value: text/csv
user
user: any
users
users: any[]
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { Router } from '@angular/router';
import { Message } from '@app/core/models/message.model';
import { ApiAuthService } from '@app/core/services/auth/api.auth.service';
import { equals, User } from 'src/app/core/models/user.model';
import { ApiService } from 'src/app/core/services/admin/api.admin.service';

@Component({
  selector: 'app-user-list',
  templateUrl: './user-list.component.html',
  styleUrls: ['./user-list.component.css']
})
export class UserListComponent implements OnInit {

  constructor(
    private apiService: ApiService,
    private router: Router,
    private authService: ApiAuthService) {
    this.authService.user.subscribe(user => this.user = user)
  }

  users: User[] = []
  fileName: string = ''
  requiredFileType = "text/csv";
  isLoading: boolean = true;
  user: User | null = <User | null>{};

  @Input() isSelecting: boolean = false;
  @Input() usersAdded: User[] = [];
  @Output() userToAdd = new EventEmitter<User>;


  ngOnInit(): void {
    this.apiService
      .getUsers()
      .subscribe(users => { this.apiService.users = this.users = users; this.isLoading = false })
  }

  async onCreateUser() {
    await this.router.navigate(["/users/create"])
  }

  onDeleteUser(id: number) {
    if (confirm("Seguro que quieres eliminar el usuario")) {
      this.users = this.users.filter(user => user.id != id)
      this.apiService
        .deleteUser(id)
        .subscribe((msg: Message) => { alert(msg.message) })
    }

  }

  onFileSelected(event: Event) {
    const file = (<HTMLInputElement>event.target).files![0];
    console.log(file.type)
    if (file && file.type == this.requiredFileType) {
      this.fileName = file.name;
      const formData: FormData = new FormData();
      formData.append('file', file, file.name);
      this.apiService
        .uploadUserFile(formData)
        .subscribe((msg: Message) => alert(msg.message))
    }
  }

  get isAdmin() {
    return this.user && this.user.role === 'admin';
  }

  get isProfessor() {
    return this.user && this.user.role === 'professor';
  }

  addUserToCourse(user: User) {
    this.userToAdd.emit(user);
    this.usersAdded.push(user);
  }

  isInclude(user: User) {
    let value = false
    this.usersAdded.forEach(userToCompare => {
      if (equals(user, userToCompare))
        value = true;
    })
    return value;
  }


}

results matching ""

    No results matching ""