new modification

main
sajan 3 years ago
parent 92249688d9
commit 3435381a7b

301
package-lock.json generated

@ -40,6 +40,7 @@
"ngx-toastr": "13.2.1",
"ngx-trend": "6.1.1",
"pdfmake": "^0.2.5",
"qrcode": "^1.5.3",
"rxjs": "7.0.0",
"sweetalert2": "^11.7.16",
"to-words": "^3.2.0",
@ -3100,7 +3101,6 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"dev": true,
"engines": {
"node": ">=8"
}
@ -5357,7 +5357,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
@ -5635,6 +5634,11 @@
"integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
"dev": true
},
"node_modules/dijkstrajs": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
"integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
},
"node_modules/dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@ -5860,8 +5864,7 @@
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"node_modules/emojis-list": {
"version": "3.0.0",
@ -5872,6 +5875,11 @@
"node": ">= 4"
}
},
"node_modules/encode-utf8": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz",
"integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
},
"node_modules/encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
@ -6713,7 +6721,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
"dependencies": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
@ -7050,7 +7057,6 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true,
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
@ -8174,7 +8180,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true,
"engines": {
"node": ">=4"
}
@ -8760,7 +8765,6 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"dependencies": {
"p-locate": "^4.1.0"
},
@ -10264,7 +10268,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
"dependencies": {
"p-try": "^2.0.0"
},
@ -10276,7 +10279,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"dependencies": {
"p-limit": "^2.2.0"
},
@ -10312,7 +10314,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true,
"engines": {
"node": ">=6"
}
@ -10520,7 +10521,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
"engines": {
"node": ">=4"
}
@ -10672,6 +10672,14 @@
"resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz",
"integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g=="
},
"node_modules/pngjs": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
"integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/pnp-webpack-plugin": {
"version": "1.6.4",
"resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz",
@ -11358,6 +11366,117 @@
"node": ">=6"
}
},
"node_modules/qrcode": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz",
"integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
"dependencies": {
"dijkstrajs": "^1.0.1",
"encode-utf8": "^1.0.3",
"pngjs": "^5.0.0",
"yargs": "^15.3.1"
},
"bin": {
"qrcode": "bin/qrcode"
},
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/qrcode/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/qrcode/node_modules/camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"engines": {
"node": ">=6"
}
},
"node_modules/qrcode/node_modules/cliui": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
"integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^6.2.0"
}
},
"node_modules/qrcode/node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/qrcode/node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/qrcode/node_modules/wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/qrcode/node_modules/yargs": {
"version": "15.4.1",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
"integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
"dependencies": {
"cliui": "^6.0.0",
"decamelize": "^1.2.0",
"find-up": "^4.1.0",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^4.2.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^18.1.2"
},
"engines": {
"node": ">=8"
}
},
"node_modules/qrcode/node_modules/yargs-parser": {
"version": "18.1.3",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
"dependencies": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/qs": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
@ -11705,7 +11824,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
@ -11713,8 +11831,7 @@
"node_modules/require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
},
"node_modules/requires-port": {
"version": "1.0.0",
@ -12351,8 +12468,7 @@
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
"node_modules/set-value": {
"version": "2.0.1",
@ -13269,7 +13385,6 @@
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
"integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
"dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@ -13283,7 +13398,6 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
"dev": true,
"dependencies": {
"ansi-regex": "^5.0.0"
},
@ -15772,8 +15886,7 @@
"node_modules/which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
},
"node_modules/wide-align": {
"version": "1.1.3",
@ -16027,8 +16140,7 @@
"node_modules/y18n": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
},
"node_modules/yallist": {
"version": "4.0.0",
@ -18794,8 +18906,7 @@
"ansi-regex": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"dev": true
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
},
"ansi-styles": {
"version": "3.2.1",
@ -20755,8 +20866,7 @@
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
},
"decode-uri-component": {
"version": "0.2.0",
@ -20988,6 +21098,11 @@
}
}
},
"dijkstrajs": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
"integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
},
"dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@ -21208,8 +21323,7 @@
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"emojis-list": {
"version": "3.0.0",
@ -21217,6 +21331,11 @@
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true
},
"encode-utf8": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz",
"integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
},
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
@ -21924,7 +22043,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
"requires": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
@ -22211,8 +22329,7 @@
"get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
},
"get-intrinsic": {
"version": "1.1.1",
@ -23145,8 +23262,7 @@
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
},
"is-glob": {
"version": "4.0.1",
@ -23617,7 +23733,6 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"requires": {
"p-locate": "^4.1.0"
}
@ -24860,7 +24975,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
"requires": {
"p-try": "^2.0.0"
}
@ -24869,7 +24983,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"requires": {
"p-limit": "^2.2.0"
}
@ -24895,8 +25008,7 @@
"p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
"pacote": {
"version": "11.2.4",
@ -25077,8 +25189,7 @@
"path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
},
"path-is-absolute": {
"version": "1.0.1",
@ -25196,6 +25307,11 @@
"resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz",
"integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g=="
},
"pngjs": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
"integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
},
"pnp-webpack-plugin": {
"version": "1.6.4",
"resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz",
@ -25749,6 +25865,92 @@
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
"qrcode": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz",
"integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
"requires": {
"dijkstrajs": "^1.0.1",
"encode-utf8": "^1.0.3",
"pngjs": "^5.0.0",
"yargs": "^15.3.1"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"requires": {
"color-convert": "^2.0.1"
}
},
"camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
},
"cliui": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
"integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
"requires": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^6.2.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
}
},
"yargs": {
"version": "15.4.1",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
"integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
"requires": {
"cliui": "^6.0.0",
"decamelize": "^1.2.0",
"find-up": "^4.1.0",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^4.2.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^18.1.2"
}
},
"yargs-parser": {
"version": "18.1.3",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
"requires": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
}
}
},
"qs": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
@ -26045,14 +26247,12 @@
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
},
"require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
},
"requires-port": {
"version": "1.0.0",
@ -26612,8 +26812,7 @@
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
"set-value": {
"version": "2.0.1",
@ -27410,7 +27609,6 @@
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
"integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@ -27421,7 +27619,6 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.0"
}
@ -29495,8 +29692,7 @@
"which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
},
"wide-align": {
"version": "1.1.3",
@ -29707,8 +29903,7 @@
"y18n": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
},
"yallist": {
"version": "4.0.0",

@ -42,6 +42,7 @@
"ngx-toastr": "13.2.1",
"ngx-trend": "6.1.1",
"pdfmake": "^0.2.5",
"qrcode": "^1.5.3",
"rxjs": "7.0.0",
"sweetalert2": "^11.7.16",
"to-words": "^3.2.0",

@ -0,0 +1,15 @@
export class PaymentInfoDto {
userId:string
tenderId:number
transId:number
status?:string
finalBidAmt?:number;
id?:any;
}

@ -358,7 +358,11 @@
</tr>
<tr class="hide-on-print">
<th colspan="12"><button *ngIf="showDownloadButton" mat-raised-button id="zipFile" class="hide-on-print DownloadZipButton" (click)="downloadWITZip()"> <i class="bi bi-file-earmark-zip" ></i> Download </button> </th>
<th colspan="12">
<button *ngIf="showDownloadButton" mat-raised-button id="zipFile" class="hide-on-print DownloadZipButton" (click)="downloadWITZip()"> <i class="bi bi-file-earmark-zip" ></i> Download </button>
<p *ngIf="!showDownloadButton">Documents can Only be download between {{tenderData.saleStartDate | date: 'MMM d, y, h:mm:ss a'}} and {{tenderData.saleEndDate| date: 'MMM d, y, h:mm:ss a'}}</p>
</th>
</tr>
</tbody>
@ -371,7 +375,11 @@
<tr class="hide-on-print">
<th colspan="12">Drawings <button *ngIf="showDownloadButton" mat-raised-button id="zipFile" class="hide-on-print DownloadZipButton" (click)="DownloadDrawingsZIP()"> <i class="bi bi-file-earmark-zip"></i> Download</button></th>
<th colspan="12">Drawings
<button *ngIf="showDownloadButton" mat-raised-button id="zipFile" class="hide-on-print DownloadZipButton" (click)="DownloadDrawingsZIP()"> <i class="bi bi-file-earmark-zip"></i> Download</button>
<p *ngIf="!showDownloadButton">Documents can Only be download between {{tenderData.saleStartDate | date: 'MMM d, y, h:mm:ss a'}} and {{tenderData.saleEndDate| date: 'MMM d, y, h:mm:ss a'}}</p>
</th>
</tr>

@ -515,7 +515,7 @@ UploadNoticeFiles(event: any, i: number, type: string) {
}
TenderFeeDetails(){
if( this.tenderData.tenderFee == null || this.tenderData.tenderFee == undefined){
if( this.tenderData.tenderFee == null || this.tenderData.tenderFee == undefined || this.tenderData.tenderFee <1 ){
this._ui.toastMessage(this.errorTranslateService.translate("tenderFeeInCantBeBlank"),2000,true);
}
// else if(this.tenderData.feePayableTo =='' || this.tenderData.feePayableTo == null || this.tenderData.feePayableTo == undefined){
@ -564,9 +564,9 @@ UploadNoticeFiles(event: any, i: number, type: string) {
this._ui.toastMessage(this.errorTranslateService.translate("workDescriptionCantBeBlank"),2000,true);
}
else if( this.tenderData.tenderValue == null || this.tenderData.tenderValue == undefined){
this._ui.toastMessage(this.errorTranslateService.translate("tenderValueCantBeBlank"),2000,true);
}
// else if( this.tenderData.tenderValue == null || this.tenderData.tenderValue == undefined){
// this._ui.toastMessage(this.errorTranslateService.translate("tenderValueCantBeBlank"),2000,true);
// }
else if( this.tenderData.productCategory == null || this.tenderData.productCategory == undefined){
this._ui.toastMessage(this.errorTranslateService.translate("productCategoryCantBeBlank"),2000,true);
}

@ -5,6 +5,8 @@ import { LayoutComponentComponent } from './layout-component/layout-component.co
import { HomeViewComponent } from './home-view/home-view.component';
import { HomeUploadComponent } from './home-upload/home-upload.component';
import { AddTendersComponent } from './add-tenders/add-tenders.component';
import { QrPaymentComponent } from './qr-payment/qr-payment.component';
import { PaymentDetailsComponent } from './payment-details/payment-details.component';
const routes: Routes = [
{
@ -13,10 +15,11 @@ const routes: Routes = [
{ path: 'dashboard', component: DashboardComponent },
{path:'tender-view/:id', component:HomeViewComponent},
{path:'tender-view/:id/:pay', component:HomeViewComponent},
{ path :'payment-details/:id' , component:PaymentDetailsComponent},
{path:'tender-upload/:id',component:HomeUploadComponent},
{ path: 'add-tenders', component: AddTendersComponent},
{ path: 'add-tenders/:id', component: AddTendersComponent}
{ path: 'add-tenders/:id', component: AddTendersComponent},
{ path: 'qr-payment/:id', component: QrPaymentComponent}
// { path: 'master', loadChildren: () => import('../master/master.module').then(m => m.MasterModule) },
// { path: 'report', loadChildren: () => import('../report/report.module').then(m => m.ReportModule) },

@ -137,7 +137,7 @@
</ng-container>
<ng-container matColumnDef="title">
<th mat-header-cell mat-sort-header *matHeaderCellDef class="table-headers" style="width:300px">
<th mat-header-cell mat-sort-header *matHeaderCellDef class="table-headers" style="width:270px">
{{ 'title' | translate }}
<!-- <mat-icon>sort</mat-icon> -->
</th>
@ -187,6 +187,22 @@
<ng-container matColumnDef="userPayments">
<th mat-header-cell *matHeaderCellDef class="table-headers" style="width:100px;text-align: center;">
{{ 'payments' | translate }}
<!-- <mat-icon>sort</mat-icon> -->
</th>
<td mat-cell *matCellDef="let element" style="padding: 5px;text-align: center;" class="table-content">
<button mat-button
(click)="goToPayment(element.id)" [disabled]="false">
<!-- <svg xmlns="http://www.w3.org/2000/svg" height="1em" style="height: 18px;" viewBox="0 0 512 512"><path d="M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64z" fill="#424242"/></svg> -->
<svg xmlns="http://www.w3.org/2000/svg" height="1.3em" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z" fill="#424242"/></svg>
</button>
</td>
</ng-container>
<ng-container matColumnDef="view">
<th mat-header-cell *matHeaderCellDef class="table-headers" style="width:100px;text-align: center;">
{{ 'view' | translate }}
@ -235,6 +251,26 @@
</td>
</ng-container>
<ng-container matColumnDef="Paymentstatus">
<th mat-header-cell *matHeaderCellDef class="table-headers" style="width:110px">
{{ 'Paymentstatus' | translate }}
</th>
<td mat-cell *matCellDef="let element" style="padding: 5px;text-align: center;" class="table-content">
<div *ngIf="element.countStatusP!= 0">
<svg (click)="goToPaymentDetails(element.id)" style="cursor: pointer;" xmlns="http://www.w3.org/2000/svg" height="1.4em" viewBox="0 0 576 512"><path d="M512 80c8.8 0 16 7.2 16 16v32H48V96c0-8.8 7.2-16 16-16H512zm16 144V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V224H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm56 304c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H248z" fill="#424242"/></svg><span class="circle-span" >{{ element.countStatusP }}</span>
</div>
<div *ngIf="element.countStatusP == 0">
<svg (click)="goToPaymentDetails(element.id)" style="cursor: pointer;margin-left:-19px;" xmlns="http://www.w3.org/2000/svg" height="1.4em" viewBox="0 0 576 512"><path d="M512 80c8.8 0 16 7.2 16 16v32H48V96c0-8.8 7.2-16 16-16H512zm16 144V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V224H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm56 304c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H248z" fill="#424242"/></svg>
</div>
</td>
</ng-container>
<ng-container matColumnDef="loading">
<td mat-footer-cell *matFooterCellDef="" colspan="5">
{{ 'loadingData' | translate }}

@ -353,3 +353,18 @@ input {
font-weight: 800;
color:#4c4c4c;
}
.circle-span {
cursor: pointer;
display: inline-block;
width: 20px;
height: 20px;
background-color: white;
border-radius: 50%;
text-align: center;
line-height: 20px;
border: 1px solid rgb(202, 202, 202);
font-size: x-small;/* Optional: add a border to the circle */
transform: translate(-8px, -6px);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}

@ -64,6 +64,7 @@ export class DashboardComponent implements OnInit {
noData: boolean;
userId: string;
tenderId: number;
countStatusP: any;
constructor(
private _menuService: MenuService,
@ -85,10 +86,10 @@ export class DashboardComponent implements OnInit {
// this.emails$ = this.emailService.loadEmails();
// this.getSchoolLogo();
if(this.seculevel == 'B'){
this.displayedColumns = ['actions','title','publishedDate','bidOpenDate','status','view','report'];
this.displayedColumns = ['actions','title','publishedDate','bidOpenDate','status','Paymentstatus','view','report'];
}
else{
this.displayedColumns = ['slno','title','publishedDate','bidOpenDate','view','upload'];
this.displayedColumns = ['slno','title','publishedDate','bidOpenDate','userPayments','view','upload'];
}
}
@ -154,9 +155,15 @@ export class DashboardComponent implements OnInit {
else
this._masterService.getMasterData(apiUrl.adminTenderView +'?order[id]=DESC').then((res) =>{
this.tenderData = res;
console.log("dtat==",this.tenderData);
for(let element of res){
this._masterService.getMasterDatabyId(apiUrl.bidReport, element.id).then(result => {
element.countStatusP = result.countStatusP;
console.log("this.countStatusP ", element.countStatusP);
})
const publishDate: Date = new Date(element.publishDate);
const bidSubEndDate: Date = new Date(element.bidSubEndDate);
@ -210,6 +217,8 @@ export class DashboardComponent implements OnInit {
// this.enableDownload = true; // Disable the button
// console.log("disabled");
// }
}
convertDateFormat(dateString: string): string {
@ -331,7 +340,9 @@ export class DashboardComponent implements OnInit {
// return menuCompactData;
// }
goToPayment(id){
this.navigateTo(`qr-payment/${id}`)
}
public openMenu(): void {
this.isMenuOpened = !this.isMenuOpened;
@ -372,6 +383,10 @@ export class DashboardComponent implements OnInit {
this.router.navigate(['/tender-view',tenderId]);
}
goToPaymentDetails(tenderId){
this.router.navigate(['/payment-details',tenderId])
}
goToAddTenders(){
this.router.navigate(['/add-tenders']);
}

@ -32,6 +32,8 @@ import { LOCALE_ID } from '@angular/core';
import { MatDialogModule } from '@angular/material/dialog';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { DialogComponent } from './dialog/dialog.component';
import { QrPaymentComponent } from './qr-payment/qr-payment.component';
import { PaymentDetailsComponent } from './payment-details/payment-details.component';
// import { MatTimepickerModule } from 'mat-timepicker';
// import { MatTimepickerModule } from '@angular/material/timepicker';
@ -47,6 +49,8 @@ const lang = 'en-US';
TenderHomeComponent,
AddTendersComponent,
DialogComponent,
QrPaymentComponent,
PaymentDetailsComponent,
],
imports: [

@ -39,15 +39,19 @@
<!-- </nav> -->
<mat-progress-bar *ngIf="loading" mode="indeterminate" color="warn"></mat-progress-bar>
<!-- <br>
<div [hidden]="!qrImage" style="text-align: center;">
<img id="qrImage" alt="QR Code" >
</div> -->
<br>
<div class="text-center mt-4">
<h2 class="font-weight-bold " style="color: #5faca1;">Upload Files <i class="bi bi-cloud-upload"></i></h2>
</div><br>
<div class="container">
<div class="row resp" >
<!-- <div class="row resp" > -->
<div class="col-sm-8 offset-sm-2">
<div class="card">
<div class="card-responsive">
<div class="card-body">
<div class="form-group">
<form #myForm="ngForm">
@ -59,7 +63,10 @@
<input matInput #bidAmountInput placeholder="Enter Bid Amount" type="number" [(ngModel)]="bidAmount" [ngModelOptions]="{standalone: true}"/>
</mat-form-field>
<table id="customers">
<div style="overflow-x:auto;">
<table id="customers" >
<tr>
<th style="width:30%;text-align: center;">Description</th>
<th style="text-align: center;">Document</th>
@ -104,7 +111,9 @@
</tr>
</table><br><br>
</table>
</div>
<br><br>
<!-- <div style="margin-bottom: 20px;">
@ -163,7 +172,7 @@
</div>
</div>
</div>
</div>
<!-- </div> -->
</div>

@ -11,12 +11,12 @@ import { UiService } from 'src/app/_providers/_services/ui.service';
import Swal from 'sweetalert2'
import { DialogComponent } from '../dialog/dialog.component';
import { DatePipe } from '@angular/common';
@Component({
selector: 'app-home-upload',
templateUrl: './home-upload.component.html',
styleUrls: ['./home-upload.component.scss']
})
export class HomeUploadComponent implements OnInit {
phoneInvalid: boolean = false;
@ -69,6 +69,7 @@ export class HomeUploadComponent implements OnInit {
amountPaid: boolean = false;
OnlinePayment: boolean;
dialogRef: any;
constructor(
private router: Router,
@ -79,6 +80,10 @@ export class HomeUploadComponent implements OnInit {
public dialog: MatDialog,
private datePipe: DatePipe
) {
// this.generateUPIQRCode('atlejs47@oksbi', '100');
this.secuLevel = localStorage.getItem('seculevel');
this.userId = localStorage.getItem('userId');
this.tenderId = +this.route.snapshot.paramMap.get('id');
@ -96,14 +101,11 @@ export class HomeUploadComponent implements OnInit {
this.getData();
this.getFileFormatLov();
this.paymentCheck();
}
ngAfterViewInit(): void {
setTimeout(() => {
this.bidAmountInput.nativeElement.focus();
}, 0);
}
openDialog() {
@ -111,7 +113,7 @@ export class HomeUploadComponent implements OnInit {
width: '500px',
data: {
details: [
'I hereby declare that I have read and understood the trended documents, terms and conditions, drawings and specifications. The rates quoted are based on all the necessary understanding of the site conditions and challenges to carry out the work. The rates are the best I could offer and is inclusive of all taxes and levies.',
'I hereby declare that I have read and understood the tendered documents, terms and conditions, drawings and specifications. The rates quoted are based on all the necessary understanding of the site conditions and challenges to carry out the work. The rates are the best I could offer and are inclusive of all taxes and levies.',
]
}
});
@ -122,6 +124,14 @@ export class HomeUploadComponent implements OnInit {
});
}
openQrImage(templateRef) {
// console.log('this');
this.dialogRef = this.dialog.open(templateRef, {
width: '400px',
disableClose: false
});
// this.verifiedOtp = true
}
paymentCheck(){
this._masterService.getMasterDatabyId(apiUrl.paymentCheck, `${this.userId}/${this.tenderId}`).then(res => {
@ -365,4 +375,6 @@ if (result.isConfirmed) {
}
}

@ -351,6 +351,8 @@
<th colspan="12"><button *ngIf="showDownloadButton" mat-raised-button id="zipFile" (click)="downloadWITZip()" class=" DownloadZipButton hide-on-print"
> <i class="bi bi-file-earmark-zip"></i> Download as Zip File</button>
<p *ngIf="!showDownloadButton">Documents can Only be download between {{tenderData.saleStartDate | date: 'MMM d, y, h:mm:ss a'}} and {{tenderData.saleEndDate| date: 'MMM d, y, h:mm:ss a'}}</p>
</th>
</tr>
@ -383,7 +385,10 @@
<tr class="hide-on-print">
<th colspan="12">Description<button *ngIf="showDownloadButton" mat-raised-button id="zipFile" class="DownloadZipButton hide-on-print"
(click)="DownloadDrawingsZIP()" > <i class="bi bi-file-earmark-zip"></i> Download as Zip
File</button> </th>
File</button>
<p *ngIf="!showDownloadButton">Documents can Only be download between {{tenderData.saleStartDate | date: 'MMM d, y, h:mm:ss a'}} and {{tenderData.saleEndDate| date: 'MMM d, y, h:mm:ss a'}}</p>
</th>
</tr>

@ -293,31 +293,25 @@ export class HomeViewComponent implements OnInit {
async paymentGateway() {
// if(this.seculevel != 'B'){
this.paymentDetails = new PurchaseDto();
this.paymentDetails.application = this.tenderId;
this.paymentDetails.mobile = localStorage.getItem('mobile')
this.paymentDetails.email = "accuratesoftware2022@gmail.com";
this.paymentDetails.amount = this.tenderData.tenderFee;
this.paymentDetails.type = "I"
// this.paymentDetails.email=this.issueApplicationData.motherEmail
// console.log('this.newPaymentRow.paymentMethod ====',this.newPaymentRow);
// let paymentMethod = this.paymentMethodLovData.find(x=> x.id==this.newPaymentRow.paymentMethod)
// console.log('this.paymentDetails===', this.paymentDetails);
this._transactionService.createPayment(this.paymentDetails).then(
res => {
this.onSuccessPayment(res);
},
err => {
this.onFailurePayment(err);
// console.log("==er====", err);
}
);
// }
// this.paymentDetails = new PurchaseDto();
// this.paymentDetails.application = this.tenderId;
// this.paymentDetails.mobile = localStorage.getItem('mobile')
// this.paymentDetails.email = "accuratesoftware2022@gmail.com";
// this.paymentDetails.amount = this.tenderData.tenderFee;
// this.paymentDetails.type = "I"
// this._transactionService.createPayment(this.paymentDetails).then(
// res => {
// this.onSuccessPayment(res);
// },
// err => {
// this.onFailurePayment(err);
// }
// );
this.router.navigate([`qr-payment/${this.tenderId}`])
}

@ -0,0 +1,220 @@
<div class="buttonCard">
<button mat-stroked-button (click)="backButton()" class="backButton">
<i class="fa fa-arrow-left" aria-hidden="true"
style="top: 0px;position: relative;font-size: small;"></i>
Back
</button>
</div>
<div id="section-to-print" class="container" style="background-color: white;">
<div class="table-container" #table>
<div class="reportHeader">
<div class="row" style="text-align: center;">
<h2 class="bidHeading">Payment Details</h2>
</div>
<div class="row">
<h3 class="tenderInfo">Tender Information:</h3>
</div>
<div class="row">
<div class="col-6 col-sm-6 col-md-6 col-lg-6 col-xl-6">
<span class="subHead">
{{'tender'|translate}} :
<span class="subDetail"> {{headerData?.title}} </span>
</span>
</div>
</div>
<div class="row" style="margin-top: 5px;">
<div class="col-6 col-sm-6 col-md-6 col-lg-6 col-xl-6">
<span class="subHead">
{{'tenderId'|translate}} :
<span class="subDetail"> {{tenderInputId}} </span>
</span>
</div>
</div>
<br>
<div class="row">
<h3 class="tenderInfo">Payment Summary:</h3>
</div>
</div>
<table hidden="true">
<tr>
<th></th>
<th></th>
<th></th>
<th>{{title | translate}}</th>
<th></th>
<th></th>
</tr>
<tr>
<td></td>
<td>Tender Name</td>
<td>
{{headerData?.title}}
</td>
<td></td>
<td>Published Date</td>
<td>
{{headerData?.publishDate }}
</td>
</tr>
<tr>
<td></td>
<td>Tender Id</td>
<td>
{{tenderInputId }}
</td>
<td></td>
<td>Bid Open Date</td>
<td>
{{headerData?.bidOpenDate}}
</td>
</tr>
<tr></tr>
</table>
<div class="table-responsive">
<mat-table mat-table [dataSource]="dataSource" class="mat-elevation-z8" matSort matSortDisableClear="true"
(matSortChange)="sortData($event)">
<ng-container matColumnDef="slNo">
<th mat-header-cell *matHeaderCellDef style="text-align: center;width:80px" class="table-headers">
<div>
{{'slNo'|translate}}
</div>
</th>
<td mat-cell *matCellDef="let element let i=index" class="table-content" style="text-align: center;">
{{i+1}}
</td>
</ng-container>
<ng-container matColumnDef="name">
<th mat-header-cell mat-sort-header *matHeaderCellDef style="text-align: center;width:140px"
class="table-headers">
<div>
{{'name'|translate}}
</div>
</th>
<td mat-cell *matCellDef="let element" class="table-content">
{{element?.userName}}
</td>
</ng-container>
<ng-container matColumnDef="admissionNo">
<th mat-header-cell mat-sort-header *matHeaderCellDef style="text-align: center;" class="table-headers">
<div>
{{'admissionNo'|translate}}
</div>
</th>
<td mat-cell *matCellDef="let element" class="table-content">
{{element.rollNo }}
</td>
</ng-container>
<ng-container matColumnDef="mobileNumber">
<th mat-header-cell mat-sort-header *matHeaderCellDef style="text-align: center;width:170px"
class="table-headers">
<div>
{{'mobileNumber'|translate}}
</div>
</th>
<td mat-cell *matCellDef="let element" class="table-content">
{{element?.mobileNumber}}
</td>
</ng-container>
<ng-container matColumnDef="email">
<th mat-header-cell mat-sort-header *matHeaderCellDef style="text-align: center;width:170px" class="table-headers">
<div>
{{'emailId'|translate}}
</div>
</th>
<td mat-cell *matCellDef="let element" class="table-content">
{{element?.email}}
</td>
</ng-container>
<ng-container matColumnDef="transId">
<th mat-header-cell mat-sort-header *matHeaderCellDef style="text-align: center;width:200px" class="table-headers">
<div>
{{'TransactionId'|translate}}
</div>
</th>
<td mat-cell *matCellDef="let element" class="table-content">
{{element?.transId}}
</td>
</ng-container>
<ng-container matColumnDef="Paymentstatus">
<th mat-header-cell mat-sort-header *matHeaderCellDef style="text-align: center;width:200px" class="table-headers">
<div>
{{'Paymentstatus'|translate}}
</div>
</th>
<td mat-cell *matCellDef="let element" class="table-content">
<mat-select style="width: 65%;font-family: nucleo;"
[(ngModel)]="element.paymentStatus"
[ngModelOptions]="{standalone: true}" (ngModelChange)="onPaymentStatusChange(element.userId, element.paymentStatus)">
<mat-option *ngIf="element.status === 'P';" style="font-family: nucleo;" value="P">Pending</mat-option>
<mat-option style="font-family: nucleo;" value="D">Decline</mat-option>
<mat-option style="font-family: nucleo;" value="S">Confirm</mat-option>
</mat-select>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displaycolumns ;sticky: true;"></tr>
<tr mat-row *matRowDef="let row; columns: displaycolumns;"></tr>
</mat-table>
</div>
</div>
</div>
<div class="buttonCardBottom">
</div>

@ -0,0 +1,409 @@
// .header {
// margin-left: 4%;
// margin-top: 20px;
// }
// .header>h6{
// a {
// text-decoration: none;
// color: #262627;
// }
// a:hover {
// text-decoration: underline;
// cursor: pointer;
// }
// }
// mat-card{
// min-width: 180px ;
// // max-width: 20vw;
// height: 200px;
// display: inline-block;
// }
// mat-card:hover{
// cursor: pointer;
// }
// -----------------------------------------------------------------------------------
.nav-link:hover {
color: red;
}
th,
td {
padding: 10px;
// border: 1px solid #ccc;
word-wrap: break-word;
white-space: normal;
}
.h2 {
font-family: sans-serif;
font-size: 26px;
font-weight: 500;
}
.table td {
word-break: break-word;
}
.table-break-word {
word-break: break-word;
}
.top-bar {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
border: 1px solid #e3e3e3;
width: 100%;
margin: auto;
padding: auto;
}
.header {
padding: 20px;
width: 100%;
min-width: 350px;
}
.header>h6>a {
text-decoration: none;
color: #262627;
}
.header>h6>a:hover {
text-decoration: underline;
cursor: pointer;
}
mat-card {
min-width: 350px;
}
.top-left-float {
display: flex;
min-width: 282px;
}
.top-right-float {
display: flex;
min-width: 161px;
}
.top-left-float>button,
.top-right-float>button {
margin: 5px;
height: 40px;
}
mat-table {
padding-top: 10px !important;
// table-layout: fixed;
width: 100%;
display: table;
overflow-x: scroll;
.table-headers {
padding: 5px;
color: #505050;
font-weight: 900;
font-size: medium;
background-color: #f0f0f0;
font-family: nucleo;
}
.table-headers:hover {
background-color: #ececec;
color: #46AC9E;
}
.table-content {
padding: 5px;
overflow-wrap: inherit;
font-family: nucleo;
}
.table-column {
width: 100%;
}
}
input {
border: none;
border-bottom: 1px solid silver;
}
:host ::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) {
.mat-slide-toggle-thumb {
background-color: #46AC9E;
}
.mat-slide-toggle-bar {
background-color: skyblue;
}
}
// .dialog-body {
// display: flex;
// justify-content: center;
// align-items: center;
// div {
// width: 90%;
// }
// }
.dialog-actions {
display: flex;
flex-wrap: wrap;
width: 97%;
justify-content: space-between;
.btn-group-left {
// min-width: 150px;
margin-top: 5px;
}
.btn-group-right {
// min-width: 95px;
margin-top: 5px;
}
}
.hide {
display: none;
}
:host ::ng-deep {
.mat-form-field-infix {
border-bottom: 0px solid white;
}
.mat-table {
tr {
th,
td {
vertical-align: middle;
}
}
}
}
.img-fluid {
margin-right: 5px;
max-height: 40px;
}
// .navbar {
// background-position: center;
// }
@media (max-width: 767px) {
.card {
min-width: 600px;
}
}
@media print {
.buttonCard {
display: none;
}
.backButton {
display: none;
}
.printButton {
display: none;
}
.excelButton {
display: none;
}
}
.mat-row:nth-child(even) {
background-color: rgb(255, 255, 255);
}
.mat-row:nth-child(odd) {
background-color: rgb(241, 241, 241);
}
.table-container {
margin-top: 20px
}
.backButton {
float: left;
margin-top: 5px;
margin-bottom: 5px;
color: #424242;
background-color: white;
height: 37px;
border-radius: 9px;
font-family: nucleo;
// width: 8%;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
transform: translateY(5px);
}
.backButton:hover {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
/* You can adjust the shadow values to your preference */
}
.printButton {
float: right;
margin-top: 5px;
margin-bottom: 5px;
background-color: white;
color: #424242;
height: 37px;
border-radius: 9px;
font-family: nucleo;
width: 8%;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
.printButton:hover {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
/* You can adjust the shadow values to your preference */
}
.excelButton {
float: right;
margin-top: 5px;
margin-bottom: 5px;
color: #424242;
background-color: white;
height: 37px;
border-radius: 9px;
font-family: nucleo;
width: 8%;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
margin-right: 5px;
}
.excelButton:hover {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
/* You can adjust the shadow values to your preference */
}
.buttonCard {
width: 100%;
background-color: #ffffff;
height: 50px;
margin: 0px;
padding: 0px 16px 0px 16px;
margin-top: 20px;
}
.buttonCardBottom{
width: 100%;
background-color: #ffffff;
height: 50px;
margin: 0px;
padding: 0px 16px 0px 16px;
margin-bottom: 20px;
}
.reportHeader {
width: 100%;
background-color: #ffffff;
// height: 50px;
margin: 5px 0px 0px 0px;
}
.bidHeading {
font-family: texg;
color: #353535;
}
.tenderInfo {
font-family: texg;
color: #353535;
}
.subHead {
font-family: texg;
color: #353535;
}
.subDetail {
font-family: nucleo;
color: #353535;
}
.captchaFont {
font-family: captcha;
font-size: large;
}
.captchaDiv {
text-align: center;
height: 100px;
display: flex;
align-items: center;
justify-content: center;
background-image: url('/assets/img/captchaback.jpeg');
}
.captchaSubmit{
float: right;
margin-top: 5px;
margin-bottom: 5px;
color: #424242;
background-color: white;
height: 37px;
border-radius: 9px;
font-family: nucleo;
// width: 8%;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
margin-right: 5px;
}
.captchaSubmit:hover {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
background-color: rgb(240, 240, 240);
/* You can adjust the shadow values to your preference */
}
.rotate-icon {
animation: rotate 1s infinite;
}
@keyframes rotate {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.table-responsive {
overflow-x: scroll;
}

@ -0,0 +1,124 @@
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import { MatSort, Sort } from '@angular/material/sort';
import { MatTableDataSource } from '@angular/material/table';
import { ActivatedRoute, Router } from '@angular/router';
import { apiUrl } from 'src/app/_providers/_resources/api-url.properties';
import { MasterService } from 'src/app/_providers/_services/master.service';
import { UiService } from 'src/app/_providers/_services/ui.service';
@Component({
selector: 'app-payment-details',
templateUrl: './payment-details.component.html',
styleUrls: ['./payment-details.component.scss']
})
export class PaymentDetailsComponent implements OnInit {
title = 'Payment Details';
today: Date = new Date();
@ViewChild('table', { static: false }) table: ElementRef;
@ViewChild(MatSort, { static: false }) sort: MatSort;
displaycolumns: string[] = ['slNo', 'name', 'mobileNumber', 'email', 'transId', 'Paymentstatus'];
dataSource: MatTableDataSource<unknown>;
tenderId: number;
headerData: any;
tableData: any;
tenderInputId: any;
paymentStatus: any;
userId: string;
constructor(
private _router: Router,
private _masterService: MasterService,
private route: ActivatedRoute,
private _ui:UiService,
) {
this.tenderId = +this.route.snapshot.paramMap.get('id');
}
ngOnInit(): void {
this.getHeaderData(this.tenderId);
this.getTableData(this.tenderId);
}
getHeaderData(id) {
this._masterService.getMasterDatabyId(apiUrl.getTender, id).then(res => {
this.headerData = res;
this.tenderInputId = res.tenderId
})
}
getTableData(id) {
this._masterService.getMasterDatabyId(apiUrl.bidReport, id).then(res => {
console.log("res",res);
this.tableData = res.report
this.tableData.forEach(element => {
if (element.status === 'P') {
element.paymentStatus = 'P';
}
if(element.status === 'S'){
element.paymentStatus = 'S';
}
if(element.status === 'D'){
element.paymentStatus = 'D';
}
});
this.tableData.sort((a, b) => {
if (a.status === 'P' && b.status !== 'P') {
return -1;
} else if (a.status !== 'P' && b.status === 'P') {
return 1;
} else {
return 0;
}
});
this.dataSource = new MatTableDataSource(this.tableData);
this.dataSource.sort = this.sort;
})
}
navigateTo(destination) {
this._router.navigate([destination])
}
backButton() {
this.navigateTo('/dashboard')
// this.backClick.emit()
}
sortData(sort: Sort) {}
onPaymentStatusChange(userId, paymentStatus){
console.log("this.paymentStatus",paymentStatus);
let body = {
status : paymentStatus
}
this._masterService.postMasterData(apiUrl.paymentupdatePaymentStatus,body,`${userId}/${this.tenderId}`).then((res) =>{
console.log(res);
this._ui.toastMessage(res.data)
},err=>{
this._ui.toastMessage(err.error.message);
})
}
}

@ -0,0 +1,65 @@
<br>
<br>
<div [hidden]="!qrImage" style="text-align: center;">
<p>Payment Status : &nbsp; <b>{{paymentStatus}}</b></p>
<br>
<p>Amount need to be paid : &nbsp;₹{{amountReq}}/- Only</p>
<img id="qrImage" alt="QR Code" >
</div>
<br>
<div class="row">
<div class="col-1 col-sm-1 col-md-3 col-lg-3 col-xl-3"></div>
<div class="col-10 col-sm-10 col-md-6 col-lg-6 col-xl-6">
<p>Please provide the transaction id of payment you've made successfully.</p>
<mat-form-field class="input-style" appearance="outline" style="width:100%;">
<mat-label >Transaction ID </mat-label>
<input matInput placeholder="Enter Transaction ID" type="text" [(ngModel)]="transactionData.transId"/>
</mat-form-field>
<div style="text-align: center;">
<button mat-raised-button (click)="submit()" [disabled]="paymentStatus == 'Success'">Submit</button>
</div>
<div style="text-align: right;">
<a style="cursor: pointer;color: blue;" (click)="openHelpDialog(help)">help?</a>
</div>
</div>
<div class="col-1 col-sm-1 col-md-3 col-lg-3 col-xl-3"></div>
</div>
<ng-template #help>
<div>
<h6>How can I pay? </h6>
<ul>
<li>Launch the payment app on your smartphone</li>
<li>scan the code</li>
<li>Review the payment details to ensure they're correct, and then confirm the transaction</li>
</ul>
<h6>How do I get my Transaction Id? </h6>
<ul>
<li>The method to obtain a transaction ID for a QR code payment can vary depending on the payment app you're using and the platform through which you made the payment. Generally, when you make a payment using a QR code, the transaction ID is usually generated and provided to you as a confirmation of the completed payment. please check your payment app or mail for Transaction ID</li>
</ul>
<h6>How can I ensure that the payment was successful?</h6>
<ul>
<li>After your successfull payment,enter the transaction Id</li>
<li>After the confirmation from Bank, your payment status will be changed from Pending to Paid</li>
</ul>
<h6>Can I change the Transaction ID once it has been saved?</h6>
<ul>
<li>You can edit the transaction ID after saving also</li>
<li>Editing Must be before the appropriate date</li>
</ul>
<p>more info : tscb178@gmail.com</p>
<div style="text-align: right;">
<a style="color: #46AC9E;cursor: pointer;" (click)="closeDialog()">Close</a>
</div>
</div>
</ng-template>

@ -0,0 +1,6 @@
.md-dialog-container {
background-color: #000;
width: 600px;
height: 600px
}

@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { QrPaymentComponent } from './qr-payment.component';
describe('QrPaymentComponent', () => {
let component: QrPaymentComponent;
let fixture: ComponentFixture<QrPaymentComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ QrPaymentComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(QrPaymentComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,167 @@
import { DatePipe } from '@angular/common';
import { Component, OnInit } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Router } from '@angular/router';
import * as QRCode from 'qrcode';
import { PaymentInfoDto } from 'src/app/_dto/payment-info.dto';
import { apiUrl } from 'src/app/_providers/_resources/api-url.properties';
import { ErrorTranslateService } from 'src/app/_providers/_services/error-translate.service';
import { MasterService } from 'src/app/_providers/_services/master.service';
import { UiService } from 'src/app/_providers/_services/ui.service';
import { environment } from 'src/environments/environment.prod';
@Component({
selector: 'app-qr-payment',
templateUrl: './qr-payment.component.html',
styleUrls: ['./qr-payment.component.scss']
})
export class QrPaymentComponent implements OnInit {
secuLevel: string;
userId: string;
tenderId: number;
transactionData: PaymentInfoDto;
amountReq: any;
dialogRef: any;
paymentStatus: any;
paymentId: any;
constructor(
private router: Router,
private route: ActivatedRoute,
private _ui: UiService,
private _errorTranslate: ErrorTranslateService,
private _masterService: MasterService,
private dialog: MatDialog,
private datePipe: DatePipe
) {
this.secuLevel = localStorage.getItem('seculevel');
this.userId = localStorage.getItem('userId');
this.tenderId = +this.route.snapshot.paramMap.get('id');
}
qrImage: boolean = false;
transId: any
ngOnInit(): void {
this.transactionData = new PaymentInfoDto()
this.getData();
}
// ngAfterViewInit(): void {
// setTimeout(() => {
// }, 1000);
// }
getData() {
this._masterService.getMasterDatabyId(apiUrl.getTender, this.tenderId).then(res => {
this.amountReq = res.tenderFee;
this.generateUPIQRCode(environment.upiId, this.amountReq);
})
this.paymentCheck();
}
paymentCheck() {
this._masterService.getMasterDatabyId(apiUrl.paymentUserCheck + `/${this.userId}`, this.tenderId).then(res => {
console.log(res);
if (res && res[0].status) {
if (res[0].status == 'P') {
this.paymentStatus = 'Pending'
}
if (res[0].status == 'D') {
this.paymentStatus = 'Declined'
}
if (res[0].status == 'S') {
this.paymentStatus = 'Success'
}
this.paymentId = res[0].id
}
}, err => {
if (err.error.message.trim() == "User Payment Not Found") {
this.paymentStatus = 'Payment Not Started'
this.transactionData.status = 'P'
}
})
}
generateUPIQRCode(upiID: string, amount: string): void {
const upiLink = `upi://pay?pa=${upiID}&am=${amount}&tn=Tender%20Fee`;
QRCode.toDataURL(upiLink, { errorCorrectionLevel: 'L' }, (err, qrDataURL) => {
if (err) {
console.error(err);
return;
}
// console.log('url==', qrDataURL);
const qrImageElement = document.getElementById('qrImage') as HTMLImageElement;
qrImageElement.src = qrDataURL;
this.qrImage = true
});
}
openHelpDialog(templateRef) {
this.dialogRef = this.dialog.open(templateRef, {
width: '700px',
disableClose: false
});
}
closeDialog() {
this.dialogRef.close()
}
preSave() {
if (this.transactionData.transId == 0 || this.transactionData.transId == null || this.transactionData.transId == undefined) {
this._ui.toastMessage(this._errorTranslate.translate("pleaseEnterTransId"), 2000, true);
return false;
}
return true;
}
submit() {
if (!this.preSave())
return
this.transactionData.userId = this.userId;
this.transactionData.tenderId = this.tenderId;
// this.transactionData.
console.log('this.paymentId==',this.paymentId);
if(this.paymentId){
this.transactionData.id = this.paymentId
this._masterService.updateMasterData(apiUrl.paymentMaster, this.transactionData,this.paymentId).then(res=>{
console.log('res==.',res);
this.transactionData = new PaymentInfoDto()
this.getData();
})
}
else
this._masterService.saveMasterData(apiUrl.paymentInfo, this.transactionData).then(res => {
console.log(res);
this.transactionData = new PaymentInfoDto()
this.getData();
})
}
}

@ -45,8 +45,11 @@ export const apiUrl = {
paymentCheck:"payment-master/bid-payment-check",
emailUserSubmit:"auth/otp/UD",
UserUploadCheck :"tender-doc/userDocCheck",
emailReport:"email/report"
emailReport:"email/report",
paymentInfo:"payment-master/paymentInfo",
paymentMaster:"payment-master",
paymentUserCheck:"payment-master/userBidPaymentCheck",
paymentupdatePaymentStatus:"payment-master/updatePaymentStatus"
};
export const apiFilterProperties = {

@ -143,6 +143,7 @@
"DocumentsAlreadyUploaded" : "Documents Already Uploaded",
"pleaseAgreeToTheTermsandCondition":"Please Agree To The Terms and Condition",
"pleasePayTheAmountForDoc":"Please Pay The Amount For Downloading Documents",
"emailSentSuccessfully":"Email Sent Successfully"
"emailSentSuccessfully":"Email Sent Successfully",
"pleaseEnterTransId":"Please Enter Transaction Id"
}

@ -351,9 +351,13 @@
"bidEndDate":"Bid End Date",
"report":"Report",
"totalBidAmount":"Total Bid Amount",
"TransactionId":"Transaction ID",
"documents": "Documents",
"confirmPayment":"Confirm Payment",
"DeclinePayment":"Decline Payment",
"tender":"Tender",
"tenderId":"Tender Id",
"status":"Status"
"status":"Status",
"Paymentstatus":"Payment Status"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

@ -4,7 +4,7 @@ export const environment = {
// apiUrl:'https://sales.api.accuratesoftware.online/api/v1',
apiUrl: 'https://tenderapi.simssoftware.in/api/v1',
upiId:'thrikodithanamservicecoperativebank@icici',
production: true,
hmr: false,
timeOutLimit: 3600,

@ -4,9 +4,9 @@
export const environment = {
// apiUrl: 'http://192.168.1.112:3500/api/v1',
apiUrl: 'https://tenderapi.simssoftware.in/api/v1',
apiUrl: 'http://192.168.1.112:3200/api/v1',
// apiUrl: 'https://tenderapi.simssoftware.in/api/v1',/
upiId:'thrikodithanamservicecoperativebank@icici',
production: false,
hmr: false,
timeOutLimit: 3600,

@ -2593,6 +2593,15 @@
"strip-ansi" "^5.2.0"
"wrap-ansi" "^5.1.0"
"cliui@^6.0.0":
"integrity" "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ=="
"resolved" "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz"
"version" "6.0.0"
dependencies:
"string-width" "^4.2.0"
"strip-ansi" "^6.0.0"
"wrap-ansi" "^6.2.0"
"cliui@^7.0.2":
"integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="
"resolved" "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz"
@ -3366,6 +3375,11 @@
"miller-rabin" "^4.0.0"
"randombytes" "^2.0.0"
"dijkstrajs@^1.0.1":
"integrity" "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
"resolved" "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz"
"version" "1.0.3"
"dir-glob@^3.0.1":
"integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="
"resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz"
@ -3511,6 +3525,11 @@
"resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz"
"version" "3.0.0"
"encode-utf8@^1.0.3":
"integrity" "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
"resolved" "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz"
"version" "1.0.3"
"encodeurl@~1.0.2":
"integrity" "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
"resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz"
@ -4015,7 +4034,7 @@
dependencies:
"locate-path" "^3.0.0"
"find-up@^4.0.0":
"find-up@^4.0.0", "find-up@^4.1.0":
"integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="
"resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
"version" "4.1.0"
@ -6420,6 +6439,11 @@
"resolved" "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz"
"version" "1.0.0"
"pngjs@^5.0.0":
"integrity" "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
"resolved" "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz"
"version" "5.0.0"
"pnp-webpack-plugin@1.6.4":
"integrity" "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg=="
"resolved" "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz"
@ -6852,6 +6876,16 @@
"resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
"version" "1.3.2"
"qrcode@^1.5.3":
"integrity" "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg=="
"resolved" "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz"
"version" "1.5.3"
dependencies:
"dijkstrajs" "^1.0.1"
"encode-utf8" "^1.0.3"
"pngjs" "^5.0.0"
"yargs" "^15.3.1"
"qs@~6.5.2":
"integrity" "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
"resolved" "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz"
@ -9115,6 +9149,15 @@
"string-width" "^3.0.0"
"strip-ansi" "^5.0.0"
"wrap-ansi@^6.2.0":
"integrity" "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="
"resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz"
"version" "6.2.0"
dependencies:
"ansi-styles" "^4.0.0"
"string-width" "^4.1.0"
"strip-ansi" "^6.0.0"
"wrap-ansi@^7.0.0":
"integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="
"resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
@ -9197,6 +9240,14 @@
"camelcase" "^5.0.0"
"decamelize" "^1.2.0"
"yargs-parser@^18.1.2":
"integrity" "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ=="
"resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz"
"version" "18.1.3"
dependencies:
"camelcase" "^5.0.0"
"decamelize" "^1.2.0"
"yargs-parser@^20.2.2":
"integrity" "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw=="
"resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz"
@ -9218,6 +9269,23 @@
"y18n" "^4.0.0"
"yargs-parser" "^13.1.2"
"yargs@^15.3.1":
"integrity" "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A=="
"resolved" "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz"
"version" "15.4.1"
dependencies:
"cliui" "^6.0.0"
"decamelize" "^1.2.0"
"find-up" "^4.1.0"
"get-caller-file" "^2.0.1"
"require-directory" "^2.1.1"
"require-main-filename" "^2.0.0"
"set-blocking" "^2.0.0"
"string-width" "^4.2.0"
"which-module" "^2.0.0"
"y18n" "^4.0.0"
"yargs-parser" "^18.1.2"
"yargs@^16.2.0":
"integrity" "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="
"resolved" "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz"

Loading…
Cancel
Save