From 74fbebfcf8c17bd0190cf78c33e2d4aa742d7e8b Mon Sep 17 00:00:00 2001 From: kj1352 Date: Fri, 16 Aug 2019 10:30:21 +0530 Subject: [PATCH] Service modules for mall, outlet and menu items --- src/app/outlet-details/outlet-details.page.ts | 4 --- src/app/services/mall.service.ts | 30 ++++++++++++++----- src/app/services/menu-item.service.ts | 8 ++++- src/app/services/outlet.service.ts | 8 ++--- 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/app/outlet-details/outlet-details.page.ts b/src/app/outlet-details/outlet-details.page.ts index 769e9b3..8ace563 100644 --- a/src/app/outlet-details/outlet-details.page.ts +++ b/src/app/outlet-details/outlet-details.page.ts @@ -39,10 +39,6 @@ export class OutletDetailsPage implements OnInit { this.outlet_details = this.mall_details.outlets.find((outlet) => outlet.id === outlet_id); this.temp_outlet_details = JSON.parse(JSON.stringify(this.outlet_details)); }); - - this.mallService.getCartItems().then((data: Array) => { - this.cart = data; - }); } back() { diff --git a/src/app/services/mall.service.ts b/src/app/services/mall.service.ts index 5f78cd1..c2aed73 100644 --- a/src/app/services/mall.service.ts +++ b/src/app/services/mall.service.ts @@ -1,25 +1,39 @@ import { Injectable } from '@angular/core'; import { MALLS } from '../mocks/malls'; -import CartItem from '../models/cart-item'; import Mall, { IMall } from '../models/mall'; +import { OfferService } from './offer.service'; +import { OutletService } from './outlet.service'; @Injectable({ providedIn: 'root' }) export class MallService { malls: Array; - cart: Array = []; - constructor() { - this.malls = MALLS; + constructor( + private offerService: OfferService, + private outletService: OutletService + ) { + this.fetchMalls(); } - public async getAllMalls() { - return this.malls; + private async getDenormalizedMall(mall: Mall) { + const offers = await Promise.all(mall.offers.map(offer_id => this.offerService.getOfferByID(offer_id))); + const outlets = await Promise.all(mall.outlets.map(outlet_id => this.outletService.getOutletByID(outlet_id))); + + return { + ...mall, + offers, + outlets, + }; } - public async getCartItems() { - return this.cart; + private async fetchMalls() { + this.malls = await Promise.all(MALLS.map(this.getDenormalizedMall)); + } + + public async getAllMalls() { + return this.malls; } public async getMallByID(id: string) { diff --git a/src/app/services/menu-item.service.ts b/src/app/services/menu-item.service.ts index 4b2dd4f..eb941e8 100644 --- a/src/app/services/menu-item.service.ts +++ b/src/app/services/menu-item.service.ts @@ -1,10 +1,16 @@ import { Injectable } from '@angular/core'; -import { OUTLETS } from '../mocks/outlets'; +import { MENU_ITEMS_1, MENU_ITEMS_2 } from '../mocks/menu-items'; +import MenuItem from '../models/menu-item'; @Injectable({ providedIn: 'root' }) export class MenuItemService { + menu_items: Array = MENU_ITEMS_1 && MENU_ITEMS_2; constructor() { } + + public async getMenuItemByID(id: string) { + return this.menu_items.find((menu_item) => menu_item.id === id); + } } diff --git a/src/app/services/outlet.service.ts b/src/app/services/outlet.service.ts index f52608d..5e7eff0 100644 --- a/src/app/services/outlet.service.ts +++ b/src/app/services/outlet.service.ts @@ -2,8 +2,7 @@ import { Injectable } from '@angular/core'; import Outlet, { IOutlet } from '../models/outlet'; import { OUTLETS } from '../mocks/outlets'; import { OfferService } from './offer.service'; -import Offer from '../models/offer'; -import MenuItem from '../models/menu-item'; +import { MenuItemService } from './menu-item.service'; @Injectable({ providedIn: 'root' @@ -12,14 +11,15 @@ export class OutletService { outlets: Array constructor( - private offerService: OfferService + private offerService: OfferService, + private menuItemService: MenuItemService ) { this.fetchOutlets(); } private async getDenormalizedOutlet(outlet: Outlet) { const offers = await Promise.all(outlet.offers.map(offer_id => this.offerService.getOfferByID(offer_id))); - const menu_items: MenuItem[] = []; + const menu_items = await Promise.all(outlet.menu_items.map(menu_item_id => this.menuItemService.getMenuItemByID(menu_item_id))); return { ...outlet,