Loading backend/api/src/graphql/geo-locations/orders/geo-location-orders.resolver.ts +4 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,10 @@ export class GeoLocationOrdersResolver { geoLocation: IGeoLocation; skippedOrderIds: string[]; options: GeoLocationOrdersOptions; searchObj?: { byRegex: Array<{ key: string; value: string }> }; searchObj?: { isCancelled?: boolean; byRegex?: Array<{ key: string; value: string }>; }; } ) { const orders = await this.geoLocationsOrdersService.getOrdersForWork( Loading backend/api/src/graphql/geo-locations/orders/geo-locations-orders.graphql +1 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ type Query { } input SearchOrdersForWork { isCancelled: Boolean byRegex: [SearchByRegex] } Loading backend/api/src/services/geo-locations/GeoLocationsOrdersService.ts +18 −5 Original line number Diff line number Diff line Loading @@ -151,7 +151,10 @@ export class GeoLocationsOrdersService geoLocation: IGeoLocation, skippedOrderIds: string[] = [], options: GeoLocationOrdersOptions, searchObj?: { byRegex: Array<{ key: string; value: string }> } searchObj?: { isCancelled?: boolean; byRegex?: Array<{ key: string; value: string }>; } ): Promise<Order[]> { const merchants = await this.geoLocationsWarehousesService.getMerchants( geoLocation, Loading @@ -163,12 +166,22 @@ export class GeoLocationsOrdersService let searchByRegex = []; if (searchObj && searchObj.byRegex.length > 0) { searchByRegex = searchObj.byRegex.map((s) => { if (searchObj) { const byRegex = searchObj.byRegex; if (byRegex && byRegex.length > 0) { searchByRegex = byRegex.map((s) => { return { [s.key]: { $regex: s.value, $options: 'i' } }; }); } const isCancelled = searchObj.isCancelled; if (isCancelled != null) { searchByRegex.push({ isCancelled }); } } const orders = await this.ordersService.Model.aggregate([ { $match: _.assign( Loading carrier/mobile-ionic/src/pages/main/delivery/delivery.html +15 −3 Original line number Diff line number Diff line <div class="money-amount-container" *ngIf="!selectedOrder?.isPaid"> <div class="money-amount-container" *ngIf="!selectedOrder?.isPaid && !selectedOrder?. isCancelled" > <div class="money-amount"> {{ 'DELIVERY_VIEW.THE_CUSTOMER_HAS_TO_PAY' | translate }} ${{ selectedOrder?.totalPrice }}! </div> </div> <div class="already-paid-container" *ngIf="selectedOrder?.isPaid"> <div class="already-paid-container" *ngIf="selectedOrder?.isPaid && !selectedOrder?. isCancelled" > <div class="already-paid"> {{ 'DELIVERY_VIEW.CUSTOMER_ALREADY_PAID_WITH_CARD' | translate }} </div> Loading @@ -24,6 +30,7 @@ <div class="buttons"> <div class="button-bar"> <button *ngIf="!selectedOrder?.isCancelled" [disabled]="disabledButtons" class="button button-brand" (click)="delivered()" Loading @@ -36,7 +43,12 @@ class="button button-assertive" (click)="cancel()" > {{ 'DELIVERY_VIEW.CANCEL' | translate }} <span *ngIf="!selectedOrder?.isCancelled" >{{ 'DELIVERY_VIEW.CANCEL' | translate }}</span > <span *ngIf="selectedOrder?.isCancelled" >{{ 'OK' | translate }}</span > </button> </div> </div> Loading carrier/mobile-ionic/src/pages/main/delivery/delivery.ts +62 −56 Original line number Diff line number Diff line import { Component, ViewChild, AfterViewInit } from '@angular/core'; import { Component, ViewChild, AfterViewInit, OnDestroy } from '@angular/core'; import IOrder from '@modules/server.common/interfaces/IOrder'; import { OrderRouter } from '@modules/client.common.angular2/routers/order-router.service'; import OrderCarrierStatus from '@modules/server.common/enums/OrderCarrierStatus'; Loading @@ -9,9 +9,10 @@ import IGeoLocation from '@modules/server.common/interfaces/IGeoLocation'; import GeoLocation from '@modules/server.common/entities/GeoLocation'; import { GeoLocationService } from '../../../services/geo-location.service'; import { MapComponent } from '../common/map/map.component'; import { Router } from '@angular/router'; import { Store } from 'services/store.service'; import { first } from 'rxjs/operators'; import { first, takeUntil } from 'rxjs/operators'; import { Subject } from 'rxjs'; import { NavController } from '@ionic/angular'; declare var google: any; Loading @@ -19,7 +20,7 @@ declare var google: any; selector: 'page-delivery', templateUrl: 'delivery.html' }) export class DeliveryPage implements AfterViewInit { export class DeliveryPage implements AfterViewInit, OnDestroy { @ViewChild('map', { static: false }) carrierMap: MapComponent; Loading @@ -27,6 +28,8 @@ export class DeliveryPage implements AfterViewInit { carrierUserDistance: string; disabledButtons: boolean = true; private destroy$ = new Subject<void>(); get fullAddress() { return this.selectedOrder.user.fullAddress; } Loading @@ -36,16 +39,14 @@ export class DeliveryPage implements AfterViewInit { private mixpanel: Mixpanel, private geoLocationService: GeoLocationService, private geolocation: Geolocation, private router: Router, private navCtrl: NavController, private store: Store ) {} async delivered() { this.disabledButtons = true; if (this.selectedOrder) { this.router.navigateByUrl('/main/home', { skipLocationChange: false }); this.navCtrl.navigateRoot('/main/home'); this.unselectOrder(); Loading @@ -64,9 +65,7 @@ export class DeliveryPage implements AfterViewInit { cancel() { this.disabledButtons = true; this.store.driveToWarehouseFrom = 'delivery'; this.router.navigateByUrl('/main/drive-to-warehouse', { skipLocationChange: false }); this.navCtrl.navigateRoot('/main/drive-to-warehouse'); } ngAfterViewInit(): void { Loading @@ -79,15 +78,16 @@ export class DeliveryPage implements AfterViewInit { private unselectOrder() { localStorage.removeItem('orderId'); this.store.selectedOrder = null; } private async loadData() { const order = await this.orderRouter private loadData() { this.orderRouter .get(localStorage.getItem('orderId'), { populateWarehouse: true }) .pipe(first()) .toPromise(); .pipe(takeUntil(this.destroy$)) .subscribe(async (order) => { this.selectedOrder = order; this.store.selectedOrder = order; // const carrier = await this.carrierRouter // .get(order.carrierId) // .pipe(first()) Loading Loading @@ -127,5 +127,11 @@ export class DeliveryPage implements AfterViewInit { this.carrierMap.setCenter(origin); this.carrierMap.drawRoute(origin, destination); this.disabledButtons = false; }); } ngOnDestroy(): void { this.destroy$.next(); this.destroy$.complete(); } } Loading
backend/api/src/graphql/geo-locations/orders/geo-location-orders.resolver.ts +4 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,10 @@ export class GeoLocationOrdersResolver { geoLocation: IGeoLocation; skippedOrderIds: string[]; options: GeoLocationOrdersOptions; searchObj?: { byRegex: Array<{ key: string; value: string }> }; searchObj?: { isCancelled?: boolean; byRegex?: Array<{ key: string; value: string }>; }; } ) { const orders = await this.geoLocationsOrdersService.getOrdersForWork( Loading
backend/api/src/graphql/geo-locations/orders/geo-locations-orders.graphql +1 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ type Query { } input SearchOrdersForWork { isCancelled: Boolean byRegex: [SearchByRegex] } Loading
backend/api/src/services/geo-locations/GeoLocationsOrdersService.ts +18 −5 Original line number Diff line number Diff line Loading @@ -151,7 +151,10 @@ export class GeoLocationsOrdersService geoLocation: IGeoLocation, skippedOrderIds: string[] = [], options: GeoLocationOrdersOptions, searchObj?: { byRegex: Array<{ key: string; value: string }> } searchObj?: { isCancelled?: boolean; byRegex?: Array<{ key: string; value: string }>; } ): Promise<Order[]> { const merchants = await this.geoLocationsWarehousesService.getMerchants( geoLocation, Loading @@ -163,12 +166,22 @@ export class GeoLocationsOrdersService let searchByRegex = []; if (searchObj && searchObj.byRegex.length > 0) { searchByRegex = searchObj.byRegex.map((s) => { if (searchObj) { const byRegex = searchObj.byRegex; if (byRegex && byRegex.length > 0) { searchByRegex = byRegex.map((s) => { return { [s.key]: { $regex: s.value, $options: 'i' } }; }); } const isCancelled = searchObj.isCancelled; if (isCancelled != null) { searchByRegex.push({ isCancelled }); } } const orders = await this.ordersService.Model.aggregate([ { $match: _.assign( Loading
carrier/mobile-ionic/src/pages/main/delivery/delivery.html +15 −3 Original line number Diff line number Diff line <div class="money-amount-container" *ngIf="!selectedOrder?.isPaid"> <div class="money-amount-container" *ngIf="!selectedOrder?.isPaid && !selectedOrder?. isCancelled" > <div class="money-amount"> {{ 'DELIVERY_VIEW.THE_CUSTOMER_HAS_TO_PAY' | translate }} ${{ selectedOrder?.totalPrice }}! </div> </div> <div class="already-paid-container" *ngIf="selectedOrder?.isPaid"> <div class="already-paid-container" *ngIf="selectedOrder?.isPaid && !selectedOrder?. isCancelled" > <div class="already-paid"> {{ 'DELIVERY_VIEW.CUSTOMER_ALREADY_PAID_WITH_CARD' | translate }} </div> Loading @@ -24,6 +30,7 @@ <div class="buttons"> <div class="button-bar"> <button *ngIf="!selectedOrder?.isCancelled" [disabled]="disabledButtons" class="button button-brand" (click)="delivered()" Loading @@ -36,7 +43,12 @@ class="button button-assertive" (click)="cancel()" > {{ 'DELIVERY_VIEW.CANCEL' | translate }} <span *ngIf="!selectedOrder?.isCancelled" >{{ 'DELIVERY_VIEW.CANCEL' | translate }}</span > <span *ngIf="selectedOrder?.isCancelled" >{{ 'OK' | translate }}</span > </button> </div> </div> Loading
carrier/mobile-ionic/src/pages/main/delivery/delivery.ts +62 −56 Original line number Diff line number Diff line import { Component, ViewChild, AfterViewInit } from '@angular/core'; import { Component, ViewChild, AfterViewInit, OnDestroy } from '@angular/core'; import IOrder from '@modules/server.common/interfaces/IOrder'; import { OrderRouter } from '@modules/client.common.angular2/routers/order-router.service'; import OrderCarrierStatus from '@modules/server.common/enums/OrderCarrierStatus'; Loading @@ -9,9 +9,10 @@ import IGeoLocation from '@modules/server.common/interfaces/IGeoLocation'; import GeoLocation from '@modules/server.common/entities/GeoLocation'; import { GeoLocationService } from '../../../services/geo-location.service'; import { MapComponent } from '../common/map/map.component'; import { Router } from '@angular/router'; import { Store } from 'services/store.service'; import { first } from 'rxjs/operators'; import { first, takeUntil } from 'rxjs/operators'; import { Subject } from 'rxjs'; import { NavController } from '@ionic/angular'; declare var google: any; Loading @@ -19,7 +20,7 @@ declare var google: any; selector: 'page-delivery', templateUrl: 'delivery.html' }) export class DeliveryPage implements AfterViewInit { export class DeliveryPage implements AfterViewInit, OnDestroy { @ViewChild('map', { static: false }) carrierMap: MapComponent; Loading @@ -27,6 +28,8 @@ export class DeliveryPage implements AfterViewInit { carrierUserDistance: string; disabledButtons: boolean = true; private destroy$ = new Subject<void>(); get fullAddress() { return this.selectedOrder.user.fullAddress; } Loading @@ -36,16 +39,14 @@ export class DeliveryPage implements AfterViewInit { private mixpanel: Mixpanel, private geoLocationService: GeoLocationService, private geolocation: Geolocation, private router: Router, private navCtrl: NavController, private store: Store ) {} async delivered() { this.disabledButtons = true; if (this.selectedOrder) { this.router.navigateByUrl('/main/home', { skipLocationChange: false }); this.navCtrl.navigateRoot('/main/home'); this.unselectOrder(); Loading @@ -64,9 +65,7 @@ export class DeliveryPage implements AfterViewInit { cancel() { this.disabledButtons = true; this.store.driveToWarehouseFrom = 'delivery'; this.router.navigateByUrl('/main/drive-to-warehouse', { skipLocationChange: false }); this.navCtrl.navigateRoot('/main/drive-to-warehouse'); } ngAfterViewInit(): void { Loading @@ -79,15 +78,16 @@ export class DeliveryPage implements AfterViewInit { private unselectOrder() { localStorage.removeItem('orderId'); this.store.selectedOrder = null; } private async loadData() { const order = await this.orderRouter private loadData() { this.orderRouter .get(localStorage.getItem('orderId'), { populateWarehouse: true }) .pipe(first()) .toPromise(); .pipe(takeUntil(this.destroy$)) .subscribe(async (order) => { this.selectedOrder = order; this.store.selectedOrder = order; // const carrier = await this.carrierRouter // .get(order.carrierId) // .pipe(first()) Loading Loading @@ -127,5 +127,11 @@ export class DeliveryPage implements AfterViewInit { this.carrierMap.setCenter(origin); this.carrierMap.drawRoute(origin, destination); this.disabledButtons = false; }); } ngOnDestroy(): void { this.destroy$.next(); this.destroy$.complete(); } }