hirebike.page.ts 6.12 KB
Newer Older
Priyanka Upadhye's avatar
Priyanka Upadhye committed
1
2
3
4
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';

import { Geolocation } from '@ionic-native/geolocation/ngx';
import { RestService } from '../rest.service';
5
import { Observable, Subject } from 'rxjs';
Priyanka Upadhye's avatar
Priyanka Upadhye committed
6
7
8
9
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Storage } from '@ionic/storage';
import { ToastService } from '../services/toast.service';
import { Router } from '@angular/router';
10
import { MapDataService } from '../services/map-data.service';
Priyanka Upadhye's avatar
Priyanka Upadhye committed
11
declare var H: any;
12

Priyanka Upadhye's avatar
Priyanka Upadhye committed
13
14
15
16
17
18
19
20
21
22
23
@Component({
  selector: 'app-hirebike',
  templateUrl: './hirebike.page.html',
  styleUrls: ['./hirebike.page.scss'],
})
export class HirebikePage implements OnInit {

  private platform: any;

  reservedBike: any = {};
  bikeDetails: any = {};
24
25
  address = "sample";
  isBikeHired = false;
Priyanka Upadhye's avatar
Priyanka Upadhye committed
26
27
  noReservation = true;

28
29
30
31
  currentRoute: any;
  routeSummary: any;
  wayPointsInfo:any;

32
33
  startRideSubject: Subject<any> = new Subject();
  gotReservedBikeSubject: Subject<any> = new Subject();
34
  maneuverList: any = [];
Priyanka Upadhye's avatar
Priyanka Upadhye committed
35
36
37
38
39
40

  constructor(private geolocation: Geolocation,
    public restService: RestService,
    public httpClient: HttpClient,
    private storage: Storage,
    private toastService: ToastService,
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
    private router: Router,
    private mapDataService: MapDataService) {
    this.platform = new H.service.Platform({
      'apikey': 'tiVTgBnPbgV1spie5U2MSy-obhD9r2sGiOCbBzFY2_k'
    });
    this.mapDataService.mapDataSubject.subscribe(receiveddata => {
      console.log('data received ');
      console.log(receiveddata);
      this.currentRoute = receiveddata;
      let content = '';
      content += 'Total distance: ' + receiveddata.summary.distance + 'm. ';
      content += 'Travel Time: ' + Math.floor(receiveddata.summary.travelTime / 60) + ' minutes ' + (receiveddata.summary.travelTime % 60) + ' seconds.' + ' (in current traffic)';
      this.routeSummary = content;
      this.showRouteInfoPanel(receiveddata);
      let waypointLabels = [];
      for (let i = 0; i < receiveddata.waypoint.length; i += 1) {
        waypointLabels.push(receiveddata.waypoint[i].label)
      }
      this.wayPointsInfo = waypointLabels.join(' - ');
    });
Priyanka Upadhye's avatar
Priyanka Upadhye committed
61
62
63
64
65
66
67
68
69
70
  }

  ngOnInit() {
    this.getReservedBike();
  }

  ngAfterViewInit() {

  }

71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
  showRouteInfoPanel(route) {
    // Add a marker for each maneuver
    let maneuverList = [];
    for (let i = 0; i < route.leg.length; i += 1) {
      for (let j = 0; j < route.leg[i].maneuver.length; j += 1) {
        // Get the next maneuver.
        let maneuver = route.leg[i].maneuver[j];
        maneuverList.push(maneuver);

        // var li = document.createElement('li'),
        //   spanArrow = document.createElement('span'),
        //   spanInstruction = document.createElement('span');

        // spanArrow.className = 'arrow ' + maneuver.action;
        // spanInstruction.innerHTML = maneuver.instruction;
        // li.appendChild(spanArrow);
        // li.appendChild(spanInstruction);

        // nodeOL.appendChild(li);
      }
    }

    this.maneuverList = maneuverList;
  }

Priyanka Upadhye's avatar
Priyanka Upadhye committed
96
97
98
99
100
101
102
103
104
105
  getReservedBike() {
    this.storage.get('token').then((token) => {
      const headers = new HttpHeaders().set("Authorization", "Bearer " + token);
      //call reserved bike api
      let reserveUrl = 'http://193.196.52.237:8081/active-rent';
      let bikeReservationStatusApi = this.httpClient.get(reserveUrl, { headers });
      bikeReservationStatusApi.subscribe((resp: any) => {
        console.log('Reserved Bike', resp);
        if (resp.data) {
          this.reservedBike = resp.data;
106
          this.isBikeHired = this.reservedBike.rented;
Priyanka Upadhye's avatar
Priyanka Upadhye committed
107
108
109
110
111
112
113
          //Call Bike Details api
          let bikeDetailsUrl = 'http://193.196.52.237:8081/bikes/' + this.reservedBike.bikeId;
          let bikeDetailsApi = this.httpClient.get(bikeDetailsUrl, { headers });
          bikeDetailsApi.subscribe((resp: any) => {
            console.log('Bike Details', resp);
            this.bikeDetails = resp.data;
            this.noReservation = false;
114
            this.reverseGeocode(this.platform, this.bikeDetails.lat, this.bikeDetails.lon);
115

116
117
            //pass reserved bike subject here map
            this.gotReservedBikeSubject.next(resp.data);
Priyanka Upadhye's avatar
Priyanka Upadhye committed
118
119
120
121
122
123
          }, (reservedBikeError) => console.log(reservedBikeError));
        }
      }, (bikeDetailsError) => console.log(bikeDetailsError));
    });
  }

124
  startTrip1() {
Priyanka Upadhye's avatar
Priyanka Upadhye committed
125
    this.storage.get('token').then((token) => {
Priyanka Upadhye's avatar
Priyanka Upadhye committed
126
      let url = 'http://193.196.52.237:8081/rent' + '?bikeId=' + this.bikeDetails.id;
Priyanka Upadhye's avatar
Priyanka Upadhye committed
127
      const headers = new HttpHeaders().set("Authorization", "Bearer " + token);
Priyanka Upadhye's avatar
Priyanka Upadhye committed
128
      let bikeApi = this.httpClient.get(url, { headers });
Priyanka Upadhye's avatar
Priyanka Upadhye committed
129
      bikeApi.subscribe((resp) => {
Priyanka Upadhye's avatar
Priyanka Upadhye committed
130
131
        console.log('my data: ', resp);
        this.toastService.showToast("Trip Started");
132
        this.isBikeHired = true;
Priyanka Upadhye's avatar
Priyanka Upadhye committed
133
134
      }, (error) => {
        console.log(error)
135
        this.toastService.showToast("This is ongoing Trip")
Priyanka Upadhye's avatar
Priyanka Upadhye committed
136
      });
Priyanka Upadhye's avatar
Priyanka Upadhye committed
137
    });
Priyanka Upadhye's avatar
Priyanka Upadhye committed
138

Priyanka Upadhye's avatar
Priyanka Upadhye committed
139
140
  }

141
142
143
144
  startTrip() {
    this.isBikeHired = true;
    this.startRideSubject.next('some value');
  }
Priyanka Upadhye's avatar
Priyanka Upadhye committed
145

146
  CancelTrip() {
Priyanka Upadhye's avatar
Priyanka Upadhye committed
147
148
149
150
151
152
153
154
155
    this.storage.get('token').then((token) => {
      let url = 'http://193.196.52.237:8081/rent' + '?bikeId=' + this.bikeDetails.id;
      const headers = new HttpHeaders().set("Authorization", "Bearer " + token);
      let bikeApi = this.httpClient.delete(url, { headers });
      bikeApi.subscribe((resp) => {
        console.log('my data: ', resp);
        this.toastService.showToast("Trip Ended!");
      }, (error) => {
        console.log(error)
Priyanka Upadhye's avatar
Priyanka Upadhye committed
156
        this.toastService.showToast("No Ongong Trip to End")
Priyanka Upadhye's avatar
Priyanka Upadhye committed
157
158
      });
    });
Priyanka Upadhye's avatar
Priyanka Upadhye committed
159
  }
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
  reverseGeocode(platform, lat, lng) {
    var prox = lat + ',' + lng + ',56';
    var geocoder = platform.getGeocodingService(),
      parameters = {
        prox: prox,
        mode: 'retrieveAddresses',
        maxresults: '1',
        gen: '9'
      };

    geocoder.reverseGeocode(parameters, result => {
      console.log(result);
      var streets = result.Response.View[0].Result[0].Location.Address.Street;
      var houseNumber = result.Response.View[0].Result[0].Location.Address.HouseNumber;
      var zipcode = result.Response.View[0].Result[0].Location.Address.PostalCode;
175

176
      this.address = streets;
177

Priyanka Upadhye's avatar
Priyanka Upadhye committed
178

179
180
181
182
    }, (error) => {
      alert(error);
    });
  }
Priyanka Upadhye's avatar
Priyanka Upadhye committed
183
}