сделал реферальную систему
This commit is contained in:
Kataev Denis 2022-09-13 13:04:07 +04:00
parent d1eee6cb26
commit 61e90459d6
19 changed files with 525 additions and 87 deletions

View File

@ -1,4 +1,4 @@
# CardProject # FashionLogica
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.0.6. This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.0.6.

View File

@ -3,7 +3,7 @@
"version": 1, "version": 1,
"newProjectRoot": "projects", "newProjectRoot": "projects",
"projects": { "projects": {
"card-project": { "fashion-logica": {
"projectType": "application", "projectType": "application",
"schematics": { "schematics": {
"@schematics/angular:component": { "@schematics/angular:component": {
@ -17,7 +17,7 @@
"build": { "build": {
"builder": "@angular-devkit/build-angular:browser", "builder": "@angular-devkit/build-angular:browser",
"options": { "options": {
"outputPath": "dist/card-project", "outputPath": "dist/fashion-logica",
"index": "src/index.html", "index": "src/index.html",
"main": "src/main.ts", "main": "src/main.ts",
"polyfills": "src/polyfills.ts", "polyfills": "src/polyfills.ts",
@ -32,6 +32,8 @@
"node_modules/primeng/resources/themes/bootstrap4-light-blue/theme.css", "node_modules/primeng/resources/themes/bootstrap4-light-blue/theme.css",
"node_modules/primeicons/primeicons.css", "node_modules/primeicons/primeicons.css",
"node_modules/primeng/resources/primeng.min.css", "node_modules/primeng/resources/primeng.min.css",
"node_modules/ngx-sharebuttons/themes/modern.scss",
"node_modules/ngx-sharebuttons/themes/material.scss",
"src/styles.scss" "src/styles.scss"
], ],
"scripts": [], "scripts": [],
@ -75,10 +77,10 @@
"builder": "@angular-devkit/build-angular:dev-server", "builder": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "card-project:build:production" "browserTarget": "fashion-logica:build:production"
}, },
"development": { "development": {
"browserTarget": "card-project:build:development" "browserTarget": "fashion-logica:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@ -86,7 +88,7 @@
"extract-i18n": { "extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n", "builder": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "card-project:build" "browserTarget": "fashion-logica:build"
} }
}, },
"test": { "test": {

251
package-lock.json generated
View File

@ -1,14 +1,15 @@
{ {
"name": "card-project", "name": "fashion-logica",
"version": "0.0.0", "version": "0.0.0",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "card-project", "name": "fashion-logica",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"@angular/animations": "^14.0.0", "@angular/animations": "^14.0.0",
"@angular/cdk": "^14.2.1",
"@angular/common": "^14.0.0", "@angular/common": "^14.0.0",
"@angular/compiler": "^14.0.0", "@angular/compiler": "^14.0.0",
"@angular/core": "^14.0.0", "@angular/core": "^14.0.0",
@ -18,12 +19,18 @@
"@angular/platform-browser-dynamic": "^14.0.0", "@angular/platform-browser-dynamic": "^14.0.0",
"@angular/router": "^14.0.0", "@angular/router": "^14.0.0",
"@angular/service-worker": "^14.0.0", "@angular/service-worker": "^14.0.0",
"@fortawesome/angular-fontawesome": "^0.11.1",
"@fortawesome/fontawesome-svg-core": "^6.2.0",
"@fortawesome/free-brands-svg-icons": "^6.2.0",
"@fortawesome/free-solid-svg-icons": "^6.2.0",
"@types/uuid": "^8.3.4", "@types/uuid": "^8.3.4",
"angular-moment-timezone": "^1.7.1", "angular-moment-timezone": "^1.7.1",
"angularx-qrcode": "^14.0.0",
"barcode-2-svg": "^0.3.3", "barcode-2-svg": "^0.3.3",
"firebase": "^9.9.3", "firebase": "^9.9.3",
"google-libphonenumber": "^3.2.30", "google-libphonenumber": "^3.2.30",
"jsbarcode": "^3.11.5", "jsbarcode": "^3.11.5",
"ngx-sharebuttons": "^11.0.0",
"primeicons": "^5.0.0", "primeicons": "^5.0.0",
"primeng": "^14.0.1", "primeng": "^14.0.1",
"rxjs": "~7.5.0", "rxjs": "~7.5.0",
@ -384,6 +391,28 @@
"@angular/core": "14.1.3" "@angular/core": "14.1.3"
} }
}, },
"node_modules/@angular/cdk": {
"version": "14.2.1",
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.1.tgz",
"integrity": "sha512-saLFOZeyYQ6ELvPYqePsC8yXzDYjrCXGKGLtwAG/1mUlXcVTC0V1c3SabU4JR7Z+Zo1tOmzkWxuUkrw7uvaJHA==",
"dependencies": {
"tslib": "^2.3.0"
},
"optionalDependencies": {
"parse5": "^5.0.0"
},
"peerDependencies": {
"@angular/common": "^14.0.0 || ^15.0.0",
"@angular/core": "^14.0.0 || ^15.0.0",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/cdk/node_modules/parse5": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
"integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
"optional": true
},
"node_modules/@angular/cli": { "node_modules/@angular/cli": {
"version": "14.0.7", "version": "14.0.7",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.7.tgz", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.7.tgz",
@ -2415,6 +2444,20 @@
"node": ">=0.1.90" "node": ">=0.1.90"
} }
}, },
"node_modules/@cordobo/qrcode": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@cordobo/qrcode/-/qrcode-1.5.0.tgz",
"integrity": "sha512-aZ5n3MYw10t4v68EGvRGE1DL7iWfAiTUy4MSZRoqjHTRYdjX40sYgJf48NZa6zZeXVuJOEB/1Ni9KzS+C/EC0w==",
"dependencies": {
"dijkstrajs": "^1.0.1",
"encode-utf8": "^1.0.3",
"pngjs": "^5.0.0",
"yargs": "^17.3.1"
},
"bin": {
"qrcode": "bin/qrcode"
}
},
"node_modules/@csstools/postcss-cascade-layers": { "node_modules/@csstools/postcss-cascade-layers": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.5.tgz", "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.5.tgz",
@ -3161,6 +3204,63 @@
"resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.6.2.tgz", "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.6.2.tgz",
"integrity": "sha512-zThUKcqIU6utWzM93uEvhlh8qj8A5LMPFJPvk/ODb+8GSSif19xM2Lw1M2ijyBy8+6skSkQBbavPzOU5Oh/8tQ==" "integrity": "sha512-zThUKcqIU6utWzM93uEvhlh8qj8A5LMPFJPvk/ODb+8GSSif19xM2Lw1M2ijyBy8+6skSkQBbavPzOU5Oh/8tQ=="
}, },
"node_modules/@fortawesome/angular-fontawesome": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.11.1.tgz",
"integrity": "sha512-Ngzm5MVxk76ZhYpPTNOI/mpYNz9bzwfBXC5L9mktLgOONjBuYBPVt+bH8lny8hNtDk0ppZzXsMN6CO7hckdfnw==",
"dependencies": {
"tslib": "^2.4.0"
},
"peerDependencies": {
"@angular/core": "^14.0.0",
"@fortawesome/fontawesome-svg-core": "~1.2.27 || ~1.3.0-beta2 || ^6.1.0"
}
},
"node_modules/@fortawesome/fontawesome-common-types": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.0.tgz",
"integrity": "sha512-rBevIsj2nclStJ7AxTdfsa3ovHb1H+qApwrxcTVo+NNdeJiB9V75hsKfrkG5AwNcRUNxrPPiScGYCNmLMoh8pg==",
"hasInstallScript": true,
"engines": {
"node": ">=6"
}
},
"node_modules/@fortawesome/fontawesome-svg-core": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.0.tgz",
"integrity": "sha512-Cf2mAAeMWFMzpLC7Y9H1I4o3wEU+XovVJhTiNG8ZNgSQj53yl7OCJaS80K4YjrABWZzbAHVaoHE1dVJ27AAYXw==",
"hasInstallScript": true,
"dependencies": {
"@fortawesome/fontawesome-common-types": "6.2.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/@fortawesome/free-brands-svg-icons": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.2.0.tgz",
"integrity": "sha512-fm1y4NyZ2qKYNmYhdMz9VAWRw1Et7PMHNunSw3W0SVAwKwv6o0qiJworLH3Y9SnmhHzAymXJwCX1op22FFvGiA==",
"hasInstallScript": true,
"dependencies": {
"@fortawesome/fontawesome-common-types": "6.2.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/@fortawesome/free-solid-svg-icons": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.0.tgz",
"integrity": "sha512-UjCILHIQ4I8cN46EiQn0CZL/h8AwCGgR//1c4R96Q5viSRwuKVo0NdQEc4bm+69ZwC0dUvjbDqAHF1RR5FA3XA==",
"hasInstallScript": true,
"dependencies": {
"@fortawesome/fontawesome-common-types": "6.2.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/@gar/promisify": { "node_modules/@gar/promisify": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@ -4380,6 +4480,18 @@
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.29.tgz", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.29.tgz",
"integrity": "sha512-mla2acNCMkWXBD+c+yeUrBUrzOxYMNFdQ6FGfigGGtEVBPJx07BQeJekjt9DmH1FtZek4E9rE1eRR9qQpxACOQ==" "integrity": "sha512-mla2acNCMkWXBD+c+yeUrBUrzOxYMNFdQ6FGfigGGtEVBPJx07BQeJekjt9DmH1FtZek4E9rE1eRR9qQpxACOQ=="
}, },
"node_modules/angularx-qrcode": {
"version": "14.0.0",
"resolved": "https://registry.npmjs.org/angularx-qrcode/-/angularx-qrcode-14.0.0.tgz",
"integrity": "sha512-PfWPz6YpKnTeIYzBjLniKXy/Y4/id0v/dDASQi4756+WYLu94cUMYFndGTFigjeBuk8i5BG0Q8ePHgYYvHbk2w==",
"dependencies": {
"@cordobo/qrcode": "1.5.0",
"tslib": "^2.3.0"
},
"peerDependencies": {
"@angular/core": "^14.0.0"
}
},
"node_modules/ansi-colors": { "node_modules/ansi-colors": {
"version": "4.1.3", "version": "4.1.3",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
@ -5832,6 +5944,11 @@
"integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==",
"dev": true "dev": true
}, },
"node_modules/dijkstrajs": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
"integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg=="
},
"node_modules/dir-glob": { "node_modules/dir-glob": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@ -5958,6 +6075,11 @@
"resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
"integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="
}, },
"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": { "node_modules/encodeurl": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
@ -9504,6 +9626,20 @@
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
}, },
"node_modules/ngx-sharebuttons": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/ngx-sharebuttons/-/ngx-sharebuttons-11.0.0.tgz",
"integrity": "sha512-uvFQgQ6VtJu901iKcsbXFt/9jk9fWGKKD8ZQdOYK9a7HBd8z/Bmb6x1Hly1roF7AbMvCE2fYwOcbRHsEvTecbg==",
"dependencies": {
"tslib": "^2.0.0"
},
"peerDependencies": {
"@angular/cdk": ">=14.0.0",
"@angular/common": ">=14.0.0",
"@angular/core": ">=14.0.0",
"rxjs": ">=6.0.0"
}
},
"node_modules/nice-napi": { "node_modules/nice-napi": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz",
@ -10418,6 +10554,14 @@
"node": ">=8" "node": ">=8"
} }
}, },
"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/postcss": { "node_modules/postcss": {
"version": "8.4.14", "version": "8.4.14",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
@ -13564,7 +13708,6 @@
"version": "17.4.1", "version": "17.4.1",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz",
"integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==",
"dev": true,
"dependencies": { "dependencies": {
"cliui": "^7.0.2", "cliui": "^7.0.2",
"escalade": "^3.1.1", "escalade": "^3.1.1",
@ -13582,7 +13725,6 @@
"version": "21.1.1", "version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
"engines": { "engines": {
"node": ">=12" "node": ">=12"
} }
@ -13838,6 +13980,23 @@
"tslib": "^2.3.0" "tslib": "^2.3.0"
} }
}, },
"@angular/cdk": {
"version": "14.2.1",
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.1.tgz",
"integrity": "sha512-saLFOZeyYQ6ELvPYqePsC8yXzDYjrCXGKGLtwAG/1mUlXcVTC0V1c3SabU4JR7Z+Zo1tOmzkWxuUkrw7uvaJHA==",
"requires": {
"parse5": "^5.0.0",
"tslib": "^2.3.0"
},
"dependencies": {
"parse5": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
"integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
"optional": true
}
}
},
"@angular/cli": { "@angular/cli": {
"version": "14.0.7", "version": "14.0.7",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.7.tgz", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.7.tgz",
@ -15232,6 +15391,17 @@
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
"integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="
}, },
"@cordobo/qrcode": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@cordobo/qrcode/-/qrcode-1.5.0.tgz",
"integrity": "sha512-aZ5n3MYw10t4v68EGvRGE1DL7iWfAiTUy4MSZRoqjHTRYdjX40sYgJf48NZa6zZeXVuJOEB/1Ni9KzS+C/EC0w==",
"requires": {
"dijkstrajs": "^1.0.1",
"encode-utf8": "^1.0.3",
"pngjs": "^5.0.0",
"yargs": "^17.3.1"
}
},
"@csstools/postcss-cascade-layers": { "@csstools/postcss-cascade-layers": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.5.tgz", "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.5.tgz",
@ -15773,6 +15943,43 @@
"resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.6.2.tgz", "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.6.2.tgz",
"integrity": "sha512-zThUKcqIU6utWzM93uEvhlh8qj8A5LMPFJPvk/ODb+8GSSif19xM2Lw1M2ijyBy8+6skSkQBbavPzOU5Oh/8tQ==" "integrity": "sha512-zThUKcqIU6utWzM93uEvhlh8qj8A5LMPFJPvk/ODb+8GSSif19xM2Lw1M2ijyBy8+6skSkQBbavPzOU5Oh/8tQ=="
}, },
"@fortawesome/angular-fontawesome": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.11.1.tgz",
"integrity": "sha512-Ngzm5MVxk76ZhYpPTNOI/mpYNz9bzwfBXC5L9mktLgOONjBuYBPVt+bH8lny8hNtDk0ppZzXsMN6CO7hckdfnw==",
"requires": {
"tslib": "^2.4.0"
}
},
"@fortawesome/fontawesome-common-types": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.0.tgz",
"integrity": "sha512-rBevIsj2nclStJ7AxTdfsa3ovHb1H+qApwrxcTVo+NNdeJiB9V75hsKfrkG5AwNcRUNxrPPiScGYCNmLMoh8pg=="
},
"@fortawesome/fontawesome-svg-core": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.0.tgz",
"integrity": "sha512-Cf2mAAeMWFMzpLC7Y9H1I4o3wEU+XovVJhTiNG8ZNgSQj53yl7OCJaS80K4YjrABWZzbAHVaoHE1dVJ27AAYXw==",
"requires": {
"@fortawesome/fontawesome-common-types": "6.2.0"
}
},
"@fortawesome/free-brands-svg-icons": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.2.0.tgz",
"integrity": "sha512-fm1y4NyZ2qKYNmYhdMz9VAWRw1Et7PMHNunSw3W0SVAwKwv6o0qiJworLH3Y9SnmhHzAymXJwCX1op22FFvGiA==",
"requires": {
"@fortawesome/fontawesome-common-types": "6.2.0"
}
},
"@fortawesome/free-solid-svg-icons": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.0.tgz",
"integrity": "sha512-UjCILHIQ4I8cN46EiQn0CZL/h8AwCGgR//1c4R96Q5viSRwuKVo0NdQEc4bm+69ZwC0dUvjbDqAHF1RR5FA3XA==",
"requires": {
"@fortawesome/fontawesome-common-types": "6.2.0"
}
},
"@gar/promisify": { "@gar/promisify": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@ -16792,6 +16999,15 @@
} }
} }
}, },
"angularx-qrcode": {
"version": "14.0.0",
"resolved": "https://registry.npmjs.org/angularx-qrcode/-/angularx-qrcode-14.0.0.tgz",
"integrity": "sha512-PfWPz6YpKnTeIYzBjLniKXy/Y4/id0v/dDASQi4756+WYLu94cUMYFndGTFigjeBuk8i5BG0Q8ePHgYYvHbk2w==",
"requires": {
"@cordobo/qrcode": "1.5.0",
"tslib": "^2.3.0"
}
},
"ansi-colors": { "ansi-colors": {
"version": "4.1.3", "version": "4.1.3",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
@ -17860,6 +18076,11 @@
"integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==",
"dev": true "dev": true
}, },
"dijkstrajs": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
"integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg=="
},
"dir-glob": { "dir-glob": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@ -17959,6 +18180,11 @@
"resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
"integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="
}, },
"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": { "encodeurl": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
@ -20512,6 +20738,14 @@
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
}, },
"ngx-sharebuttons": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/ngx-sharebuttons/-/ngx-sharebuttons-11.0.0.tgz",
"integrity": "sha512-uvFQgQ6VtJu901iKcsbXFt/9jk9fWGKKD8ZQdOYK9a7HBd8z/Bmb6x1Hly1roF7AbMvCE2fYwOcbRHsEvTecbg==",
"requires": {
"tslib": "^2.0.0"
}
},
"nice-napi": { "nice-napi": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz",
@ -21197,6 +21431,11 @@
"find-up": "^4.0.0" "find-up": "^4.0.0"
} }
}, },
"pngjs": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
"integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
},
"postcss": { "postcss": {
"version": "8.4.14", "version": "8.4.14",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
@ -23408,7 +23647,6 @@
"version": "17.4.1", "version": "17.4.1",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz",
"integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==",
"dev": true,
"requires": { "requires": {
"cliui": "^7.0.2", "cliui": "^7.0.2",
"escalade": "^3.1.1", "escalade": "^3.1.1",
@ -23422,8 +23660,7 @@
"yargs-parser": { "yargs-parser": {
"version": "21.1.1", "version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="
"dev": true
}, },
"zone.js": { "zone.js": {
"version": "0.11.8", "version": "0.11.8",

View File

@ -1,5 +1,5 @@
{ {
"name": "card-project", "name": "fashion-logica",
"version": "0.0.0", "version": "0.0.0",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
@ -11,6 +11,7 @@
"private": true, "private": true,
"dependencies": { "dependencies": {
"@angular/animations": "^14.0.0", "@angular/animations": "^14.0.0",
"@angular/cdk": "^14.2.1",
"@angular/common": "^14.0.0", "@angular/common": "^14.0.0",
"@angular/compiler": "^14.0.0", "@angular/compiler": "^14.0.0",
"@angular/core": "^14.0.0", "@angular/core": "^14.0.0",
@ -20,12 +21,18 @@
"@angular/platform-browser-dynamic": "^14.0.0", "@angular/platform-browser-dynamic": "^14.0.0",
"@angular/router": "^14.0.0", "@angular/router": "^14.0.0",
"@angular/service-worker": "^14.0.0", "@angular/service-worker": "^14.0.0",
"@fortawesome/angular-fontawesome": "^0.11.1",
"@fortawesome/fontawesome-svg-core": "^6.2.0",
"@fortawesome/free-brands-svg-icons": "^6.2.0",
"@fortawesome/free-solid-svg-icons": "^6.2.0",
"@types/uuid": "^8.3.4", "@types/uuid": "^8.3.4",
"angular-moment-timezone": "^1.7.1", "angular-moment-timezone": "^1.7.1",
"angularx-qrcode": "^14.0.0",
"barcode-2-svg": "^0.3.3", "barcode-2-svg": "^0.3.3",
"firebase": "^9.9.3", "firebase": "^9.9.3",
"google-libphonenumber": "^3.2.30", "google-libphonenumber": "^3.2.30",
"jsbarcode": "^3.11.5", "jsbarcode": "^3.11.5",
"ngx-sharebuttons": "^11.0.0",
"primeicons": "^5.0.0", "primeicons": "^5.0.0",
"primeng": "^14.0.1", "primeng": "^14.0.1",
"rxjs": "~7.5.0", "rxjs": "~7.5.0",

View File

@ -20,16 +20,16 @@ describe('AppComponent', () => {
expect(app).toBeTruthy(); expect(app).toBeTruthy();
}); });
it(`should have as title 'card-project'`, () => { it(`should have as title 'fashion-logica'`, () => {
const fixture = TestBed.createComponent(AppComponent); const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance; const app = fixture.componentInstance;
expect(app.title).toEqual('card-project'); expect(app.title).toEqual('fashion-logica');
}); });
it('should render title', () => { it('should render title', () => {
const fixture = TestBed.createComponent(AppComponent); const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges(); fixture.detectChanges();
const compiled = fixture.nativeElement as HTMLElement; const compiled = fixture.nativeElement as HTMLElement;
expect(compiled.querySelector('.content span')?.textContent).toContain('card-project app is running!'); expect(compiled.querySelector('.content span')?.textContent).toContain('fashion-logica app is running!');
}); });
}); });

View File

@ -6,5 +6,5 @@ import { Component } from '@angular/core';
styleUrls: ['./app.component.scss'] styleUrls: ['./app.component.scss']
}) })
export class AppComponent { export class AppComponent {
title = 'card-project'; title = 'fashion-logica';
} }

View File

@ -27,6 +27,10 @@ import {ToastModule} from 'primeng/toast';
import { MessageService } from 'primeng/api'; import { MessageService } from 'primeng/api';
import { FooterButtonsComponent } from './components/footer-buttons/footer-buttons.component'; import { FooterButtonsComponent } from './components/footer-buttons/footer-buttons.component';
import { UserDataComponent } from './pages/account/user-data/user-data.component'; import { UserDataComponent } from './pages/account/user-data/user-data.component';
import { RefSystemComponent } from './pages/account/ref-system/ref-system.component';
import { QRCodeModule } from 'angularx-qrcode';
import { ShareButtonsModule } from 'ngx-sharebuttons/buttons';
import { ShareIconsModule } from 'ngx-sharebuttons/icons';
@NgModule({ @NgModule({
declarations: [ declarations: [
@ -42,6 +46,7 @@ import { UserDataComponent } from './pages/account/user-data/user-data.component
OrderInfoComponent, OrderInfoComponent,
FooterButtonsComponent, FooterButtonsComponent,
UserDataComponent, UserDataComponent,
RefSystemComponent
], ],
imports: [ imports: [
BrowserModule, BrowserModule,
@ -67,9 +72,14 @@ import { UserDataComponent } from './pages/account/user-data/user-data.component
AngularFireModule.initializeApp(environment.firebase), AngularFireModule.initializeApp(environment.firebase),
AngularFireMessagingModule, AngularFireMessagingModule,
ToastModule, ToastModule,
ReactiveFormsModule ReactiveFormsModule,
QRCodeModule,
ShareButtonsModule.withConfig({
debug: true
}),
ShareIconsModule
], ],
providers: [DialogService, MessageService], providers: [DialogService, MessageService, ],
bootstrap: [AppComponent] bootstrap: [AppComponent]
}) })
export class AppModule { } export class AppModule { }

View File

@ -1,23 +1,3 @@
<div class="container"> <div class="container">
<!-- <svg version="1.0" xmlns="http://www.w3.org/2000/svg" style="height: 100%; width: fit-content;" <img src="./assets/logo.svg" alt="Логотип">
width="512.000000pt" height="512.000000pt" viewBox="0 0 512.000000 512.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,512.000000) scale(0.100000,-0.100000)"
fill="#fff" stroke="none">
<path d="M530 4151 c-55 -17 -110 -52 -144 -93 -70 -81 -66 5 -66 -1499 0
-1547 -7 -1422 86 -1516 90 -91 -109 -83 2154 -83 2211 0 2056 -5 2138 66 24
20 55 59 70 88 l27 51 0 1395 0 1395 -27 50 c-31 59 -67 94 -128 126 l-45 24
-2020 2 c-1111 1 -2031 -2 -2045 -6z m3876 -327 c57 -27 74 -74 74 -199 l0
-105 -1920 0 -1920 0 0 108 c0 124 15 166 71 194 32 17 141 18 1847 18 1660 0
1817 -1 1848 -16z m74 -1852 c0 -550 -1 -589 -18 -621 -10 -19 -34 -43 -53
-53 -32 -17 -110 -18 -1849 -18 -1708 0 -1817 1 -1850 18 -72 35 -70 17 -70
675 l0 587 1920 0 1920 0 0 -588z"/>
<path d="M960 2000 l0 -80 960 0 960 0 0 80 0 80 -960 0 -960 0 0 -80z"/>
<path d="M3520 1840 l0 -240 320 0 320 0 0 240 0 240 -320 0 -320 0 0 -240z"/>
<path d="M960 1680 l0 -80 480 0 480 0 0 80 0 80 -480 0 -480 0 0 -80z"/>
</g>
</svg>
<h1 class="title">Card Project</h1> -->
<img src="../../../assets/logo.svg" alt="Логотип">
</div> </div>

View File

@ -19,7 +19,7 @@ export interface Page {
} }
export interface UserDataForm { export interface UserDataForm {
name: string; first_name: string;
birthdate: string; birthdate: string;
gender: string; gender: string;
} }

View File

@ -1,5 +1,8 @@
<div class="woocommerce"> <div class="woocommerce">
<div *ngIf="currentPage.code !== PageCode.Auth" class="top-left-attribute"></div> <div
*ngIf="currentPage.code !== PageCode.Auth"
class="top-left-attribute"
></div>
<div [ngSwitch]="currentPage.code" class=""> <div [ngSwitch]="currentPage.code" class="">
<ng-container *ngSwitchCase="PageCode.Auth"> <ng-container *ngSwitchCase="PageCode.Auth">
<app-auth <app-auth
@ -16,6 +19,9 @@
<ng-container *ngSwitchCase="PageCode.UserData"> <ng-container *ngSwitchCase="PageCode.UserData">
<app-user-data></app-user-data> <app-user-data></app-user-data>
</ng-container> </ng-container>
<ng-container *ngSwitchCase="PageCode.RefSystem">
<app-ref-system></app-ref-system>
</ng-container>
</div> </div>
<nav <nav
*ngIf="currentPage.code !== PageCode.Auth" *ngIf="currentPage.code !== PageCode.Auth"
@ -34,7 +40,7 @@
> >
<div class="container"> <div class="container">
<img <img
src="{{ '../../../assets/menu-icons/' + page.resName + '.png' }}" src="{{ './assets/menu-icons/' + page.resName + '.png' }}"
alt="Иконка меню" alt="Иконка меню"
/> />
<div class="menu-item-info"> <div class="menu-item-info">
@ -44,14 +50,14 @@
</div> </div>
</li> </li>
</ng-container> </ng-container>
<li class="woocommerce-MyAccount-navigation-link"> <li
class="woocommerce-MyAccount-navigation-link"
(click)="logout($event)"
>
<div class="container"> <div class="container">
<img <img src="./assets/menu-icons/exit.png" alt="Иконка меню" />
src="../../../assets/menu-icons/exit.png"
alt="Иконка меню"
/>
<div class="menu-item-info"> <div class="menu-item-info">
<a href="#" (click)="logout($event)">Выход</a> <a href="#">Выход</a>
</div> </div>
</div> </div>
</li> </li>

View File

@ -26,8 +26,8 @@
color: #000; color: #000;
border-radius: 15px; border-radius: 15px;
&.is-active { &.is-active {
// background-color: #009688; border: solid #09467f 1px;
display: none; // display: none;
} }
&.first { &.first {
// border-radius: 7px 0 0 7px; // border-radius: 7px 0 0 7px;

View File

@ -1,27 +1,32 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import {CookiesService} from "../../services/cookies.service"; import { CookiesService } from '../../services/cookies.service';
import {ActivatedRoute, Router} from "@angular/router"; import { ActivatedRoute, Router } from '@angular/router';
import {Page, PageCode} from "../../interface/data"; import { Page, PageCode } from '../../interface/data';
import {environment} from "../../../environments/environment"; import { environment } from '../../../environments/environment';
import {PageList, PageListWithBonus} from "../../app.constants"; import { PageList, PageListWithBonus } from '../../app.constants';
import {HttpErrorResponse} from "@angular/common/http"; import { HttpErrorResponse, HttpParams } from '@angular/common/http';
import {ExitComponent} from "../../components/exit/exit.component"; import { ExitComponent } from '../../components/exit/exit.component';
import { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog'; import { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';
import { JsonrpcService, RpcService } from 'src/app/services/jsonrpc.service';
import { MessageService } from 'primeng/api';
@Component({ @Component({
selector: 'app-account', selector: 'app-account',
templateUrl: './account.component.html', templateUrl: './account.component.html',
styleUrls: ['./account.component.scss'], styleUrls: ['./account.component.scss'],
providers:[DialogService], providers: [DialogService],
}) })
export class AccountComponent implements OnInit { export class AccountComponent implements OnInit {
@Output() setUserDataOrderPage = new EventEmitter<null>(); @Output() setUserDataOrderPage = new EventEmitter<null>();
public refSystemId: string = '';
constructor( constructor(
private cookiesService: CookiesService, private cookiesService: CookiesService,
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
private dialogService: DialogService, private dialogService: DialogService,
private jsonRpcService: JsonrpcService,
private messageService: MessageService
) {} ) {}
public currentPage!: Page; public currentPage!: Page;
@ -29,20 +34,101 @@ export class AccountComponent implements OnInit {
private ref!: DynamicDialogRef; private ref!: DynamicDialogRef;
readonly PageCode = PageCode; readonly PageCode = PageCode;
readonly pageList = environment.hasBonusProgram ? PageListWithBonus : PageList; readonly pageList = environment.hasBonusProgram
? PageListWithBonus
: PageList;
ngOnInit(): void { ngOnInit(): void {
this.currentPage = this.getToken() ? this.pageList[1] : this.pageList[0]; if (!this.getToken()) {
document.body.classList.add('woocommerce-account', 'woocommerce-page', 'woocommerce-orders'); this.currentPage = this.pageList[0];
} else {
this.route.queryParams.subscribe((params) => {
if (!params['activePage']) {
this.currentPage = this.pageList[1];
return;
}
const currentPage = this.pageList.find((page) => {
return page.code === Number(params['activePage']);
});
if (!currentPage) {
this.currentPage = this.pageList[1];
} else {
this.currentPage = currentPage;
}
});
}
document.body.classList.add(
'woocommerce-account',
'woocommerce-page',
'woocommerce-orders'
);
} }
phoneConfirmed(): void{ phoneConfirmed(): void {
this.currentPage = this.pageList[1]; this.refSystem();
this.currentPage = this.pageList[1];
} }
changePage(event: MouseEvent, page: Page): void{ refSystem() {
this.route.queryParams.subscribe((params) => {
if (params['refCardNumber']) {
this.refSystemId = params['refCardNumber'];
this.jsonRpcService
.rpc(
{
method: 'updateAdditionalInfo',
params: [
{
refSystem: {
code: this.refSystemId,
},
},
],
},
RpcService.authService,
true
)
.subscribe({
next: () => {
this.router.navigate([], {
queryParams: {
refCardNumber: null,
},
queryParamsHandling: 'merge',
});
this.messageService.add({
severity: 'custom',
summary:
'Регистрация прошла успешна! Бонусы скоро будут начислены',
});
},
error: (err) => {
console.error('Error: ', err);
this.messageService.add({
severity: 'error',
summary: 'Произошла ошибка, попробуйте позже',
});
},
});
}
});
}
changePage(event: MouseEvent, page: Page): void {
event.preventDefault(); event.preventDefault();
this.currentPage = page; this.currentPage = page;
// let params = new HttpParams();
// params = params.append('activePage', this.currentPage.code);
this.router.navigate(['.'], {
relativeTo: this.route,
queryParams: {
activePage: this.currentPage.code,
},
queryParamsHandling: 'merge',
// preserve the existing query params in the route
// skipLocationChange: true
// do not trigger navigation
});
} }
handleHttpError(error: HttpErrorResponse): void { handleHttpError(error: HttpErrorResponse): void {
@ -51,23 +137,23 @@ export class AccountComponent implements OnInit {
} }
} }
setToken(token: string): void{ setToken(token: string): void {
this.cookiesService.setCookie('token', token); this.cookiesService.setCookie('token', token);
} }
getToken(): string|void{ getToken(): string | void {
return this.cookiesService.getItem('token'); return this.cookiesService.getItem('token');
} }
deleteToken(): void{ deleteToken(): void {
this.cookiesService.deleteCookie('token'); this.cookiesService.deleteCookie('token');
this.router.navigate([''], { // this.router.navigate(['.'], {
queryParams: {}, // queryParams: {},
}); // });
} }
logout(event?: MouseEvent){ logout(event?: MouseEvent) {
if(event){ if (event) {
event.preventDefault(); event.preventDefault();
} }
this.ref = this.dialogService.open(ExitComponent, { this.ref = this.dialogService.open(ExitComponent, {
@ -89,14 +175,11 @@ export class AccountComponent implements OnInit {
closeOnEscape: true, closeOnEscape: true,
showHeader: false, showHeader: false,
}); });
this.ref.onClose.subscribe( this.ref.onClose.subscribe((result) => {
result => { if (result) {
if (result) { this.deleteToken();
this.currentPage = this.pageList[0]; this.currentPage = this.pageList[0];
this.deleteToken();
}
} }
); });
} }
} }

View File

@ -91,6 +91,6 @@
.decoration-pattern { .decoration-pattern {
width: 100%; width: 100%;
height: 34px; height: 34px;
background: url("../../../../assets/card-decorative-pattern.png") repeat-x; background: url("./assets/card-decorative-pattern.png") repeat-x;
} }
} }

View File

@ -4,14 +4,14 @@
<div style="display: flex;justify-content: center;"> <div style="display: flex;justify-content: center;">
<div class="card-container"> <div class="card-container">
<div class="card-container__header"> <div class="card-container__header">
<img src="../../../../assets/logo.svg" alt="Логотип карта"> <img src="./assets/logo.svg" alt="Логотип карта">
<span *ngIf="accountData">#{{accountData.CardNumber}}</span> <span *ngIf="accountData">#{{accountData.CardNumber}}</span>
</div> </div>
<div class="card-container__decorative-pattern"> <div class="card-container__decorative-pattern">
<!-- <div class="imgs-row"></div> <!-- <div class="imgs-row"></div>
<div class="imgs-row" style="background-position-x: -22px;"></div> <div class="imgs-row" style="background-position-x: -22px;"></div>
<div class="imgs-row"></div> --> <div class="imgs-row"></div> -->
<img src="../../../../assets/card-decorative-pattern.svg" alt=""> <img src="./assets/card-decorative-pattern.svg" alt="">
</div> </div>
<div class="card-container__content"> <div class="card-container__content">
<div class="info" *ngIf="accountData"> <div class="info" *ngIf="accountData">

View File

@ -0,0 +1,21 @@
<div class="ref-system">
<qrcode
*ngIf="!loading"
[qrdata]="refUrl"
[width]="256"
[errorCorrectionLevel]="'M'"
></qrcode>
<p-progressSpinner
*ngIf="loading"
[style]="{ width: '100%' }"
strokeWidth="2"
styleClass="angular-spinner"
></p-progressSpinner>
<share-buttons
[theme]="'modern-dark'"
[include]="['facebook', 'twitter', 'whatsapp', 'vk', 'copy']"
[show]="5"
[url]="refUrl"
style="display: flex; justify-content: center;"
></share-buttons>
</div>

View File

@ -0,0 +1,5 @@
:host {
.ref-system {
}
}

View File

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

View File

@ -0,0 +1,32 @@
import { Component, OnInit } from '@angular/core';
import * as barcode from 'jsbarcode';
import { lastValueFrom } from 'rxjs';
import { JsonrpcService, RpcService } from 'src/app/services/jsonrpc.service';
import { environment } from 'src/environments/environment';
@Component({
selector: 'app-ref-system',
templateUrl: './ref-system.component.html',
styleUrls: ['./ref-system.component.scss']
})
export class RefSystemComponent implements OnInit {
public refUrl: string = `${environment.defaultUrl}/?refCardNumber=`
public loading: boolean = true;
constructor(
private jsonrpc: JsonrpcService,
) { }
async ngOnInit() {
const accountData = (await lastValueFrom(
this.jsonrpc.rpc({
method: 'GetAccounts',
params: []
},
RpcService.bonusService
)))['Cards'][0]
this.loading = false
this.refUrl += accountData.CardNumber
}
}

View File

@ -18,6 +18,9 @@ table{border-collapse:collapse;border-spacing:0}
border-radius: 15px; border-radius: 15px;
height: 45px; height: 45px;
} }
.p-inputtext.invalid {
border-color: red;
}
mark { mark {
padding: 4px; padding: 4px;
@ -27,4 +30,33 @@ mark {
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 0; width: 0;
} }
button {
cursor: pointer;
}
.p-toast-message-custom {
background-color: #fff;
border: solid #09467F;
border-width: 0 0 0 6px;
color: #09467F;
.p-toast-icon-close {
color: #09467F;
}
}
.p-toast.p-component.p-toast-top-center {
max-width: 96vw;
}
.qrcode {
display: flex;
justify-content: center;
}
.sb-group {
width: 100%;
justify-content: space-between;
max-width: 400px;
}