From 08f9968eec3f17417ba4a5464e7bb0f400776441 Mon Sep 17 00:00:00 2001 From: muhsin <muhsin@techware.co.in> Date: Tue, 11 Feb 2020 16:15:45 +0530 Subject: [PATCH] added contact page --- package-lock.json | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------- package.json | 219 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------ src/app/app-routing.module.ts | 3 ++- src/app/app.component.html | 2 +- src/app/app.module.ts | 3 ++- src/app/contact/contact.component.html | 3 --- src/app/contact/contact.component.scss | 0 src/app/contact/contact.component.spec.ts | 27 --------------------------- src/app/contact/contact.component.ts | 14 -------------- src/app/contact/contact.module.ts | 26 ++++++++++++++++++++++++++ src/app/contact/contact.page.html | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/app/contact/contact.page.scss | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/app/contact/contact.page.spec.ts | 27 +++++++++++++++++++++++++++ src/app/contact/contact.page.ts | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/app/orderplaced/orderplaced.page.html | 2 +- src/config/auth.service.ts | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------- src/config/contact.service.ts | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/config/services/contact.ts | 5 +++++ 18 files changed, 544 insertions(+), 236 deletions(-) delete mode 100644 src/app/contact/contact.component.html delete mode 100644 src/app/contact/contact.component.scss delete mode 100644 src/app/contact/contact.component.spec.ts delete mode 100644 src/app/contact/contact.component.ts create mode 100644 src/app/contact/contact.module.ts create mode 100644 src/app/contact/contact.page.html create mode 100644 src/app/contact/contact.page.scss create mode 100644 src/app/contact/contact.page.spec.ts create mode 100644 src/app/contact/contact.page.ts create mode 100644 src/config/contact.service.ts create mode 100644 src/config/services/contact.ts diff --git a/package-lock.json b/package-lock.json index 27af8ed..10c70e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -397,7 +397,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -418,12 +419,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -438,17 +441,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -578,6 +584,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -592,6 +599,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -599,12 +607,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -623,6 +633,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -703,7 +714,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -715,6 +727,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -800,7 +813,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -836,6 +850,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -855,6 +870,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -898,12 +914,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -1443,6 +1461,21 @@ "protobufjs": "^6.8.6" } }, + "@ionic-native/call-number": { + "version": "5.21.4", + "resolved": "https://registry.npmjs.org/@ionic-native/call-number/-/call-number-5.21.4.tgz", + "integrity": "sha512-BWm8cNJBGKO/luG4c7iH0vdrs3ZP45xgDpo4lZ1h8fN3vGTKrG7P6XgVQJ1gQo4jRz4XnEPYatWBYH1A0BcAog==", + "requires": { + "@types/cordova": "^0.0.34" + }, + "dependencies": { + "@types/cordova": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", + "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" + } + } + }, "@ionic-native/core": { "version": "5.19.1", "resolved": "https://registry.npmjs.org/@ionic-native/core/-/core-5.19.1.tgz", @@ -2955,6 +2988,11 @@ "unset-value": "^1.0.0" } }, + "call-number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-number/-/call-number-1.0.1.tgz", + "integrity": "sha1-v52q5If9alVz+JqjZV++ivA2r9I=" + }, "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -6814,7 +6852,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -6857,7 +6896,8 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", @@ -6868,7 +6908,8 @@ "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -6985,7 +7026,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -6997,6 +7039,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -7026,6 +7069,7 @@ "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -7044,6 +7088,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -7137,6 +7182,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -7222,7 +7268,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -7258,6 +7305,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -7277,6 +7325,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -7320,12 +7369,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -11885,6 +11936,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -12478,7 +12530,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -12521,7 +12574,8 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", @@ -12532,7 +12586,8 @@ "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -12649,7 +12704,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -12661,6 +12717,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -12690,6 +12747,7 @@ "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -12708,6 +12766,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -12788,7 +12847,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -12800,6 +12860,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -12885,7 +12946,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -12921,6 +12983,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -12940,6 +13003,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -12983,12 +13047,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/package.json b/package.json index ac53879..d2fca00 100644 --- a/package.json +++ b/package.json @@ -1,111 +1,114 @@ { - "name": "getme", - "version": "0.0.1", - "author": "Techware Software Solutions Pvt Ltd", - "homepage": "https://techware.com/", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "test": "ng test", - "lint": "ng lint", - "e2e": "ng e2e" + "name": "getme", + "version": "0.0.1", + "author": "Techware Software Solutions Pvt Ltd", + "homepage": "https://techware.com/", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@agm/core": "^1.1.0", + "@angular/animations": "^8.2.14", + "@angular/common": "~8.1.2", + "@angular/compiler": "~8.1.2", + "@angular/core": "~8.1.2", + "@angular/fire": "^5.3.0", + "@angular/forms": "~8.1.2", + "@angular/platform-browser": "~8.1.2", + "@angular/platform-browser-dynamic": "~8.1.2", + "@angular/router": "~8.1.2", + "@ionic-native/call-number": "^5.21.4", + "@ionic-native/core": "^5.19.1", + "@ionic-native/geolocation": "^5.19.1", + "@ionic-native/google-plus": "^5.19.1", + "@ionic-native/native-geocoder": "^5.19.1", + "@ionic-native/social-sharing": "^5.20.0", + "@ionic-native/splash-screen": "^5.19.1", + "@ionic-native/status-bar": "^5.19.1", + "@ionic/angular": "^4.11.8", + "@ionic/storage": "^2.2.0", + "@types/googlemaps": "^3.39.2", + "agm-direction": "^0.7.9", + "call-number": "^1.0.1", + "cordova-android": "8.0.0", + "cordova-plugin-device": "^2.0.3", + "cordova-plugin-geolocation": "^4.0.2", + "cordova-plugin-googleplus": "^8.2.1", + "cordova-plugin-ionic-keyboard": "^2.2.0", + "cordova-plugin-ionic-webview": "^4.1.3", + "cordova-plugin-nativegeocoder": "^3.2.2", + "cordova-plugin-splashscreen": "^5.0.3", + "cordova-plugin-statusbar": "^2.4.3", + "cordova-plugin-whitelist": "^1.3.4", + "cordova-plugin-x-socialsharing": "^5.6.3", + "cordova-sqlite-storage": "^3.4.1", + "core-js": "^2.6.11", + "es6-promise-plugin": "^4.2.2", + "firebase": "^6.6.2", + "rxjs": "^6.5.4", + "rxjs-compat": "^6.5.4", + "tslib": "^1.9.0", + "zone.js": "~0.9.1" + }, + "devDependencies": { + "@angular-devkit/architect": "~0.801.2", + "@angular-devkit/build-angular": "~0.801.2", + "@angular-devkit/core": "~8.1.2", + "@angular-devkit/schematics": "~8.1.2", + "@angular/cli": "~8.1.2", + "@angular/compiler": "~8.1.2", + "@angular/compiler-cli": "~8.1.2", + "@angular/language-service": "~8.1.2", + "@ionic/angular-toolkit": "~2.0.0", + "@types/jasmine": "~3.3.8", + "@types/jasminewd2": "^2.0.8", + "@types/node": "~8.9.4", + "codelyzer": "^5.2.1", + "jasmine-core": "~3.4.0", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~4.1.0", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~2.0.1", + "karma-jasmine": "~2.0.1", + "karma-jasmine-html-reporter": "^1.5.1", + "protractor": "~5.4.0", + "ts-node": "~7.0.0", + "tslint": "~5.15.0", + "typescript": "~3.4.3" + }, + "description": "An Ionic project", + "cordova": { + "plugins": { + "cordova-plugin-whitelist": {}, + "cordova-plugin-statusbar": {}, + "cordova-plugin-device": {}, + "cordova-plugin-splashscreen": {}, + "cordova-plugin-ionic-webview": { + "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+" + }, + "cordova-plugin-ionic-keyboard": {}, + "cordova-plugin-geolocation": { + "GEOLOCATION_USAGE_DESCRIPTION": "To locate you" + }, + "cordova-plugin-nativegeocoder": {}, + "cordova-sqlite-storage": {}, + "cordova-plugin-googleplus": { + "REVERSED_CLIENT_ID": "com.googleusercontent.apps.949385251610-a6lrfr6uhr73991e38t3t013jj3v56a9", + "PLAY_SERVICES_VERSION": "15.0.1" + }, + "cordova-plugin-x-socialsharing": { + "ANDROID_SUPPORT_V4_VERSION": "24.1.1+" + }, + "mx.ferreyra.callnumber": {} }, - "private": true, - "dependencies": { - "@agm/core": "^1.1.0", - "@angular/animations": "^8.2.14", - "@angular/common": "~8.1.2", - "@angular/compiler": "~8.1.2", - "@angular/core": "~8.1.2", - "@angular/fire": "^5.3.0", - "@angular/forms": "~8.1.2", - "@angular/platform-browser": "~8.1.2", - "@angular/platform-browser-dynamic": "~8.1.2", - "@angular/router": "~8.1.2", - "@ionic-native/core": "^5.19.1", - "@ionic-native/geolocation": "^5.19.1", - "@ionic-native/google-plus": "^5.19.1", - "@ionic-native/native-geocoder": "^5.19.1", - "@ionic-native/social-sharing": "^5.20.0", - "@ionic-native/splash-screen": "^5.19.1", - "@ionic-native/status-bar": "^5.19.1", - "@ionic/angular": "^4.11.8", - "@ionic/storage": "^2.2.0", - "@types/googlemaps": "^3.39.2", - "agm-direction": "^0.7.9", - "cordova-android": "8.0.0", - "cordova-plugin-device": "^2.0.3", - "cordova-plugin-geolocation": "^4.0.2", - "cordova-plugin-googleplus": "^8.2.1", - "cordova-plugin-ionic-keyboard": "^2.2.0", - "cordova-plugin-ionic-webview": "^4.1.3", - "cordova-plugin-nativegeocoder": "^3.2.2", - "cordova-plugin-splashscreen": "^5.0.3", - "cordova-plugin-statusbar": "^2.4.3", - "cordova-plugin-whitelist": "^1.3.4", - "cordova-plugin-x-socialsharing": "^5.6.3", - "cordova-sqlite-storage": "^3.4.1", - "core-js": "^2.6.11", - "es6-promise-plugin": "^4.2.2", - "firebase": "^6.6.2", - "rxjs": "^6.5.4", - "rxjs-compat": "^6.5.4", - "tslib": "^1.9.0", - "zone.js": "~0.9.1" - }, - "devDependencies": { - "@angular-devkit/architect": "~0.801.2", - "@angular-devkit/build-angular": "~0.801.2", - "@angular-devkit/core": "~8.1.2", - "@angular-devkit/schematics": "~8.1.2", - "@angular/cli": "~8.1.2", - "@angular/compiler": "~8.1.2", - "@angular/compiler-cli": "~8.1.2", - "@angular/language-service": "~8.1.2", - "@ionic/angular-toolkit": "~2.0.0", - "@types/jasmine": "~3.3.8", - "@types/jasminewd2": "^2.0.8", - "@types/node": "~8.9.4", - "codelyzer": "^5.2.1", - "jasmine-core": "~3.4.0", - "jasmine-spec-reporter": "~4.2.1", - "karma": "~4.1.0", - "karma-chrome-launcher": "~2.2.0", - "karma-coverage-istanbul-reporter": "~2.0.1", - "karma-jasmine": "~2.0.1", - "karma-jasmine-html-reporter": "^1.5.1", - "protractor": "~5.4.0", - "ts-node": "~7.0.0", - "tslint": "~5.15.0", - "typescript": "~3.4.3" - }, - "description": "An Ionic project", - "cordova": { - "plugins": { - "cordova-plugin-whitelist": {}, - "cordova-plugin-statusbar": {}, - "cordova-plugin-device": {}, - "cordova-plugin-splashscreen": {}, - "cordova-plugin-ionic-webview": { - "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+" - }, - "cordova-plugin-ionic-keyboard": {}, - "cordova-plugin-geolocation": { - "GEOLOCATION_USAGE_DESCRIPTION": "To locate you" - }, - "cordova-plugin-nativegeocoder": {}, - "cordova-sqlite-storage": {}, - "cordova-plugin-googleplus": { - "REVERSED_CLIENT_ID": "com.googleusercontent.apps.949385251610-a6lrfr6uhr73991e38t3t013jj3v56a9", - "PLAY_SERVICES_VERSION": "15.0.1" - }, - "cordova-plugin-x-socialsharing": { - "ANDROID_SUPPORT_V4_VERSION": "24.1.1+" - } - }, - "platforms": [ - "android" - ] - } + "platforms": [ + "android" + ] + } } diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 1e8cb8a..fa0d810 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -100,7 +100,8 @@ const routes: Routes = [ { path: 'address', loadChildren: './address/address.module#AddressPageModule' }, { path: 'success', loadChildren: './success/success.module#SuccessPageModule' }, { path: 'failed', loadChildren: './failed/failed.module#FailedPageModule' }, - { path: 'preference', loadChildren: './preference/preference.module#PreferencePageModule' } + { path: 'preference', loadChildren: './preference/preference.module#PreferencePageModule' }, + { path: 'contact', loadChildren: './contact/contact.module#ContactPageModule' } ]; @NgModule({ diff --git a/src/app/app.component.html b/src/app/app.component.html index a4e000e..b61f197 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -101,7 +101,7 @@ (click)="setActive5()" ></div> </li> - <li (click)="goToPage('profile')"> + <li (click)="goToPage('contact')"> <div class="icon_sec m6_icon" [class.m6_icon_act]="sec_active6" diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 68a6c08..1d5ffdf 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -29,7 +29,7 @@ import { DeliverypopPageModule } from './deliverypop/deliverypop.module'; import { FormsModule } from '@angular/forms'; import { SearchmodalPageModule } from './searchmodal/searchmodal.module'; import { SocialSharing } from '@ionic-native/social-sharing/ngx'; - +import { CallNumber } from '@ionic-native/call-number/ngx'; @NgModule({ declarations: [AppComponent], entryComponents: [], @@ -48,6 +48,7 @@ import { SocialSharing } from '@ionic-native/social-sharing/ngx'; FormsModule ], providers: [ + CallNumber, StatusBar, SplashScreen, Geolocation, diff --git a/src/app/contact/contact.component.html b/src/app/contact/contact.component.html deleted file mode 100644 index 0be0885..0000000 --- a/src/app/contact/contact.component.html +++ /dev/null @@ -1,3 +0,0 @@ -<p> - contact works! -</p> diff --git a/src/app/contact/contact.component.scss b/src/app/contact/contact.component.scss deleted file mode 100644 index e69de29..0000000 --- a/src/app/contact/contact.component.scss +++ /dev/null diff --git a/src/app/contact/contact.component.spec.ts b/src/app/contact/contact.component.spec.ts deleted file mode 100644 index abe225d..0000000 --- a/src/app/contact/contact.component.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { ContactComponent } from './contact.component'; - -describe('ContactComponent', () => { - let component: ContactComponent; - let fixture: ComponentFixture<ContactComponent>; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ ContactComponent ], - schemas: [CUSTOM_ELEMENTS_SCHEMA], - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(ContactComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/contact/contact.component.ts b/src/app/contact/contact.component.ts deleted file mode 100644 index 09e8cbb..0000000 --- a/src/app/contact/contact.component.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-contact', - templateUrl: './contact.component.html', - styleUrls: ['./contact.component.scss'], -}) -export class ContactComponent implements OnInit { - - constructor() { } - - ngOnInit() {} - -} diff --git a/src/app/contact/contact.module.ts b/src/app/contact/contact.module.ts new file mode 100644 index 0000000..4d4076d --- /dev/null +++ b/src/app/contact/contact.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 { ContactPage } from './contact.page'; + +const routes: Routes = [ + { + path: '', + component: ContactPage + } +]; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + RouterModule.forChild(routes) + ], + declarations: [ContactPage] +}) +export class ContactPageModule {} diff --git a/src/app/contact/contact.page.html b/src/app/contact/contact.page.html new file mode 100644 index 0000000..1e91b59 --- /dev/null +++ b/src/app/contact/contact.page.html @@ -0,0 +1,60 @@ +<div class="nav_header"> + <button class="nav_btn nav_back floatLeft" (click)="goBack()"> + <img src="../assets/Group17_2.png" /> + </button> + <div class="nav_title floatLeft"> + <h4>Send Us</h4> + </div> + <div class="clear"></div> +</div> + +<ion-content> + <form + novalidate + #contactUsForm="ngForm" + class="contact_wrapper" + *ngIf="userData && contactData" + > + <div class="form_div"> + <div class="row"> + <p>Write Us</p> + <textarea + required + name="writeUs" + [(ngModel)]="contactData.message" + #writeUs="ngModel" + class="form-control" + rows="8" + placeholder="Type here.." + ></textarea> + <div + class="md-errors-spacer" + [hidden]="writeUs.valid || submitted == false" + class="ion-padding-start" + > + This is required. + </div> + </div> + <div class="row"> + <button (click)="onContactSubmit(contactUsForm)" class="login_btn"> + SENT + </button> + </div> + <div class="row"> + <span>or</span> + </div> + <div class="row"> + <button (click)="callUs()" class="login_btn" [disabled]="submitted"> + Call Us + </button> + </div> + </div> + </form> +</ion-content> + +<div class="loader" *ngIf="contactService.loader"> + <div class="lds-ripple"> + <div></div> + <div></div> + </div> +</div> diff --git a/src/app/contact/contact.page.scss b/src/app/contact/contact.page.scss new file mode 100644 index 0000000..d26cc01 --- /dev/null +++ b/src/app/contact/contact.page.scss @@ -0,0 +1,44 @@ +.contact_wrapper { + width: 80%; + margin: 0 auto; + padding-top: 30px; + .form_div { + .row { + margin: 20px; + .form-control { + border: 1px solid rgba(215, 213, 228, 1); + background: transparent; + color: #333; + width: 100%; + border-radius: 8px; + font-size: 16px; + padding: 11px 15px; + resize: none; + &::placeholder { + color: rgba(215, 213, 228, 1); + } + } + .login_btn { + width: 100%; + background-color: #29285b; + color: #fff; + border-radius: 8px; + height: 45px; + font-size: 16px; + } + p { + text-align: left; + color: rgba(59, 57, 77, 1); + margin: 0px; + font-weight: bolder; + padding-bottom: 10px; + } + + span { + opacity: 0.6; + text-align: center !important; + display: block; + } + } + } +} diff --git a/src/app/contact/contact.page.spec.ts b/src/app/contact/contact.page.spec.ts new file mode 100644 index 0000000..627007c --- /dev/null +++ b/src/app/contact/contact.page.spec.ts @@ -0,0 +1,27 @@ +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ContactPage } from './contact.page'; + +describe('ContactPage', () => { + let component: ContactPage; + let fixture: ComponentFixture<ContactPage>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ContactPage ], + schemas: [CUSTOM_ELEMENTS_SCHEMA], + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ContactPage); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/contact/contact.page.ts b/src/app/contact/contact.page.ts new file mode 100644 index 0000000..8d8f32f --- /dev/null +++ b/src/app/contact/contact.page.ts @@ -0,0 +1,68 @@ +import { Component, OnInit } from '@angular/core'; +import { Location } from '@angular/common'; +import { ContactData } from 'src/config/services/contact'; +import { SubjectService } from '../../config/subject.service'; +import { NgForm } from '@angular/forms'; +import { ContactService } from 'src/config/contact.service'; +import { ServiceService } from '../../config/service.service'; +import { CallNumber } from '@ionic-native/call-number/ngx'; +@Component({ + selector: 'app-contact', + templateUrl: './contact.page.html', + styleUrls: ['./contact.page.scss'] +}) +export class ContactPage implements OnInit { + submitted = false; + userData: any; + contactData: ContactData = { + from: '', + message: '', + contactId: '' + }; + constructor( + private location: Location, + public subjectService: SubjectService, + public contactService: ContactService, + public service: ServiceService, + private callNumber: CallNumber + ) { + // Gets userdata + this.subjectService.getUserData().subscribe(userData => { + if (userData) { + this.userData = JSON.parse(userData); + this.contactData.from = JSON.parse(userData).emailId; + console.log(userData); + } else { + console.log(userData); + } + }); + } + + ngOnInit() {} + + callUs() { + this.callNumber + .callNumber('+61 411 622 880', true) + .then(res => console.log('Launched dialer!', res)) + .catch(err => console.log('Error launching dialer', err)); + } + + onContactSubmit(form: NgForm) { + this.submitted = true; + console.log(form.value); + if (form.valid && form.value.message !== '') { + const contData = { ...this.contactData, from: this.userData.emailId }; + this.contactService.contactCreate(contData); + } else { + console.log('form not valid'); + this.submitted = false; + this.service.showToast('Invalid request!', 'top', 'my-error', 1000); + } + } + + goBack() { + this.location.back(); + } +} + +// +61 411 622 880 diff --git a/src/app/orderplaced/orderplaced.page.html b/src/app/orderplaced/orderplaced.page.html index 686c315..7c067bd 100644 --- a/src/app/orderplaced/orderplaced.page.html +++ b/src/app/orderplaced/orderplaced.page.html @@ -102,7 +102,7 @@ </h5> <button class="cancel_btn" - (click)="cancellOrder(data.orderId)" + (click)="goToPage('contact')" *ngIf="cancelDelivery > 0 && data.orderStatus != 0 && data.orderStatus != 8" > CANCEL THIS ORDER diff --git a/src/config/auth.service.ts b/src/config/auth.service.ts index 88155ed..8654c64 100644 --- a/src/config/auth.service.ts +++ b/src/config/auth.service.ts @@ -1,21 +1,21 @@ -import { Injectable } from '@angular/core'; -import { User, Signup, Address } from './services/user'; -import { auth } from 'firebase/app'; -import { Router, ActivatedRoute } from '@angular/router'; -import { AngularFireAuth } from '@angular/fire/auth'; +import { Injectable } from "@angular/core"; +import { User, Signup, Address } from "./services/user"; +import { auth } from "firebase/app"; +import { Router, ActivatedRoute } from "@angular/router"; +import { AngularFireAuth } from "@angular/fire/auth"; import { AngularFirestore, AngularFirestoreDocument, AngularFirestoreCollection -} from '@angular/fire/firestore'; -import { ServiceService } from './../config/service.service'; -import { SubjectService } from './../config/subject.service'; -import { GooglePlus } from '@ionic-native/google-plus/ngx'; -import { take } from 'rxjs/operators'; -import { from } from 'rxjs'; +} from "@angular/fire/firestore"; +import { ServiceService } from "./../config/service.service"; +import { SubjectService } from "./../config/subject.service"; +import { GooglePlus } from "@ionic-native/google-plus/ngx"; +import { take } from "rxjs/operators"; +import { from } from "rxjs"; @Injectable({ - providedIn: 'root' + providedIn: "root" }) export class AuthService { loader: boolean; @@ -30,33 +30,33 @@ export class AuthService { this.loader = true; this.type = 1; this.afAuth.authState.subscribe(user => { - console.log('here'); + console.log("here"); console.log(user); if (user) { this.subjectService.sendLoginData(false); this.userData = user; console.log(this.userData); - this.service.set('user', JSON.stringify(this.userData)); + this.service.set("user", JSON.stringify(this.userData)); this.SetUserData(user); this.loader = false; if (this.type === 1) { - this.router.navigateByUrl('home'); + this.router.navigateByUrl("home"); } else { - this.router.navigateByUrl('verification'); + this.router.navigateByUrl("verification"); } } else { - console.log('here too'); + console.log("here too"); this.loader = false; this.subjectService.sendLoginData(true); - this.service.set('user', null); - JSON.parse(localStorage.getItem('user')); - this.router.navigateByUrl('login'); + this.service.set("user", null); + JSON.parse(localStorage.getItem("user")); + this.router.navigateByUrl("login"); } }); } get isLoggedIn(): boolean { - const user = JSON.parse(localStorage.getItem('user')); + const user = JSON.parse(localStorage.getItem("user")); return user !== null && user.emailVerified !== false ? true : false; } userData: any; @@ -70,21 +70,21 @@ export class AuthService { return this.afAuth.auth .signInWithEmailAndPassword(email, password) .then(result => { - console.log('success'); + console.log("success"); document.body.scrollTop = document.documentElement.scrollTop = 0; this.SetUserData(result.user); }) .catch(error => { this.loader = false; - this.service.showToast(error.message, 'bottom', 'my-error', 1000); + this.service.showToast(error.message, "bottom", "my-error", 1000); }); } public async verify(otp: string) { this.loader = true; const custRef: AngularFirestoreCollection<any> = this.afs.collection( - 'customers', - ref => ref.where('otp', '==', otp).where('uid', '==', this.userData.uid) + "customers", + ref => ref.where("otp", "==", otp).where("uid", "==", this.userData.uid) ); custRef .valueChanges() @@ -92,18 +92,18 @@ export class AuthService { .subscribe((value: User[]) => { if (value.length > 0) { this.afs - .collection('customers') + .collection("customers") .doc(this.userData.uid) - .update({ otp: '', phoneVerified: true }); - this.service.set('type', 1); + .update({ otp: "", phoneVerified: true }); + this.service.set("type", 1); this.loader = false; - this.router.navigateByUrl('nearby'); + this.router.navigateByUrl("nearby"); } else { this.loader = false; this.service.showToast( - 'Please input valid OTP', - 'bottom', - 'my-error', + "Please input valid OTP", + "bottom", + "my-error", 1000 ); } @@ -112,7 +112,7 @@ export class AuthService { profilePic(pic) { this.afs - .collection('customers') + .collection("customers") .doc(this.userData.uid) .update({ profilePhoto: pic }); } @@ -123,7 +123,7 @@ export class AuthService { this.afAuth.auth .signInWithPopup(new auth.GoogleAuthProvider()) .then(result => { - console.log('success'); + console.log("success"); console.log(result.additionalUserInfo.isNewUser); if ( result.additionalUserInfo && @@ -150,11 +150,11 @@ export class AuthService { .signInWithPopup(new auth.FacebookAuthProvider()) .then(result => { this.loader = false; - console.log('success'); + console.log("success"); console.log(result); }) .catch(err => { - this.service.showToast(err.message, 'bottom', 'my-error', 1000); + this.service.showToast(err.message, "bottom", "my-error", 1000); }); } catch (error) { This.loader = false; @@ -181,7 +181,7 @@ export class AuthService { loginType: value.loginType }; this.loggedUser = userData; - this.service.set('userData', JSON.stringify(this.loggedUser)); + this.service.set("userData", JSON.stringify(this.loggedUser)); this.subjectService.sendUserData(JSON.stringify(this.loggedUser)); console.log(this.loggedUser); }); @@ -191,9 +191,9 @@ export class AuthService { this.loader = true; return this.afAuth.auth.signOut().then(() => { this.subjectService.sendLoginData(true); - this.service.remove('user'); + this.service.remove("user"); this.loader = false; - console.log('logout'); + console.log("logout"); }); } @@ -201,9 +201,9 @@ export class AuthService { this.type = 2; console.log(userData.user); const currencyData = { - currId: '123', - currName: 'Australian dollar', - symbol: 'A$' + currId: "123", + currName: "Australian dollar", + symbol: "A$" }; const otp = Math.floor(1000 + Math.random() * 9000); userData = userData.user; @@ -223,11 +223,11 @@ export class AuthService { this.userPostData = postData; console.log(postData); this.afs - .collection('customers') + .collection("customers") .doc(userData.uid) .set(postData) .then(() => { - console.log('successs'); + console.log("successs"); }); } @@ -242,15 +242,15 @@ export class AuthService { console.log(result.user); this.afAuth.auth.currentUser.sendEmailVerification(); const currencyData = { - currId: '123', - currName: 'Australian dollar', - symbol: 'A$' + currId: "123", + currName: "Australian dollar", + symbol: "A$" }; const custData = result.user; const postData: User = { uid: custData.uid, status: true, - profilePhoto: '', + profilePhoto: "", phoneVerified: false, phone: userData.phone, name: userData.name, @@ -263,11 +263,11 @@ export class AuthService { this.userPostData = postData; console.log(postData); this.afs - .collection('customers') + .collection("customers") .doc(custData.uid) .set(postData) .then(() => { - console.log('successs'); + console.log("successs"); }); this.loader = false; }) @@ -282,7 +282,7 @@ export class AuthService { console.log(this.userData.uid); this.loader = true; this.afs - .collection('address') + .collection("address") .add({ uid: this.userData.uid }) @@ -306,13 +306,13 @@ export class AuthService { const neworderId = docRef.id; console.log(addrData); this.afs - .collection('address') + .collection("address") .doc(neworderId) .set(addrData) .then(() => { - console.log('Address add Successfully'); - this.service.set('user', JSON.stringify(this.userData)); - this.router.navigateByUrl('home'); + console.log("Address add Successfully"); + this.service.set("user", JSON.stringify(this.userData)); + this.router.navigateByUrl("home"); document.body.scrollTop = document.documentElement.scrollTop = 0; }) .catch(err => { diff --git a/src/config/contact.service.ts b/src/config/contact.service.ts new file mode 100644 index 0000000..a777b11 --- /dev/null +++ b/src/config/contact.service.ts @@ -0,0 +1,51 @@ +import { Injectable } from '@angular/core'; +import { + AngularFirestore, + AngularFirestoreCollection +} from '@angular/fire/firestore'; +import { take } from 'rxjs/operators'; +import { ContactData } from './services/contact'; +import { ServiceService } from './service.service'; +import { Router, ActivatedRoute } from '@angular/router'; + +@Injectable({ + providedIn: 'root' +}) +export class ContactService { + loader: boolean; + constructor( + public afs: AngularFirestore, + private router: Router, + private service: ServiceService + ) { + this.loader = false; + } + + contactCreate(data: ContactData) { + this.loader = true; + this.afs + .collection('contacts') + .add({}) + .then(docRef => { + data.contactId = docRef.id; + this.afs + .collection('contacts') + .doc(data.contactId) + .set(data) + .then(() => { + this.service + .showToast('Thank you for your feedback!', 'top', 'my-toast', 500) + .then(() => { + this.loader = false; + console.log('redirected'); + setTimeout(() => { + this.router.navigateByUrl('home'); + }, 2100); + }) + .catch(err => { + this.loader = false; + }); + }); + }); + } +} diff --git a/src/config/services/contact.ts b/src/config/services/contact.ts new file mode 100644 index 0000000..60772c9 --- /dev/null +++ b/src/config/services/contact.ts @@ -0,0 +1,5 @@ +export interface ContactData { + from: string; + contactId: string; + message: string; +} -- libgit2 0.27.1