From bef9191cbe976330cd10fa5ec76da8ccb23e6143 Mon Sep 17 00:00:00 2001 From: Patrick Sun Date: Tue, 16 Mar 2021 13:26:10 +1100 Subject: [PATCH] edit people before go to reward. --- src/app/app.module.ts | 6 +++-- src/app/loan-edit/loan-edit.component.html | 15 +++++++---- src/app/loan-edit/loan-edit.component.ts | 3 ++- .../people-reward.component.html | 2 +- .../people-reward/people-reward.component.ts | 27 ++++++++++++++++--- src/app/models/loan.model.ts | 7 ++++- .../people-select.component.html | 0 .../people-select.component.scss | 0 .../people-select.component.spec.ts | 0 .../people-select/people-select.component.ts | 6 ++--- 10 files changed, 50 insertions(+), 16 deletions(-) rename src/app/{loan-edit => }/people-select/people-select.component.html (100%) rename src/app/{loan-edit => }/people-select/people-select.component.scss (100%) rename src/app/{loan-edit => }/people-select/people-select.component.spec.ts (100%) rename src/app/{loan-edit => }/people-select/people-select.component.ts (97%) diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 909e928..48278f4 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -59,10 +59,11 @@ import { BasicinfoComponent } from './loan-edit/basicinfo/basicinfo.component'; import { PeopleRewardComponent } from './loan-edit/people-reward/people-reward.component'; import { TrailIncomeComponent } from './loan-edit/trail-income/trail-income.component'; import { HintCardComponent } from './loan-edit/hint-card/hint-card.component'; -import { PeopleSelectComponent } from './loan-edit/people-select/people-select.component'; +import { PeopleSelectComponent } from './people-select/people-select.component'; import { LoanDetailComponent } from './loan-detail/loan-detail.component'; import {LoanSingleService} from './service/loan.single.service'; import { RatingInputComponent } from './rating-input/rating-input.component'; +import { LoanEditPeopleComponent } from './loan-edit-people/loan-edit-people.component'; @@ -96,7 +97,8 @@ import { RatingInputComponent } from './rating-input/rating-input.component'; HintCardComponent, PeopleSelectComponent, LoanDetailComponent, - RatingInputComponent + RatingInputComponent, + LoanEditPeopleComponent ], imports: [ BrowserModule, diff --git a/src/app/loan-edit/loan-edit.component.html b/src/app/loan-edit/loan-edit.component.html index 00adba8..e83561d 100644 --- a/src/app/loan-edit/loan-edit.component.html +++ b/src/app/loan-edit/loan-edit.component.html @@ -22,15 +22,20 @@ (lenderNameChanged)="onLenderNameChange($event)" (NotifyNext) ="next(0)" > - + + -
diff --git a/src/app/loan-edit/loan-edit.component.ts b/src/app/loan-edit/loan-edit.component.ts index d0c16fa..0faf2d6 100644 --- a/src/app/loan-edit/loan-edit.component.ts +++ b/src/app/loan-edit/loan-edit.component.ts @@ -27,7 +27,8 @@ export class LoanEditComponent implements OnInit { public steps = [ { label: 'Basic Info', isValid: true , errMsg: 'There are some errors'}, - { label: 'People Reward', isValid: true , errMsg: 'There are some errors'}, + { label: 'People', isValid: true , errMsg: 'There are some errors'}, + { label: 'Reward', isValid: true , errMsg: 'There are some errors'}, { label: 'Trail Income', isValid: true, errMsg: 'There are some errors' } ]; diff --git a/src/app/loan-edit/people-reward/people-reward.component.html b/src/app/loan-edit/people-reward/people-reward.component.html index 216797f..8024da3 100644 --- a/src/app/loan-edit/people-reward/people-reward.component.html +++ b/src/app/loan-edit/people-reward/people-reward.component.html @@ -33,7 +33,7 @@ - + diff --git a/src/app/loan-edit/people-reward/people-reward.component.ts b/src/app/loan-edit/people-reward/people-reward.component.ts index e5696d9..5aeb9f1 100644 --- a/src/app/loan-edit/people-reward/people-reward.component.ts +++ b/src/app/loan-edit/people-reward/people-reward.component.ts @@ -7,7 +7,7 @@ import {PeopleModel} from '../../models/people.model'; import {debounce} from 'ts-debounce'; import {LoanSingleService} from '../../service/loan.single.service'; import {ClonerService} from '../../service/clone.service'; -import {PeopleSelectComponent} from '../people-select/people-select.component'; +import {PeopleSelectComponent} from '../../people-select/people-select.component'; @@ -92,6 +92,7 @@ export class PeopleRewardComponent implements OnInit { this.paidReward.push(o); }else{ this.pendingReward.push(o); + this.pendingReward.sort((a, b) => a.Ts > b.Ts ? -1 : 1 ); } }); } @@ -122,13 +123,20 @@ export class PeopleRewardComponent implements OnInit { } public cancelHandler({ sender, rowIndex }): void{ - //console.log(sender); + // console.log(sender); this.closeEditor(sender, rowIndex); } public saveHandler({ sender, rowIndex, formGroup, isNew }): void { const reward = formGroup.value; reward.From = '0'; // Admin + // check all pending rewards, see if there are conflicting roles + const result = this.checkConflictingRoles(reward); + if ( result.roles.length > 1 ) { + console.log ( result); + alert ('conflicting roles' + result.id); + return; + } // reward.Ts = new Date(); // Now reward.LoanId = this.Loan.Id; // Enforce LoanId reward.PayOutId = 0; // make sure it is not paid @@ -152,12 +160,25 @@ export class PeopleRewardComponent implements OnInit { sender.closeRow(rowIndex); } + private checkConflictingRoles(reward: RewardModel): {id: string, roles: string[]} { + console.log(reward, this.pendingReward); + const roles = [reward.Role]; + this.pendingReward.forEach( v => { + if (v.To === reward.To) { + const idx = roles.findIndex(r => r === v.Role); + if (idx === -1) { roles.push (v.Role); } + } + }); + + return {id: reward.To, roles}; + } + public removeHandler({ dataItem }): void { const na = this.pendingReward.filter(v => { return v.Id !== dataItem.Id; }); - + this.Loan.removeReward(dataItem.Id); this.pendingReward = na; this.ls.removeReward(dataItem); } diff --git a/src/app/models/loan.model.ts b/src/app/models/loan.model.ts index c4047a9..555b632 100644 --- a/src/app/models/loan.model.ts +++ b/src/app/models/loan.model.ts @@ -113,10 +113,15 @@ export class LoanModel { this.callBacks() ); r.LoanId = this.Id; // Make sure Loan Id is same - this.Reward.push(r); + this.Reward.unshift(r); return r; } + public removeReward(Id: number): void { + const na = this.Reward.filter(v => v.Id !== Id ); + this.Reward = na; + } + public emptyReward(): RewardModel { return new RewardModel( 0, '', 0, this.Id, diff --git a/src/app/loan-edit/people-select/people-select.component.html b/src/app/people-select/people-select.component.html similarity index 100% rename from src/app/loan-edit/people-select/people-select.component.html rename to src/app/people-select/people-select.component.html diff --git a/src/app/loan-edit/people-select/people-select.component.scss b/src/app/people-select/people-select.component.scss similarity index 100% rename from src/app/loan-edit/people-select/people-select.component.scss rename to src/app/people-select/people-select.component.scss diff --git a/src/app/loan-edit/people-select/people-select.component.spec.ts b/src/app/people-select/people-select.component.spec.ts similarity index 100% rename from src/app/loan-edit/people-select/people-select.component.spec.ts rename to src/app/people-select/people-select.component.spec.ts diff --git a/src/app/loan-edit/people-select/people-select.component.ts b/src/app/people-select/people-select.component.ts similarity index 97% rename from src/app/loan-edit/people-select/people-select.component.ts rename to src/app/people-select/people-select.component.ts index deb7849..03a5537 100644 --- a/src/app/loan-edit/people-select/people-select.component.ts +++ b/src/app/people-select/people-select.component.ts @@ -1,13 +1,13 @@ import {Component, forwardRef, Input, OnInit, ViewChild} from '@angular/core'; -import {AuthService} from '../../service/auth.service'; +import {AuthService} from '../service/auth.service'; import { debounce } from 'ts-debounce'; -import {PeopleModel} from '../../models/people.model'; +import {PeopleModel} from '../models/people.model'; import {ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR} from '@angular/forms'; import {MultiColumnComboBoxComponent} from '@progress/kendo-angular-dropdowns'; import {Observable, of} from 'rxjs'; import {PercentPipe} from '@angular/common'; import {map} from 'rxjs/operators'; -import {PeopleService} from '../../service/people.service'; +import {PeopleService} from '../service/people.service'; @Component({