Browse Source

Service modules for mall, outlet and menu items

master
kj1352 6 years ago
parent
commit
74fbebfcf8
4 changed files with 33 additions and 17 deletions
  1. +0
    -4
      src/app/outlet-details/outlet-details.page.ts
  2. +22
    -8
      src/app/services/mall.service.ts
  3. +7
    -1
      src/app/services/menu-item.service.ts
  4. +4
    -4
      src/app/services/outlet.service.ts

+ 0
- 4
src/app/outlet-details/outlet-details.page.ts View File

@@ -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<CartItem>) => {
this.cart = data;
});
}

back() {


+ 22
- 8
src/app/services/mall.service.ts View File

@@ -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<IMall>;
cart: Array<CartItem> = [];

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) {


+ 7
- 1
src/app/services/menu-item.service.ts View File

@@ -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<MenuItem> = MENU_ITEMS_1 && MENU_ITEMS_2;

constructor() { }

public async getMenuItemByID(id: string) {
return this.menu_items.find((menu_item) => menu_item.id === id);
}
}

+ 4
- 4
src/app/services/outlet.service.ts View File

@@ -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<IOutlet>

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,


Loading…
Cancel
Save