diff --git a/Mohem/src/app/hmg-common/ui/payment/payment.component.scss b/Mohem/SELF_SIGNED_CERT_IN_CHAIN similarity index 100% rename from Mohem/src/app/hmg-common/ui/payment/payment.component.scss rename to Mohem/SELF_SIGNED_CERT_IN_CHAIN diff --git a/Mohem/config.xml b/Mohem/config.xml index 8835a84b..82930842 100644 --- a/Mohem/config.xml +++ b/Mohem/config.xml @@ -1,8 +1,8 @@ - - MOHEMM + + Al Habib MOHEMM an app created by cloud Solutions - Cloud Solutions + HMG @@ -13,7 +13,6 @@ - @@ -82,17 +81,17 @@ + + + + - - - - @@ -105,6 +104,5 @@ - diff --git a/Mohem/google-services.json b/Mohem/google-services.json index 62fbaeae..4dfaa0d3 100644 --- a/Mohem/google-services.json +++ b/Mohem/google-services.json @@ -1,34 +1,34 @@ { "project_info": { - "project_number": "679409052782", - "firebase_url": "https://mohemm-dce93.firebaseio.com", - "project_id": "mohemm-dce93", - "storage_bucket": "mohemm-dce93.appspot.com" + "project_number": "448880075189", + "firebase_url": "https://al-habib-mohemm.firebaseio.com", + "project_id": "al-habib-mohemm", + "storage_bucket": "al-habib-mohemm.appspot.com" }, "client": [ { "client_info": { - "mobilesdk_app_id": "1:679409052782:android:dba155ac0859d7fea78a7f", + "mobilesdk_app_id": "1:448880075189:android:5bb4821d515a826d88b9fc", "android_client_info": { - "package_name": "hmg.cloudSolutions.mohem" + "package_name": "com.cloudsolutions.alhabibmohemm" } }, "oauth_client": [ { - "client_id": "679409052782-mtd6d8rjltucnm9uatn6g7et08sm6lbv.apps.googleusercontent.com", + "client_id": "448880075189-49hc2l78pr9hsmr9p3k7j411r40diej8.apps.googleusercontent.com", "client_type": 3 } ], "api_key": [ { - "current_key": "AIzaSyDgWjuSBIKGghWxYg_KGBRIZTi-O_UA8mU" + "current_key": "AIzaSyC8nrli7eyuRNow8nF-QHvDMOxqUkj6fEw" } ], "services": { "appinvite_service": { "other_platform_oauth_client": [ { - "client_id": "679409052782-mtd6d8rjltucnm9uatn6g7et08sm6lbv.apps.googleusercontent.com", + "client_id": "448880075189-49hc2l78pr9hsmr9p3k7j411r40diej8.apps.googleusercontent.com", "client_type": 3 } ] diff --git a/Mohem/package-lock.json b/Mohem/package-lock.json index 7eb9ad44..73fb0606 100644 --- a/Mohem/package-lock.json +++ b/Mohem/package-lock.json @@ -805,20 +805,19 @@ "@types/cordova": "^0.0.34" } }, - "@ionic-native/call-number": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ionic-native/call-number/-/call-number-5.8.0.tgz", - "integrity": "sha512-mAM83IAyawaEbYMZvE8NZnKBW3hu9q0V8+YnOlYy20flC4mnJZssuLUlonH5L5IWf3zY0FjsG/fx4SPVQ5Ac/A==", - "requires": { - "@types/cordova": "^0.0.34" - } - }, "@ionic-native/camera": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ionic-native/camera/-/camera-5.8.0.tgz", - "integrity": "sha512-DGSb1tHbzVblcoGlezSihvvlAPNcwZKiOEJVXZUUWoe5DY10KQrDfktGOR5qyvJx/HrtV1KnqULMhZnSDbWQjA==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@ionic-native/camera/-/camera-5.14.0.tgz", + "integrity": "sha512-BykX5nOtwA/D8jmMgbsAJz3Vw45Uw26XKQRNPAqsthcS+jxoSbFeEsdWbSZjiCFVX1M+d7irq7GCi3H9SJ2bAA==", "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": { @@ -846,11 +845,18 @@ } }, "@ionic-native/diagnostic": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ionic-native/diagnostic/-/diagnostic-5.8.0.tgz", - "integrity": "sha512-uSyaHlOD+bf/kDNkBMGASWdEC9EAYls/6BML5PhFxJpZb9nnS2Jj6igvMp1vBm0Skmwd6XEZ+6B1f4O3U7Rrbw==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@ionic-native/diagnostic/-/diagnostic-5.14.0.tgz", + "integrity": "sha512-hptAqkpfyORE3uJamItsBVBVdQwjU/4aO8JLtnueTadGSbPNQfYoXpYONZzz8/qOkrw+Uvqr6/e7Eu9Lsk0Iyg==", "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/fingerprint-aio": { @@ -916,14 +922,6 @@ "@types/cordova": "^0.0.34" } }, - "@ionic-native/local-notifications": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ionic-native/local-notifications/-/local-notifications-5.8.0.tgz", - "integrity": "sha512-g8Q9cgSp9zGuR3oZRejIQWmkeQD0jOB9dzGiLUiq4QKzWtIy8KyL0kGiRdCYdRwCpszPnitm64PNVvjKkGOWjg==", - "requires": { - "@types/cordova": "^0.0.34" - } - }, "@ionic-native/native-storage": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/@ionic-native/native-storage/-/native-storage-5.8.0.tgz", @@ -932,18 +930,10 @@ "@types/cordova": "^0.0.34" } }, - "@ionic-native/push": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ionic-native/push/-/push-5.8.0.tgz", - "integrity": "sha512-JLfw8fMzZIskKU3fG7UO4POQTNoIY2IfGKYV8Q+cf45LFg+tLJSlN14y0ZPr3bm7y9DacQtiKQsErpIZLT64yw==", - "requires": { - "@types/cordova": "^0.0.34" - } - }, - "@ionic-native/sms": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ionic-native/sms/-/sms-5.8.0.tgz", - "integrity": "sha512-4SRiwmOgTNU2BMhWt3kHXO5XBzeniP0ndyF45wViwrYfIU9Stp59YPjlSTwp1k9S9m7sou9Sm6D3B21UxVWDYQ==", + "@ionic-native/open-native-settings": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@ionic-native/open-native-settings/-/open-native-settings-5.14.0.tgz", + "integrity": "sha512-eXHQhAj6rgxMaeQPQT2Y2TD7q0KAVY9shuqvHzJGbQQhuY6rnVRFmckIwR6avrx7bbO8WMdH0ZgLPs9a5b3MHQ==", "requires": { "@types/cordova": "^0.0.34" }, @@ -955,6 +945,14 @@ } } }, + "@ionic-native/push": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ionic-native/push/-/push-5.8.0.tgz", + "integrity": "sha512-JLfw8fMzZIskKU3fG7UO4POQTNoIY2IfGKYV8Q+cf45LFg+tLJSlN14y0ZPr3bm7y9DacQtiKQsErpIZLT64yw==", + "requires": { + "@types/cordova": "^0.0.34" + } + }, "@ionic-native/splash-screen": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/@ionic-native/splash-screen/-/splash-screen-5.8.0.tgz", @@ -1545,6 +1543,14 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, + "android-versions": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/android-versions/-/android-versions-1.5.0.tgz", + "integrity": "sha512-/GWUAqa2OJNlDF5VGSe3SR1QMHEPXxx54Ur56r0qQC0H9FlBr7kyBF2SgVEhzFCPbrW4UcYgVuWrq/2Ty3QvXg==", + "requires": { + "semver": "^5.4.1" + } + }, "angular-calendar": { "version": "0.26.11", "resolved": "https://registry.npmjs.org/angular-calendar/-/angular-calendar-0.26.11.tgz", @@ -1579,6 +1585,11 @@ "resolved": "https://registry.npmjs.org/animation-frame-polyfill/-/animation-frame-polyfill-1.0.1.tgz", "integrity": "sha1-X1rZk6eHlL0Xas3lttzmKGdBDJ0=" }, + "ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=" + }, "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", @@ -1670,6 +1681,7 @@ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, + "optional": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -1726,6 +1738,11 @@ "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=" }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=" + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -2499,11 +2516,6 @@ "resolved": "https://registry.npmjs.org/calendar-utils/-/calendar-utils-0.2.3.tgz", "integrity": "sha512-wXxvJX/fdVZqrHeyxEWq5kbwALXrjifbY2L3fXvuS815cCwoWv+Uuiu0jkfqZNTtOSKaTXHdMkIhmLRqcC0E5g==" }, - "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", @@ -2553,9 +2565,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000989", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", - "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", + "version": "1.0.30000997", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000997.tgz", + "integrity": "sha512-BQLFPIdj2ntgBNWp9Q64LGUIEmvhKkzzHhUHR3CD5A9Lb7ZKF20/+sgadhFap69lk5XmK1fTUleDclaRFvgVUA==", "dev": true }, "canonical-path": { @@ -2861,8 +2873,7 @@ "colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, "combined-stream": { "version": "1.0.8", @@ -2884,6 +2895,15 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" + } + }, "compare-versions": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", @@ -2979,7 +2999,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true + "dev": true, + "optional": true }, "constants-browserify": { "version": "1.0.0", @@ -3060,230 +3081,47 @@ } }, "cordova-android": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-7.1.4.tgz", - "integrity": "sha512-Rtvu002I83uzfVyCsE6p2krFKVHt9TSAqZUATes+zH+o9cdxYGrLHY+PKCQo4SLCdSMdrkIHCDnQPTYTp/d7+g==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-8.1.0.tgz", + "integrity": "sha512-eAY6g9q3raJ4P03wNdSWC5MOW1EfxoomWNXsPhi7T6Q9yAqmxqn0sLEUjLL1Ib0LCH3nKQWBXdxapQ5LgbHu+g==", "requires": { - "abbrev": "*", - "android-versions": "1.4.0", - "ansi": "*", - "balanced-match": "*", - "base64-js": "1.2.0", - "big-integer": "1.6.32", - "bplist-parser": "*", - "brace-expansion": "*", - "concat-map": "*", - "cordova-common": "2.2.5", - "cordova-registry-mapper": "*", - "elementtree": "0.1.6", - "glob": "5.0.15", - "inflight": "*", - "inherits": "*", - "minimatch": "*", - "nopt": "3.0.1", - "once": "*", - "path-is-absolute": "1.0.1", - "plist": "2.1.0", - "properties-parser": "0.2.3", - "q": "1.4.1", - "sax": "0.3.5", - "semver": "5.5.0", - "shelljs": "0.5.3", - "underscore": "*", - "unorm": "*", - "wrappy": "*", - "xmlbuilder": "8.2.2", - "xmldom": "*" + "android-versions": "^1.4.0", + "compare-func": "^1.3.2", + "cordova-common": "^3.2.0", + "nopt": "^4.0.1", + "properties-parser": "^0.3.1", + "q": "^1.5.1", + "shelljs": "^0.5.3" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true - }, - "android-versions": { - "version": "1.4.0", - "bundled": true, - "requires": { - "semver": "^5.4.1" - } - }, - "ansi": { - "version": "0.3.1", - "bundled": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "base64-js": { - "version": "1.2.0", - "bundled": true - }, - "big-integer": { - "version": "1.6.32", - "bundled": true - }, - "bplist-parser": { - "version": "0.1.1", - "bundled": true, - "requires": { - "big-integer": "^1.6.7" - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "cordova-common": { - "version": "2.2.5", - "bundled": true, - "requires": { - "ansi": "^0.3.1", - "bplist-parser": "^0.1.0", - "cordova-registry-mapper": "^1.1.8", - "elementtree": "0.1.6", - "glob": "^5.0.13", - "minimatch": "^3.0.0", - "plist": "^2.1.0", - "q": "^1.4.1", - "shelljs": "^0.5.3", - "underscore": "^1.8.3", - "unorm": "^1.3.3" - } - }, - "cordova-registry-mapper": { - "version": "1.1.15", - "bundled": true - }, - "elementtree": { - "version": "0.1.6", - "bundled": true, - "requires": { - "sax": "0.3.5" - } - }, - "glob": { - "version": "5.0.15", - "bundled": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, "nopt": { - "version": "3.0.1", - "bundled": true, - "requires": { - "abbrev": "1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "plist": { - "version": "2.1.0", - "bundled": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { - "base64-js": "1.2.0", - "xmlbuilder": "8.2.2", - "xmldom": "0.1.x" + "abbrev": "1", + "osenv": "^0.1.4" } }, - "properties-parser": { - "version": "0.2.3", - "bundled": true - }, "q": { - "version": "1.4.1", - "bundled": true - }, - "sax": { - "version": "0.3.5", - "bundled": true - }, - "semver": { - "version": "5.5.0", - "bundled": true + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, "shelljs": { "version": "0.5.3", - "bundled": true - }, - "underscore": { - "version": "1.9.1", - "bundled": true - }, - "unorm": { - "version": "1.4.1", - "bundled": true - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "xmlbuilder": { - "version": "8.2.2", - "bundled": true - }, - "xmldom": { - "version": "0.1.27", - "bundled": true + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", + "integrity": "sha1-xUmCuZbHbvDB5rWfvcWCX1txMRM=" } } }, "cordova-android-support-gradle-release": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cordova-android-support-gradle-release/-/cordova-android-support-gradle-release-2.1.0.tgz", - "integrity": "sha512-rKqNQ5PCHuZ/qUWYrLz5dKJpdJ/ArkhTCEv4CxbFuny0a0JNg5lwufmZ7qfVIqxoK0Nvs9XsIYKiFSGxaQ8lTg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cordova-android-support-gradle-release/-/cordova-android-support-gradle-release-3.0.1.tgz", + "integrity": "sha512-RSW55DkSckmqhX/kjj+a1YeVdy7s/AtlZn6Qa5XMQmmA4Iogq+IF2jvInZqzCF19DbI5YE95AP7VDbRk+DdDRw==", "requires": { "q": "^1.4.1", - "semver": "5.1.0", - "xml2js": "~0.4.19" - }, - "dependencies": { - "semver": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", - "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=" - } + "semver": "5.6.0" } }, "cordova-browser": { @@ -4031,6 +3869,60 @@ } } }, + "cordova-common": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-3.2.0.tgz", + "integrity": "sha512-EvlQ6PirfR65hGDoQvsluW00uSS2MTVIRKQ3c1Xvsddx7D5T5JgF3fHWkGik/Y/8yNcpI0zI2NcJyie2z/ak2A==", + "requires": { + "ansi": "^0.3.1", + "bplist-parser": "^0.1.0", + "cross-spawn": "^6.0.5", + "elementtree": "0.1.7", + "endent": "^1.1.1", + "fs-extra": "^8.0.0", + "glob": "^7.1.2", + "minimatch": "^3.0.0", + "plist": "^3.0.1", + "q": "^1.4.1", + "strip-bom": "^3.0.0", + "underscore": "^1.8.3", + "which": "^1.3.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==" + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } + } + }, "cordova-ios": { "version": "4.5.5", "resolved": "https://registry.npmjs.org/cordova-ios/-/cordova-ios-4.5.5.tgz", @@ -4325,6 +4217,11 @@ } } }, + "cordova-open-native-settings": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/cordova-open-native-settings/-/cordova-open-native-settings-1.5.2.tgz", + "integrity": "sha512-UvcTZAH3/r3U/jred2bOqoYIXUo5Gmq0in6fgkqvwgRCcOSQtQJWnUqg4i0RlHkEd1zKDi61JdpeSyJT+K8ZRQ==" + }, "cordova-plugin-add-swift-support": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/cordova-plugin-add-swift-support/-/cordova-plugin-add-swift-support-2.0.2.tgz", @@ -4347,10 +4244,10 @@ "resolved": "https://registry.npmjs.org/cordova-plugin-android-permissions/-/cordova-plugin-android-permissions-1.0.0.tgz", "integrity": "sha1-nnwRa+Zo6336QUkbE9jUfalUgUk=" }, - "cordova-plugin-badge": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/cordova-plugin-badge/-/cordova-plugin-badge-0.8.8.tgz", - "integrity": "sha512-RhIBtd5xhD/iLnxjt35jvOae28oNW/wtMZBOmQR3Rf0y4wirvA1bpAZEhBoFqL+rZGhsd6ddOdQXdex1T0DRyQ==" + "cordova-plugin-camera": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cordova-plugin-camera/-/cordova-plugin-camera-4.1.0.tgz", + "integrity": "sha512-fCLhWjWYn49q3X5xaypAPgTz6MAWSKFFQvD2Gpi5SuVlrRPRphtX2jIqR2zCBuDTBR082QVnlc+yUDXt65Mjgw==" }, "cordova-plugin-datepicker": { "version": "0.9.3", @@ -4382,21 +4279,11 @@ "resolved": "https://registry.npmjs.org/cordova-plugin-ionic-webview/-/cordova-plugin-ionic-webview-4.1.0.tgz", "integrity": "sha512-aY1yI042TMgyDoh07rUSxSedlTwQfrvS44UnpakmCqmA/BapjSv88ixa5qUun95vwsYdTERX2VJp6h/YrR1lFQ==" }, - "cordova-plugin-local-notification": { - "version": "0.9.0-beta.2", - "resolved": "https://registry.npmjs.org/cordova-plugin-local-notification/-/cordova-plugin-local-notification-0.9.0-beta.2.tgz", - "integrity": "sha512-63n77K1pt8dnbWnNR8QWETi9Glezi1bvNHvHWmGNIOv0xCb0phZnm+Ku49BQ+omwe8Z5voMvrA4I03SYPpv38w==" - }, "cordova-plugin-nativestorage": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/cordova-plugin-nativestorage/-/cordova-plugin-nativestorage-2.3.2.tgz", "integrity": "sha512-olg/BzYRk0NGbKQ5f7rf21RYQEyJI19CCZn6RpVMO9/kbRRFqae/6ixjDNy81dXSu2TQ42brjBddGe1Qpn5ViA==" }, - "cordova-plugin-sms-receive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cordova-plugin-sms-receive/-/cordova-plugin-sms-receive-1.0.2.tgz", - "integrity": "sha512-y2QMX709RgrbCHVDHAewjvXi50h+u+VcuCQADPJS+tH/BosFie+x1vo5mMwysuIEiaQ25b0qhIzo63RCyT5Fyw==" - }, "cordova-plugin-splashscreen": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/cordova-plugin-splashscreen/-/cordova-plugin-splashscreen-5.0.3.tgz", @@ -4412,16 +4299,21 @@ "resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.4.tgz", "integrity": "sha512-EYC5eQFVkoYXq39l7tYKE6lEjHJ04mvTmKXxGL7quHLdFPfJMNzru/UYpn92AOfpl3PQaZmou78C7EgmFOwFQQ==" }, - "cordova-sms-plugin": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cordova-sms-plugin/-/cordova-sms-plugin-1.0.0.tgz", - "integrity": "sha512-DdRf1zdJkwC9BJ3fVg2yx/faoW5eOscg6oFIWODfOIBu5AQ1oV6+gsGTO5pHVLBzlt5V8U9zG9PwhR1IbnW/EQ==" - }, "cordova-support-google-services": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/cordova-support-google-services/-/cordova-support-google-services-1.1.0.tgz", "integrity": "sha1-RjTFIgD4cGDReV6yhw6ZRC12Lm0=" }, + "cordova.plugins.diagnostic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/cordova.plugins.diagnostic/-/cordova.plugins.diagnostic-5.0.1.tgz", + "integrity": "sha512-nuHDm0EQZcoz1DIFLG7/cdxhFL2LHVi9hWZ+gLNO5GsMSvjMh1PRGuoBjOjvBjsqTFlYbWEetu1/tgZ/29qbfg==", + "requires": { + "colors": "^1.1.2", + "elementtree": "^0.1.6", + "minimist": "1.2.0" + } + }, "core-js": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", @@ -4975,6 +4867,11 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" + }, "deep-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz", @@ -5003,7 +4900,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -5049,6 +4945,11 @@ } } }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, "del": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", @@ -5096,7 +4997,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true + "dev": true, + "optional": true }, "depd": { "version": "1.1.2", @@ -5252,6 +5154,14 @@ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "requires": { + "is-obj": "^1.0.0" + } + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -5280,15 +5190,30 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.250", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.250.tgz", - "integrity": "sha512-2OAU91iUw83QvzuWJPfT+FMj+O+DC1EyTx1QBFcc9WZzOQSfZEAWINpdLWElxkgfiqTvQRDOKg0DkMZd9QoNug==", + "version": "1.3.269", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.269.tgz", + "integrity": "sha512-t2ZTfo07HxkxTOUbIwMmqHBSnJsC9heqJUm7LwQu2iSk0wNhG4H5cMREtb8XxeCrQABDZ6IqQKY3yZq+NfAqwg==", "dev": true }, + "elementtree": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", + "integrity": "sha1-mskb5uUvtuYkTE5UpKw+2K6OKcA=", + "requires": { + "sax": "1.1.4" + }, + "dependencies": { + "sax": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", + "integrity": "sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk=" + } + } + }, "elliptic": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", - "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", + "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -5328,6 +5253,16 @@ "once": "^1.4.0" } }, + "endent": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/endent/-/endent-1.3.0.tgz", + "integrity": "sha512-C8AryqPPwtydqcpO5AF6k9Bd1EpFkQtvsefJqS3y3n8TG13Jy63MascDxTOULZYqrUde+dK6BjNc6LIMr3iI2A==", + "requires": { + "dedent": "^0.7.0", + "fast-json-parse": "^1.0.3", + "objectorarray": "^1.0.3" + } + }, "engine.io": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", @@ -5471,6 +5406,33 @@ "is-arrayish": "^0.2.1" } }, + "es-abstract": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz", + "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==", + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.0.0", + "string.prototype.trimright": "^2.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -5813,6 +5775,11 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, + "fast-json-parse": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", + "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==" + }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -5967,6 +5934,14 @@ } } }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -6103,7 +6078,8 @@ "version": "2.1.1", "resolved": false, "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -6127,13 +6103,15 @@ "version": "1.0.0", "resolved": false, "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "resolved": false, "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6150,19 +6128,22 @@ "version": "1.1.0", "resolved": false, "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "resolved": false, "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "resolved": false, "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -6293,7 +6274,8 @@ "version": "2.0.3", "resolved": false, "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -6307,6 +6289,7 @@ "resolved": false, "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6323,6 +6306,7 @@ "resolved": false, "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -6331,13 +6315,15 @@ "version": "0.0.8", "resolved": false, "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "resolved": false, "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -6358,6 +6344,7 @@ "resolved": false, "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -6446,7 +6433,8 @@ "version": "1.0.1", "resolved": false, "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -6460,6 +6448,7 @@ "resolved": false, "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -6555,7 +6544,8 @@ "version": "5.1.2", "resolved": false, "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -6597,6 +6587,7 @@ "resolved": false, "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6618,6 +6609,7 @@ "resolved": false, "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6666,13 +6658,15 @@ "version": "1.0.2", "resolved": false, "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "resolved": false, "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true + "dev": true, + "optional": true } } }, @@ -6681,6 +6675,7 @@ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.2", "inherits": "~2.0.0", @@ -6691,14 +6686,14 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, + "optional": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -6736,7 +6731,8 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true + "dev": true, + "optional": true }, "get-stream": { "version": "3.0.0", @@ -6828,8 +6824,7 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" }, "handle-thing": { "version": "2.0.0", @@ -6838,9 +6833,9 @@ "dev": true }, "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.0.tgz", + "integrity": "sha512-xkRtOt3/3DzTKMOt3xahj2M/EqNhY988T+imYSlMgs5fVhLN2fmKVVj0LtEGmb+3UUYV5Qmm1052Mm3dIQxOvw==", "dev": true, "requires": { "neo-async": "^2.6.0", @@ -6877,7 +6872,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -6920,11 +6914,17 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true + "dev": true, + "optional": true }, "has-value": { "version": "1.0.0", @@ -7525,6 +7525,11 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -7548,8 +7553,7 @@ "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" }, "is-descriptor": { "version": "0.1.6", @@ -7635,6 +7639,11 @@ } } }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -7678,7 +7687,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, "requires": { "has": "^1.0.1" } @@ -7689,6 +7697,14 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "requires": { + "has-symbols": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -7699,7 +7715,8 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true + "dev": true, + "optional": true }, "is-windows": { "version": "1.0.2", @@ -7736,8 +7753,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { "version": "3.0.1", @@ -8120,7 +8136,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -8335,6 +8350,7 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -8347,7 +8363,8 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "dev": true, + "optional": true } } }, @@ -8431,9 +8448,9 @@ } }, "loglevel": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.3.tgz", - "integrity": "sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.4.tgz", + "integrity": "sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g==", "dev": true }, "loose-envify": { @@ -8620,7 +8637,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true + "dev": true, + "optional": true }, "map-visit": { "version": "1.0.0", @@ -9038,11 +9056,6 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, - "mx.ferreyra.callnumber": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/mx.ferreyra.callnumber/-/mx.ferreyra.callnumber-0.0.2.tgz", - "integrity": "sha512-J9FJiMrfWG9Q8AQEz/cgYLcXTTD/Z5+vfq29hn8K7yVWjxkSzr7zFi7Dpn8wcv2iKHBHDJY+U0z8yoAzDugXMw==" - }, "nan": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", @@ -9099,8 +9112,7 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "node-ensure": { "version": "0.0.0", @@ -9119,9 +9131,9 @@ } }, "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.2.tgz", + "integrity": "sha512-mXQ9GBq1N3uDCyV1pdSzgIguwgtVpM7f5/5J4ipz12PKWElmPpVWLDuWl8iXmhysr21+WmX/OJ5UKx82wjomgg==", "dev": true }, "node-gyp": { @@ -9194,9 +9206,9 @@ } }, "node-releases": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.29.tgz", - "integrity": "sha512-R5bDhzh6I+tpi/9i2hrrvGJ3yKPYzlVOORDkXhnZuwi5D3q1I5w4vYy24PJXTcLk9Q0kws9TO77T75bcK8/ysQ==", + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.33.tgz", + "integrity": "sha512-I0V30bWQEoHb+10W8oedVoUrdjW5wIkYm0w7vvcrPO95pZY738m1k77GF5sO0vKg5eXYg9oGtrMAETbgZGm11A==", "dev": true, "requires": { "semver": "^5.3.0" @@ -9362,6 +9374,7 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, + "optional": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -9436,6 +9449,11 @@ } } }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" + }, "object-is": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", @@ -9445,8 +9463,7 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object-visit": { "version": "1.0.1", @@ -9466,6 +9483,14 @@ "isobject": "^3.0.1" } }, + "objectorarray": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.3.tgz", + "integrity": "sha512-kPoflSYkAf/Onvjr4ZLaq37vDuOXjVzfwLCRuORRzYGdXkHa/vacPT0RgR+KmtkwOYFcxTMM62BRrZk8GGKHjw==", + "requires": { + "tape": "^4.8.0" + } + }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -9806,9 +9831,9 @@ } }, "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "dev": true, "requires": { "asn1.js": "^4.0.0", @@ -9895,8 +9920,7 @@ "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, "path-parse": { "version": "1.0.6", @@ -10017,9 +10041,9 @@ } }, "portfinder": { - "version": "1.0.23", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.23.tgz", - "integrity": "sha512-B729mL/uLklxtxuiJKfQ84WPxNw5a7Yhx3geQZdcA4GjNjZSTSSMMWyoennMVnTWSmAR0lMdzWYN0JLnHrg1KQ==", + "version": "1.0.24", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.24.tgz", + "integrity": "sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg==", "dev": true, "requires": { "async": "^1.5.2", @@ -10158,6 +10182,14 @@ "retry": "^0.10.0" } }, + "properties-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.3.1.tgz", + "integrity": "sha1-ExbpU5/7/ZOEXjabIRAiq9R4dxo=", + "requires": { + "string.prototype.codepointat": "^0.2.0" + } + }, "protoduck": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", @@ -10466,6 +10498,7 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, + "optional": true, "requires": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", @@ -10477,6 +10510,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", @@ -10487,7 +10521,8 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "dev": true, + "optional": true } } }, @@ -10496,6 +10531,7 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, + "optional": true, "requires": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" @@ -10506,6 +10542,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, + "optional": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" @@ -10516,6 +10553,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, + "optional": true, "requires": { "pinkie-promise": "^2.0.0" } @@ -10771,6 +10809,14 @@ "signal-exit": "^3.0.2" } }, + "resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "requires": { + "through": "~2.3.4" + } + }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -10981,12 +11027,12 @@ } }, "selfsigned": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", - "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.6.tgz", + "integrity": "sha512-i3+CeqxL7DpAazgVpAGdKMwHuL63B5nhJMh9NQ7xmChGkA3jNFflq6Jyo1LLJYcr3idWiNOPWHCrm4zMayLG4w==", "dev": true, "requires": { - "node-forge": "0.7.5" + "node-forge": "0.8.2" } }, "semver": { @@ -11042,9 +11088,9 @@ } }, "serialize-javascript": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.0.tgz", - "integrity": "sha512-UkGlcYMtw4d9w7YfCtJFgdRTps8N4L0A48R+SmcGL57ki1+yHwJXnalk5bjgrw+ljv6SfzjzPjhohod2qllg/Q==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", "dev": true }, "serve-index": { @@ -11180,7 +11226,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -11188,8 +11233,7 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shelljs": { "version": "0.8.3", @@ -11903,6 +11947,39 @@ "strip-ansi": "^3.0.0" } }, + "string.prototype.codepointat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" + }, + "string.prototype.trim": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", + "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.0", + "function-bind": "^1.0.2" + } + }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -11926,6 +12003,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, + "optional": true, "requires": { "is-utf8": "^0.2.0" } @@ -12027,6 +12105,54 @@ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, + "tape": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/tape/-/tape-4.11.0.tgz", + "integrity": "sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA==", + "requires": { + "deep-equal": "~1.0.1", + "defined": "~1.0.0", + "for-each": "~0.3.3", + "function-bind": "~1.1.1", + "glob": "~7.1.4", + "has": "~1.0.3", + "inherits": "~2.0.4", + "minimist": "~1.2.0", + "object-inspect": "~1.6.0", + "resolve": "~1.11.1", + "resumer": "~0.0.0", + "string.prototype.trim": "~1.1.2", + "through": "~2.3.8" + }, + "dependencies": { + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "resolve": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, "tar": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", @@ -12242,9 +12368,9 @@ } }, "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.0.tgz", + "integrity": "sha512-6gpP93MR+VOOehKbCPchro3wFZNSNmek8A2kbkOAZLIZAYx1KP/zAqwO0sOHi3xJEb+UBz8NaYt/17UNit1Q9w==", "dev": true } } @@ -12252,8 +12378,7 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { "version": "2.0.5", @@ -12519,6 +12644,11 @@ "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", "dev": true }, + "underscore": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -12552,8 +12682,7 @@ "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, "unpipe": { "version": "1.0.0", @@ -13242,7 +13371,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "requires": { "isexe": "^2.0.0" } @@ -13259,6 +13387,7 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, + "optional": true, "requires": { "string-width": "^1.0.2 || 2" } @@ -13346,6 +13475,7 @@ "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, "requires": { "sax": ">=0.6.0", "xmlbuilder": "~9.0.1" @@ -13354,7 +13484,8 @@ "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true } } }, diff --git a/Mohem/package.json b/Mohem/package.json index af2302f4..3025b3b2 100755 --- a/Mohem/package.json +++ b/Mohem/package.json @@ -28,12 +28,11 @@ "@ionic-native/badge": "^5.8.0", "@ionic-native/barcode-scanner": "^5.14.0", "@ionic-native/ble": "^5.8.0", - "@ionic-native/call-number": "^5.8.0", - "@ionic-native/camera": "^5.8.0", + "@ionic-native/camera": "^5.14.0", "@ionic-native/core": "^5.8.0", "@ionic-native/date-picker": "^5.10.0", "@ionic-native/device": "^5.8.0", - "@ionic-native/diagnostic": "^5.8.0", + "@ionic-native/diagnostic": "^5.14.0", "@ionic-native/fingerprint-aio": "^5.8.0", "@ionic-native/geolocation": "^5.10.0", "@ionic-native/globalization": "^5.8.0", @@ -41,10 +40,9 @@ "@ionic-native/in-app-browser": "^5.8.0", "@ionic-native/keyboard": "^5.8.0", "@ionic-native/launch-navigator": "^5.8.0", - "@ionic-native/local-notifications": "^5.8.0", "@ionic-native/native-storage": "^5.8.0", + "@ionic-native/open-native-settings": "^5.14.0", "@ionic-native/push": "^5.8.0", - "@ionic-native/sms": "^5.8.0", "@ionic-native/splash-screen": "^5.0.0", "@ionic-native/sqlite": "^5.8.0", "@ionic-native/status-bar": "^5.0.0", @@ -55,32 +53,29 @@ "@swimlane/ngx-charts": "^10.1.0", "angular-calendar": "^0.26.11", "app": "0.1.0", - "call-number": "^1.0.1", "chart.js": "^2.8.0", - "cordova-android": "7.1.4", - "cordova-android-support-gradle-release": "^2.1.0", + "cordova-android": "8.1.0", + "cordova-android-support-gradle-release": "^3.0.1", "cordova-browser": "5.0.4", "cordova-ios": "4.5.5", + "cordova-open-native-settings": "^1.5.2", "cordova-plugin-add-swift-support": "^2.0.2", "cordova-plugin-android-permissions": "^1.0.0", - "cordova-plugin-badge": "^0.8.8", + "cordova-plugin-camera": "^4.1.0", "cordova-plugin-datepicker": "^0.9.3", "cordova-plugin-device": "^2.0.3", "cordova-plugin-geolocation": "^4.0.2", "cordova-plugin-globalization": "^1.11.0", "cordova-plugin-ionic-keyboard": "^2.1.3", "cordova-plugin-ionic-webview": "4.1.0", - "cordova-plugin-local-notification": "^0.9.0-beta.2", "cordova-plugin-nativestorage": "^2.3.2", - "cordova-plugin-sms-receive": "^1.0.2", "cordova-plugin-splashscreen": "^5.0.3", "cordova-plugin-statusbar": "^2.4.3", "cordova-plugin-whitelist": "^1.3.4", - "cordova-sms-plugin": "^1.0.0", "cordova-support-google-services": "^1.1.0", + "cordova.plugins.diagnostic": "^5.0.1", "core-js": "^2.5.4", "date-fns": "^1.30.1", - "mx.ferreyra.callnumber": "0.0.2", "ng2-file-upload": "^1.3.0", "ng2-pdf-viewer": "^5.3.2", "phonegap-plugin-barcodescanner": "8.1.0", @@ -128,16 +123,9 @@ "cordova-plugin-nativestorage": {}, "cordova-plugin-globalization": {}, "cordova-plugin-android-permissions": {}, - "cordova-plugin-sms-receive": {}, - "cordova-plugin-local-notification": {}, "mx.ferreyra.callnumber": {}, "cordova-plugin-badge": {}, "cordova-plugin-ionic-keyboard": {}, - "cordova-android-support-gradle-release": { - "ANDROID_SUPPORT_VERSION": "27.+" - }, - "call-number": {}, - "cordova-sms-plugin": {}, "cordova-plugin-datepicker": {}, "cordova-plugin-geolocation": {}, "phonegap-plugin-barcodescanner": { @@ -145,12 +133,22 @@ }, "cordova-plugin-ionic-webview": { "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+" + }, + "cordova-android-support-gradle-release": { + "ANDROID_SUPPORT_VERSION": "27.+" + }, + "cordova.plugins.diagnostic": { + "ANDROID_SUPPORT_VERSION": "28.+" + }, + "cordova-open-native-settings": {}, + "cordova-plugin-camera": { + "ANDROID_SUPPORT_V4_VERSION": "27.+" } }, "platforms": [ "browser", - "android", - "ios" + "ios", + "android" ] } } \ No newline at end of file diff --git a/Mohem/resources/android/icon/drawable-hdpi-icon.png b/Mohem/resources/android/icon/drawable-hdpi-icon.png index 0d4559b9..b0adb5d6 100644 Binary files a/Mohem/resources/android/icon/drawable-hdpi-icon.png and b/Mohem/resources/android/icon/drawable-hdpi-icon.png differ diff --git a/Mohem/resources/android/icon/drawable-ldpi-icon.png b/Mohem/resources/android/icon/drawable-ldpi-icon.png index e05b379e..3783ccb3 100644 Binary files a/Mohem/resources/android/icon/drawable-ldpi-icon.png and b/Mohem/resources/android/icon/drawable-ldpi-icon.png differ diff --git a/Mohem/resources/android/icon/drawable-mdpi-icon.png b/Mohem/resources/android/icon/drawable-mdpi-icon.png index 12217ffd..76948ef6 100644 Binary files a/Mohem/resources/android/icon/drawable-mdpi-icon.png and b/Mohem/resources/android/icon/drawable-mdpi-icon.png differ diff --git a/Mohem/resources/android/icon/drawable-xhdpi-icon.png b/Mohem/resources/android/icon/drawable-xhdpi-icon.png index b99acf02..a7ce9721 100644 Binary files a/Mohem/resources/android/icon/drawable-xhdpi-icon.png and b/Mohem/resources/android/icon/drawable-xhdpi-icon.png differ diff --git a/Mohem/resources/android/icon/drawable-xxhdpi-icon.png b/Mohem/resources/android/icon/drawable-xxhdpi-icon.png index e408218b..61df3ab9 100644 Binary files a/Mohem/resources/android/icon/drawable-xxhdpi-icon.png and b/Mohem/resources/android/icon/drawable-xxhdpi-icon.png differ diff --git a/Mohem/resources/android/icon/drawable-xxxhdpi-icon.png b/Mohem/resources/android/icon/drawable-xxxhdpi-icon.png index d3e40c78..7a8f1c13 100644 Binary files a/Mohem/resources/android/icon/drawable-xxxhdpi-icon.png and b/Mohem/resources/android/icon/drawable-xxxhdpi-icon.png differ diff --git a/Mohem/resources/android/splash/drawable-land-hdpi-screen.png b/Mohem/resources/android/splash/drawable-land-hdpi-screen.png index 049727c9..7d78415f 100644 Binary files a/Mohem/resources/android/splash/drawable-land-hdpi-screen.png and b/Mohem/resources/android/splash/drawable-land-hdpi-screen.png differ diff --git a/Mohem/resources/android/splash/drawable-land-ldpi-screen.png b/Mohem/resources/android/splash/drawable-land-ldpi-screen.png index ddf677d7..a2bc0538 100644 Binary files a/Mohem/resources/android/splash/drawable-land-ldpi-screen.png and b/Mohem/resources/android/splash/drawable-land-ldpi-screen.png differ diff --git a/Mohem/resources/android/splash/drawable-land-mdpi-screen.png b/Mohem/resources/android/splash/drawable-land-mdpi-screen.png index e5edf975..9f218abd 100644 Binary files a/Mohem/resources/android/splash/drawable-land-mdpi-screen.png and b/Mohem/resources/android/splash/drawable-land-mdpi-screen.png differ diff --git a/Mohem/resources/android/splash/drawable-land-xhdpi-screen.png b/Mohem/resources/android/splash/drawable-land-xhdpi-screen.png index 6f264e22..d200d129 100644 Binary files a/Mohem/resources/android/splash/drawable-land-xhdpi-screen.png and b/Mohem/resources/android/splash/drawable-land-xhdpi-screen.png differ diff --git a/Mohem/resources/android/splash/drawable-land-xxhdpi-screen.png b/Mohem/resources/android/splash/drawable-land-xxhdpi-screen.png index 6d3fda04..b81de763 100644 Binary files a/Mohem/resources/android/splash/drawable-land-xxhdpi-screen.png and b/Mohem/resources/android/splash/drawable-land-xxhdpi-screen.png differ diff --git a/Mohem/resources/android/splash/drawable-land-xxxhdpi-screen.png b/Mohem/resources/android/splash/drawable-land-xxxhdpi-screen.png index 3497cec0..bfc93bf6 100644 Binary files a/Mohem/resources/android/splash/drawable-land-xxxhdpi-screen.png and b/Mohem/resources/android/splash/drawable-land-xxxhdpi-screen.png differ diff --git a/Mohem/resources/android/splash/drawable-port-hdpi-screen.png b/Mohem/resources/android/splash/drawable-port-hdpi-screen.png index 5f192c2a..9c844ff4 100644 Binary files a/Mohem/resources/android/splash/drawable-port-hdpi-screen.png and b/Mohem/resources/android/splash/drawable-port-hdpi-screen.png differ diff --git a/Mohem/resources/android/splash/drawable-port-ldpi-screen.png b/Mohem/resources/android/splash/drawable-port-ldpi-screen.png index 5c239726..7b7e9d47 100644 Binary files a/Mohem/resources/android/splash/drawable-port-ldpi-screen.png and b/Mohem/resources/android/splash/drawable-port-ldpi-screen.png differ diff --git a/Mohem/resources/android/splash/drawable-port-mdpi-screen.png b/Mohem/resources/android/splash/drawable-port-mdpi-screen.png index 2a6d9a25..5114be78 100644 Binary files a/Mohem/resources/android/splash/drawable-port-mdpi-screen.png and b/Mohem/resources/android/splash/drawable-port-mdpi-screen.png differ diff --git a/Mohem/resources/android/splash/drawable-port-xhdpi-screen.png b/Mohem/resources/android/splash/drawable-port-xhdpi-screen.png index 658e946b..5c43ccdc 100644 Binary files a/Mohem/resources/android/splash/drawable-port-xhdpi-screen.png and b/Mohem/resources/android/splash/drawable-port-xhdpi-screen.png differ diff --git a/Mohem/resources/android/splash/drawable-port-xxhdpi-screen.png b/Mohem/resources/android/splash/drawable-port-xxhdpi-screen.png index 42492889..e12a1ca8 100644 Binary files a/Mohem/resources/android/splash/drawable-port-xxhdpi-screen.png and b/Mohem/resources/android/splash/drawable-port-xxhdpi-screen.png differ diff --git a/Mohem/resources/android/splash/drawable-port-xxxhdpi-screen.png b/Mohem/resources/android/splash/drawable-port-xxxhdpi-screen.png index 6722931b..b8770919 100644 Binary files a/Mohem/resources/android/splash/drawable-port-xxxhdpi-screen.png and b/Mohem/resources/android/splash/drawable-port-xxxhdpi-screen.png differ diff --git a/Mohem/resources/icon.png b/Mohem/resources/icon.png index 06dc8293..afe9bb8b 100755 Binary files a/Mohem/resources/icon.png and b/Mohem/resources/icon.png differ diff --git a/Mohem/resources/splash.png b/Mohem/resources/splash.png index b3611afe..121950ff 100755 Binary files a/Mohem/resources/splash.png and b/Mohem/resources/splash.png differ diff --git a/Mohem/src/app/authentication/agreement/agreement.component.html b/Mohem/src/app/authentication/agreement/agreement.component.html deleted file mode 100644 index 03b2a285..00000000 --- a/Mohem/src/app/authentication/agreement/agreement.component.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - {{ 'general,usage-agreement' | translate}} - - - - - - - - -
-
-
-
- -
-
- - - - {{ 'general,accept' | translate}} - - - -
-
\ No newline at end of file diff --git a/Mohem/src/app/authentication/agreement/agreement.component.scss b/Mohem/src/app/authentication/agreement/agreement.component.scss deleted file mode 100644 index 389579c4..00000000 --- a/Mohem/src/app/authentication/agreement/agreement.component.scss +++ /dev/null @@ -1,9 +0,0 @@ -.agreement_area{ - width: 100%; - height: 80%; -} - -.html-container { - width: 96%; - padding: 2%; -} \ No newline at end of file diff --git a/Mohem/src/app/authentication/agreement/agreement.component.spec.ts b/Mohem/src/app/authentication/agreement/agreement.component.spec.ts deleted file mode 100644 index ba35ec0e..00000000 --- a/Mohem/src/app/authentication/agreement/agreement.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { AgreementComponent } from './agreement.component'; - -describe('AgreementComponent', () => { - let component: AgreementComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ AgreementComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(AgreementComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/Mohem/src/app/authentication/agreement/agreement.component.ts b/Mohem/src/app/authentication/agreement/agreement.component.ts deleted file mode 100644 index 57d0c0d7..00000000 --- a/Mohem/src/app/authentication/agreement/agreement.component.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; -import { CommonService } from 'src/app/hmg-common/services/common/common.service'; -import { AgreementService } from './service/agreement.service'; -import { CheckUserAgreementResponse } from './service/models/check-user-agreement.response'; -import { GetUserAgreementResponse } from './service/models/get-user-agreement.response'; -import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service'; - -@Component({ - selector: 'app-agreement', - templateUrl: './agreement.component.html', - styleUrls: ['./agreement.component.scss'] -}) -export class AgreementComponent implements OnInit { - - public agreementContent: string; - constructor( - public ts: TranslatorService, - public cs: CommonService, - public agreementService: AgreementService, - public auth: AuthenticationService - - ) { } - - ngOnInit() { - this.checkUserAgreement(); - } - - checkUserAgreement() { - this.agreementService.checkUserAgreement( - () => { - this.checkUserAgreement(); - }, this.ts.trPK('general', 'retry')).subscribe((result: CheckUserAgreementResponse) => { - if (this.cs.validResponse(result)) { - if (result.IsPatientAlreadyAgreed) { - // this.auth.setUserAgreed(true); - this.cs.openHome(); - } else { - this.getUserAgreement(); - } - } - }); - } - - private getUserAgreement() { - this.agreementService.getAgreement( - () => { - this.getUserAgreement(); - }, this.ts.trPK('general', 'retry')).subscribe((result: GetUserAgreementResponse) => { - if (this.cs.validResponse(result)) { - this.agreementContent = result.UserAgreementContent; - } - }); - } - - public onAcceptClicked() { - this.agreementService.addUserAgreement( - () => { - this.onAcceptClicked(); - }, this.ts.trPK('general', 'retry')).subscribe((result: GetUserAgreementResponse) => { - if (this.cs.validResponse(result)) { - //this.auth.setUserAgreed(true); - this.cs.openHome(); - } - }); - } - - public onRejectClicked() { - this.auth.clearUser().subscribe(success => { - this.cs.openHome(); - }); - } - - - -} diff --git a/Mohem/src/app/authentication/agreement/service/agreement.service.spec.ts b/Mohem/src/app/authentication/agreement/service/agreement.service.spec.ts deleted file mode 100644 index 40cca2a5..00000000 --- a/Mohem/src/app/authentication/agreement/service/agreement.service.spec.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { AgreementService } from './agreement.service'; - -describe('AgreementService', () => { - beforeEach(() => TestBed.configureTestingModule({})); - - it('should be created', () => { - const service: AgreementService = TestBed.get(AgreementService); - expect(service).toBeTruthy(); - }); -}); diff --git a/Mohem/src/app/authentication/agreement/service/agreement.service.ts b/Mohem/src/app/authentication/agreement/service/agreement.service.ts deleted file mode 100644 index b0a61f25..00000000 --- a/Mohem/src/app/authentication/agreement/service/agreement.service.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Injectable } from '@angular/core'; -import { ConnectorService } from 'src/app/hmg-common/services/connector/connector.service'; -import { CheckUserAgreementRequest } from './models/check-user-agreement.request'; -import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service'; -import { Observable } from 'rxjs'; -import { CheckUserAgreementResponse } from './models/check-user-agreement.response'; -import { Request } from 'src/app/hmg-common/services/models/request'; -import { GetUserAgreementResponse } from './models/get-user-agreement.response'; -import { AddUserAgreementRequest } from './models/add-user-agreement.request'; - -@Injectable({ - providedIn: 'root' -}) -export class AgreementService { - - public static checkAgreementURL = 'Services/Patients.svc/REST/CheckForUsageAgreement'; - public static getAgreementURL = 'Services/Patients.svc/REST/GetUsageAgreementText'; - public static addAgreementURL = 'Services/Patients.svc/REST/AddUsageAgreement'; - - - constructor( - public con: ConnectorService, - public auth: AuthenticationService - ) { - - } - - - public checkUserAgreement(onError: any, errorLabel: string): Observable { - const request = new CheckUserAgreementRequest(); - request.Region = 1; - this.auth.authenticateRequest(request); - request.TokenID = ''; - return this.con.post(AgreementService.checkAgreementURL, request, onError, errorLabel); - - } - - public getAgreement(onError: any, errorLabel: string): Observable { - const request = new Request(); - this.auth.setPublicFields(request); - request.TokenID = ''; - return this.con.post(AgreementService.getAgreementURL, request, onError, errorLabel); - } - - public addUserAgreement(onError: any, errorLabel: string): Observable { - const request = new AddUserAgreementRequest(); - request.Region = 1; - this.auth.authenticateRequest(request); - request.TokenID = ''; - return this.con.post(AgreementService.addAgreementURL, request, onError, errorLabel); - } -} - diff --git a/Mohem/src/app/authentication/agreement/service/models/add-user-agreement.request.ts b/Mohem/src/app/authentication/agreement/service/models/add-user-agreement.request.ts deleted file mode 100644 index 63132b81..00000000 --- a/Mohem/src/app/authentication/agreement/service/models/add-user-agreement.request.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Request } from 'src/app/hmg-common/services/models/request'; - -export class AddUserAgreementRequest extends Request { - Region: number; // 1 -} diff --git a/Mohem/src/app/authentication/agreement/service/models/check-user-agreement.request.ts b/Mohem/src/app/authentication/agreement/service/models/check-user-agreement.request.ts deleted file mode 100644 index 171dc392..00000000 --- a/Mohem/src/app/authentication/agreement/service/models/check-user-agreement.request.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Request } from 'src/app/hmg-common/services/models/request'; - -export class CheckUserAgreementRequest extends Request { - Region: number; // 1 -} diff --git a/Mohem/src/app/authentication/agreement/service/models/check-user-agreement.response.ts b/Mohem/src/app/authentication/agreement/service/models/check-user-agreement.response.ts deleted file mode 100644 index d133e4f2..00000000 --- a/Mohem/src/app/authentication/agreement/service/models/check-user-agreement.response.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Response } from 'src/app/hmg-common/services/models/response'; - -export class CheckUserAgreementResponse extends Response { - IsPatientAlreadyAgreed: boolean; -} diff --git a/Mohem/src/app/authentication/agreement/service/models/get-user-agreement.response.ts b/Mohem/src/app/authentication/agreement/service/models/get-user-agreement.response.ts deleted file mode 100644 index e4e919c5..00000000 --- a/Mohem/src/app/authentication/agreement/service/models/get-user-agreement.response.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Response } from 'src/app/hmg-common/services/models/response'; - -export class GetUserAgreementResponse extends Response { - UserAgreementContent: string; -} diff --git a/Mohem/src/app/authentication/authentication.module.ts b/Mohem/src/app/authentication/authentication.module.ts index ab367372..143e3a67 100644 --- a/Mohem/src/app/authentication/authentication.module.ts +++ b/Mohem/src/app/authentication/authentication.module.ts @@ -8,7 +8,7 @@ import { LoginComponent } from './login/login.component'; import { ForgotComponent } from './forgot/forgot.component'; import { HmgCommonModule } from '../hmg-common/hmg-common.module'; import { SelectButtonModule } from 'primeng/selectbutton'; -import { AgreementComponent } from './agreement/agreement.component'; +//import { AgreementComponent } from './agreement/agreement.component'; import { FingerprintAIO } from '@ionic-native/fingerprint-aio/ngx'; import { Device } from '@ionic-native/device/ngx'; import { SplashScreen } from '@ionic-native/splash-screen/ngx'; @@ -36,10 +36,6 @@ const routes: Routes = [ path: 'forgot', component: ForgotComponent }, - { - path: 'agreement', - component: AgreementComponent - }, { path: 'smspage', component: SmsPageComponent @@ -74,7 +70,6 @@ const routes: Routes = [ AuthenticationPage, LoginComponent, ForgotComponent, - AgreementComponent, SmsPageComponent, CheckUserComponent, ChangePasswordComponent diff --git a/Mohem/src/app/eit/add-eit/add-eit.component.html b/Mohem/src/app/eit/add-eit/add-eit.component.html index f4011ea9..a83c748d 100644 --- a/Mohem/src/app/eit/add-eit/add-eit.component.html +++ b/Mohem/src/app/eit/add-eit/add-eit.component.html @@ -1,7 +1,8 @@ - + + {{headerTitle}} diff --git a/Mohem/src/app/eit/eit-list/eit-list.component.html b/Mohem/src/app/eit/eit-list/eit-list.component.html index 193f2eed..51a4ac97 100644 --- a/Mohem/src/app/eit/eit-list/eit-list.component.html +++ b/Mohem/src/app/eit/eit-list/eit-list.component.html @@ -1,8 +1,8 @@ - - + + {{headerTitle}} diff --git a/Mohem/src/app/eit/home/home.component.html b/Mohem/src/app/eit/home/home.component.html index b53777f2..944ae6ef 100644 --- a/Mohem/src/app/eit/home/home.component.html +++ b/Mohem/src/app/eit/home/home.component.html @@ -2,7 +2,7 @@ {{headerTitle}} - + diff --git a/Mohem/src/app/hmg-common/hmg-common.module.ts b/Mohem/src/app/hmg-common/hmg-common.module.ts index 86b5aa01..575ea4b1 100644 --- a/Mohem/src/app/hmg-common/hmg-common.module.ts +++ b/Mohem/src/app/hmg-common/hmg-common.module.ts @@ -42,8 +42,8 @@ import { NativeStorage } from '@ionic-native/native-storage/ngx'; import { ProgressLoadingService } from './ui/progressLoading/progress-loading.service'; import { BarChartComponent } from './ui/bar-chart/bar-chart.component'; import { DonutChartComponent } from './ui/donut-chart/donut-chart.component'; -import { UserLocalNotificationService } from './services/user-local-notification/user-local-notification.service'; -import { LocalNotifications } from '@ionic-native/local-notifications/ngx'; +//import { UserLocalNotificationService } from './services/user-local-notification/user-local-notification.service'; +//import { LocalNotifications } from '@ionic-native/local-notifications/ngx'; import { EmailComponent } from './ui/email/email.component'; import { Badge } from '@ionic-native/badge/ngx'; // import { Push } from '@ionic-native/push/ngx'; @@ -53,7 +53,7 @@ import { HmgBrowserService } from './services/hmg-browser/hmg-browser.service'; import { GuidService } from './services/guid/guid.service'; import { TabsBarComponent } from './ui/tabs-bar/tabs-bar.component'; import { PageTrailerComponent } from './ui/spacer/page-trailer/page-trailer.component'; -import { GeofencingService } from './services/geofencing/geofencing.service'; +//import { GeofencingService } from './services/geofencing/geofencing.service'; import { BackgroundGeolocation } from '@ionic-native/background-geolocation/ngx'; import { ButtonComponent } from './ui/button/button.component'; import { ToolbarButtonComponent } from './ui/toolbar-button/toolbar-button.component'; @@ -82,13 +82,13 @@ import { Diagnostic } from '@ionic-native/diagnostic/ngx'; import { DetailButtonComponent } from './ui/detail-button/detail-button.component'; import { RouterModule } from '@angular/router'; import { HeaderButtonComponent } from './ui/header-button/header-button.component'; -import { CallNumber } from '@ionic-native/call-number/ngx'; +//import { CallNumber } from '@ionic-native/call-number/ngx'; import { AppRate } from '@ionic-native/app-rate/ngx'; import { RatingService } from './services/rating/rating.service'; import { InAppBrowser } from '@ionic-native/in-app-browser/ngx'; import { RateService } from './services/rate/rate.service'; -import { PaymentComponent } from './ui/payment/payment.component'; -import { PaymentService } from './ui/payment/service/payment.service'; +//import { PaymentComponent } from './ui/payment/payment.component'; +//import { PaymentService } from './ui/payment/service/payment.service'; import { MenuService } from './services/menu/menuservice.service'; import { ReplacementListComponent } from '../vacation-rule/replacement-list/replacement-list.component'; import { FileSelectDirective } from 'ng2-file-upload'; @@ -97,6 +97,8 @@ import { WorkListAttachViewComponent } from '../notification/work-list-attach-vi import {Camera,CameraOptions, PictureSourceType} from '@ionic-native/Camera/ngx'; import {File} from '@ionic-native/file/ngx'; import {FileUploderProfileComponent} from './ui/file-uploder-profile/file-uploder-profile.component' +import { OpenNativeSettings } from '@ionic-native/open-native-settings/ngx'; + @NgModule({ imports: [ CommonModule, @@ -156,7 +158,7 @@ import {FileUploderProfileComponent} from './ui/file-uploder-profile/file-uplode EmptyDataComponent, DetailButtonComponent, HeaderButtonComponent, - PaymentComponent, + //PaymentComponent, ReplacementListComponent, FileSelectDirective, WorkListAttachViewComponent, @@ -207,7 +209,7 @@ import {FileUploderProfileComponent} from './ui/file-uploder-profile/file-uplode EmptyDataComponent, DetailButtonComponent, HeaderButtonComponent, - PaymentComponent, + //PaymentComponent, ReplacementListComponent, FileSelectDirective, WorkListAttachViewComponent, @@ -227,14 +229,14 @@ import {FileUploderProfileComponent} from './ui/file-uploder-profile/file-uplode NativeStorage, ProgressLoadingService, PushService, - UserLocalNotificationService, - LocalNotifications, + //UserLocalNotificationService, + //LocalNotifications, Badge, LifeCycleService, HmgBrowserService, GuidService, BackgroundGeolocation, - GeofencingService, + //GeofencingService, Keyboard, KeyboardService, Diagnostic, @@ -243,15 +245,16 @@ import {FileUploderProfileComponent} from './ui/file-uploder-profile/file-uplode HMGPreloadingStrategy, HMGPreloadingStrategyLoading, Diagnostic, - CallNumber, + // CallNumber, AppRate, RatingService, InAppBrowser, RateService, - PaymentService, - MenuService, Camera, - File + File, + //PaymentService, + MenuService, + OpenNativeSettings ] }) export class HmgCommonModule { } diff --git a/Mohem/src/app/hmg-common/services/authentication/authentication.service.ts b/Mohem/src/app/hmg-common/services/authentication/authentication.service.ts index c209cf78..b526303b 100644 --- a/Mohem/src/app/hmg-common/services/authentication/authentication.service.ts +++ b/Mohem/src/app/hmg-common/services/authentication/authentication.service.ts @@ -3,7 +3,7 @@ import { Request } from "../models/request"; import { TranslatorService } from "../translator/translator.service"; import { ConnectorService } from "../connector/connector.service"; import { Observable, throwError } from "rxjs"; -import { CheckPatientRegisterationRequest } from "./models/check-patient-registeration.request"; +//import { CheckPatientRegisterationRequest } from "./models/check-patient-registeration.request"; import { LoginRequest } from "./models/login.request"; import { Response } from "../models/response"; import { AuthenticatedUser } from "./models/authenticated-user"; @@ -18,7 +18,7 @@ import { RegisterInformationRequest } from "./models/register-information.reques import { ForgotFileIDResponse } from "./models/forgot-File-ID.response"; import { EmailRequest } from "../models/email-request"; import { EmailInput } from "../../ui/email/models/email-input"; -import { UserLocalNotificationService } from "../user-local-notification/user-local-notification.service"; +//import { UserLocalNotificationService } from "../user-local-notification/user-local-notification.service"; import { GetLoginInfoRequest } from "./models/get-login-info.request"; import { GetLoginInfoResponse } from "./models/get-login-info.response"; import { analyzeAndValidateNgModules } from "@angular/compiler"; @@ -81,7 +81,7 @@ export class AuthenticationService { public cs: CommonService, public ts: TranslatorService, public nativeStorage: NativeStorage, - public localNotifications: UserLocalNotificationService, + // public localNotifications: UserLocalNotificationService, private events: Events, private menu: MenuController, ) { } @@ -116,8 +116,8 @@ export class AuthenticationService { public setPublicFields(request: Request): Request { console.log("setPublicFields :" + request); - request.VersionID = 1.4; - request.Channel = 31; + request.VersionID = 1.4; //1.3 hmg + request.Channel = 31; //33 request.LanguageID = TranslatorService.getCurrentLanguageCode(); //request.IPAdress = '10.10.10.10'; //request.SessionID = "any thing"; // ??? required for not authorized login funny @@ -486,13 +486,13 @@ export class AuthenticationService { client side: id no , mobile no , zip code */ - public sendSmsForPatientRegisteration(request: CheckPatientRegisterationRequest, onError: any, errorLabel: string) - : Observable { - this.setPublicFields(request); - request.TokenID = ''; - request.isRegister = false; - return this.con.post(AuthenticationService.sendSmsForRegisterURL, request, onError, errorLabel); - } + // public sendSmsForPatientRegisteration(request: CheckPatientRegisterationRequest, onError: any, errorLabel: string) + // : Observable { + // this.setPublicFields(request); + // request.TokenID = ''; + // request.isRegister = false; + // return this.con.post(AuthenticationService.sendSmsForRegisterURL, request, onError, errorLabel); + // } public checkRegisterationActivationCode(request: CheckRegisterationCodeRequest, onError: any, errorLabel: string) : Observable { diff --git a/Mohem/src/app/hmg-common/services/authentication/models/check-patient-registeration.request.ts b/Mohem/src/app/hmg-common/services/authentication/models/check-patient-registeration.request.ts deleted file mode 100644 index 8968bdde..00000000 --- a/Mohem/src/app/hmg-common/services/authentication/models/check-patient-registeration.request.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Request } from '../../models/request'; - -export class CheckPatientRegisterationRequest extends Request { - PatientIdentificationID: string; // "iqama" - PatientMobileNumber: string; // "phone without start 0" - TokenID: string; // should be empty "" - ZipCode: string; // "966 or 971" - isRegister: boolean; -} diff --git a/Mohem/src/app/hmg-common/services/common/common.service.ts b/Mohem/src/app/hmg-common/services/common/common.service.ts index 1fb947cc..0357c466 100644 --- a/Mohem/src/app/hmg-common/services/common/common.service.ts +++ b/Mohem/src/app/hmg-common/services/common/common.service.ts @@ -25,7 +25,7 @@ import { SharedDataService } from "../shared-data-service/shared-data.service"; import { Badge } from "@ionic-native/badge/ngx"; import { LifeCycleService } from "../life-cycle/life-cycle.service"; import { Diagnostic } from "@ionic-native/diagnostic/ngx"; -import { CallNumber } from "@ionic-native/call-number/ngx"; +//import { CallNumber } from "@ionic-native/call-number/ngx"; import { InAppBrowser } from "@ionic-native/in-app-browser/ngx"; @Injectable({ @@ -97,7 +97,7 @@ export class CommonService { public badge: Badge, public lifeCycle: LifeCycleService, public diagnostic: Diagnostic, - public callNumber: CallNumber, + //public callNumber: CallNumber, public iab: InAppBrowser, private menu: MenuController, ) {} @@ -257,7 +257,7 @@ export class CommonService { public showConnectionErrorDialog(onClick: any, okLabel: string) { this.alertDialog( onClick, - okLabel, + this.ts.trPK("general", "ok"), this.ts.trPK("general", "alert"), this.ts.trPK("general", "connError") ); @@ -268,7 +268,7 @@ export class CommonService { onClick, okLabel, this.ts.trPK("general", "alert"), - this.ts.trPK("error", "timeout") + this.ts.trPK("general", "timeout") ); } @@ -373,7 +373,7 @@ export class CommonService { message: message, buttons: [ { - text: acceptLabel, + text:this.ts.trPK("general", "ok"), handler: () => { if (onAccept) { onAccept(); @@ -1095,19 +1095,19 @@ export class CommonService { }); } - public callPhoneNumber(phoneNumber: string) { - this.platform.ready().then(() => { - if (this.isCordova()) { - this.callNumber - .callNumber(phoneNumber, true) - .then(res => {}) - .catch(err => {}); - } else { - window.open("tel:" + phoneNumber); - // this.presentAlert(this.ts.trPK('error', 'call')); - } - }); - } + // public callPhoneNumber(phoneNumber: string) { + // this.platform.ready().then(() => { + // if (this.isCordova()) { + // this.callNumber + // .callNumber(phoneNumber, true) + // .then(res => {}) + // .catch(err => {}); + // } else { + // window.open("tel:" + phoneNumber); + // // this.presentAlert(this.ts.trPK('error', 'call')); + // } + // }); + // } list_to_tree(list) { let map = {}, diff --git a/Mohem/src/app/hmg-common/services/device-permissions/device-permissions.service.ts b/Mohem/src/app/hmg-common/services/device-permissions/device-permissions.service.ts index f8b19616..b34ae6a3 100644 --- a/Mohem/src/app/hmg-common/services/device-permissions/device-permissions.service.ts +++ b/Mohem/src/app/hmg-common/services/device-permissions/device-permissions.service.ts @@ -3,51 +3,55 @@ import { Diagnostic } from '@ionic-native/diagnostic/ngx'; import { CommonService } from 'src/app/hmg-common/services/common/common.service'; import { Observable } from 'rxjs'; import { SubjectSubscriber } from 'rxjs/internal/Subject'; - +import { TranslatorService } from '../translator/translator.service'; +import { promise } from 'protractor'; +import { NativeStorage } from '@ionic-native/native-storage/ngx'; +import { OpenNativeSettings } from '@ionic-native/open-native-settings/ngx'; @Injectable({ providedIn: 'root' }) export class DevicePermissionsService { - public static granted = 'granted'; - public camera; - public mic; - public storage; + public static GRANTED = 'GRANTED'; + public static DENIED_ALWAYS = 'DENIED_ALWAYS'; + + public static CAMERA_MIC = 'camera_mic_permission'; + public static LOCATION = 'location_permission'; + public onSucess; public onerror; - constructor(public diagnostic: Diagnostic, - public cs: CommonService) { } + constructor( + public diagnostic: Diagnostic, + public cs: CommonService, + public nativeStorage: NativeStorage, + public ts: TranslatorService, + public nativeSettings: OpenNativeSettings) { } - public requestCameraPermission(camera: boolean, mic: boolean, storage: boolean): Observable { - this.camera = camera; - this.mic = mic; - this.storage = storage; - return Observable.create( observer => { - this.requestCamera( observer); - }); - } + public requestCameraPermission(): Observable { - public requestCamera(observer: any) { - this.diagnostic.isCameraAvailable().then((isAvailable) => { + return Observable.create(observer => { + this.requestCamera(observer); + }); + } + + private requestCamera(observer: any) { + //console.log("Camera permission????????") + this.hasCameraPermission().then((isAvailable) => { if (isAvailable) { - if ( this.mic ) { - this.requestMicophonePermission(observer); - } else { - this.observerDone(observer, true); - } + // this.requestMicophonePermission(observer); + this.observerDone(observer, true); } else { - this.diagnostic.requestCameraAuthorization(false).then((value) => { - // alert( JSON.stringify(value)); - if (value.toLowerCase() === DevicePermissionsService.granted) { - if ( this.mic ) { - this.requestMicophonePermission(observer); - } else { - this.observerDone(observer, true); - } + this.diagnostic.requestCameraAuthorization(true).then((value) => { + if (value == DevicePermissionsService.GRANTED) { + //this.requestMicophonePermission(observer); + this.observerDone(observer, true); + } else if (value == DevicePermissionsService.DENIED_ALWAYS) { + // this.setAlwaysDenied(DevicePermissionsService.CAMERA_MIC, true); + this.observerDone(observer, false); } else { - this.cameraError(observer); + this.observerDone(observer, false); } }); } @@ -56,7 +60,6 @@ export class DevicePermissionsService { }); } - private cameraError(observer) { this.cs.presentConfirmDialog('camera permission required', () => { @@ -66,7 +69,6 @@ export class DevicePermissionsService { }); } - private requestMicophonePermission(observer: any) { this.diagnostic.isMicrophoneAuthorized().then((isAvailable) => { @@ -75,10 +77,13 @@ export class DevicePermissionsService { this.observerDone(observer, true); } else { this.diagnostic.requestMicrophoneAuthorization().then((value) => { - if (value.toLowerCase() === DevicePermissionsService.granted) { + if (value == DevicePermissionsService.GRANTED) { this.observerDone(observer, true); + } else if (value == DevicePermissionsService.DENIED_ALWAYS) { + this.setAlwaysDenied(DevicePermissionsService.CAMERA_MIC, true); + this.observerDone(observer, false); } else { - this.micError(observer); + this.observerDone(observer, false); } }); } @@ -97,8 +102,197 @@ export class DevicePermissionsService { }); } - private observerDone (observer: any, success: boolean ) { - observer.next( success ) ; + private observerDone(observer: any, success: boolean) { + observer.next(success); observer.complete(); } + + public async hasCameraPermission(): Promise { + return this.diagnostic.isCameraAuthorized(true); + } + + public async hasCameraAndMicPermissions(): Promise { + let camera = await this.hasCameraPermission(); + //let mic = await this.diagnostic.isMicrophoneAuthorized(); + if (camera) { + // await this.setAlwaysDenied(DevicePermissionsService.CAMERA_MIC, false); + return true; + } else { + return false; + } + } + + private permissionRequestDialog(message: string): Promise { + return new Promise((resolve, reject) => { + this.cs.confirmAlertDialogPrimarySecondary(() => { + resolve(true); + }, this.ts.trPK('general', 'accept'), + () => { + resolve(false) + }, this.ts.trPK('general', 'not-now'), this.ts.trPK('general', 'confirm'), message + ); + }); + } + + private permissionSettingsDialog(message) { + return new Promise((resolve, reject) => { + this.cs.confirmAlertDialogPrimarySecondary(() => { + resolve(true); + }, this.ts.trPK('general', 'settings'), + () => { + resolve(false) + }, this.ts.trPK('general', 'not-now'), this.ts.trPK('general', 'confirm'), message + ); + }); + } + + + public static APP_SETTINGS = 'application_details'; + + public async openApplicationSettings() { + // return new Promise((resolver, reject) => { + // this.nativeSettings.open(DevicePermissionsService.APP_SETTINGS).then(result => { + // setTimeout(() => { + // this.cs.presentConfirmDialog(this.ts.trPK('permissions', 'check-updates'), + // () => resolver(true), () => resolver(false) + // ); + // }, 1500); + + // }); + // }); + } + + private async isPermissionAlwaysDenied(permissionKey: string) { + // return new Promise((resolver, rejector) => { + // this.nativeStorage.getItem(permissionKey).then(denied => { + // resolver(denied != null && denied == true); + // }, () => { + // resolver(false); + // }); + // }); + + } + + private async resetAlwaysDenied(permissionKey: string) { + return new Promise((resolver, rejector) => { + this.nativeStorage.setItem(permissionKey, false).then(done => { + resolver(done); + }, () => { + resolver(false); + }); + }); + } + + + private async setAlwaysDenied(permissionKey: string, dendied: boolean) { + // let result = await this.nativeStorage.setItem(permissionKey, dendied); + // return result; + } + + public async openCameraAndMicSettings2() { + // return new Promise((resolver, reject) => { + // this.nativeSettings.open('application_details').then(result => { + // setTimeout(() => { + // this.cs.presentConfirmDialog(this.ts.trPK('permissions', 'check-updates'), () => { + // this.hasCameraAndMicPermissions().then( + // granted => resolver(granted), () => resolver(false)); + // }); + // }, 1000); + + // }); + // }); + } + + + public async requestCameraAutherization() { + if (await this.hasCameraAndMicPermissions()) { + return true; + } else { + let message = this.ts.trPK('permissions', 'camera'); + // if (await this.isPermissionAlwaysDenied(DevicePermissionsService.CAMERA_MIC)) { + // if (await this.permissionSettingsDialog(message)) { + // return this.openCameraAndMicSettings(); + // } + // } else { + if (await this.permissionRequestDialog(message)) { + return this.requestCameraPermission().toPromise(); + } + // } + return false; + } + + } + + /* geolocation permission */ + + public async requestLocationAutherization() { + if ( await this.isLocationEnabled()) { + + if (await this.hasLocationPermissions()) { + return true; + } else { + let message = this.ts.trPK('permissions', 'location'); + // if (await this.isPermissionAlwaysDenied(DevicePermissionsService.LOCATION)) { + // if (await this.permissionSettingsDialog(message)) { + // return this.openLocationSettings(); + // } + // } else { + if (await this.permissionRequestDialog(message)) { + return this.requestLocationPermission(); + } + // } + return false; + } + } else { + return false; + } + } + + private async isLocationEnabled() { + let isAvailable = await this.diagnostic.isLocationEnabled(); + if (!isAvailable) { + this.cs.presentAlert(this.ts.trPK('permissions', 'enable-location'), () => { + }); + } + return isAvailable; + } + + public async hasLocationPermissions(): Promise { + let location = await this.diagnostic.isLocationAvailable(); + if (location) { + await this.setAlwaysDenied(DevicePermissionsService.LOCATION, false); + return true; + } else { + return false; + } + } + + + public async openCameraAndMicSettings() { + // let update = await this.openApplicationSettings(); + // return update ? this.hasCameraAndMicPermissions() : false; + } + + public async openLocationSettings() { + // let update = await this.openApplicationSettings(); + // return update ? this.hasLocationPermissions() : false; + } + + + private async requestLocationPermission() { + let hasPermissions = await this.hasLocationPermissions(); + if (!hasPermissions) { + + let value = await this.diagnostic.requestLocationAuthorization(); + if (value == DevicePermissionsService.GRANTED) { + return true; + } else if (value == DevicePermissionsService.DENIED_ALWAYS) { + this.setAlwaysDenied(DevicePermissionsService.LOCATION, true); + } + } + return false; + } + } + + diff --git a/Mohem/src/app/hmg-common/services/geofencing/geofencing.service.spec.ts b/Mohem/src/app/hmg-common/services/geofencing/geofencing.service.spec.ts deleted file mode 100644 index e4a9d164..00000000 --- a/Mohem/src/app/hmg-common/services/geofencing/geofencing.service.spec.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { GeofencingService } from './geofencing.service'; - -describe('GeofencingService', () => { - beforeEach(() => TestBed.configureTestingModule({})); - - it('should be created', () => { - const service: GeofencingService = TestBed.get(GeofencingService); - expect(service).toBeTruthy(); - }); -}); diff --git a/Mohem/src/app/hmg-common/services/geofencing/geofencing.service.ts b/Mohem/src/app/hmg-common/services/geofencing/geofencing.service.ts deleted file mode 100644 index 954e9ad3..00000000 --- a/Mohem/src/app/hmg-common/services/geofencing/geofencing.service.ts +++ /dev/null @@ -1,446 +0,0 @@ -import { Injectable } from '@angular/core'; -import { BackgroundGeolocation, BackgroundGeolocationEvents } from '@ionic-native/background-geolocation/ngx'; -import { BackgroundGeolocationConfig, BackgroundGeolocationResponse } from '@ionic-native/background-geolocation/ngx'; -import { UserLocalNotificationService } from '../user-local-notification/user-local-notification.service'; -import { Platform } from '@ionic/angular'; -import { LocationModel } from './models/location.model'; -import { ConnectorService } from '../connector/connector.service'; -import { NativeStorage } from '@ionic-native/native-storage/ngx'; -import { AuthenticationService } from '../authentication/authentication.service'; -import { ZoneModel } from './models/zone.model'; -import { CommonService } from '../common/common.service'; -import { InsertLocationRequest } from './models/insert-location.request'; -import { GeoUserModel } from './models/geo-user.model'; -import { TranslatorService } from '../translator/translator.service'; - -export enum zoneState { - out = 0, enter = 1, exit = 2, in = 3 -} - - @Injectable({ - providedIn: 'root' - }) -export class GeofencingService { - public static ZONES_KEY = 'geofencing-zones'; - public static USER_DATA_KEY = 'geofencing-user-data'; - public static GEO_STATUS_KEY = 'geofencing-status'; - public static zonesUrl = 'Services/Patients.svc/REST/GeoF_GetAllPoints'; - public static loggingUrl = 'Services/Patients.svc/rest/GeoF_InsertPatientFileInfo'; - private zonesList: ZoneModel []; - private userData: GeoUserModel; - private isPaused: boolean; - private debug: boolean; - - locations: any []; - constructor( - private backgroundGeolocation: BackgroundGeolocation, - public notif: UserLocalNotificationService, - public platform: Platform, - public con: ConnectorService, - public auth: AuthenticationService, - public storage: NativeStorage, - public cs: CommonService, - public authService: AuthenticationService, - public ts: TranslatorService, - ) { - this.debug = false; - } -/* -* logs location on server. -*/ - private logLocation(id: number, type: number, userData: GeoUserModel, zone: ZoneModel) { - this.toast('logging location..'); - this.setNotification('Logging location ' , 'location id: ' + id + ' type: ' + type); - const req = new InsertLocationRequest(); - req.PointsID = id; - req.GeoType = type; - //req.PatientID = userData.PatientID; - //req.PatientOutSA = userData.PatientOutSA; - this.auth.setPublicFields(req); - this.con.postNoLoad(GeofencingService.loggingUrl, req, () => { - zone.pendingRequest = type; // failed to log, setup pending request - this.storeZones(this.zonesList); - this.log('pending request from onError'); - this.setNotification('Pending request from onError', 'zone: ' + zone.Description + ' request type: ' + type); - }).subscribe((response) => { - if (this.cs.validResponse(response)) { - this.setNotification('Log success' , 'location id: ' + id + ' patientID: ' + userData.PatientID); - this.log('logged successfuly'); - zone.pendingRequest = zoneState.out; // cancel pending requests if any - } else { - zone.pendingRequest = type; // failed to log, setup pending request - this.log('pending request from invalid'); - this.setNotification('Pending request from invalid', 'zone: ' + zone.Description + ' request type: ' + type); - } - this.storeZones(this.zonesList); - }); - } -/* -* Requests geofence zones list -*/ - private requestZones() { - const req = this.auth.getPublicRequest(); - this.con.postNoLoad(GeofencingService.zonesUrl, req, _ => { // TODO: handle error - }).subscribe((response: any) => { - if (this.cs.validResponse(response)) { - if (this.cs.hasData(response.GeoF_PointsList)) { - // update zonelist if it doesnt exist or if the server has an updated one - if (!this.cs.hasData(this.zonesList) || (this.zonesList.length !== response.GeoF_PointsList.length)) { - this.log('setting new zone list'); - this.zonesList = response.GeoF_PointsList; - for (const zone of this.zonesList) { - zone.in = false; - } - this.log('storing zones'); - this.storeZones(this.zonesList); - } - } - } - }); - } -/* -* Store zones list in local storage -*/ - public async storeZones(zones: ZoneModel []) { - return await this.storage.setItem(GeofencingService.ZONES_KEY, zones); - } -/* -* Retrieve and set list of zones from local storage -*/ - public async setZones() { - try { - const data = await this.storage.getItem(GeofencingService.ZONES_KEY); - if (this.cs.hasData(data)) { - this.zonesList = data; - } else { - this.requestZones(); // zones list not stored in local storage - } - } catch { - this.requestZones(); // zones list not stored in local storage - } - } - - public async storeUserData(user: GeoUserModel) { - return await this.storage.setItem(GeofencingService.USER_DATA_KEY, user); - } -/* -* Retrieve and set user data from local storage -*/ - public async setUserFromStorage() { - const data = await this.storage.getItem(GeofencingService.USER_DATA_KEY); - if (data) { - this.userData = data; - } else { - this.userData = null; - } - } -/* -// turns location tracking on. Sets geo user data and zones list -*/ - public async turnTrackingOn(patientID?: number, outSa?: number): Promise { - this.toast('turning tracking on'); - // set zones list from storage - await this.setZones(); - // update zone list from server - this.requestZones(); - - // Set user data - if (patientID) { - this.userData = new GeoUserModel; - this.userData.PatientID = patientID; - this.userData.PatientOutSA = outSa; - } else if (!this.userData) { - try { - await this.setUserFromStorage(); - } catch { - return false; - } - } - this.userData.isTrackingOn = true; - this.storeUserData(this.userData); - this.startTracking(); - return true; - } -/* -// turns location tracking off. Stops background tracking -*/ - public turnTrackingOff() { - this.toast('turning tracking off'); - this.stopTracking(); - if (this.userData) { - this.userData.isTrackingOn = false; - this.storeUserData(this.userData); - } else { - this.setUserFromStorage().then(() => { - this.userData.isTrackingOn = false; - this.storeUserData(this.userData); - }); - } - } - -/* -// Check if geofencing service is enabled -*/ - public async isTrackingEnabled(): Promise { - // if (this.userData) { - // return this.userData.isTrackingOn; - // } else { - try { - await this.setUserFromStorage(); - if (this.userData) { - return this.userData.isTrackingOn; - } else { - return false; - } - } catch { - throw false; - } - // } - } -/* -// setup and start background gelocation plugin -*/ - public startTracking() { - const config: BackgroundGeolocationConfig = { - desiredAccuracy: 10000, // HIGH_ACCURACY = 1 // low = 10000 - stationaryRadius: 20, // 20 - distanceFilter: 10, // 10 - debug: false, // enable this hear sounds for background-geolocation life-cycle. - stopOnTerminate: false, // enable this to clear background location settings when the app terminates - // startOnBoot: true, - // Android options - notificationsEnabled: false, - interval: 60000, // interval vars for improved battery life - fastestInterval: 120000, - activitiesInterval: 10000, - startForeground: false, - notificationTitle: 'Running in the background', - notificationText: '', - // IOS options - saveBatteryOnBackground: false - }; - this.backgroundGeolocation.configure(config) - .then((location: BackgroundGeolocationResponse) => { - }); - - this.backgroundGeolocation.on(BackgroundGeolocationEvents.location) - .subscribe((location: BackgroundGeolocationResponse) => { - this.reportLocation(location); - }); - - this.backgroundGeolocation.on(BackgroundGeolocationEvents.stationary) - .subscribe((location: BackgroundGeolocationResponse) => { - this.reportLocation(location); - }); - - this.storage.getItem(GeofencingService.GEO_STATUS_KEY).then(status => { - if (!status) { - this.backgroundGeolocation.start(); - this.storage.setItem(GeofencingService.GEO_STATUS_KEY, true); - } - }).catch(() => { - this.toast('turning geofencing on'); - this.backgroundGeolocation.start(); - this.storage.setItem(GeofencingService.GEO_STATUS_KEY, true); - }); - - } -/* -// Helper to startTracking() -*/ - private async reportLocation(location: BackgroundGeolocationResponse) { - // Check if zones and user is set - if (!this.userData) { - await this.setUserFromStorage(); - } - if (!this.cs.hasData(this.zonesList)) { - await this.setZones(); - } - if (this.platform.is('ios')) { - this.backgroundGeolocation.startTask().then((taskKey) => { - this.checklocationInZones(location, this.zonesList, this.userData); - this.backgroundGeolocation.endTask(taskKey); - }); - } else { - this.checklocationInZones(location, this.zonesList, this.userData); - } - this.storeZones(this.zonesList); - } - -/* -// stops background geoloacation plugin tracking -*/ - public stopTracking() { - this.toast('Stop Tracking' ); - this.storage.setItem(GeofencingService.GEO_STATUS_KEY, false); - this.backgroundGeolocation.stop().then(value => { - // this.toast('Stop Tracking value returned: ' + value); - - }); - } - -/* -// Checks if given location triggers any zone events (enter, exit) for all zones, and pauses the service if -// the location was far from all zones -*/ - private checklocationInZones(location: BackgroundGeolocationResponse, zones: ZoneModel [], user: GeoUserModel) { - this.printLocation(location, 'check location in zones'); - let currentMinDist = 9999999; - for (const zone of zones) { - const userLocation = new LocationModel(location.latitude, location.longitude); - const event = this.checkLocationInZone(userLocation, zone); - const currentDistance = this.distanceFromZone(userLocation, zone); - currentMinDist = (currentMinDist > currentDistance ? currentDistance : currentMinDist); - if (zone.GEOF_ID === 16) { - this.log(zone.Description); - this.log('zone state: ' + zone.in + ' pending: ' + zone.pendingRequest + 'current event: ' + event); - } - if (event === zoneState.in) { - zone.in = true; - } - // send enter request - if (event === zoneState.enter || - (event === zoneState.in && zone.pendingRequest === zoneState.enter)) { - zone.in = true; - this.setNotification('Enter ZONE ' + zone.Description, 'location lat: ' + location.latitude + ' lng: ' + location.longitude); - this.log('enter Zone' + zone.Description + ' ' + 'location: ' + location.latitude + ',' + location.longitude); - this.logLocation(zone.GEOF_ID, zoneState.enter, user, zone); - } - // send exit request - if (event === zoneState.exit || - (event === zoneState.out && zone.pendingRequest === zoneState.exit)) { - zone.in = false; - this.setNotification('Exit ZONE ' + zone.Description, 'location lat: ' + location.latitude + ' lng: ' + location.longitude); - this.log('exit Zone' + zone.Description + ' ' + 'location: ' + location.latitude + ',' + location.longitude); - this.logLocation(zone.GEOF_ID, zoneState.exit, user, zone); - } - } - const minDist = this.toDecimalDegrees(5000); // minimum distance location needs to be to all zones to pause service - const maxDist = this.toDecimalDegrees(10000); // Max distance used to have a factor between 0-1 - if (currentMinDist >= minDist) { - const currentDis = (currentMinDist > maxDist ? maxDist : currentMinDist); - this.pauseService((currentDis - minDist) / (maxDist - minDist)); - } - } -/* -// Checks the state of given location for the given zone -*/ - private checkLocationInZone(userLocation: LocationModel, zone: ZoneModel): zoneState { - const isIn = this.isPointInZone(userLocation.lng, userLocation.lat, zone.Longitude, - zone.Latitude, this.toDecimalDegrees(zone.Radius)); - if (isIn === false && zone.in === true) { - return zoneState.exit; - } - if (isIn === true && zone.in === false) { - return zoneState.enter; - } - if (isIn) { - return zoneState.in; - } - return zoneState.out; - } -/* -// calculates the distance between given location and given zone -*/ - private distanceFromZone(userLocation: LocationModel, zone: ZoneModel): number { - return this.distance(userLocation.lng, userLocation.lat, zone.Longitude, zone.Latitude); - } -/* -// checks if a point p is in a circular zone with center z and radius r -*/ - public isPointInZone(xp, yp, xz, yz, r): boolean { - return this.distance(xp, yp, xz, yz) < r; - } -/* -// Measures distance between two points -*/ - public distance(xp, yp, xz, yz): number { - return Math.sqrt(Math.pow(Math.abs(xp - xz), 2) + Math.pow(Math.abs(yp - yz) , 2)); - } -/* -// Convert meters to decimal degrees -*/ - public toDecimalDegrees(meters: number) { - return meters / 1000 / 111.32; - } -/* -// Pauses tracking service for a time multiplied by given factor -*/ - public pauseService(factor: number) { - if (!this.isPaused) { - this.stopTracking(); - this.isPaused = true; - // time to pause min=120 sec max=1800 sec - const time = (1680000 * factor); // time in milliseconds - this.setNotification('pausing tracking service', 'Pause for ' + time + ' FYI factor is: ' + factor); - setTimeout(() => { - this.startTracking(); - this.isPaused = false; - this.setNotification('resuming tracking service', 'Paused for ' + time + ' FYI factor is: ' + factor); - }, time); - } - } - - public startGeoFromHome() { - if (this.cs.isCordova()) { - this.isTrackingEnabled().then((result) => { - if (result) { - this.turnTrackingOff(); - this.turnTrackingOn(); - } - }).catch(() => { - // first time login, setup geofencing - // local storage should reset when user logs out - if (this.authService.isAuthenticated()) { - const user = this.authService.getAuthenticatedUser(); - this.turnTrackingOff(); - this.cs.presentConfirmDialog(this.ts.trPK('settings', 'enable-geo'), () => { - // this.turnTrackingOn(user.PatientID, +user.PatientOutSA); - }, () => { - // this.turnTrackingOn(user.PatientID, +user.PatientOutSA); - this.turnTrackingOff(); - }); - } - }); - } - } - - // ---------- TESTING FUNCTIONS -------------- // - public setNotification(title: string, text: string) { - if (this.debug) { - const date = new Date(); - date.setSeconds(date.getSeconds() + 2); - this.notif.createNotification(title, text, date, 'geofencing'); - } - } - - public printLocation(location: BackgroundGeolocationResponse, source: string) { - if (this.debug) { - console.log('-------------------------------------------------------------'); - console.log(source); - console.log(this.zonesList); - console.log(location); - console.log('location: ' + location.latitude + ', ' + location.longitude); - } - } - - public printAllLocations() { - if (this.debug) { - this.backgroundGeolocation.getLocations().then(locations => { - console.log(locations); - }); - } - } - - public log(msg: string) { - if (this.debug) { - console.log(msg); - } - } - - public toast(msg: string) { - if (this.debug) { - this.cs.toast(msg); - } - } -} diff --git a/Mohem/src/app/hmg-common/services/geofencing/models/geo-user.model.ts b/Mohem/src/app/hmg-common/services/geofencing/models/geo-user.model.ts deleted file mode 100644 index fb3a17f3..00000000 --- a/Mohem/src/app/hmg-common/services/geofencing/models/geo-user.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export class GeoUserModel { - PatientID: number; - PatientOutSA: number; - isTrackingOn: boolean; -} diff --git a/Mohem/src/app/hmg-common/services/geofencing/models/insert-location.request.ts b/Mohem/src/app/hmg-common/services/geofencing/models/insert-location.request.ts deleted file mode 100644 index d85177a5..00000000 --- a/Mohem/src/app/hmg-common/services/geofencing/models/insert-location.request.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Request } from 'src/app/hmg-common/services/models/request'; - -export class InsertLocationRequest extends Request { - PointsID: number; - GeoType: number; // 1 enter 2 exit -} diff --git a/Mohem/src/app/hmg-common/services/geofencing/models/location.model.ts b/Mohem/src/app/hmg-common/services/geofencing/models/location.model.ts deleted file mode 100644 index 2bcd2035..00000000 --- a/Mohem/src/app/hmg-common/services/geofencing/models/location.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -export class LocationModel { - lat: number; - lng: number; - constructor(lat: number, lng: number, radius?: number, name?: string) { - this.lat = lat; - this.lng = lng; - } -} diff --git a/Mohem/src/app/hmg-common/services/geofencing/models/zone.model.ts b/Mohem/src/app/hmg-common/services/geofencing/models/zone.model.ts deleted file mode 100644 index 52c5e443..00000000 --- a/Mohem/src/app/hmg-common/services/geofencing/models/zone.model.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { zoneState } from '../geofencing.service'; - -export class ZoneModel { - CreatedBy?: number; - CreatedOn?: string; - Description: string; - DescriptionN?: string; - GEOF_ID?: number; - IsCity?: boolean; - Latitude: string; - Longitude: string; - ProjectID?: number; - Radius: number; - Type?: number; - in: boolean; - pendingRequest: zoneState; -} diff --git a/Mohem/src/app/hmg-common/services/user-local-notification/user-local-notification.service.spec.ts b/Mohem/src/app/hmg-common/services/user-local-notification/user-local-notification.service.spec.ts deleted file mode 100644 index f2573dd9..00000000 --- a/Mohem/src/app/hmg-common/services/user-local-notification/user-local-notification.service.spec.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { UserLocalNotificationService } from './user-local-notification.service'; - -describe('UserLocalNotificationService', () => { - beforeEach(() => TestBed.configureTestingModule({})); - - it('should be created', () => { - const service: UserLocalNotificationService = TestBed.get(UserLocalNotificationService); - expect(service).toBeTruthy(); - }); -}); diff --git a/Mohem/src/app/hmg-common/services/user-local-notification/user-local-notification.service.ts b/Mohem/src/app/hmg-common/services/user-local-notification/user-local-notification.service.ts deleted file mode 100644 index 9a7fcbdb..00000000 --- a/Mohem/src/app/hmg-common/services/user-local-notification/user-local-notification.service.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { Injectable } from '@angular/core'; -import { LocalNotifications, ILocalNotification } from '@ionic-native/local-notifications/ngx'; - -export interface UserLocalData { - [key: string]: any; -} - -@Injectable({ - providedIn: 'root' -}) - -export class UserLocalNotificationService { - - public static STORAGE_KEY = 'notifications'; - constructor( - public localNotification: LocalNotifications, - ) { } - - public async requestNotificationPermission(): Promise { - const hasPermission = await this.checkNotificationPermission(); - if (!hasPermission) { - return await this.localNotification.requestPermission(); - } else { - return true; - } - } - - public async checkNotificationPermission(): Promise { - return await this.localNotification.hasPermission(); - } - - public async cancelCategoryNotifications(category: string) { - const notifications = await this.localNotification.getAll(); - for (const notification of notifications) { - const parsedData = JSON.parse(notification.data); - const notifCategory = parsedData['category']; - if (notifCategory === category) { - await this.localNotification.cancel(notification.id); - } - } - } - - public async isCategoryExist(category: string) { - const notifications = await this.localNotification.getAll(); - for (const notification of notifications) { - const parsedData = JSON.parse(notification.data); - const notifCategory = parsedData['category']; - // alert( 'notifCategory:' + notifCategory + ' category:' + category); - if (notifCategory === category) { - return true; - } - } - return false; - } - - public createNotification(title: string, text: string, date: Date, - category: string) { - const notifID = this.generateNotificationID(); - this.scheduleNotification(notifID, title, text, date, category); - } - - private scheduleNotification(notifId: number, title: string, text: string, - date: Date, category: string) { - this.localNotification.on('click').subscribe(notification => { - this.localNotification.clear(notification.id); - }); - this.localNotification.schedule({ - id: notifId, - title: title, - text: text, - trigger: {at: date}, - data : {'category': category}, - }); - } - - public deleteAllNotifications() { - this.localNotification.clearAll(); - this.localNotification.cancelAll(); - } - - public cancelNotification(notifID: number) { - this.localNotification.cancel(notifID); - } - - public clearTriggeredNotifications() { - this.localNotification.clearAll(); - } - - private generateNotificationID(): number { - return Date.now() + Math.floor(Math.random() * (1000 - 1) + 1); - } - - public async getNotifications(): Promise { - const notifs = await this.localNotification.getAll(); - return notifs; - } -} diff --git a/Mohem/src/app/hmg-common/ui/payment/payment.component.html b/Mohem/src/app/hmg-common/ui/payment/payment.component.html deleted file mode 100644 index ea7e2ddd..00000000 --- a/Mohem/src/app/hmg-common/ui/payment/payment.component.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - {{ method.title | translate }} - - - - - - - - - - - -
-
- - - - {{'general,cancel' | translate}} - - - - -
\ No newline at end of file diff --git a/Mohem/src/app/hmg-common/ui/payment/payment.component.spec.ts b/Mohem/src/app/hmg-common/ui/payment/payment.component.spec.ts deleted file mode 100644 index 1ff39bb8..00000000 --- a/Mohem/src/app/hmg-common/ui/payment/payment.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 { PaymentPage } from './payment.page'; - -describe('PaymentPage', () => { - let component: PaymentPage; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ PaymentPage ], - schemas: [CUSTOM_ELEMENTS_SCHEMA], - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(PaymentPage); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/Mohem/src/app/hmg-common/ui/payment/payment.component.ts b/Mohem/src/app/hmg-common/ui/payment/payment.component.ts deleted file mode 100644 index f120edb1..00000000 --- a/Mohem/src/app/hmg-common/ui/payment/payment.component.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; -import { CommonService } from 'src/app/hmg-common/services/common/common.service'; -import { SharedDataService } from 'src/app/hmg-common/services/shared-data-service/shared-data.service'; -import { PaymentService } from './service/payment.service'; -import { PayRequestInfo } from './service/models/pay-request.info'; -import { PaymentInfoModel } from './service/models/payment-info.model'; -import { PaymentValidationResponse } from './service/models/payment-validation.response'; - -@Component({ - selector: 'payment', - templateUrl: './payment.component.html', - styleUrls: ['./payment.component.scss'], -}) -export class PaymentComponent implements OnInit { - - - public methods = [ - { - icon: 'visa', - title: 'payment,visa', - method: PaymentService.VISA - }, - { - icon: 'sadad', - title: 'payment,sadad', - method: PaymentService.SADAD - }, - { - icon: 'mada', - title: 'payment,mada', - method: PaymentService.MADA - }, - { - icon: 'mastercard', - title: 'payment,mastercard', - method: PaymentService.MASTERCARD - }, - { - icon: 'instalment', - title: 'payment,instalment', - method: PaymentService.INSTALMENT - } - ]; - - @Output() success = new EventEmitter(); - @Output() faild = new EventEmitter(); - @Output() cancel = new EventEmitter(); - public orderDescription: string; - public amount: number; - private requestInfo: PayRequestInfo; - constructor( - public ts: TranslatorService, - public cs: CommonService, - public paymentService: PaymentService, - public sharedData: SharedDataService - ) { } - - ngOnInit() { - - } - - @Input() set payRequestInfo(payRequestInfo: PayRequestInfo) { - this.requestInfo = payRequestInfo; - this.amount = payRequestInfo.amount; - this.orderDescription = payRequestInfo.orderDescription; - } - - get payRequestInfo(): PayRequestInfo { - return this.requestInfo; - } - - - public openPayment(method: string) { - /*this.paymentService.openPayment(this.amount, method, this.orderDescription).subscribe((success) => { - if (success) { - this.success.emit(this.requestInfo.data); - } else { - this.faild.emit(); - } - }); - */ - } - - public onComplete(info: PaymentInfoModel) { - - } - - public onCancel() { - this.cancel.emit(); - } - - -} diff --git a/Mohem/src/app/hmg-common/ui/payment/service/models/pay-request.info.ts b/Mohem/src/app/hmg-common/ui/payment/service/models/pay-request.info.ts deleted file mode 100644 index 3109cb0c..00000000 --- a/Mohem/src/app/hmg-common/ui/payment/service/models/pay-request.info.ts +++ /dev/null @@ -1,6 +0,0 @@ -export class PayRequestInfo { - public static SHARED_DATA = 'pay-request-info-shared'; - amount: number; - orderDescription: string; - data: any; -} \ No newline at end of file diff --git a/Mohem/src/app/hmg-common/ui/payment/service/models/payment-info.model.ts b/Mohem/src/app/hmg-common/ui/payment/service/models/payment-info.model.ts deleted file mode 100644 index 16dffe1b..00000000 --- a/Mohem/src/app/hmg-common/ui/payment/service/models/payment-info.model.ts +++ /dev/null @@ -1,9 +0,0 @@ -export class PaymentInfoModel { - transactionId: string; - amount: number; - - constructor(amount: number, transactionId: string){ - this.transactionId = transactionId; - this.amount = amount; - } -} diff --git a/Mohem/src/app/hmg-common/ui/payment/service/models/payment-validation.request.ts b/Mohem/src/app/hmg-common/ui/payment/service/models/payment-validation.request.ts deleted file mode 100644 index 734f1ec5..00000000 --- a/Mohem/src/app/hmg-common/ui/payment/service/models/payment-validation.request.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Request } from 'src/app/hmg-common/services/models/request'; - -export class PaymentValidationRequest extends Request { - MerchantModuleSessionID: string; - PayOneProject: number ; // 0 - PayOneService: number; // 4 - LanguageID: number; - -} diff --git a/Mohem/src/app/hmg-common/ui/payment/service/models/payment-validation.response.ts b/Mohem/src/app/hmg-common/ui/payment/service/models/payment-validation.response.ts deleted file mode 100644 index 76e3e5d7..00000000 --- a/Mohem/src/app/hmg-common/ui/payment/service/models/payment-validation.response.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Response } from 'src/app/hmg-common/services/models/response'; - -export class PaymentValidationResponse extends Response { - public static SHARED_DATA = 'payment_validation_shared'; - Amount: number; - Merchant_Reference: string; - Response_Message: string; -} \ No newline at end of file diff --git a/Mohem/src/app/hmg-common/ui/payment/service/payment.service.payfort.txt b/Mohem/src/app/hmg-common/ui/payment/service/payment.service.payfort.txt deleted file mode 100644 index 1e65b50c..00000000 --- a/Mohem/src/app/hmg-common/ui/payment/service/payment.service.payfort.txt +++ /dev/null @@ -1,100 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { PaymentInfoModel } from './models/payment-info.model'; -import { PaymentValidationRequest } from './models/payment-validation.request'; -import { PaymentValidationResponse } from './models/payment-validation.response'; -import { CommonService } from 'src/app/hmg-common/services/common/common.service'; -import { ConnectorService } from 'src/app/hmg-common/services/connector/connector.service'; -import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service'; -import { GuidService } from 'src/app/hmg-common/services/guid/guid.service'; -import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; - -@Injectable({ - providedIn: 'root' -}) -export class PaymentService { - - public static MADA = 'MADA'; - public static MASTERCARD = 'MASTERCARD'; - public static SADAD = 'SADAD '; - public static VISA = 'VISA'; - public static INSTALMENT = 'INSTALMENT'; - public static validateURL = 'Services/PayFort_Serv.svc/REST/GetRequestStatusByRequestID'; - private static SERVICE_URL = 'https://hmgwebservices.com/PayFortWeb/pages/SendPayFortRequest.aspx'; - - constructor( - public cs: CommonService, - public ts: TranslatorService, - public con: ConnectorService, - public authService: AuthenticationService, - public guid: GuidService - ) { } - - - public validatePayment(transactionID: string, onError: any, errorLabel: string): Observable { - const request = new PaymentValidationRequest(); - request.ClientRequestID = transactionID; - // this.authService.authenticateRequest(request); - return this.con.post(PaymentService.validateURL, request, onError, errorLabel); - } - - - public openPayment(amount: number, method: string, orderDesc: string, ): Observable { - return Observable.create(observer => { - const transactionID = this.guid.generate(); - this.cs.openBrowser( this.generateURL( amount, method, orderDesc, transactionID) , - () => this.notifyCallerDone(observer, true) , - () => this.notifyCallerDone(observer, false) ); - // this.hmgBrowser.registerBack(() => this.notifyCaller(observer, amount, transactionID)); - // this.hmgBrowser.registerClose(() => this.notifyCaller(observer, amount, transactionID)); - }); - } - - private notifyCaller(observer: any, amount: number, transactionID: string) { - observer.next(new PaymentInfoModel(amount, transactionID)) ; - observer.complete(); - } - - private notifyCallerDone(observer: any,done: boolean) { - observer.next( done) ; - observer.complete(); - } - - private generateURL( amount: number, method: string, orderDesc: string, transactionID: string): string { - let form = this.getForm(); - const user = this.authService.getAuthenticatedUser(); - if (user) { - form = form.replace('EMAIL_VALUE', user.Email || user.EmailAddress); - } - form = form.replace('AMOUNT_VALUE', (amount || 0 ).toString()); - form = form.replace('METHOD_VALUE', method); - form = form.replace('ORDER_DESCRIPTION_VALUE', orderDesc); - form = form.replace('ORDER_ID_VALUE', transactionID); - form = form.replace('SERVICE_URL_VALUE', PaymentService.SERVICE_URL); - console.log(form); - const base64URL = 'data:text/html;base64,' + btoa(form); - console.log(base64URL); - return base64URL; - } - - public getForm(): string { - return ' ' + - '' + - '' + - '
' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
' + - '' + - '' + - ''; - } -} diff --git a/Mohem/src/app/hmg-common/ui/payment/service/payment.service.spec.ts b/Mohem/src/app/hmg-common/ui/payment/service/payment.service.spec.ts deleted file mode 100644 index 97018b11..00000000 --- a/Mohem/src/app/hmg-common/ui/payment/service/payment.service.spec.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { PaymentService } from './payment.service'; - -describe('PaymentService', () => { - beforeEach(() => TestBed.configureTestingModule({})); - - it('should be created', () => { - const service: PaymentService = TestBed.get(PaymentService); - expect(service).toBeTruthy(); - }); -}); diff --git a/Mohem/src/app/hmg-common/ui/payment/service/payment.service.ts b/Mohem/src/app/hmg-common/ui/payment/service/payment.service.ts deleted file mode 100644 index 2f6a9abf..00000000 --- a/Mohem/src/app/hmg-common/ui/payment/service/payment.service.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { PaymentInfoModel } from './models/payment-info.model'; -import { PaymentValidationRequest } from './models/payment-validation.request'; -import { PaymentValidationResponse } from './models/payment-validation.response'; -import { CommonService } from 'src/app/hmg-common/services/common/common.service'; -import { ConnectorService } from 'src/app/hmg-common/services/connector/connector.service'; -import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service'; -import { GuidService } from 'src/app/hmg-common/services/guid/guid.service'; -import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; - -import { Response } from 'src/app/hmg-common/services/models/response'; - -@Injectable({ - providedIn: 'root' -}) -export class PaymentService { - - public static MADA = 'MADA'; - public static MASTERCARD = 'MASTERCARD'; - public static SADAD = 'SADAD '; - public static VISA = 'VISA'; - public static INSTALMENT = 'INSTALMENT'; - private static SERVICE_URL = 'https://hmgwebservices.com/PayOneDev/Pay_Request.aspx'; - public static paymentStatusURL = 'Services/PayOne.svc/REST/PayOneGetRequestsByProjectServiceAndItem'; - - constructor( - public cs: CommonService, - public ts: TranslatorService, - public con: ConnectorService, - public authService: AuthenticationService, - public guid: GuidService - ) { } - - public getPaymentLanguageID(): number { - return TranslatorService.getCurrentLanguageName() == 'en' ? 1 : 0; - } - - public getPaymentStatus(transactionID: string, onError: any, errorLabel: string): - Observable { - const request = new PaymentValidationRequest(); - request.MerchantModuleSessionID = transactionID; - request.PayOneProject = 0; - request.PayOneService = 4; - request.LanguageID = this.getPaymentLanguageID(); - this.authService.authenticateRequest(request); - return this.con.postNoLoad(PaymentService.paymentStatusURL, request, onError); - } - - public openPayment(amount: number, transactionID: string, orderDesc: string): Observable { - return Observable.create(observer => { - // const transactionID = this.guid.generate(); - this.cs.openBrowser(this.generateURL(amount, orderDesc, transactionID), - () => this.notifyCallerDone(observer, true), - () => this.notifyCallerDone(observer, false), - () => this.notifyCallerDone(observer, true), - ['success' ]); - // this.hmgBrowser.registerBack(() => this.notifyCaller(observer, amount, transactionID)); - // this.hmgBrowser.registerClose(() => this.notifyCaller(observer, amount, transactionID)); - }); - } - - private notifyCaller(observer: any, amount: number, transactionID: string) { - observer.next(new PaymentInfoModel(amount, transactionID)); - observer.complete(); - } - - private notifyCallerDone(observer: any, done: boolean) { - observer.next(done); - observer.complete(); - } - - private generateURL(amount: number, orderDesc: string, transactionID: string): string { - let form = this.getForm(); - const user = this.authService.getAuthenticatedUser(); - // if (user) { - // form = form.replace('EMAIL_VALUE', user.Email || user.EmailAddress); - // } - form = form.replace('AMOUNT_VALUE', (amount || 0).toString()); - form = form.replace('ORDER_DESCRIPTION_VALUE', orderDesc); - form = form.replace('SESSION_ID_VALUE', transactionID); - form = form.replace('REQUEST_ID_VALUE', transactionID); - form = form.replace('PROJECT_ID_VALUE', 'ENTED'); - form = form.replace('SERVICE_URL_VALUE', PaymentService.SERVICE_URL); - console.log(form); - const base64URL = 'data:text/html;base64,' + btoa(form); - console.log(base64URL); - return base64URL; - } - - public getForm(): string { - return ' ' + - '' + - '' + - '
' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
' + - '' + - '' + - ''; - } -} diff --git a/Mohem/src/app/hmg-common/ui/sms/service/smsservice.ts b/Mohem/src/app/hmg-common/ui/sms/service/smsservice.ts index 42be9586..28fc9edd 100644 --- a/Mohem/src/app/hmg-common/ui/sms/service/smsservice.ts +++ b/Mohem/src/app/hmg-common/ui/sms/service/smsservice.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { UserDetailsRequest } from './model/user-details.request'; import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service'; import { ConnectorService } from 'src/app/hmg-common/services/connector/connector.service'; -import { UserLocalNotificationService } from 'src/app/hmg-common/services/user-local-notification/user-local-notification.service'; +//import { UserLocalNotificationService } from 'src/app/hmg-common/services/user-local-notification/user-local-notification.service'; import { Observable } from 'rxjs'; import { Response } from 'src/app/hmg-common/services/models/response'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; @@ -26,7 +26,7 @@ export class SMSService { constructor( public con: ConnectorService, public auth: AuthenticationService, - public notifications: UserLocalNotificationService, + //public notifications: UserLocalNotificationService, public ts: TranslatorService ) { } diff --git a/Mohem/src/app/hmg-common/ui/smsdialog/service/smsdialogservice.ts b/Mohem/src/app/hmg-common/ui/smsdialog/service/smsdialogservice.ts index a37ab47d..4a301077 100644 --- a/Mohem/src/app/hmg-common/ui/smsdialog/service/smsdialogservice.ts +++ b/Mohem/src/app/hmg-common/ui/smsdialog/service/smsdialogservice.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { UserDetailsRequest } from './model/user-details.request'; import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service'; import { ConnectorService } from 'src/app/hmg-common/services/connector/connector.service'; -import { UserLocalNotificationService } from 'src/app/hmg-common/services/user-local-notification/user-local-notification.service'; +//import { UserLocalNotificationService } from 'src/app/hmg-common/services/user-local-notification/user-local-notification.service'; import { Observable } from 'rxjs'; import { Response } from 'src/app/hmg-common/services/models/response'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; @@ -21,7 +21,7 @@ export class SMSDialogService { constructor( public con: ConnectorService, public auth: AuthenticationService, - public notifications: UserLocalNotificationService, + //public notifications: UserLocalNotificationService, public ts: TranslatorService ) { } diff --git a/Mohem/src/app/home/home.page.html b/Mohem/src/app/home/home.page.html index 78267079..917b961e 100644 --- a/Mohem/src/app/home/home.page.html +++ b/Mohem/src/app/home/home.page.html @@ -48,7 +48,7 @@ - diff --git a/Mohem/src/app/home/home.page.ts b/Mohem/src/app/home/home.page.ts index da4a1374..27c10325 100644 --- a/Mohem/src/app/home/home.page.ts +++ b/Mohem/src/app/home/home.page.ts @@ -24,6 +24,8 @@ import { DomSanitizer } from '@angular/platform-browser'; //import { Base64 } from "@ionic-native/base64/ngx"; import {FileUploderProfileComponent} from '../hmg-common/ui/file-uploder-profile/file-uploder-profile.component' import { SharedDataService } from '../hmg-common/services/shared-data-service/shared-data.service'; +import { DevicePermissionsService } from '../hmg-common/services/device-permissions/device-permissions.service'; + @Component({ selector: "app-home", templateUrl: "./home.page.html", @@ -42,6 +44,8 @@ export class HomePage implements OnInit { public maxFileSize =10 * 1024 * 1024; public fileUploder :FileUploaderComponent; // public fileUploderProfile:FileUploderProfileComponent + location: boolean; + camera: boolean constructor( public ts: TranslatorService, public menu: MenuController, @@ -62,6 +66,8 @@ export class HomePage implements OnInit { //private transfer: Transfer, private file: File, //private filePath: FilePath + private permissions: DevicePermissionsService + ) { this.events.subscribe("img-change", displayImg => { @@ -77,30 +83,48 @@ export class HomePage implements OnInit { this.getUserDetails(); this.getMenu(); this.setServicesPrivilage(); - this.geolocation - .getCurrentPosition() - .then(resp => { - // resp.coords.latitude - // resp.coords.longitude - //console.log("Loc 3"); - console.log(resp.coords.latitude); - console.log(resp.coords.longitude); - this.lat=resp.coords.latitude; - this.longt=resp.coords.longitude; - }) - .catch(error => { - console.log("Error getting location", error); - }); + this.getCount(); + this.events.subscribe("getNotCount", badge => { + this.notBadge = badge; + }); } - setServicesPrivilage(){ - for(let i=0;i { + this.location = granted as boolean; + if (this.location) { + this.geolocation + .getCurrentPosition({ maximumAge: 3000, timeout: 10000, enableHighAccuracy: true }) + .then(resp => { + console.log(resp.coords.latitude); + console.log(resp.coords.longitude); + this.lat = resp.coords.latitude; + this.longt = resp.coords.longitude; + this.attendance(); + }) + .catch(error => { + console.log("Error getting location", error); + }); + + } else { + return false; + } + }); + + } + + + setServicesPrivilage() { + for (let i = 0; i < AuthenticationService.servicePrivilage.length; i++) + if (AuthenticationService.servicePrivilage[i].Previlege == false) { + document.getElementById(AuthenticationService.servicePrivilage[i].ServiceName).setAttribute("disabled", "disabled"); + document.getElementById(AuthenticationService.servicePrivilage[i].ServiceName).style.filter = "grayscale(1)" + } } getCount() { const req: any = {}; @@ -148,8 +172,8 @@ export class HomePage implements OnInit { //console.log("Loc 1"); console.log(resp.coords.latitude); console.log(resp.coords.longitude); - this.lat=resp.coords.latitude; - this.longt=resp.coords.longitude; + this.lat = resp.coords.latitude; + this.longt = resp.coords.longitude; }) .catch(error => { console.log("Error getting location", error); @@ -279,8 +303,13 @@ export class HomePage implements OnInit { // }; //console.log("your currnt location is"); //console.log("Loc"); - - this.scanCode(); + this.permissions.requestCameraAutherization().then(granted => { + this.camera = granted as boolean; + if (this.camera) { + this.scanCode(); + } + } + ); } scanCode() { @@ -298,16 +327,16 @@ export class HomePage implements OnInit { // alert(error); // Error message // }); - this.barcodeScanner.scan().then(barcodeData => { - console.log('Barcode data', barcodeData); - // let strResult = JSON.parse(barcodeData); - // console.log(strResult.QRValue); - this.scannedResult = barcodeData; - this.deviceID = this.device.uuid; - this.swipeAttendance(); - }).catch(err => { - console.log('Error', err); - }); + this.barcodeScanner.scan().then(barcodeData => { + console.log('Barcode data', barcodeData); + // let strResult = JSON.parse(barcodeData); + // console.log(strResult.QRValue); + this.scannedResult = barcodeData; + this.deviceID = this.device.uuid; + this.swipeAttendance(); + }).catch(err => { + console.log('Error', err); + }); } swipeAttendance() { diff --git a/Mohem/src/app/my-team/details/details.component.html b/Mohem/src/app/my-team/details/details.component.html index 043824ba..0d7d2ea5 100644 --- a/Mohem/src/app/my-team/details/details.component.html +++ b/Mohem/src/app/my-team/details/details.component.html @@ -2,7 +2,7 @@ - + {{headerTitle}} diff --git a/Mohem/src/app/my-team/details/details.component.ts b/Mohem/src/app/my-team/details/details.component.ts index 52feb11f..391c5377 100644 --- a/Mohem/src/app/my-team/details/details.component.ts +++ b/Mohem/src/app/my-team/details/details.component.ts @@ -15,6 +15,7 @@ import { IonInfiniteScroll } from '@ionic/angular'; }) export class DetailsComponent implements OnInit { + public static opendEmployeesARR='opend_employees_arr'; @ViewChild(IonInfiniteScroll) infiniteScroll: IonInfiniteScroll; pageNum: number = 1; pageLimit: number = 50; @@ -27,6 +28,7 @@ export class DetailsComponent implements OnInit { infiniteRequest: any; isSpecialist: boolean = false; selMenu: MenuResponse = new MenuResponse(); + public opendEmployees :any=[]; public headerTitle: string = ""; constructor( public menuService: MenuService, @@ -34,17 +36,30 @@ export class DetailsComponent implements OnInit { public myTeamService: MyTeamService, public ts: TranslatorService, public modalController: ModalController, - private location: Location + private location: Location, + public authService: AuthenticationService, ) { console.log("Constuctor called"); } ngOnInit() { + this.intializeMemberDetail(); + } + + intializeMemberDetail(userID?){ + this.pageLimit = 50; this.pageNum = 1; this.employee = this.common.sharedService.getSharedData( MyTeamService.EMPLOYEE_SHARED_DATA, false ); + let employees = this.common.sharedService.getSharedData( DetailsComponent.opendEmployeesARR, false); + if( employees ){ + this.opendEmployees.push(this.employee); + this.common.sharedService.setSharedData(this.opendEmployees, DetailsComponent.opendEmployeesARR); + } + //this.opendEmployees = employees; + console.log(this.employee); this.selMenu = this.common.sharedService.getSharedData( MenuResponse.SHARED_DATA, @@ -62,12 +77,30 @@ export class DetailsComponent implements OnInit { // ? this.navParams.get("isSpecialist") // : false; - if (this.employee) this.getEmpSubordinate(); + if (this.employee) this.getEmpSubordinate(userID); } + + goback() { - this.location.back(); + //this.location.back(); + const user = this.authService.getAuthenticatedUser(); + if(this.employee.SUPERVISOR_NUMBER==user.EMPLOYEE_NUMBER){ + this.opendEmployees=[]; + this.common.openMyTeamPage(); + }else{ + for(let i=0;i { + }); let tree = this.common.list_to_tree(list); this.common.sharedService.setSharedData(tree, "menuEntries"); // this.common.navigateForward("/eit/homepage"); @@ -250,6 +291,12 @@ export class DetailsComponent implements OnInit { // this.navCtrl.push("MenuEntriesPage", { menuEntries: tree }); } + public async close() { + const modal = await this.modalController.getTop(); + if (modal) { + modal.dismiss(); + } + } goToSubordinate() { this.selMenu.search=true; this.common.sharedService.setSharedData( diff --git a/Mohem/src/app/my-team/home/home.component.html b/Mohem/src/app/my-team/home/home.component.html index 74b1d75e..c8c724bd 100644 --- a/Mohem/src/app/my-team/home/home.component.html +++ b/Mohem/src/app/my-team/home/home.component.html @@ -17,8 +17,7 @@ - - + {{headerTitle}} diff --git a/Mohem/src/app/my-team/home/home.component.ts b/Mohem/src/app/my-team/home/home.component.ts index 49ed1cac..9c10846e 100644 --- a/Mohem/src/app/my-team/home/home.component.ts +++ b/Mohem/src/app/my-team/home/home.component.ts @@ -6,6 +6,7 @@ import { AuthenticationService } from "src/app/hmg-common/services/authenticatio import { MenuResponse } from "src/app/hmg-common/services/menu/models/menu-response"; import { MyTeamService } from "../service/my-team.service"; import { ModalController } from "@ionic/angular"; +import { DetailsComponent } from '../details/details.component'; @Component({ selector: "app-home", templateUrl: "./home.component.html", @@ -34,6 +35,7 @@ export class HomeComponent implements OnInit { ) {} ngOnInit() { + this.common.sharedService.setSharedData( [], DetailsComponent.opendEmployeesARR); this.setIntitial(); } goback() { @@ -205,6 +207,7 @@ export class HomeComponent implements OnInit { animated: false, componentProps: { isSearch: true } }); + modal.cssClass="full-modal"; let dismissed = modal.onDidDismiss(); dismissed.then(() => { this.isSearch = false; @@ -216,4 +219,5 @@ export class HomeComponent implements OnInit { dismissed: true }); } + } diff --git a/Mohem/src/app/notification/worklist-main/worklist-main.component.html b/Mohem/src/app/notification/worklist-main/worklist-main.component.html index b0d50602..552601bb 100644 --- a/Mohem/src/app/notification/worklist-main/worklist-main.component.html +++ b/Mohem/src/app/notification/worklist-main/worklist-main.component.html @@ -131,6 +131,6 @@ {{ts.trPK('general','submit')}}
- next + {{ts.trPK('workListMain','skip')}}
\ No newline at end of file diff --git a/Mohem/src/app/notification/worklist-main/worklist-main.component.ts b/Mohem/src/app/notification/worklist-main/worklist-main.component.ts index 62a0436d..3276d731 100644 --- a/Mohem/src/app/notification/worklist-main/worklist-main.component.ts +++ b/Mohem/src/app/notification/worklist-main/worklist-main.component.ts @@ -14,6 +14,8 @@ import { WorklistMainService } from "../service/work-list.main.service"; import { HomeComponent } from "src/app/notification/home/home.component"; import { TextInput } from 'src/app/uI-elements/text.input'; import { TextAreaInput } from 'src/app/uI-elements/text-area.input'; +import { MenuService } from 'src/app/hmg-common/services/menu/menuservice.service'; +import { Events } from '@ionic/angular'; @Component({ selector: "app-worklist-main", templateUrl: "./worklist-main.component.html", @@ -49,11 +51,14 @@ export class WorklistMainComponent implements OnInit { notificationDynamicAttributeArr:any; private textInput: TextInput; private textArea: TextAreaInput; + notificationCount: any; constructor( public common: CommonService, public ts: TranslatorService, public worklistMainService: WorklistMainService, public elementRef: ElementRef, + public menuService: MenuService, + public events: Events, ) { } ngOnInit() { @@ -167,6 +172,7 @@ export class WorklistMainComponent implements OnInit { // this.notificationArray.splice(i, 1); // } // } + this.getNotificationCountAfterSubmit(); this.nextNotfification(); } } // valid it @@ -194,7 +200,6 @@ export class WorklistMainComponent implements OnInit { } actionButton() { - console.log("test>>>>>>>>>>>>>>"); let ButtonAction: string = this.actionType; var responseAttrDic = this.notExampleJsonObject; this.P_RESPOND_ATTRIBUTES_TBL = []; @@ -357,6 +362,8 @@ export class WorklistMainComponent implements OnInit { this.common.openWorklistHistoryPage(); } + + openSupportDocuments() { // this.navCtrl.push("WorkListAttachPage", { // passNotificationInfo: this.getPassNotificationDetails @@ -437,4 +444,18 @@ export class WorklistMainComponent implements OnInit { this.common.openNotificationDetailsPage(); } } + + getNotificationCountAfterSubmit() { + const req: any = {}; + this.menuService.getNotificationCount(req).subscribe((result: any) => { + if (this.common.validResponse(result)) { + this.notificationCount = + result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM; + if (this.notificationCount <= 0) { + this.notificationCount = null; + } + this.events.publish("getNotCount", this.notificationCount); + } + }); + } } diff --git a/Mohem/src/assets/localization/i18n.json b/Mohem/src/assets/localization/i18n.json index b405020b..4b18e08b 100644 --- a/Mohem/src/assets/localization/i18n.json +++ b/Mohem/src/assets/localization/i18n.json @@ -129,6 +129,10 @@ "en": "Birth Date", "ar": "تاريخ الميلاد" }, + "timeout": { + "en": " The connection timeout expired due to an error in the network or servers may be busy!", + "ar": " انتهت مهلة الاتصال بسبب خطأ في الشبكة أو الخوادم قد تكون مشغولة!" + }, "alert": { "en": "Alert", "ar": "تنبية" @@ -1371,11 +1375,33 @@ "ar": "قائمة الموافقين" } }, + "permissions": { + "camera": { + "en": "Camera access require user permission", + "ar": "وصول الكاميرا تتطلب إذن المستخدم" + }, + "location": { + "en": "Location access require user permission", + "ar": "وصول تحديد الموقع تتطلب إذن المستخدم" + }, + "check-updates": { + "en": "Update new access permissions", + "ar": "تحديث صلاحيات الإستخدام الجديدة" + }, + "enable-location": { + "en": "Location services must be enabled to use this service", + "ar": "يجب تمكين خدمات تحديد الموقع لاستخدام هذه الخدمة" + } + }, "workListMain": { "suppDoc": { "en": "Support Documents", "ar": "مستندات الدعم" }, + "skip": { + "en": "skip", + "ar": "تخطى" + }, "rfc": { "en": "Return for correction", "ar": "عودة لتصحيح" diff --git a/Mohem/src/theme/styles.scss b/Mohem/src/theme/styles.scss index 291b459d..4d013327 100644 --- a/Mohem/src/theme/styles.scss +++ b/Mohem/src/theme/styles.scss @@ -42,6 +42,10 @@ ion-label{ .profileDiv{ margin: 5px auto !important; } +.full-modal{ + --height:100%; + --width:100%; +} .profileImg{ width: 90px; height: 90px; diff --git a/app document/CS/Android/google-services.json b/app document/CS/Android/google-services.json new file mode 100644 index 00000000..62fbaeae --- /dev/null +++ b/app document/CS/Android/google-services.json @@ -0,0 +1,40 @@ +{ + "project_info": { + "project_number": "679409052782", + "firebase_url": "https://mohemm-dce93.firebaseio.com", + "project_id": "mohemm-dce93", + "storage_bucket": "mohemm-dce93.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:679409052782:android:dba155ac0859d7fea78a7f", + "android_client_info": { + "package_name": "hmg.cloudSolutions.mohem" + } + }, + "oauth_client": [ + { + "client_id": "679409052782-mtd6d8rjltucnm9uatn6g7et08sm6lbv.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyDgWjuSBIKGghWxYg_KGBRIZTi-O_UA8mU" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "679409052782-mtd6d8rjltucnm9uatn6g7et08sm6lbv.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app document/HMG/google-services.json b/app document/HMG/google-services.json new file mode 100644 index 00000000..4dfaa0d3 --- /dev/null +++ b/app document/HMG/google-services.json @@ -0,0 +1,40 @@ +{ + "project_info": { + "project_number": "448880075189", + "firebase_url": "https://al-habib-mohemm.firebaseio.com", + "project_id": "al-habib-mohemm", + "storage_bucket": "al-habib-mohemm.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:448880075189:android:5bb4821d515a826d88b9fc", + "android_client_info": { + "package_name": "com.cloudsolutions.alhabibmohemm" + } + }, + "oauth_client": [ + { + "client_id": "448880075189-49hc2l78pr9hsmr9p3k7j411r40diej8.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyC8nrli7eyuRNow8nF-QHvDMOxqUkj6fEw" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "448880075189-49hc2l78pr9hsmr9p3k7j411r40diej8.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app document/icons.zip b/app document/icons.zip new file mode 100644 index 00000000..5e769895 Binary files /dev/null and b/app document/icons.zip differ diff --git a/app document/phase 2 documents/.~lock.ESS API Integration V 0 34.doc# b/app document/phase 2 documents/.~lock.ESS API Integration V 0 34.doc# new file mode 100644 index 00000000..007e0a67 --- /dev/null +++ b/app document/phase 2 documents/.~lock.ESS API Integration V 0 34.doc# @@ -0,0 +1 @@ +,HMG/Mohamed.Mekawy,CS-1F-MOHAMED,01.10.2019 15:25,file:///C:/Users/mohamed.mekawy/AppData/Roaming/LibreOffice/4; \ No newline at end of file diff --git a/app document/phase 2 documents/ESS API Integration V 0 34.doc b/app document/phase 2 documents/ESS API Integration V 0 34.doc new file mode 100644 index 00000000..408fb5c5 Binary files /dev/null and b/app document/phase 2 documents/ESS API Integration V 0 34.doc differ diff --git a/app document/phase 2 documents/ESS Phase 2 methods.txt b/app document/phase 2 documents/ESS Phase 2 methods.txt new file mode 100644 index 00000000..a136e98f --- /dev/null +++ b/app document/phase 2 documents/ESS Phase 2 methods.txt @@ -0,0 +1,48 @@ +GET_SHIFT_TYPES +GET_TIME_CARD_SUMMARY +GET_DAY_HOURS_TYPE_DETAILS +GET_SCHEDULE_SHIFTS_DETAILS +GET_SWIPES +GET_PAYSLIP +GET_SUMMARY_OF_PAYMENT +GET_EARNINGS +GET_DEDUCTIONS +GET_PAYMENT_INFORMATION +GET_MO_NOTIFICATION_BODY +GET_PR_NOTIFICATION_BODY +GET_PO_NOTIFICATION_BODY +GET_PO_ITEM_HISTORY +GET_QUOTATION_ANALYSIS +GET_PENDING_REQ_FUNCTIONS +GET_PENDING_REQ_DETAILS +UPDATE_EMPLOYEE_IMAGE +GET_OBJECT_VALUES +GET_EMPLOYEE_PHONES +SUBMIT_PHONES_TRANSACTION +START_PHONES_APPROVAL_PROCESS +GET_PHONES_NOTIFICATION_BODY +GET_EMPLOYEE_BASIC_DETAILS +GET_BASIC_DET_COLS_STRUCTURE +GET_BASIC_DET_DFF_STRUCTURE +SUBMIT_BASIC_DET_TRANSACTION +START_BASIC_DET_APPR_PROCESS +GET_BASIC_DET_NTF_BODY +GET_MO_ITEM_HISTORY +GET_COUNTRIES +GET_EMPLOYEE_ADDRESS +GET_ADDRESS_DFF_STRUCTURE +SUBMIT_ADDRESS_TRANSACTION +START_ADDRESS_APPROVAL_PROCESS +GET_ADDRESS_NOTIFICATION_BODY +GET_EMPLOYEE_CONTACTS +GET_CONTACT_DETAILS +GET_CONTACT_COLS_STRUCTURE +GET_CONTACT_DFF_STRUCTURE +SUBMIT_CONTACT_TRANSACTION +START_CONTACT_APPROVAL_PROCESS +GET_TERM_COLS_STRUCTURE +GET_TERM_DFF_STRUCTURE +SUBMIT_TERM_TRANSACTION +START_TERM_APPROVAL_PROCESS +GET_TERM_NOTIFICATION_BODY +GET_CONTACT_NOTIFICATION_BODY \ No newline at end of file diff --git a/app document/phase 2 documents/cr-3629-employee app 2.pdf b/app document/phase 2 documents/cr-3629-employee app 2.pdf new file mode 100644 index 00000000..f4c92c05 Binary files /dev/null and b/app document/phase 2 documents/cr-3629-employee app 2.pdf differ