diff --git a/src/app/organization/employees/employee.resolver.ts b/src/app/organization/employees/employee.resolver.ts new file mode 100644 index 000000000..279658341 --- /dev/null +++ b/src/app/organization/employees/employee.resolver.ts @@ -0,0 +1,31 @@ +/** Angular Imports */ +import { Injectable } from '@angular/core'; +import { Resolve, ActivatedRouteSnapshot } from '@angular/router'; + +/** rxjs Imports */ +import { Observable } from 'rxjs'; + +/** Custom Services */ +import { OrganizationService } from 'app/organization/organization.service'; + +/** + * Employee data resolver. + */ +@Injectable() +export class EmployeeResolver implements Resolve { + + /** + * @param {OrganizationService} organizationService Organization service. + */ + constructor(private organizationService: OrganizationService) {} + + /** + * Returns the employee data. + * @returns {Observable} + */ + resolve(route: ActivatedRouteSnapshot): Observable { + const employeeId = route.paramMap.get('id'); + return this.organizationService.getEmployee(employeeId); + } + +} diff --git a/src/app/organization/employees/employees.component.html b/src/app/organization/employees/employees.component.html index d61a8f495..402b05086 100644 --- a/src/app/organization/employees/employees.component.html +++ b/src/app/organization/employees/employees.component.html @@ -55,7 +55,7 @@ - + diff --git a/src/app/organization/employees/view-employee/view-employee.component.html b/src/app/organization/employees/view-employee/view-employee.component.html new file mode 100644 index 000000000..2a2fbf8a1 --- /dev/null +++ b/src/app/organization/employees/view-employee/view-employee.component.html @@ -0,0 +1,78 @@ +
+ +
+ +
+ + + + + +
+ +
+ First Name +
+ +
+ {{ employeeData.firstname }} +
+ +
+ Last Name +
+ +
+ {{ employeeData.lastname }} +
+ +
+ Office +
+ +
+ {{ employeeData.officeName }} +
+ +
+ Is Loan Officer +
+ +
+ {{ employeeData.isLoanOfficer === true ? 'Yes' : 'No' }} +
+ +
+ Mobile Number for SMS +
+ +
+ {{ employeeData.mobileNo }} +
+ +
+ Status +
+ +
+ {{ employeeData.isActive === true ? 'Active' : 'Inactive' }} +
+ +
+ Joining Date +
+ +
+ {{ employeeData.joiningDate | date }} +
+ +
+ +
+ +
+ +
diff --git a/src/app/organization/employees/view-employee/view-employee.component.scss b/src/app/organization/employees/view-employee/view-employee.component.scss new file mode 100644 index 000000000..c0be43887 --- /dev/null +++ b/src/app/organization/employees/view-employee/view-employee.component.scss @@ -0,0 +1,10 @@ +.container { + max-width: 37rem; + + .content { + div { + margin: 1rem 0; + word-wrap: break-word; + } + } + } diff --git a/src/app/organization/employees/view-employee/view-employee.component.spec.ts b/src/app/organization/employees/view-employee/view-employee.component.spec.ts new file mode 100644 index 000000000..03efce7e6 --- /dev/null +++ b/src/app/organization/employees/view-employee/view-employee.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ViewEmployeeComponent } from './view-employee.component'; + +describe('ViewEmployeeComponent', () => { + let component: ViewEmployeeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ViewEmployeeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ViewEmployeeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/organization/employees/view-employee/view-employee.component.ts b/src/app/organization/employees/view-employee/view-employee.component.ts new file mode 100644 index 000000000..4808c43ce --- /dev/null +++ b/src/app/organization/employees/view-employee/view-employee.component.ts @@ -0,0 +1,31 @@ +/** Angular Imports */ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; + +/** + * View Employee Component. + */ +@Component({ + selector: 'mifosx-view-employee', + templateUrl: './view-employee.component.html', + styleUrls: ['./view-employee.component.scss'] +}) +export class ViewEmployeeComponent implements OnInit { + + /** Employee data. */ + employeeData: any; + + /** + * Retrieves the employee data from `resolve`. + * @param {ActivatedRoute} route Activated Route. + */ + constructor(private route: ActivatedRoute) { + this.route.data.subscribe((data: { employee: any }) => { + this.employeeData = data.employee; + }); + } + + ngOnInit() { + } + +} diff --git a/src/app/organization/organization-routing.module.ts b/src/app/organization/organization-routing.module.ts index 2755547d5..3cb69db8e 100644 --- a/src/app/organization/organization-routing.module.ts +++ b/src/app/organization/organization-routing.module.ts @@ -14,6 +14,7 @@ import { LoanProvisioningCriteriaComponent } from './loan-provisioning-criteria/ import { OfficesComponent } from './offices/offices.component'; import { EmployeesComponent } from './employees/employees.component'; import { CreateEmployeeComponent } from './employees/create-employee/create-employee.component'; +import { ViewEmployeeComponent } from './employees/view-employee/view-employee.component'; import { CurrenciesComponent } from './currencies/currencies.component'; import { SmsCampaignsComponent } from './sms-campaigns/sms-campaigns.component'; import { AdhocQueryComponent } from './adhoc-query/adhoc-query.component'; @@ -29,6 +30,7 @@ import { CreatePaymentTypeComponent } from './payment-types/create-payment-type/ import { LoanProvisioningCriteriaResolver } from './loan-provisioning-criteria/loan-provisioning-criteria.resolver'; import { OfficesResolver } from './offices/offices.resolver'; import { EmployeesResolver } from './employees/employees.resolver'; +import { EmployeeResolver } from './employees/employee.resolver'; import { CurrenciesResolver } from './currencies/currencies.resolver'; import { SmsCampaignsResolver } from './sms-campaigns/sms-campaigns.resolver'; import { AdhocQueriesResolver } from './adhoc-query/adhoc-queries.resolver'; @@ -96,6 +98,14 @@ const routes: Routes = [ resolve: { offices: OfficesResolver } + }, + { + path: ':id', + component: ViewEmployeeComponent, + data: { title: extract('View Employee'), routeResolveBreadcrumb: ['employee', 'displayName'] }, + resolve: { + employee: EmployeeResolver + } } ] }, @@ -195,6 +205,7 @@ const routes: Routes = [ LoanProvisioningCriteriaResolver, OfficesResolver, EmployeesResolver, + EmployeeResolver, CurrenciesResolver, SmsCampaignsResolver, AdhocQueriesResolver, diff --git a/src/app/organization/organization.module.ts b/src/app/organization/organization.module.ts index ca488e40c..3f2ddd717 100644 --- a/src/app/organization/organization.module.ts +++ b/src/app/organization/organization.module.ts @@ -22,6 +22,7 @@ import { WorkingDaysComponent } from './working-days/working-days.component'; import { CreateOfficeComponent } from './offices/create-office/create-office.component'; import { CreateEmployeeComponent } from './employees/create-employee/create-employee.component'; import { CreatePaymentTypeComponent } from './payment-types/create-payment-type/create-payment-type.component'; +import { ViewEmployeeComponent } from './employees/view-employee/view-employee.component'; /** * Organization Module @@ -49,7 +50,8 @@ import { CreatePaymentTypeComponent } from './payment-types/create-payment-type/ WorkingDaysComponent, CreateOfficeComponent, CreateEmployeeComponent, - CreatePaymentTypeComponent + CreatePaymentTypeComponent, + ViewEmployeeComponent ] }) export class OrganizationModule { } diff --git a/src/app/organization/organization.service.ts b/src/app/organization/organization.service.ts index 78eb102c8..dadbbf37b 100644 --- a/src/app/organization/organization.service.ts +++ b/src/app/organization/organization.service.ts @@ -55,6 +55,14 @@ export class OrganizationService { return this.http.post('/staff', employee); } + /** + * @param {string} employeeId Employee ID of employee. + * @returns {Observable} Employee. + */ + getEmployee(employeeId: string): Observable { + return this.http.get(`/staff/${employeeId}`); + } + /** * @returns {Observable} Currencies data */