edit-roles.component.ts 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import {Component, Inject} from '@angular/core';
  2. import {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';
  3. import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material';
  4. import {Role, RolesService} from '../../../../classes/resorcess/roles.service';
  5. import {Dialog} from '../../../../classes/base_components/dialog/dialog';
  6. import {EditComponent} from '../../../../classes/base_components/edit/edit.component';
  7. import {PermissionGroup, PermissionGroupsService, PermissionsService} from '../../../../classes/resorcess/permissions.service';
  8. import {ICollection} from 'ngx-jsonapi';
  9. import {Base} from 'ngx-jsonapi/services/base';
  10. import {setErrors} from '../../../../classes/utils';
  11. @Component({
  12. selector: 'app-edit-roles',
  13. templateUrl: './edit-roles.component.html',
  14. styleUrls: ['./edit-roles.component.scss']
  15. })
  16. export class EditRolesComponent extends EditComponent {
  17. public loading = false;
  18. nameCtrl = new FormControl('', [Validators.required]);
  19. slugCtrl = new FormControl('', [Validators.required]);
  20. permissionsCtrl = new FormControl('', [Validators.required]);
  21. form: FormGroup;
  22. role: Role;
  23. permissionGroups: ICollection<PermissionGroup> = Base.newCollection<PermissionGroup>();
  24. constructor(private fb: FormBuilder,
  25. public rolesService: RolesService,
  26. private permision: PermissionsService,
  27. private permissionGroupsService: PermissionGroupsService,
  28. protected dialog: Dialog,
  29. public dialogRef: MatDialogRef<EditRolesComponent>,
  30. @Inject(MAT_DIALOG_DATA) data,
  31. ) {
  32. super();
  33. this.role = data;
  34. // fetch permissions lists
  35. this.permision.all({include: ['group']}).subscribe(
  36. x => {
  37. if (x.$source != 'server' || x.$is_loading)
  38. return;
  39. }
  40. );
  41. this.permissionGroupsService.all({include: ['permissions']})
  42. .subscribe(
  43. response => {
  44. if (response.$source != 'server' || response.$is_loading)
  45. return;
  46. for(let i =0 ; i<response.$toArray.length ; i++){
  47. }
  48. this.permissionGroups = response;
  49. },
  50. error => console.error('Could not load authors')
  51. );
  52. this.form = this.fb.group({
  53. slugCtrl: this.slugCtrl,
  54. nameCtrl: this.nameCtrl,
  55. permissionsCtrl: this.permissionsCtrl,
  56. });
  57. }
  58. onSubmit() {
  59. this.loading = true;
  60. if (!this.form.valid) {
  61. this.loading = false;
  62. return;
  63. }
  64. this.role.save({},
  65. () => {
  66. this.loading = false;
  67. this.close();
  68. },
  69. (error) => {
  70. this.loading = false;
  71. // todo inp test kon
  72. const JsonV = error.errors;
  73. setErrors(JsonV, this.form.controls, this.dialog);
  74. });
  75. }
  76. close() {
  77. this.dialogRef.close(true);
  78. }
  79. }