From 67d679df8297f1c0fbb0162ccf132f7c81c76b4e Mon Sep 17 00:00:00 2001 From: Patrick Sun Date: Sun, 28 Mar 2021 01:08:29 +1100 Subject: [PATCH] trying to make menu work eith empty components --- .../admin-reward-by-broker.component.html | 28 ++++ .../admin-reward-by-broker.component.scss | 27 ++++ .../admin-reward-by-broker.component.spec.ts | 25 ++++ .../admin-reward-by-broker.component.ts | 64 +++++++++ src/app/app-routing.module.ts | 8 ++ src/app/app.module.ts | 10 +- .../broker-reward.component.html | 1 + .../broker-reward/broker-reward.component.ts | 33 ++++- .../list-all-rewards.component.html | 131 +++++++++++++++--- .../list-all-rewards.component.scss | 33 ++++- .../list-all-rewards.component.ts | 48 +++++-- src/app/main-menu-items.ts | 34 ++--- src/app/models/reward-vs-incom.model.ts | 8 +- .../reward-overview.component.html | 36 +++++ .../reward-overview.component.scss | 4 + .../reward-overview.component.spec.ts | 25 ++++ .../reward-overview.component.ts | 42 ++++++ .../reward-paid/reward-paid.component.html | 1 + .../reward-paid/reward-paid.component.scss | 0 .../reward-paid/reward-paid.component.spec.ts | 25 ++++ src/app/reward-paid/reward-paid.component.ts | 15 ++ .../reward-unpaid.component.html | 1 + .../reward-unpaid.component.scss | 0 .../reward-unpaid.component.spec.ts | 25 ++++ .../reward-unpaid/reward-unpaid.component.ts | 15 ++ 25 files changed, 584 insertions(+), 55 deletions(-) create mode 100644 src/app/admin-reward-by-broker/admin-reward-by-broker.component.html create mode 100644 src/app/admin-reward-by-broker/admin-reward-by-broker.component.scss create mode 100644 src/app/admin-reward-by-broker/admin-reward-by-broker.component.spec.ts create mode 100644 src/app/admin-reward-by-broker/admin-reward-by-broker.component.ts create mode 100644 src/app/reward-overview/reward-overview.component.html create mode 100644 src/app/reward-overview/reward-overview.component.scss create mode 100644 src/app/reward-overview/reward-overview.component.spec.ts create mode 100644 src/app/reward-overview/reward-overview.component.ts create mode 100644 src/app/reward-paid/reward-paid.component.html create mode 100644 src/app/reward-paid/reward-paid.component.scss create mode 100644 src/app/reward-paid/reward-paid.component.spec.ts create mode 100644 src/app/reward-paid/reward-paid.component.ts create mode 100644 src/app/reward-unpaid/reward-unpaid.component.html create mode 100644 src/app/reward-unpaid/reward-unpaid.component.scss create mode 100644 src/app/reward-unpaid/reward-unpaid.component.spec.ts create mode 100644 src/app/reward-unpaid/reward-unpaid.component.ts diff --git a/src/app/admin-reward-by-broker/admin-reward-by-broker.component.html b/src/app/admin-reward-by-broker/admin-reward-by-broker.component.html new file mode 100644 index 0000000..0f696bd --- /dev/null +++ b/src/app/admin-reward-by-broker/admin-reward-by-broker.component.html @@ -0,0 +1,28 @@ + +
+
+
+
+
+
+ + + + {{ dataItem.First +' ' + dataItem.Last}} + + +
+
+
+ + diff --git a/src/app/admin-reward-by-broker/admin-reward-by-broker.component.scss b/src/app/admin-reward-by-broker/admin-reward-by-broker.component.scss new file mode 100644 index 0000000..8ea8c2b --- /dev/null +++ b/src/app/admin-reward-by-broker/admin-reward-by-broker.component.scss @@ -0,0 +1,27 @@ +.broker-photo { + display: inline-block; + width: 256px; + height: 256px; + border-radius: 50%; + background-size: 256px 256px; + background-position: center center; + vertical-align: middle; + line-height: 132px; + margin-left: 5px; + margin-bottom: 10px; + background-repeat: no-repeat; + box-shadow: 1px 1px 10px black; +} + + +kendo-combobox { + width:100%; +} + +.contact-image { + width: 32px; + height: 32px; + margin-right: 8px; + border-radius: 50%; +} + diff --git a/src/app/admin-reward-by-broker/admin-reward-by-broker.component.spec.ts b/src/app/admin-reward-by-broker/admin-reward-by-broker.component.spec.ts new file mode 100644 index 0000000..f00a023 --- /dev/null +++ b/src/app/admin-reward-by-broker/admin-reward-by-broker.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AdminRewardByBrokerComponent } from './admin-reward-by-broker.component'; + +describe('AdminRewardByBrokerComponent', () => { + let component: AdminRewardByBrokerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AdminRewardByBrokerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AdminRewardByBrokerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/admin-reward-by-broker/admin-reward-by-broker.component.ts b/src/app/admin-reward-by-broker/admin-reward-by-broker.component.ts new file mode 100644 index 0000000..b867e43 --- /dev/null +++ b/src/app/admin-reward-by-broker/admin-reward-by-broker.component.ts @@ -0,0 +1,64 @@ +import {Component, OnInit, ViewChild} from '@angular/core'; +import {BrokerModel} from '../models/broker.model'; +import {PeopleService} from '../service/people.service'; +import {AuthService} from '../service/auth.service'; +import {ClonerService} from '../service/clone.service'; +import {BrokerRewardComponent} from '../broker-reward/broker-reward.component'; +import {ComboBoxComponent} from '@progress/kendo-angular-dropdowns'; + +@Component({ + selector: 'app-admin-reward-by-broker', + templateUrl: './admin-reward-by-broker.component.html', + styleUrls: ['./admin-reward-by-broker.component.scss'] +}) +export class AdminRewardByBrokerComponent implements OnInit { + public AllBrokers: BrokerModel[] = []; + public filteredBroker: BrokerModel[] = []; + public brokerSelected: BrokerModel = BrokerModel.EmptyNew(); + public avatarUrl = ''; + + @ViewChild('selectBroker', {static: true}) sb: ComboBoxComponent; + @ViewChild('brokerReward', {static: true}) br: BrokerRewardComponent; + + constructor(private ps: PeopleService, private auth: AuthService, private dcs: ClonerService) { } + + ngOnInit(): void { + this.ps.getBrokerList('').subscribe( + resp => { + this.AllBrokers = resp.List; + this.onFilterBroker(''); + this.sb.toggle(true); + } + ); + } + + public getContactImageUrl(contactId: string): string { + return this.auth.getUrl('avatar/' + contactId); + } + + public onFilterBroker(hint: string): void { + if ( hint === undefined || hint.length === 0 ) { + this.filteredBroker = this.AllBrokers.slice(0); + }else { + this.filteredBroker = this.AllBrokers.filter( + v => v.Display.toLowerCase().includes(hint.toLowerCase()) + ); + } + } + + public onBrokerSelected(broker: BrokerModel): void { + if ( broker === undefined) { + this.avatarUrl = ''; + this.br.ShowBroker('some-broker-that-not-exist'); + this.sb.toggle(true); + }else { + this.avatarUrl = 'url(' + this.auth.getUrl('avatar/' + broker.Id) + ')'; + this.br.ShowBroker(broker.Id); + } + } + + public validBrokerSelected(): boolean{ + return this.brokerSelected !== undefined && this.brokerSelected.Id !== ''; + } +} + diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index e4ff375..2bdcbee 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -15,6 +15,10 @@ import {ClientLoanListComponent} from './client-loan-list/client-loan-list.compo import {ClientProfileComponent} from './client-profile/client-profile.component'; import {E403Component} from './e403/e403.component'; import {ListAllRewardsComponent} from './list-all-rewards/list-all-rewards.component'; +import {AdminRewardByBrokerComponent} from './admin-reward-by-broker/admin-reward-by-broker.component'; +import {RewardOverviewComponent} from './reward-overview/reward-overview.component'; +import {RewardPaidComponent} from './reward-paid/reward-paid.component'; +import {RewardUnpaidComponent} from './reward-unpaid/reward-unpaid.component'; const routes: Routes = [ @@ -34,6 +38,10 @@ const routes: Routes = [ {path : 'client-loan-list', component: ClientLoanListComponent, canActivate: [AuthGuard] }, {path : 'client-profile', component: ClientProfileComponent, canActivate: [AuthGuard] }, {path : 'list-all-rewards', component: ListAllRewardsComponent, canActivate: [AuthGuard] }, + {path : 'list-reward-by-broker', component: AdminRewardByBrokerComponent , canActivate: [AuthGuard] }, + {path : 'reward-overview', component: RewardOverviewComponent, canActivate: [AuthGuard] }, + {path : 'reward-paid', component: RewardPaidComponent, canActivate: [AuthGuard] }, + {path : 'reward-unpaid', component: RewardUnpaidComponent, canActivate: [AuthGuard] }, {path : 'e403', component: E403Component, }, ]; diff --git a/src/app/app.module.ts b/src/app/app.module.ts index aa670dc..8dff6ed 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -72,6 +72,10 @@ import { ClientProfileComponent } from './client-profile/client-profile.componen import { E403Component } from './e403/e403.component'; import {FileSelectModule, UploadModule} from '@progress/kendo-angular-upload'; import { ListAllRewardsComponent } from './list-all-rewards/list-all-rewards.component'; +import { AdminRewardByBrokerComponent } from './admin-reward-by-broker/admin-reward-by-broker.component'; +import { RewardOverviewComponent } from './reward-overview/reward-overview.component'; +import { RewardUnpaidComponent } from './reward-unpaid/reward-unpaid.component'; +import { RewardPaidComponent } from './reward-paid/reward-paid.component'; @@ -114,7 +118,11 @@ import { ListAllRewardsComponent } from './list-all-rewards/list-all-rewards.com ClientLoanListComponent, ClientProfileComponent, E403Component, - ListAllRewardsComponent + ListAllRewardsComponent, + AdminRewardByBrokerComponent, + RewardOverviewComponent, + RewardUnpaidComponent, + RewardPaidComponent ], imports: [ BrowserModule, diff --git a/src/app/broker-reward/broker-reward.component.html b/src/app/broker-reward/broker-reward.component.html index d38a67b..55fb525 100644 --- a/src/app/broker-reward/broker-reward.component.html +++ b/src/app/broker-reward/broker-reward.component.html @@ -1,6 +1,7 @@ diff --git a/src/app/broker-reward/broker-reward.component.ts b/src/app/broker-reward/broker-reward.component.ts index 6e6b4d4..7c20404 100644 --- a/src/app/broker-reward/broker-reward.component.ts +++ b/src/app/broker-reward/broker-reward.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import {Component, Input, OnInit} from '@angular/core'; import {HttpClient} from '@angular/common/http'; import {AuthService} from '../service/auth.service'; import {RewardByUserModel} from '../models/reward-by-user.model'; @@ -11,7 +11,9 @@ import {DataResult, GroupDescriptor, process} from '@progress/kendo-data-query'; }) export class BrokerRewardComponent implements OnInit { + @Input() selectedBrokerId = ''; public gridData: RewardByUserModel[] = [] ; + public loading = false; public groups: GroupDescriptor[] = [{ field: 'Description' }, { field: 'Item' } ]; public gridView: DataResult; @@ -19,13 +21,27 @@ export class BrokerRewardComponent implements OnInit { constructor(private http: HttpClient, private auth: AuthService ) { } ngOnInit(): void { + this.loading = true; + this.loadBrokerReward(); + } + + private loadBrokerReward(): void { this.gridData = []; - this.http.get(this.auth.getUrl('user-reward/')).subscribe( + + // avoid loading everything when used with admin user + if ( this.auth.loggedIn.role === 'admin' && this.selectedBrokerId === '' ) { + this.loading = false; + return ; + } + + // load a single user + this.http.get(this.auth.getUrl('user-reward/' + this.selectedBrokerId )).subscribe( rsp => { rsp.forEach(v => { this.gridData.push(new RewardByUserModel(v)); }); this.loadRewards(); + this.loading = false; } ); } @@ -36,7 +52,20 @@ export class BrokerRewardComponent implements OnInit { } private loadRewards(): void { + this.loading = true; this.gridView = process(this.gridData, { group: this.groups }); + this.loading = false; } + public ShowBroker(id: string): void { + if (id === 'some-broker-that-not-exist' ) { + this.gridView.data = []; + this.gridView.total = 0; + return; + } + + this.loading = true; + this.selectedBrokerId = id; + this.loadBrokerReward(); + } } diff --git a/src/app/list-all-rewards/list-all-rewards.component.html b/src/app/list-all-rewards/list-all-rewards.component.html index 81a6f83..d9568dc 100644 --- a/src/app/list-all-rewards/list-all-rewards.component.html +++ b/src/app/list-all-rewards/list-all-rewards.component.html @@ -1,19 +1,112 @@ - - - - - - - - - - - - - - - +
+ + + + + + + + + + + + {{ dataItem.Amount | currency }} + + + + + + + + +
+
{{ dataItem.ToDisplay }}
+
+ + + + +
+ + + + + + + + + + + + + + + + {{dataItem.Status}} + + + + + + + + + +
+ {{ dataItem.Ts | date: 'yyyy-MM-dd' }} +
+
+ + + + +
+ + + + + + + + + +
+ +
diff --git a/src/app/list-all-rewards/list-all-rewards.component.scss b/src/app/list-all-rewards/list-all-rewards.component.scss index f1f735b..a0aebbc 100644 --- a/src/app/list-all-rewards/list-all-rewards.component.scss +++ b/src/app/list-all-rewards/list-all-rewards.component.scss @@ -1,3 +1,32 @@ -kendo-chart { - height: 600px; +.box { + display: flex; + flex-flow: column; + height: calc(100vh - 48px); +} + + +kendo-grid{ + flex: 0 1 auto; +} + + +.customer-photo{ + display: inline-block; + width: 32px; + height: 32px; + border-radius: 50%; + background-size: 32px 35px; + background-position: center center; + vertical-align: middle; + line-height: 32px; + box-shadow: inset 0 0 1px #999, inset 0 0 10px rgba(0,0,0,.2); + margin-left: 5px; + margin-bottom: 10px; +} + +.customer-name { + display: inline-block; + vertical-align: middle; + line-height: 32px; + padding-left: 10px; } diff --git a/src/app/list-all-rewards/list-all-rewards.component.ts b/src/app/list-all-rewards/list-all-rewards.component.ts index f4db5fc..919431b 100644 --- a/src/app/list-all-rewards/list-all-rewards.component.ts +++ b/src/app/list-all-rewards/list-all-rewards.component.ts @@ -1,8 +1,9 @@ import { Component, OnInit } from '@angular/core'; import {AuthService} from '../service/auth.service'; import {HttpClient} from '@angular/common/http'; -import {RewardVsIncomeModel} from '../models/reward-vs-incom.model'; -import {SeriesLabels} from '@progress/kendo-angular-charts'; +import {RewardByUserModel} from '../models/reward-by-user.model'; +import {DataStateChangeEvent, GridDataResult,} from '@progress/kendo-angular-grid'; +import {State, process} from '@progress/kendo-data-query'; @Component({ selector: 'app-list-all-rewards', @@ -11,20 +12,47 @@ import {SeriesLabels} from '@progress/kendo-angular-charts'; }) export class ListAllRewardsComponent implements OnInit { - public rvi: RewardVsIncomeModel = new RewardVsIncomeModel(); - public seriesLabels: SeriesLabels = { - visible: true, // Note that visible defaults to false - padding: 3, - font: 'bold 9px Arial, sans-serif', - format: 'c0' + + public gridData: RewardByUserModel[] = [] ; + public gridView: GridDataResult; + public state: State = { + skip: 0, + take: 10 }; + public loading = true; constructor(private auth: AuthService, private http: HttpClient) { } ngOnInit(): void { - this.http.get(this.auth.getUrl('chart/reward-vs-income-monthly')).subscribe( - resp => { console.log(resp); this.rvi = resp; } + this.loadInitRewardGrid(); + } + + + public loadInitRewardGrid(): void { + this.loading = true; + this.gridData = []; + this.http.get(this.auth.getUrl('user-reward/')).subscribe( + rsp => { + this.loading = false; + rsp.forEach(v => { + this.gridData.push(new RewardByUserModel(v)); + }); + this.loadRewards(); + } ); } + private loadRewards(): void { + this.gridView = process(this.gridData, this.state); + } + + public dataStateChange(state: DataStateChangeEvent): void { + this.state = state; + this.loadRewards(); + } + + private photoURL(peopleId: any): string { + const url = this.auth.getUrl('avatar/') + peopleId; + return 'url("' + url + '")'; + } } diff --git a/src/app/main-menu-items.ts b/src/app/main-menu-items.ts index e1fcb26..9f0a7c1 100644 --- a/src/app/main-menu-items.ts +++ b/src/app/main-menu-items.ts @@ -15,44 +15,38 @@ export const mainMenuItems: any[] = [ icon: 'dollar', items: [ { text: 'Start New Loan', icon: 'plus', url: './#edit-loan/' }, - { text: 'List All New', icon: 'table' , url: './#list-all-loans' }, + { text: 'List All', icon: 'table' , url: './#list-all-loans' }, + { text: '--', separator: 'true' }, + { text: 'Income', icon: 'dollar', url: './#income' }, + { text: '--', separator: 'true' }, + { text: 'Uploads', icon: 'dollar', url: './#loan-uploads' }, ] }, { text: 'Reward', icon: 'percent', items: [ - { text: 'Overview', icon: 'table', url: './#list-all-rewards#' }, + { text: 'Overview', icon: 'table', url: './#reward-overview' }, + { text: 'List All', icon: 'table', url: './#list-all-rewards' }, + { text: '--', separator: 'true' }, { text: 'By Broker', icon: 'table', url: './#list-reward-by-broker' }, { text: '--', separator: 'true' }, - { text: 'Lender Monthly Uploads', icon: 'attachment' , url: './#uploads'} + { text: 'Not Paid', icon: 'attachment' , url: './#reward-unpaid'}, + { text: 'Paid', icon: 'attachment' , url: './#reward-paid'}, ] }, { - text: 'Clients', + text: 'People', icon: 'user', items: [ - { text: 'Add ', icon: 'plus', url: './#add-client' }, + { text: 'Add ', icon: 'plus', url: './#add-people' }, { text: 'List All', fa: faIdCard , url: './#list-all-client'}, { text: '--', separator: 'true' }, { text: 'Broadcast', icon: 'email', url: './#send-to-all-client'}, + { text: '--', separator: 'true' }, + { text: 'Broadcast', icon: 'email', url: './#send-to-all-client'}, ] }, - - { - text: 'Brokers', - fa: faUserCircle, - items: [ - { text: 'Add ', icon: 'plus', url: '#' }, - { text: 'List All', fa: faIdCardAlt}, - { text: '--', separator: 'true' }, - { text: 'Search' , icon: 'search'}, - { text: '--', separator: 'true' }, - { text: 'Broadcast' , icon : 'email'}, - { text: '--', separator: 'true' }, - { text: 'UnPaid', fa : faMoneyCheck }, - ] - } ]; diff --git a/src/app/models/reward-vs-incom.model.ts b/src/app/models/reward-vs-incom.model.ts index 9ed9ccb..e034104 100644 --- a/src/app/models/reward-vs-incom.model.ts +++ b/src/app/models/reward-vs-incom.model.ts @@ -2,5 +2,11 @@ export class RewardVsIncomeModel { Categories: string[]; - Data: number[][2]; + Data: number[][]; + constructor() { + this.Data = new Array(3); + for (let i = 0; i <= 2 ; i++){ + this.Data[i] = []; + } + } } diff --git a/src/app/reward-overview/reward-overview.component.html b/src/app/reward-overview/reward-overview.component.html new file mode 100644 index 0000000..a08aef1 --- /dev/null +++ b/src/app/reward-overview/reward-overview.component.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/reward-overview/reward-overview.component.scss b/src/app/reward-overview/reward-overview.component.scss new file mode 100644 index 0000000..872c0cc --- /dev/null +++ b/src/app/reward-overview/reward-overview.component.scss @@ -0,0 +1,4 @@ +kendo-chart { + height: calc(100vh - 48px); + flex: 0 1 auto; +} diff --git a/src/app/reward-overview/reward-overview.component.spec.ts b/src/app/reward-overview/reward-overview.component.spec.ts new file mode 100644 index 0000000..4cdab6d --- /dev/null +++ b/src/app/reward-overview/reward-overview.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RewardOverviewComponent } from './reward-overview.component'; + +describe('RewardOverviewComponent', () => { + let component: RewardOverviewComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ RewardOverviewComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(RewardOverviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/reward-overview/reward-overview.component.ts b/src/app/reward-overview/reward-overview.component.ts new file mode 100644 index 0000000..efa9f45 --- /dev/null +++ b/src/app/reward-overview/reward-overview.component.ts @@ -0,0 +1,42 @@ +import { Component, OnInit } from '@angular/core'; +import {RewardVsIncomeModel} from '../models/reward-vs-incom.model'; +import {SeriesLabels} from '@progress/kendo-angular-charts'; +import {AuthService} from '../service/auth.service'; +import {HttpClient} from '@angular/common/http'; + +@Component({ + selector: 'app-reward-overview', + templateUrl: './reward-overview.component.html', + styleUrls: ['./reward-overview.component.scss'] +}) +export class RewardOverviewComponent implements OnInit { + public rvi: RewardVsIncomeModel = new RewardVsIncomeModel(); + public seriesLabels: SeriesLabels = { + visible: true, // Note that visible defaults to false + padding: 3, + font: 'bold 9px Arial, sans-serif', + format: 'c0' + }; + + constructor(private auth: AuthService, private http: HttpClient) { } + + ngOnInit(): void { + this.loadInitialRewardOverviewChart(); + } + + public loadInitialRewardOverviewChart(): void{ + this.http.get(this.auth.getUrl('chart/reward-vs-income-monthly')).subscribe( + resp => { + this.rvi.Categories = resp.Categories; + this.rvi.Data[2] = []; + for (let i = 0; i < 12; i++){ + this.rvi.Data[0] = resp.Data[0]; + this.rvi.Data[1] = resp.Data[1]; + this.rvi.Data[2][i] = this.rvi.Data[1][i] - this.rvi.Data[0][i]; + } + } + ); + } + + +} diff --git a/src/app/reward-paid/reward-paid.component.html b/src/app/reward-paid/reward-paid.component.html new file mode 100644 index 0000000..4b0bef9 --- /dev/null +++ b/src/app/reward-paid/reward-paid.component.html @@ -0,0 +1 @@ +

reward-paid works!

diff --git a/src/app/reward-paid/reward-paid.component.scss b/src/app/reward-paid/reward-paid.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/reward-paid/reward-paid.component.spec.ts b/src/app/reward-paid/reward-paid.component.spec.ts new file mode 100644 index 0000000..18bac03 --- /dev/null +++ b/src/app/reward-paid/reward-paid.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RewardPaidComponent } from './reward-paid.component'; + +describe('RewardPaidComponent', () => { + let component: RewardPaidComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ RewardPaidComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(RewardPaidComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/reward-paid/reward-paid.component.ts b/src/app/reward-paid/reward-paid.component.ts new file mode 100644 index 0000000..710cdfd --- /dev/null +++ b/src/app/reward-paid/reward-paid.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-reward-paid', + templateUrl: './reward-paid.component.html', + styleUrls: ['./reward-paid.component.scss'] +}) +export class RewardPaidComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/reward-unpaid/reward-unpaid.component.html b/src/app/reward-unpaid/reward-unpaid.component.html new file mode 100644 index 0000000..e7e9ce5 --- /dev/null +++ b/src/app/reward-unpaid/reward-unpaid.component.html @@ -0,0 +1 @@ +

reward-unpaid works!

diff --git a/src/app/reward-unpaid/reward-unpaid.component.scss b/src/app/reward-unpaid/reward-unpaid.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/reward-unpaid/reward-unpaid.component.spec.ts b/src/app/reward-unpaid/reward-unpaid.component.spec.ts new file mode 100644 index 0000000..b3e350a --- /dev/null +++ b/src/app/reward-unpaid/reward-unpaid.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RewardUnpaidComponent } from './reward-unpaid.component'; + +describe('RewardUnpaidComponent', () => { + let component: RewardUnpaidComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ RewardUnpaidComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(RewardUnpaidComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/reward-unpaid/reward-unpaid.component.ts b/src/app/reward-unpaid/reward-unpaid.component.ts new file mode 100644 index 0000000..ce77452 --- /dev/null +++ b/src/app/reward-unpaid/reward-unpaid.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-reward-unpaid', + templateUrl: './reward-unpaid.component.html', + styleUrls: ['./reward-unpaid.component.scss'] +}) +export class RewardUnpaidComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +}