import { Component, OnInit } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; import { TranslateService } from '@ngx-translate/core'; import { takeUntil } from 'rxjs/operators'; import { UserCriteria } from '../../../../models/criteria/users/UserCriteria'; import { UserCriteriaErrorModel } from '../../../../models/criteria/users/UserCriteriaErrorModel'; import { Principal } from '../../../../models/login/Principal'; import { Utilities } from '../../../../utilities/utilities'; import { Validation, ValidationContext } from '../../../../utilities/validators/ValidationContext'; import { BaseCriteriaComponent } from '../base/base-criteria.component'; @Component({ selector: 'app-users-criteria-component', templateUrl: './users-criteria.component.html', styleUrls: ['./users-criteria.component.scss'], providers: [Utilities] }) export class UsersCriteriaComponent extends BaseCriteriaComponent implements OnInit { public role: Principal.AppRole; public criteria: UserCriteria = new UserCriteria(); constructor( public language: TranslateService, public formBuilder: FormBuilder, public utilities: Utilities ) { super(new UserCriteriaErrorModel()); } ngOnInit() { super.ngOnInit(); if (this.criteria == null) { this.criteria = new UserCriteria(); } if (this.formGroup == null) { this.formGroup = this.buildForm(); } } setCriteria(criteria: UserCriteria): void { this.criteria = criteria; this.formGroup = this.buildForm(); } public fromJSONObject(item: any): UserCriteria { this.criteria = new UserCriteria(); this.criteria.label = item.Label; this.criteria.appRoles = item.appRoles; return this.criteria; } buildForm(): FormGroup { const context: ValidationContext = this.createValidationContext(); return this.formBuilder.group({ like: [this.criteria.label, context.getValidation('label').validators], appRoles: [this.criteria.appRoles, context.getValidation('appRoles').validators], }); } createValidationContext(): ValidationContext { const validationContext: ValidationContext = new ValidationContext(); const validationArray: Validation[] = new Array(); validationArray.push({ key: 'label' }); validationArray.push({ key: 'appRoles' }); validationContext.validation = validationArray; return validationContext; } getPrincipalAppRoleValues(): Number[] { let keys: string[] = Object.keys(Principal.AppRole); keys = keys.slice(0, keys.length / 2); const values: Number[] = keys.map(Number); return values; } getPrincipalAppRoleWithLanguage(role: Principal.AppRole): string { let result = ''; this.language.get(this.utilities.convertFromPrincipalAppRole(role)) .pipe(takeUntil(this._destroyed)) .subscribe((value: string) => { result = value; }); return result; } }