Commit 59bf4729 by Adarsh K

latest

parent 9d65e4f1
......@@ -34,7 +34,7 @@
<li>Complaints & Feedback</li>
<li>
<span class="floatLeft" (click)="authService.SignOut()">Logout</span>
<span class="floatRight version">Version 1.2.0.3</span>
<span class="floatRight version">Version 0.1.0.2</span>
<div class="clear"></div>
</li>
</ul>
......
......@@ -183,9 +183,9 @@
FINISH
</div> -->
</ion-footer>
<!-- <div class="loader">
<div class="loader" *ngIf="loader">
<div class="lds-ripple">
<div></div>
<div></div>
</div>
</div> -->
\ No newline at end of file
</div>
\ No newline at end of file
......@@ -19,6 +19,7 @@ export class CartPage implements OnInit {
currentIndex: any;
count: any;
gateway:any;
loader = false;
cartwizard = {
initialSlide: 0,
speed: 1000,
......@@ -46,12 +47,12 @@ export class CartPage implements OnInit {
getwaypaypal(){
this.gateway = 1;
}
getwayafterpay(){
getwayafterpay() {
this.gateway = 2;
}
getwaypayk(){
getwaypayk() {
this.gateway = 3;
}
......@@ -76,6 +77,11 @@ export class CartPage implements OnInit {
next(index: number = null) {
this.loader = true;
const This = this;
setTimeout(() => {
This.loader = false;
}, 500);
console.log(index);
if (index === 2) {
const state = this.orderService.checkOut(this.cartService.carts).then((data) => {
......@@ -108,7 +114,7 @@ export class CartPage implements OnInit {
this.currentIndex = index;
console.log(this.currentIndex);
});
}
}
sliderChange() {
this.orderService.checkout.subscribe(state => {
......
......@@ -10,24 +10,41 @@
<div class="myorder_wrapper" *ngIf="myorder.orders">
<ul *ngIf="myorder.orders.length > 0">
<li *ngFor="let order of myorder.orders; let i = index">
<div class="order_image"><img [src]="order.image" onerror="" /></div>
<div class="order_detail">
<h5 class="floatLeft">{{order.prodName}}</h5>
<div class="order_info">
<h5 class="floatLeft">{{order.orderCode}}</h5>
<button class="order_track floatRight" *ngIf="order.orderStatus >= 3 && order.orderStatus < 7" (click)="orderDetails(i)">Track Order</button>
<div class="clear"></div>
<h5>{{order.color}}, {{order.size}} <span>{{order.qty}}</span></h5>
<p>{{order.amount}}</p>
</div>
<div class="order_other">
<h6 class="floatRight">{{ order.bookDate.seconds * 1000 | date:'MMMM dd, y' }}</h6>
<span class="floatRight" *ngIf="order.orderStatus < 3 || order.orderStatus >= 7" (click)="acceptOrder(order)">{{getStatus(order.orderStatus)}}</span>
<div class="clear"></div>
<button class="track_btn" *ngIf="order.orderStatus >= 3 && order.orderStatus < 7" (click)="orderDetails(i)">TRACK</button>
<div class="clear"></div>
<div *ngFor="let product of order.product">
<div class="order_image"><img [src]="product.image" onerror="" /></div>
<div class="order_detail">
<h5 class="floatLeft">{{product.prodName}}</h5>
<div class="clear"></div>
<h5>{{product.color}}, {{product.size}} <span>{{product.qty}}</span></h5>
<p>A$ {{product.price}}</p>
</div>
<div class="order_other">
<h6 class="floatRight">{{ order.bookDate.seconds * 1000 | date:'MMMM dd, y' }}</h6>
<span class="floatRight" *ngIf="order.orderStatus < 3 || order.orderStatus >= 7" (click)="acceptOrder(order)">{{getStatus(order.orderStatus)}}</span>
<div class="clear"></div>
<!-- <button class="track_btn" *ngIf="order.orderStatus >= 3 && order.orderStatus < 7" (click)="orderDetails(i)">TRACK</button> -->
<div class="clear"></div>
</div>
<div class="clear"></div>
<hr>
</div>
<div class="clear"></div>
<div class="order_info">
<h5 class="floatRight">TOTAL PRICE : {{order.amount}}</h5>
<div class="clear"></div>
</div>
</li>
<!-- <li>
<div class="order_image"></div>
<div class="order_detail">
......@@ -76,4 +93,10 @@
</li> -->
</ul>
</div>
</ion-content>
\ No newline at end of file
</ion-content>
<div class="loader" *ngIf="loader">
<div class="lds-ripple">
<div></div>
<div></div>
</div>
</div>
\ No newline at end of file
......@@ -6,6 +6,22 @@
list-style: none;
padding: 10px;
padding-bottom: 15px;
.order_info{
padding-top: 10px;
padding-bottom: 10px;
h5{
margin:0px;
padding:0px;
}
.order_track{
background-color: rgba(53, 203, 171, 1);
color: #fff;
border-radius: 3px;
padding: 3px;
padding-left: 10px;
padding-right: 10px;
}
}
.order_image {
width: 90px;
height: 90px;
......
......@@ -11,6 +11,7 @@ import { DeliverypopPage } from '../deliverypop/deliverypop.page';
styleUrls: ['./myorder.page.scss'],
})
export class MyorderPage implements OnInit {
loader = false;
constructor(
private router: Router,
......@@ -21,9 +22,12 @@ export class MyorderPage implements OnInit {
) { }
ngOnInit() {
this.myorder.orderState().subscribe((data) => {
console.log(data);
});
const This = this;
this.loader = true;
setTimeout(() => {
This.loader = false;
}, 500);
// this.myorder.orderList('WwHnLICVY2dvZGUHuKqasiTB91a2');
}
async finishpop(data: any) {
......
......@@ -4,7 +4,7 @@
</button>
<div class="nav_title floatLeft">
</div>
<button class="nav_btn nav_cart floatRight">
<button class="nav_btn nav_cart floatRight" (click)="goToPage('cart')">
</button>
<div class="clear"></div>
</div>
......@@ -177,8 +177,8 @@
<div class="footer_options">
<button class="share"></button>
<button class="fav"></button>
<button class="cart" (click)="goToPage('cart')"></button>
<button class="cart" (click)="buyNow(product,0)"></button>
</div>
<div class="footer_btn" (click)="cartService.buyNow(product)">BUY NOW</div>
<div class="footer_btn" (click)="buyNow(product,1)">BUY NOW</div>
</div>
</ion-footer>
\ No newline at end of file
......@@ -45,6 +45,7 @@ export class ProductdetailPage implements OnInit {
prodStatus: params.prodStatus,
brand: params.brand,
category: params.category,
shopperId: params.shopperId,
color: params.color,
discount: params.discount,
featured: params.featured,
......@@ -81,4 +82,14 @@ export class ProductdetailPage implements OnInit {
this.location.back();
}
buyNow(product: any, type: number) {
this.cartService.buyNow(product).then(() => {
if (type === 1) {
this.router.navigateByUrl('cart');
} else {
alert('Product added to cart');
}
});
}
}
......@@ -56,6 +56,7 @@ export class CartsService {
const cart: Cart = {
color: this.color,
custId: this.custId,
shopperId: product.shopperId,
product: firebase.firestore().doc(`products/${this.prodId}`),
image: product.image,
prodId: product.prodId,
......@@ -69,7 +70,6 @@ export class CartsService {
const neworderId = docRef.id;
this.afs.collection('carts').doc(neworderId).update({cartId: docRef.id}).then(() => {
console.log('Booking Successfully');
this.router.navigateByUrl('cart');
document.body.scrollTop = document.documentElement.scrollTop = 0;
});
}).catch((error) => {
......@@ -92,7 +92,8 @@ export class CartsService {
const cartItem: CartItem = {
cartId: item.cartId,
color: item.color,
shopperId: item.shopper,
shopperId: item.shopperId,
shopper: item.shopper,
prodId: item.prodId,
price: item.price,
prodName: item.prodName,
......
......@@ -33,7 +33,7 @@ export class MyordersService {
});
}
public async orgorderList(custId) {
/*public async orgorderList(custId) {
console.log('called');
console.log(custId);
const This = this;
......@@ -64,6 +64,8 @@ export class MyordersService {
riderName: 'John',
orderId: item.orderId,
size: item.size,
orderCode: item.orderCode,
product: this.service.key2Array(item.product),
time: '60'
};
this.orders.push(order);
......@@ -74,7 +76,7 @@ export class MyordersService {
}
this.orderState();
});
}
}*/
public async orderList(custId) {
......@@ -94,11 +96,7 @@ export class MyordersService {
console.log(item);
const orderId = item.orderId;
const order: Myorder = {
prodName: item.prodName,
color: item.color,
image: item.image,
amount: item.amount,
qty: item.qty,
status: item.status,
orderStatus: item.orderStatus,
bookDate: item.bookDate,
......@@ -106,15 +104,17 @@ export class MyordersService {
pickupLocation: item.pickupLocation,
riderName: 'John',
orderId: item.orderId,
size: item.size,
orderCode: item.orderCode,
product: this.service.key2Array(item.product),
time: '60'
};
console.log(order);
if (items.type === 'added') {
this.orders.push(order);
} else {
console.log(orderId);
const index = this.orders.findIndex(obj => obj.orderId === orderId);
if (index > 0) {
if (index >= 0) {
this.orders[index] = order;
}
}
......@@ -125,7 +125,7 @@ export class MyordersService {
}
public orderState(): Observable<Myorder[]> {
/* public orderState(): Observable<Myorder[]> {
console.log('called');
const custId = 'WwHnLICVY2dvZGUHuKqasiTB91a2';
this.orders = [];
......@@ -203,10 +203,10 @@ export class MyordersService {
console.log("Removed city: ", change.doc.data());
}
});
}); */
});
return of(this.orders);
}
*/
public async trackOrder(order) {
this.selItem = order;
}
......
import { Injectable } from '@angular/core';
import { AngularFirestore, AngularFirestoreDocument, AngularFirestoreCollection } from '@angular/fire/firestore';
import { Router, ActivatedRoute } from '@angular/router';
import { Order } from './services/order';
import { Order, CartProd } from './services/order';
import { Products } from './services/product';
import { ServiceService } from './service.service';
import * as firebase from 'firebase';
......@@ -19,6 +19,7 @@ export class OrdersService {
custId: string;
shopperId: any;
checkout = new BehaviorSubject(false);
users: any;
constructor(
public afs: AngularFirestore,
......@@ -28,9 +29,10 @@ export class OrdersService {
this.size = 'small';
this.color = 'Blue';
this.custId = '';
const users = this.service.get('user').then((data) => {
this.service.get('user').then((data) => {
if (data) {
data = JSON.parse(data);
this.users = data;
this.custId = data.uid;
console.log(this.custId);
} else {
......@@ -39,8 +41,10 @@ export class OrdersService {
});
}
public async checkOut(cart: CartItem[]) {
/*public async orgcheckOut(cart: CartItem[]) {
console.log(cart);
console.log(this.users);
return;
let currProcess = 0;
const cartCount = cart.length;
cart.forEach((product) => {
......@@ -97,6 +101,101 @@ export class OrdersService {
});
});
}*/
public async checkOut(cart: CartItem[]) {
console.log(cart);
console.log(this.users);
const cartGroup = [];
// const distinctShops = [...new Set(cart.map(obj => obj.shopperId))];
const distinctShops = [];
const map = new Map();
for (const item of cart) {
if (!map.has(item.shopperId)){
map.set(item.shopperId, true); // set any value to Map
distinctShops.push(item.shopperId);
}
}
cart.forEach((items) => {
cartGroup[items.shopperId] = cartGroup[items.shopperId] === undefined ? [] : cartGroup[items.shopperId];
cartGroup[items.shopperId].push(items);
});
const cartCount = distinctShops.length;
console.log(cartGroup);
console.log(cartCount);
const promise = new Promise(resolve => {
distinctShops.forEach((item) => {
console.log(item);
this.afs.collection('orders').add({
bookDate: firebase.firestore.FieldValue.serverTimestamp()
}).then((docRef) => {
const neworderId = docRef.id;
const delivery = new firebase.firestore.GeoPoint(10.0237, 76.3116);
const pickup = new firebase.firestore.GeoPoint(10.7231, 76.1234);
const products = {};
const cartItem = cartGroup[item];
let prodPrice = 0;
cartItem.forEach((prodItem) => {
prodPrice += prodItem.price;
products[prodItem.prodId] = {
prodId: prodItem.prodId,
prodName: prodItem.prodName,
image: prodItem.image,
price: prodItem.price,
color: prodItem.color,
size: prodItem.size,
qty: prodItem.qty,
discount: ''
};
this.afs.doc(`carts/${prodItem.cartId}`).delete();
});
console.log(cartItem);
console.log(products);
const product = cartItem[0];
const orderItem: Order = {
amount: 'A$ ' + prodPrice,
customer: firebase.firestore().doc('/customer/' + this.custId),
shopper: product.shopper,
deliveryAddress: 'Techware Software solution, Carnival Infopark, Kochi',
deliveryCharge: 'A$ 0.5',
deliveryLocation: delivery,
bookDate: firebase.firestore.FieldValue.serverTimestamp(),
orderCode: this.orderCode(),
orderId: neworderId,
orderStatus: 1,
pickupAddress: 'GetMi, Canberra, AUS',
pickupLocation: pickup,
promoId: null,
rider: firebase.firestore().doc('/riders/qbTKza18mWVzYG9NLIbmjMbrYjG2'),
status: 1,
custId: this.custId,
riderId: 'qbTKza18mWVzYG9NLIbmjMbrYjG2',
shopperId: product.shopperId,
custName: 'Jone Doe',
riderName: 'John',
shopperState: 0,
shopperName: 'Witchery',
product: products
};
console.log(orderItem);
this.afs.collection('orders').doc(neworderId).set(orderItem).then(() => {
console.log('Booking Successfully');
// this.router.navigateByUrl('cart');
resolve('Cart to Order Successfully');
document.body.scrollTop = document.documentElement.scrollTop = 0;
});
}).catch((error) => {
console.error('Error adding document: ', error);
});
});
});
promise.then(value => console.log(value));
}
public async changeOrder(orderId, status) {
......
......@@ -32,6 +32,7 @@ export class ProductsService {
prodStatus: item.prodStatus,
brand: item.brand.brandName,
category: item.category.catName,
shopperId: item.shopperId,
color: item.color,
discount: item.discount,
featured: item.featured,
......
......@@ -4,6 +4,7 @@ export interface Cart {
product: any;
prodName: any;
prodId: string;
shopperId: string;
image: string;
size: string;
color: string;
......@@ -15,6 +16,7 @@ export interface CartItem {
cartId: string;
prodId: string;
shopperId: any;
shopper: any;
prodName: any;
image: string;
size: string;
......
export interface Myorder {
amount: string;
prodName: any;
image: string;
size: string;
color: string;
qty: number;
bookDate: any;
pickupLocation: any;
deliveryLocation: any;
......@@ -13,5 +8,7 @@ export interface Myorder {
riderName: string;
orderId: string;
time: string;
product: any;
orderCode: string;
}
import { AngularFirestoreDocument } from '@angular/fire/firestore';
import { GeoJsonOptions } from '@agm/core/services/google-maps-types';
export interface Order {
/*export interface Order {
amount: string;
customer: any;
deliveryAddress: string;
......@@ -17,7 +14,6 @@ export interface Order {
bookDate: any;
prodId: string;
custId: string;
product: any;
prodName: any;
image: string;
size: string;
......@@ -30,5 +26,45 @@ export interface Order {
shopperId: string;
status: number;
tax: string;
}*/
export interface CartProd {
prodName: any;
prodId: string;
image: string;
size: string;
color: string;
qty: number;
discount: string;
price: string;
productDoc: any;
}
export interface Order {
amount: string;
customer: any;
custName: string;
deliveryAddress: string;
deliveryCharge: string;
deliveryLocation: object;
orderCode: string;
orderId: string;
orderStatus: number;
pickupAddress: string;
pickupLocation: object;
bookDate: any;
custId: string;
promoId: any;
rider: any;
riderName: string;
riderId: string;
shopper: any;
shopperName: string;
shopperId: string;
status: number;
shopperState: number;
product: any;
}
......@@ -11,6 +11,7 @@ export interface Products {
prodId: string;
prodName: string;
prodStatus: boolean;
shopperId: string;
qty: number;
shopper: string;
size: Size[];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment