From a75878073898dd0b2d963b2c53fba7df13aaf955 Mon Sep 17 00:00:00 2001
From: alen <alen@techware.in>
Date: Thu, 28 Jun 2018 18:11:48 +0530
Subject: [PATCH] amount calc

---
 src/app/app.component.ts               |  5 +++--
 src/app/app.html                       |  2 +-
 src/app/app.module.ts                  |  2 ++
 src/pages/home/home.ts                 |  4 +++-
 src/pages/payment/payment.ts           | 33 ++++++++++++++++++++++++---------
 src/pages/ridedetails/ridedetails.html |  2 +-
 src/pages/ridedetails/ridedetails.ts   | 17 ++++++++++++++++-
 src/pages/userlocation/userlocation.ts | 51 +++++++++++++++++++++++++++++++++++++++++++++++++--
 src/providers/common.service.ts        | 10 +++++-----
 src/providers/firebase.service.ts      | 16 ----------------
 10 files changed, 104 insertions(+), 38 deletions(-)

diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index 143cb19..239826b 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -14,7 +14,7 @@ import { driver } from "../models/mymodel";
 export class MyApp {
   @ViewChild(Nav) nav: Nav;
 
-  rootPage: any = "LandingPage";
+  rootPage:string;
 
   pages: Array<{title: string, component: any}>;
   local:driver
@@ -89,9 +89,10 @@ export class MyApp {
     this.oneSignal.handleNotificationReceived().subscribe(() => {
       // do something when notification is received
     });
-
+    
     this.oneSignal.handleNotificationOpened().subscribe(() => {
       // do something when a notification is opened
+      // this.nav.setRoot('QuickridePage')
     });
 
     this.oneSignal.endInit();
diff --git a/src/app/app.html b/src/app/app.html
index 7bd8e46..c0a5917 100644
--- a/src/app/app.html
+++ b/src/app/app.html
@@ -10,7 +10,7 @@
       </div>
       <div class="cab_sidemenu_list">
         <ul>
-          <li menuClose>Book Ride</li>
+          <li menuClose (click)="openPage('HomePage')">My Rides</li>
           <li menuClose>My Trips</li>
           <li menuClose>Settings</li>
           <li menuClose (click)="openPage('LandingPage')">Logout</li>
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index afbcd2f..75fbc35 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -19,6 +19,7 @@ import { fireService } from "../providers/firebase.service";
 import { AngularFireDatabase } from 'angularfire2/database';
 import { AngularFireModule } from 'angularfire2';
 import { dataService } from "../providers/common.service";
+import { DatePipe } from '@angular/common';
 
 export const firebaseConfig = {
   apiKey: "AIzaSyDLrbLd4RCCh86xuTVu7-cfJ28We_cG1sU",
@@ -56,6 +57,7 @@ export const firebaseConfig = {
     fireService,
     AngularFireDatabase,
     dataService,
+    DatePipe,
   ]
 })
 export class AppModule {}
diff --git a/src/pages/home/home.ts b/src/pages/home/home.ts
index 4758d93..87c8cd2 100644
--- a/src/pages/home/home.ts
+++ b/src/pages/home/home.ts
@@ -3,6 +3,7 @@ import { IonicPage, NavController, NavParams } from 'ionic-angular';
 import { Storage } from "@ionic/storage";
 import { Myservice } from "../../providers/myservice";
 import { dataService } from "../../providers/common.service";
+
 @IonicPage()
 @Component({
   selector: 'page-home',
@@ -14,10 +15,11 @@ upcoming:any;
 completed:any;
 baseurl = this.myservice.base_url
 
-  constructor(public navCtrl: NavController, public navParams: NavParams, private storage: Storage, private myservice: Myservice, private data:dataService) {
+  constructor(public navCtrl: NavController, public navParams: NavParams, private storage: Storage, private myservice: Myservice, private data: dataService) {
   }
 
   ionViewDidEnter(){
+
     this.storage.get('driver_data').then(data=>{
       if(data){
         this.myservice.load_post({id:data.id},'getMyRides').subscribe(response=>{
diff --git a/src/pages/payment/payment.ts b/src/pages/payment/payment.ts
index 24ccaa4..138c720 100644
--- a/src/pages/payment/payment.ts
+++ b/src/pages/payment/payment.ts
@@ -4,7 +4,7 @@ import { dataService } from "../../providers/common.service";
 import { Myservice } from "../../providers/myservice";
 import { Storage } from "@ionic/storage";
 import * as firebase from 'firebase';
-
+import { DatePipe } from '@angular/common';
 declare var google;
 
 @IonicPage()
@@ -19,8 +19,9 @@ export class PaymentPage {
   public unregisterBackButtonAction: any;
   ride: any;
   waypoints = this.data.getwaypointData()
+  rate = this.data.getrateData();
 
-  constructor(public navCtrl: NavController, public navParams: NavParams, private data: dataService, private zone: NgZone, private myservice: Myservice, private storage: Storage, public platform: Platform) {
+  constructor(public navCtrl: NavController, public navParams: NavParams, private data: dataService, private zone: NgZone, private myservice: Myservice, private storage: Storage, public platform: Platform, private datePipe: DatePipe) {
   }
 
   ionViewDidEnter() {
@@ -54,13 +55,27 @@ export class PaymentPage {
         }
         totalDist = totalDist / 1000.
         console.log(totalDist)
-        This.myservice.load_post({},'updateRideDetails').subscribe(response=>{
-          if(response.status == 'success'){
 
-          }
-          else
-          This.myservice.show_alert('',response.message)
-        })
+        if (totalDist > This.rate.intialkm){
+          var extra = totalDist - This.rate.intialkm
+          var rate = ((extra * This.rate.standardrate) + (This.rate.intailrate)) + This.book.timeAmount
+          rate = rate - This.book.discount
+        }
+        else{
+          var rate = This.rate.intailrate + This.book.timeAmount;
+          rate = rate - This.book.discount
+        }
+        var data = { 'pickup_time': This.datePipe.transform(This.book.actualPick, 'h:mm a'), 'drop_time': This.datePipe.transform(This.book.actualDrop, 'h:mm a'), 'drop_date': This.datePipe.transform(This.book.actualDrop, 'MM/dd/yyyy'), 'distance': totalDist, 'amount': rate, 'km': totalDist}
+
+        This.myservice.hide_loader();
+        console.log(data);
+        // This.myservice.load_post({},'updateRideDetails').subscribe(response=>{
+        //   if(response.status == 'success'){
+
+        //   }
+        //   else
+        //   This.myservice.show_alert('',response.message)
+        // })
       } else {
         window.alert('Directions request failed due to ' + status);
       }
@@ -79,7 +94,7 @@ export class PaymentPage {
   }
 
   done() {
-
+    this.myservice.load_post({ status: 'Completed', id: this.book.id }, 'changeStatus')
   }
 
 }
diff --git a/src/pages/ridedetails/ridedetails.html b/src/pages/ridedetails/ridedetails.html
index a065b7d..bc9ee7e 100644
--- a/src/pages/ridedetails/ridedetails.html
+++ b/src/pages/ridedetails/ridedetails.html
@@ -42,7 +42,7 @@
     <div class="jr_clear"></div>
   </div>
 
-   <div class="jr_bottom_button_bay" *ngIf="details.status=='Booking'">
+   <div class="jr_bottom_button_bay" *ngIf="details.status=='Booking' && temp">
       <button ion-button class="cab_footer_btn" (click)="pick()">Pick Up</button>
     </div>
 </div>
diff --git a/src/pages/ridedetails/ridedetails.ts b/src/pages/ridedetails/ridedetails.ts
index cc979f4..cfc956d 100644
--- a/src/pages/ridedetails/ridedetails.ts
+++ b/src/pages/ridedetails/ridedetails.ts
@@ -2,6 +2,7 @@ import { Component } from '@angular/core';
 import { IonicPage, NavController, NavParams } from 'ionic-angular';
 import { Myservice } from "../../providers/myservice";
 import { dataService } from "../../providers/common.service";
+import { DatePipe } from '@angular/common';
 
 @IonicPage()
 @Component({
@@ -11,11 +12,23 @@ import { dataService } from "../../providers/common.service";
 export class RidedetailsPage {
   details = this.data.getrideData()
   baseurl = this.myservice.base_url
+  now:any;
+  // rideDate:any
+  temp:boolean = false;
 
-  constructor(public navCtrl: NavController, public navParams: NavParams, private myservice: Myservice, private data:dataService) {
+  constructor(public navCtrl: NavController, public navParams: NavParams, private myservice: Myservice, private data: dataService, private datePipe: DatePipe) {
    
   }
 
+  ionViewDidEnter(){
+    this.now = this.datePipe.transform(new Date(), 'MM/dd/yyyy')
+    console.log(this.now)
+    console.log(this.details.pickup_date)
+    if (this.now == this.details.pickup_date){
+      this.temp = true;
+    }
+  }
+
   ionViewDidLoad() {
     var tempf = this.details.pickup_area.split(',')
     this.details.from = tempf[0]
@@ -27,6 +40,8 @@ export class RidedetailsPage {
     this.details.toAd = this.details.drop_area
     console.log(this.details)
 
+    this.details.discount = Number(this.details.discount)
+
     this.data.setrideData(this.details)
   }
 
diff --git a/src/pages/userlocation/userlocation.ts b/src/pages/userlocation/userlocation.ts
index 43869a1..84e3a6c 100644
--- a/src/pages/userlocation/userlocation.ts
+++ b/src/pages/userlocation/userlocation.ts
@@ -29,6 +29,7 @@ export class UserlocationPage {
   started: boolean = false;
   myloc = []
   waypoints = []
+  ride:any;
 
   constructor(public navCtrl: NavController, public navParams: NavParams, private geolocation: Geolocation, private db: AngularFireDatabase, private storage: Storage, private myservice: Myservice, private menu: MenuController, private data: dataService) {
     this.loadMap()
@@ -143,6 +144,8 @@ export class UserlocationPage {
   }
 
   startRide() {
+    this.myservice.load_post({status:'Started',id:this.details.id},'changeStatus')
+    this.details.actualPick = new Date().getTime()
 
     this.started = true;
     this.temp = false
@@ -156,11 +159,49 @@ export class UserlocationPage {
   }
 
   complete() {
-    var This = this;
+    this.myservice.show_loader()
+    this.details.actualDrop = new Date().getTime()
+
+    var pick = this.details.pickup_latlng.split(',')
+    var drop = this.details.drop_latlng.split(',')
+
+    var origin = new google.maps.LatLng(pick[0], pick[1]);
+    var destination = new google.maps.LatLng(drop[0], drop[1]);
+    var service = new google.maps.DistanceMatrixService();
+
+    var This = this
+    service.getDistanceMatrix(
+      {
+        origins: [origin],
+        destinations: [destination],
+        travelMode: google.maps.DirectionsTravelMode.DRIVING,
+        avoidHighways: true,
+        avoidTolls: true,
+      }, function (response, status) {
+        if (response.originAddresses[0] != '') {
+
+          var calcTime = response.rows[0].elements[0].duration.value
+          var realTime = (This.details.actualDrop - This.details.actualPick) / 1000//in seconds
+          // var realTime = (1530183600000 - 1530182700000) / 1000 //in seconds
+          // console.log('google time', calcTime);
+          // console.log('time taken',realTime);
+          if (calcTime < realTime){
+            var extraHr = Math.round(((realTime - calcTime) / 3600) * 100) / 100 //in hrs
+            // console.log('extra time',extraHr)
+            This.details.timeAmount = Math.round(This.details.extrahour * extraHr)
+            // console.log('amt', This.details.timeAmount)
+          }
+          else
+            This.details.timeAmount = 0;
+        }
+      });
+
+
+    This.data.setrideData(This.details);
+
     This.data.setwaypointData(This.waypoints)
     firebase.database().ref("drivers/" + This.pushId + "/").update({ started: false })
     This.navCtrl.push('PaymentPage')
-    // console.log(This.locSubs)
   }
 
   getStorage() {
@@ -174,6 +215,12 @@ export class UserlocationPage {
           This.pushId = snapshot.val().push_id
           console.log(This.pushId)
         });
+        This.myservice.load_post({ id: data.id, timetype: This.ride.timetype},'getRateCard').subscribe(response=>{
+          if(response.status == 'success'){
+            This.ride = response.data
+            This.data.setrateData(This.ride)
+          }
+        })
       }
     })
   }
diff --git a/src/providers/common.service.ts b/src/providers/common.service.ts
index f6334d9..5173658 100644
--- a/src/providers/common.service.ts
+++ b/src/providers/common.service.ts
@@ -5,7 +5,7 @@ export class dataService {
 
 rideData:any;
 waypointData:any;
-driverData:any;
+rateData:any;
 
     constructor() { }
 
@@ -25,12 +25,12 @@ driverData:any;
         return this.waypointData;
     }
     
-    public setdriverData(val){
-        this.driverData = val;
+    public setrateData(val){
+        this.rateData = val;
     }
 
-    public getdriverData(){
-        return this.driverData;
+    public getrateData(){
+        return this.rateData;
     }
 
 
diff --git a/src/providers/firebase.service.ts b/src/providers/firebase.service.ts
index 92aa702..7f32065 100644
--- a/src/providers/firebase.service.ts
+++ b/src/providers/firebase.service.ts
@@ -42,21 +42,5 @@ export class fireService {
       });
       return promise;
   }
-  removeItem(url){
-     return this.db.object(url).remove();
-  }
-  
-  listItem(url){
-    return  this.db.list(url);
-      
-  }
-  listItemQuery(url,query){
-    return  this.db.list(url,query);
-      
-  }
-
-  checkItem(url){
-    return this.db.list(url);
-  }
 }
 
--
libgit2 0.27.1