From 091458765c9e72ebb13d714e66d8b70836d2fb05 Mon Sep 17 00:00:00 2001 From: pwai Date: Tue, 3 Dec 2019 20:12:00 +0000 Subject: [PATCH] feat: add add-role component (#494) Fixes: #487 --- .../add-role/add-role.component.html | 40 ++++++++++++ .../add-role/add-role.component.scss | 3 + .../add-role/add-role.component.spec.ts | 25 ++++++++ .../add-role/add-role.component.ts | 61 +++++++++++++++++++ .../roles-and-permissions.component.html | 2 +- src/app/system/system-routing.module.ts | 19 ++++-- src/app/system/system.module.ts | 4 +- src/app/system/system.service.ts | 8 +++ 8 files changed, 156 insertions(+), 6 deletions(-) create mode 100644 src/app/system/roles-and-permissions/add-role/add-role.component.html create mode 100644 src/app/system/roles-and-permissions/add-role/add-role.component.scss create mode 100644 src/app/system/roles-and-permissions/add-role/add-role.component.spec.ts create mode 100644 src/app/system/roles-and-permissions/add-role/add-role.component.ts diff --git a/src/app/system/roles-and-permissions/add-role/add-role.component.html b/src/app/system/roles-and-permissions/add-role/add-role.component.html new file mode 100644 index 000000000..7e9d82242 --- /dev/null +++ b/src/app/system/roles-and-permissions/add-role/add-role.component.html @@ -0,0 +1,40 @@ +
+ + + +
+ + + +
+ + + Name + + + Role Name is required + + + + + Description + + + Role Description is required + + + +
+ +
+ + + + + + +
+ +
+ +
diff --git a/src/app/system/roles-and-permissions/add-role/add-role.component.scss b/src/app/system/roles-and-permissions/add-role/add-role.component.scss new file mode 100644 index 000000000..d774f68da --- /dev/null +++ b/src/app/system/roles-and-permissions/add-role/add-role.component.scss @@ -0,0 +1,3 @@ +.container { + max-width: 37rem; +} diff --git a/src/app/system/roles-and-permissions/add-role/add-role.component.spec.ts b/src/app/system/roles-and-permissions/add-role/add-role.component.spec.ts new file mode 100644 index 000000000..3efbbf4bf --- /dev/null +++ b/src/app/system/roles-and-permissions/add-role/add-role.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AddRoleComponent } from './add-role.component'; + +describe('AddRoleComponent', () => { + let component: AddRoleComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AddRoleComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AddRoleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/system/roles-and-permissions/add-role/add-role.component.ts b/src/app/system/roles-and-permissions/add-role/add-role.component.ts new file mode 100644 index 000000000..b9b3f5111 --- /dev/null +++ b/src/app/system/roles-and-permissions/add-role/add-role.component.ts @@ -0,0 +1,61 @@ +/** Angular Imports */ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { Router, ActivatedRoute } from '@angular/router'; + +/** Custom Services */ +import { SystemService } from '../../system.service'; + +/** + * Add Role Component. + */ +@Component({ + selector: 'mifosx-add-role', + templateUrl: './add-role.component.html', + styleUrls: ['./add-role.component.scss'] +}) +export class AddRoleComponent implements OnInit { + + /** Role form. */ + roleForm: FormGroup; + + /** + * @param {FormBuilder} formBuilder Form Builder. + * @param {SystemService} systemService System Service. + * @param {ActivatedRoute} route Activated Route. + * @param {Router} router Router for navigation. + */ + constructor(private formBuilder: FormBuilder, + private systemService: SystemService, + private route: ActivatedRoute, + private router: Router) { } + + /** + * Creates the role form. + */ + ngOnInit() { + this.createRoleForm(); + } + + /** + * Creates the create role form. + */ + createRoleForm() { + this.roleForm = this.formBuilder.group({ + 'name': ['', Validators.required], + 'description': ['', Validators.required] + }); + } + + /** + * Submits the role form and creates a role, + * if successful redirects back to roles and permission. + */ + submit() { + this.systemService.createRole(this.roleForm.value) + .subscribe((response: any) => { + this.router.navigate(['../'], { relativeTo: this.route }); + }); + } + +} diff --git a/src/app/system/roles-and-permissions/roles-and-permissions.component.html b/src/app/system/roles-and-permissions/roles-and-permissions.component.html index 8f619c4b1..4beda9fb1 100644 --- a/src/app/system/roles-and-permissions/roles-and-permissions.component.html +++ b/src/app/system/roles-and-permissions/roles-and-permissions.component.html @@ -1,4 +1,4 @@ -
+