diff --git a/package-lock.json b/package-lock.json index c256a18..ff43f85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12414,6 +12414,11 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "srcdoc-polyfill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/srcdoc-polyfill/-/srcdoc-polyfill-1.0.0.tgz", + "integrity": "sha1-gbbXkTHzMjHqDyBckja+kOmspxg=" + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", diff --git a/package.json b/package.json index e5612b5..f036838 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "core-js": "^2.5.4", "moment": "^2.24.0", "rxjs": "~6.5.1", + "srcdoc-polyfill": "^1.0.0", "tslib": "^1.9.0", "uuid": "^3.3.2", "zone.js": "~0.9.1" diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 1cf1635..39f1a8b 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,23 +1,24 @@ -import { NgModule } from '@angular/core'; -import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; +import { NgModule } from '@angular/core'; +import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; + +const routes: Routes = [ + { path: '', redirectTo: 'login', pathMatch: 'full' }, + { path: 'onboarding', loadChildren: './onboarding/onboarding.module#OnboardingPageModule' }, + { path: 'login', loadChildren: './login/login.module#LoginPageModule' }, + { path: 'malls', loadChildren: './malls/malls.module#MallsPageModule' }, + { path: 'mall-details', loadChildren: './mall-details/mall-details.module#MallDetailsPageModule' }, + { path: 'outlet-details', loadChildren: './outlet-details/outlet-details.module#OutletDetailsPageModule' }, + { path: 'cart', loadChildren: './cart/cart.module#CartPageModule' }, + { path: 'profile', loadChildren: './profile/profile.module#ProfilePageModule' }, + { path: 'bookmark', loadChildren: './bookmark/bookmark.module#BookmarkPageModule' }, + { path: 'near', loadChildren: './near/near.module#NearPageModule' }, { path: 'in-app-browser', loadChildren: './in-app-browser/in-app-browser.module#InAppBrowserPageModule' }, -const routes: Routes = [ - { path: '', redirectTo: 'login', pathMatch: 'full' }, - { path: 'onboarding', loadChildren: './onboarding/onboarding.module#OnboardingPageModule' }, - { path: 'login', loadChildren: './login/login.module#LoginPageModule' }, - { path: 'malls', loadChildren: './malls/malls.module#MallsPageModule' }, - { path: 'mall-details', loadChildren: './mall-details/mall-details.module#MallDetailsPageModule' }, - { path: 'outlet-details', loadChildren: './outlet-details/outlet-details.module#OutletDetailsPageModule' }, - { path: 'cart', loadChildren: './cart/cart.module#CartPageModule' }, - { path: 'profile', loadChildren: './profile/profile.module#ProfilePageModule' }, - { path: 'bookmark', loadChildren: './bookmark/bookmark.module#BookmarkPageModule' }, - { path: 'near', loadChildren: './near/near.module#NearPageModule' }, -]; - -@NgModule({ - imports: [ - RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules }) - ], - exports: [RouterModule] -}) -export class AppRoutingModule { } +]; + +@NgModule({ + imports: [ + RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules }) + ], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index dfedd3f..a8960eb 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -8,6 +8,9 @@ import { StatusBar } from '@ionic-native/status-bar/ngx'; import { IonicStorageModule } from '@ionic/storage'; import { HttpClientModule } from '@angular/common/http'; +// Modal page +import { InAppBrowserPageModule } from './in-app-browser/in-app-browser.module'; + // Services import import { AuthService } from './services/auth.service'; import { MallService } from './services/mall.service'; @@ -31,6 +34,7 @@ import { Geolocation } from '@ionic-native/geolocation/ngx'; AppRoutingModule, IonicStorageModule.forRoot(), HttpClientModule, + InAppBrowserPageModule, ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production })], providers: [ StatusBar, diff --git a/src/app/cart/cart.page.html b/src/app/cart/cart.page.html index 4056187..adbc33f 100644 --- a/src/app/cart/cart.page.html +++ b/src/app/cart/cart.page.html @@ -80,6 +80,8 @@ Pay Now + Testing Payment gateway +
APPLY PROMOCODE diff --git a/src/app/cart/cart.page.ts b/src/app/cart/cart.page.ts index 35f141b..8e7134e 100644 --- a/src/app/cart/cart.page.ts +++ b/src/app/cart/cart.page.ts @@ -3,6 +3,8 @@ import { Location } from '@angular/common'; import { Router } from '@angular/router'; import { OrderService } from '../services/order.service'; import { ToastService } from '../services/toast.service'; +import { ModalController } from '@ionic/angular'; +import { InAppBrowserPage } from '../in-app-browser/in-app-browser.page'; import * as moment from 'moment'; export type ICart = { @@ -41,13 +43,24 @@ export class CartPage implements OnInit { private location: Location, private orderService: OrderService, private toastService: ToastService, - private router: Router + private router: Router, + public modalController: ModalController ) { } ngOnInit() { this.hideMenuButton(); } + async presentModal(url: string) { + const modal = await this.modalController.create({ + component: InAppBrowserPage, + componentProps: { + url: url + } + }); + return await modal.present(); + } + ngOnDestroy() { this.showMenuButton(); } @@ -254,4 +267,23 @@ export class CartPage implements OnInit { }); } + requestInvoice() { + let invoice_data = { + "name": "Nikhil", + "email": "kj@webtrigon.com", + "contact": "1234567", + "total_amt": 1000, + "description": "This payment is towards testing Invoice feature", + "receipt": "#asdsdsdf", + "email_notify": 1 + }; + + this.orderService.generateInvoice(invoice_data).then((data: any) => { + console.log(data.shorturl); + this.presentModal(data.shorturl); + }, (err) => { + this.toastService.presentToast("Oops, something went wrong", "danger"); + }); + } + } diff --git a/src/app/in-app-browser/in-app-browser.module.ts b/src/app/in-app-browser/in-app-browser.module.ts new file mode 100644 index 0000000..09d4622 --- /dev/null +++ b/src/app/in-app-browser/in-app-browser.module.ts @@ -0,0 +1,26 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { Routes, RouterModule } from '@angular/router'; + +import { IonicModule } from '@ionic/angular'; + +import { InAppBrowserPage } from './in-app-browser.page'; + +const routes: Routes = [ + { + path: '', + component: InAppBrowserPage + } +]; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + RouterModule.forChild(routes) + ], + declarations: [InAppBrowserPage] +}) +export class InAppBrowserPageModule {} diff --git a/src/app/in-app-browser/in-app-browser.page.html b/src/app/in-app-browser/in-app-browser.page.html new file mode 100644 index 0000000..7cd454a --- /dev/null +++ b/src/app/in-app-browser/in-app-browser.page.html @@ -0,0 +1,10 @@ + +
+
+ +

Payment Page

+
+
+ + +
diff --git a/src/app/in-app-browser/in-app-browser.page.scss b/src/app/in-app-browser/in-app-browser.page.scss new file mode 100644 index 0000000..ca0725c --- /dev/null +++ b/src/app/in-app-browser/in-app-browser.page.scss @@ -0,0 +1,55 @@ +.header-bar { + background-image: url('../../assets/custom/background-5.svg'); + background-size: cover; + background-repeat: no-repeat; + background-position: left top; + display: flex; + align-items: center; + justify-content: space-between; + padding: 15px; + height: 75px; + z-index: 3; + top: 0; + left: 0; + width: 100%; + position: sticky; + box-shadow: 0px 3px 5px var(--brand-grey); + margin-bottom: 20px; + + .heading-holder { + display: flex; + align-items: center; + } + + button, a { + background-color: white; + color: var(--brand-blue); + font-size: 18px; + padding: 5px; + border-radius: 50%; + height: 30px; + width: 30px; + display: flex; + justify-content: center; + align-items: center; + + &.active { + color: white; + background-color: var(--brand-blue); + } + } + + h3 { + font-size: 16px; + color: white; + letter-spacing: 0.5px; + margin-left: 10px; + font-weight: 600; + } +} + + +iframe { + width: 100vw; + height: 80vh; +} diff --git a/src/app/in-app-browser/in-app-browser.page.spec.ts b/src/app/in-app-browser/in-app-browser.page.spec.ts new file mode 100644 index 0000000..16e4da1 --- /dev/null +++ b/src/app/in-app-browser/in-app-browser.page.spec.ts @@ -0,0 +1,27 @@ +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { InAppBrowserPage } from './in-app-browser.page'; + +describe('InAppBrowserPage', () => { + let component: InAppBrowserPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ InAppBrowserPage ], + schemas: [CUSTOM_ELEMENTS_SCHEMA], + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(InAppBrowserPage); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/in-app-browser/in-app-browser.page.ts b/src/app/in-app-browser/in-app-browser.page.ts new file mode 100644 index 0000000..0e0137f --- /dev/null +++ b/src/app/in-app-browser/in-app-browser.page.ts @@ -0,0 +1,37 @@ +import { Component, OnInit, ViewChild, ElementRef } from '@angular/core'; +import { ModalController, NavParams } from '@ionic/angular'; +import { DomSanitizer } from '@angular/platform-browser'; +import * as srcDoc from 'srcdoc-polyfill'; + + +@Component({ + selector: 'app-in-app-browser', + templateUrl: './in-app-browser.page.html', + styleUrls: ['./in-app-browser.page.scss'], +}) +export class InAppBrowserPage implements OnInit { + @ViewChild('frame', null) + public iframe:ElementRef; + url: any; + + constructor( + public modalController: ModalController, + public navParams: NavParams, + private sanitizer: DomSanitizer + ) { + this.url = this.navParams.get('url'); + } + + ngAfterViewInit() { + // srcDoc.set(this.iframe.nativeElement, this.url); + this.iframe.nativeElement.src = this.url; + } + + ngOnInit() { + } + + back() { + this.modalController.dismiss(); + } + +} diff --git a/src/app/orders/orders.component.ts b/src/app/orders/orders.component.ts index 292482f..44b6f7f 100644 --- a/src/app/orders/orders.component.ts +++ b/src/app/orders/orders.component.ts @@ -11,17 +11,20 @@ export class OrdersComponent implements OnInit { userOrders: any = []; selected_order: any; selected_rating: number = 0; + userInfo: any; constructor( private orderService: OrderService, ) { } ngOnInit() { - this.orderService.getOrders().then((resp: any)=> { + this.userInfo = JSON.parse(localStorage.userInfo)['User Info']; + + this.orderService.getOrders(this.userInfo.id).then((resp: any)=> { this.userOrders = resp.reverse(); }, (err) => { console.log(err); - }); + }); } getFormattedDate(date, format) { diff --git a/src/app/services/order.service.ts b/src/app/services/order.service.ts index df9601e..307be77 100644 --- a/src/app/services/order.service.ts +++ b/src/app/services/order.service.ts @@ -11,7 +11,7 @@ export class OrderService { private http: HttpClient ) { } - async createOrder(userCart) { + async createOrder(userCart: any) { const httpOptions = { headers: new HttpHeaders({ 'Access-Control-Allow-Origin': '*', @@ -23,7 +23,7 @@ export class OrderService { return await this.http.post(URL + '/api/maioraservice/orders/v1/create/', userCart, httpOptions).toPromise(); } - async getOrders() { + async getOrders(id: any) { const httpOptions = { headers: new HttpHeaders({ 'Access-Control-Allow-Origin': '*', @@ -32,6 +32,18 @@ export class OrderService { }) }; - return await this.http.get(URL + '/api/maioraservice/orders/getallOrders', httpOptions).toPromise(); + return await this.http.get(URL + '/api/maioraservice/orders/getorders/user_id/' + id, httpOptions).toPromise(); } + + async generateInvoice(data: any) { + const httpOptions = { + headers: new HttpHeaders({ + 'Access-Control-Allow-Origin': '*', + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ' + localStorage.access_Token + }) + }; + + return await this.http.post(URL + '/Payment/v1/invoice/create', data, httpOptions).toPromise(); + } }