|
- import { Component, OnInit } from '@angular/core';
- import { Location } from '@angular/common';
- import { MallService } from '../services/mall.service';
- import { Router } from '@angular/router';
- import { OrderService } from '../services/order.service';
- import * as moment from 'moment';
-
- export type ICart = {
- orderedlist: Array<{
- mall_id: number,
- outlet_id: number,
- menuitem_id: number,
- quantity: number,
- pickup_time: string,
- take_away: boolean,
- order_status: boolean,
- total_price: number,
- soft_delete: boolean
- }>
- };
-
- @Component({
- selector: 'app-cart',
- templateUrl: './cart.page.html',
- styleUrls: ['./cart.page.scss'],
- })
-
- export class CartPage implements OnInit {
- userCart: ICart = {
- orderedlist: []
- };
- show_order_details: boolean = false;
- cart_outlets: any = [];
- allMalls: any = [];
- tempPickupTime: any;
- showInstantMenu: boolean = false;
- temp_outlet_details: any;
- selectedTempMallId: string;
-
- constructor(
- private location: Location,
- private router: Router,
- private orderService: OrderService,
- private mallService: MallService
- ) { }
-
- ngOnInit() {}
-
- ionViewDidEnter() {
- this.fetchCartItems();
- this.allMalls = JSON.parse(localStorage.allMalls);
- }
-
- fetchCartItems() {
- this.cart_outlets = [];
-
- if (localStorage.userCart) {
- this.userCart = JSON.parse(localStorage.userCart);
- } else {
- localStorage.userCart = JSON.stringify(this.userCart);
- }
-
- // this.cart_malls = this.userCart.orderedlist.map(order => order.mall_id);
-
- for (let i = 0; i < this.userCart.orderedlist.length; i += 1) {
- let tempOutlet = this.cart_outlets.find((outlet) => {
- return outlet.outlet_id === this.userCart.orderedlist[i].outlet_id &&
- outlet.mall_id === this.userCart.orderedlist[i].mall_id
- });
-
- if (!tempOutlet) {
- this.cart_outlets.push({
- outlet_id: this.userCart.orderedlist[i].outlet_id,
- mall_id: this.userCart.orderedlist[i].mall_id
- })
- }
- }
- }
-
- hideMenuButton() {
- document.querySelector('.menu-icon-holder').classList.add('hide');
- }
-
- showMenuButton() {
- setTimeout(() => {
- document.querySelector('.menu-icon-holder').classList.remove('hide');
- }, 1000);
- }
-
- checkIfTimeFeasible(oldTime, newTime) {
- return moment(newTime) > moment(oldTime);
- }
-
- getOutletDetails(cartOutlet: any) {
- let mall, outlet;
- mall = this.allMalls.find((mall) => {
- return mall.mall.mall_id === cartOutlet.mall_id;
- });
-
- if (mall) {
- return outlet = mall.mall.outlet.find((outlet) => {
- return outlet.outlet_id === cartOutlet.outlet_id;
- });
- }
- }
-
- getMallDetails(mallId: number) {
- return this.allMalls.find((mall) => {
- return mall.mall.mall_id === mallId;
- });
- }
-
- getItemDetails(item) {
- let mall, outlet, outletitem;
- mall = this.allMalls.find((mall) => {
- return mall.mall.mall_id === item.mall_id;
- });
-
- if (mall) {
- outlet = mall.mall.outlet.find((outlet) => {
- return outlet.outlet_id === item.outlet_id;
- });
- }
-
- if (outlet) {
- return outletitem = outlet.menuitems.find((menu) => {
- return menu.menuitem_id === item.menuitem_id;
- });
- }
- }
-
- storeData() {
- localStorage.userCart = JSON.stringify(this.userCart);
- }
-
- getFormatterDateTime(date: any, format: string) {
- return moment(date).format(format);
- }
-
- back() {
- this.storeData();
- this.location.back();
- }
-
- openInstantMenu(outlet) {
- this.selectedTempMallId = outlet.mall_id;
- this.showInstantMenu = true;
- this.temp_outlet_details = this.getOutletDetails(outlet);
- }
-
- isPresentInCart(outletId: number, itemId: number, tempMallId: number) {
- let item: any;
-
- item = this.userCart.orderedlist.find((order) => {
- return order.menuitem_id === itemId && order.outlet_id === outletId && order.mall_id === tempMallId;
- });
-
- return item? item.quantity: 0;
- }
-
- incrementCartCount(outletId: number, itemId: number, tempMallId: number) {
- let outletitem = this.getItemDetailsByIds(outletId, itemId, tempMallId);
-
- if (outletitem) {
- let i = this.userCart.orderedlist.findIndex((order) => {
- return order.menuitem_id === itemId && order.outlet_id === outletId && order.mall_id === tempMallId;
- });
-
- this.userCart.orderedlist[i].quantity += 1;
- this.userCart.orderedlist[i].total_price = (outletitem.item_price - outletitem.item_discount) * this.userCart.orderedlist[i].quantity;
- }
- }
-
- decrementCartCount(outletId: number, itemId: number, tempMallId: number) {
- let outletitem = this.getItemDetailsByIds(outletId, itemId, tempMallId);
-
- if (outletitem) {
- let i = this.userCart.orderedlist.findIndex((order) => {
- return order.menuitem_id === itemId && order.outlet_id === outletId && order.mall_id === tempMallId;
- });
-
- if (this.userCart.orderedlist[i].quantity > 1) {
- this.userCart.orderedlist[i].quantity -= 1;
- this.userCart.orderedlist[i].total_price = (outletitem.item_price - outletitem.item_discount) * this.userCart.orderedlist[i].quantity;
- } else if (this.userCart.orderedlist[i].quantity === 1) {
- this.userCart.orderedlist.splice(i, 1);
- this.storeData();
- this.fetchCartItems();
- }
- }
- }
-
- getItemDetailsByIds(outletId: number, itemId: number, tempMallId: number) {
- let mall, outlet, outletitem;
- mall = this.allMalls.find((mall) => {
- return mall.mall.mall_id === tempMallId;
- });
-
- if (mall) {
- outlet = mall.mall.outlet.find((outlet) => {
- return outlet.outlet_id === outletId;
- });
- }
-
- if (outlet) {
- return outletitem = outlet.menuitems.find((menu) => {
- return menu.menuitem_id === itemId;
- });
- }
- }
-
- addToCart(outletId: number, itemId: number, tempMallId: number) {
- let outletitem = this.getItemDetailsByIds(outletId, itemId, tempMallId);
- if (outletitem) {
- this.userCart.orderedlist.push({
- mall_id: tempMallId,
- outlet_id: outletId,
- menuitem_id: itemId,
- quantity: 1,
- pickup_time: moment().add(moment.duration(outletitem.wait_duration).asMinutes(), 'minutes').format(),
- take_away: true,
- order_status: false,
- total_price: outletitem.item_price - outletitem.item_discount,
- soft_delete: false
- });
- }
- }
-
- getTotalCartAmount() {
- let total: number = 0;
-
- this.userCart.orderedlist.forEach((order) => {
- total = order.total_price + total;
- });
-
- return total;
- }
-
- placeOrder() {
- this.orderService.createOrder({
- soft_delete: false,
- orderedlist: this.userCart.orderedlist
- }).then((resp) => {
- console.log(resp);
- }, (err) => {
- console.log(err);
- })
- }
-
- }
|