diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 4370fb4..dfd34c1 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -4,16 +4,24 @@ import { FormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; import { OrderService } from './order.service'; -import { OrderDiscountService } from './order-discount.service'; +import { OrderAnniversaryService } from './order-anniversary.service'; @NgModule({ imports: [BrowserModule, FormsModule], declarations: [AppComponent], - providers: [{ - provide: OrderService, - useValue:{computeTotal:()=>100}, - },], - + providers: [ + { + provide: OrderService, + useFactory: () => { + const today = new Date(2020, 9, 3); + if (today.getMonth() === 9) { + return new OrderAnniversaryService(); + } else { + return new OrderService(); + } + }, + }, + ], bootstrap: [AppComponent], }) export class AppModule {} diff --git a/src/app/order-anniversary.service.ts b/src/app/order-anniversary.service.ts new file mode 100644 index 0000000..d6ed08b --- /dev/null +++ b/src/app/order-anniversary.service.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; + +import { OrderDetail } from './order-detail'; + +@Injectable({ + providedIn: 'root', +}) +export class OrderAnniversaryService { + details: OrderDetail[] = []; + + constructor() {} + + computeTotal(): number { + return this.details + .map((d) => d.PurchaseCount * d.UnitPrice * 0.8) + .reduce((act, curr) => act + curr, 0); + } +}