From 5fbdb7098e916536d8ddd9616c12fc2ca5b40fa9 Mon Sep 17 00:00:00 2001
From: MiharyR <60790872+MiharyR@users.noreply.github.com>
Date: Tue, 21 Dec 2021 13:35:41 +0100
Subject: [PATCH] Delete admin directory
---
admin/.browserslistrc | 17 --
admin/.editorconfig | 16 --
admin/.gitignore | 45 ---
admin/README.md | 27 --
admin/angular.json | 113 --------
admin/karma.conf.js | 44 ---
admin/package.json | 44 ---
.../page-ad-list-admin.component.html | 167 -----------
.../page-ad-list-admin.component.scss | 74 -----
.../page-ad-list-admin.component.spec.ts | 25 --
.../page-ad-list-admin.component.ts | 260 -----------------
.../popup-delete-ad-admin.component.html | 8 -
.../popup-delete-ad-admin.component.scss | 0
.../popup-delete-ad-admin.component.spec.ts | 25 --
.../popup-delete-ad-admin.component.ts | 47 ---
...opup-visualize-images-admin.component.html | 20 --
...opup-visualize-images-admin.component.scss | 14 -
...p-visualize-images-admin.component.spec.ts | 25 --
.../popup-visualize-images-admin.component.ts | 35 ---
.../page-profil-admin.component.html | 43 ---
.../page-profil-admin.component.scss | 61 ----
.../page-profil-admin.component.spec.ts | 25 --
.../page-profil-admin.component.ts | 87 ------
.../popup-update-admin.component.html | 59 ----
.../popup-update-admin.component.scss | 33 ---
.../popup-update-admin.component.spec.ts | 25 --
.../popup-update-admin.component.ts | 122 --------
.../input-interests-admin.component.html | 43 ---
.../input-interests-admin.component.scss | 3 -
.../input-interests-admin.component.spec.ts | 25 --
.../input-interests-admin.component.ts | 121 --------
.../page-user-list.component.html | 193 -------------
.../page-user-list.component.scss | 99 -------
.../page-user-list.component.spec.ts | 25 --
.../page-user-list.component.ts | 232 ---------------
.../popup-create-user.component.html | 160 -----------
.../popup-create-user.component.scss | 16 --
.../popup-create-user.component.spec.ts | 25 --
.../popup-create-user.component.ts | 125 --------
.../popup-delete-user.component.html | 8 -
.../popup-delete-user.component.scss | 0
.../popup-delete-user.component.spec.ts | 25 --
.../popup-delete-user.component.ts | 29 --
.../navbar-admin/navbar-admin.component.html | 37 ---
.../navbar-admin/navbar-admin.component.scss | 80 ------
.../navbar-admin.component.spec.ts | 25 --
.../navbar-admin/navbar-admin.component.ts | 38 ---
admin/src/app/app-routing.module.ts | 27 --
admin/src/app/app.component.html | 2 -
admin/src/app/app.component.scss | 24 --
admin/src/app/app.component.spec.ts | 35 ---
admin/src/app/app.component.ts | 10 -
admin/src/app/app.module.ts | 93 ------
.../page-login/page-login.component.html | 36 ---
.../page-login/page-login.component.scss | 271 ------------------
.../page-login/page-login.component.spec.ts | 25 --
.../login/page-login/page-login.component.ts | 101 -------
.../popup-forgotten-password.component.html | 24 --
.../popup-forgotten-password.component.scss | 12 -
...popup-forgotten-password.component.spec.ts | 25 --
.../popup-forgotten-password.component.ts | 47 ---
.../input-interests-register.component.html | 43 ---
.../input-interests-register.component.scss | 0
...input-interests-register.component.spec.ts | 25 --
.../input-interests-register.component.ts | 121 --------
.../page-register.component.html | 162 -----------
.../page-register.component.scss | 47 ---
.../page-register.component.spec.ts | 25 --
.../page-register/page-register.component.ts | 134 ---------
.../popup-confirmation.component.html | 11 -
.../popup-confirmation.component.scss | 7 -
.../popup-confirmation.component.spec.ts | 25 --
.../popup-confirmation.component.ts | 13 -
.../navbar-before-connexion.component.html | 40 ---
.../navbar-before-connexion.component.scss | 79 -----
.../navbar-before-connexion.component.spec.ts | 25 --
.../navbar-before-connexion.component.ts | 11 -
.../app/utils/message/message.service.spec.ts | 16 --
.../src/app/utils/message/message.service.ts | 38 ---
.../app/utils/profil/profil.service.spec.ts | 16 --
admin/src/app/utils/profil/profil.service.ts | 29 --
.../src/app/utils/theme/theme.service.spec.ts | 16 --
admin/src/app/utils/theme/theme.service.ts | 17 --
admin/src/assets/.gitkeep | 0
admin/src/assets/darkBackground.webp | Bin 712 -> 0 bytes
admin/src/assets/lightBackground.jpg | Bin 5902 -> 0 bytes
admin/src/assets/logo.png | Bin 5798 -> 0 bytes
.../assets/logo_plateforms/dailymotion.png | Bin 6478 -> 0 bytes
admin/src/assets/logo_plateforms/youtube.png | Bin 7858 -> 0 bytes
admin/src/assets/play.png | Bin 3586 -> 0 bytes
admin/src/assets/profil.png | Bin 18287 -> 0 bytes
admin/src/assets/uploadFile.png | Bin 8853 -> 0 bytes
admin/src/environments/environment.prod.ts | 4 -
admin/src/environments/environment.ts | 17 --
admin/src/favicon.ico | Bin 948 -> 0 bytes
admin/src/index.html | 13 -
admin/src/main.ts | 12 -
admin/src/polyfills.ts | 65 -----
admin/src/styles.scss | 1 -
admin/src/test.ts | 27 --
admin/tsconfig.app.json | 15 -
admin/tsconfig.json | 23 --
admin/tsconfig.spec.json | 18 --
103 files changed, 4597 deletions(-)
delete mode 100644 admin/.browserslistrc
delete mode 100644 admin/.editorconfig
delete mode 100644 admin/.gitignore
delete mode 100644 admin/README.md
delete mode 100644 admin/angular.json
delete mode 100644 admin/karma.conf.js
delete mode 100644 admin/package.json
delete mode 100644 admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.html
delete mode 100644 admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.scss
delete mode 100644 admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.spec.ts
delete mode 100644 admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.ts
delete mode 100644 admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.html
delete mode 100644 admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.scss
delete mode 100644 admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.spec.ts
delete mode 100644 admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.ts
delete mode 100644 admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.html
delete mode 100644 admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.scss
delete mode 100644 admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.spec.ts
delete mode 100644 admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.ts
delete mode 100644 admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.html
delete mode 100644 admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.scss
delete mode 100644 admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.spec.ts
delete mode 100644 admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.ts
delete mode 100644 admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.html
delete mode 100644 admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.scss
delete mode 100644 admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.spec.ts
delete mode 100644 admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.ts
delete mode 100644 admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.html
delete mode 100644 admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.scss
delete mode 100644 admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.spec.ts
delete mode 100644 admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.ts
delete mode 100644 admin/src/app/admin/userList/page-user-list/page-user-list.component.html
delete mode 100644 admin/src/app/admin/userList/page-user-list/page-user-list.component.scss
delete mode 100644 admin/src/app/admin/userList/page-user-list/page-user-list.component.spec.ts
delete mode 100644 admin/src/app/admin/userList/page-user-list/page-user-list.component.ts
delete mode 100644 admin/src/app/admin/userList/popup-create-user/popup-create-user.component.html
delete mode 100644 admin/src/app/admin/userList/popup-create-user/popup-create-user.component.scss
delete mode 100644 admin/src/app/admin/userList/popup-create-user/popup-create-user.component.spec.ts
delete mode 100644 admin/src/app/admin/userList/popup-create-user/popup-create-user.component.ts
delete mode 100644 admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.html
delete mode 100644 admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.scss
delete mode 100644 admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.spec.ts
delete mode 100644 admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.ts
delete mode 100644 admin/src/app/admin/utils/navbar-admin/navbar-admin.component.html
delete mode 100644 admin/src/app/admin/utils/navbar-admin/navbar-admin.component.scss
delete mode 100644 admin/src/app/admin/utils/navbar-admin/navbar-admin.component.spec.ts
delete mode 100644 admin/src/app/admin/utils/navbar-admin/navbar-admin.component.ts
delete mode 100644 admin/src/app/app-routing.module.ts
delete mode 100644 admin/src/app/app.component.html
delete mode 100644 admin/src/app/app.component.scss
delete mode 100644 admin/src/app/app.component.spec.ts
delete mode 100644 admin/src/app/app.component.ts
delete mode 100644 admin/src/app/app.module.ts
delete mode 100644 admin/src/app/beforeConnexion/login/page-login/page-login.component.html
delete mode 100644 admin/src/app/beforeConnexion/login/page-login/page-login.component.scss
delete mode 100644 admin/src/app/beforeConnexion/login/page-login/page-login.component.spec.ts
delete mode 100644 admin/src/app/beforeConnexion/login/page-login/page-login.component.ts
delete mode 100644 admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.html
delete mode 100644 admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.scss
delete mode 100644 admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.spec.ts
delete mode 100644 admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.ts
delete mode 100644 admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.html
delete mode 100644 admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.scss
delete mode 100644 admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.spec.ts
delete mode 100644 admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.ts
delete mode 100644 admin/src/app/beforeConnexion/register/page-register/page-register.component.html
delete mode 100644 admin/src/app/beforeConnexion/register/page-register/page-register.component.scss
delete mode 100644 admin/src/app/beforeConnexion/register/page-register/page-register.component.spec.ts
delete mode 100644 admin/src/app/beforeConnexion/register/page-register/page-register.component.ts
delete mode 100644 admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.html
delete mode 100644 admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.scss
delete mode 100644 admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.spec.ts
delete mode 100644 admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.ts
delete mode 100644 admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.html
delete mode 100644 admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.scss
delete mode 100644 admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.spec.ts
delete mode 100644 admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.ts
delete mode 100644 admin/src/app/utils/message/message.service.spec.ts
delete mode 100644 admin/src/app/utils/message/message.service.ts
delete mode 100644 admin/src/app/utils/profil/profil.service.spec.ts
delete mode 100644 admin/src/app/utils/profil/profil.service.ts
delete mode 100644 admin/src/app/utils/theme/theme.service.spec.ts
delete mode 100644 admin/src/app/utils/theme/theme.service.ts
delete mode 100644 admin/src/assets/.gitkeep
delete mode 100644 admin/src/assets/darkBackground.webp
delete mode 100644 admin/src/assets/lightBackground.jpg
delete mode 100644 admin/src/assets/logo.png
delete mode 100644 admin/src/assets/logo_plateforms/dailymotion.png
delete mode 100644 admin/src/assets/logo_plateforms/youtube.png
delete mode 100644 admin/src/assets/play.png
delete mode 100644 admin/src/assets/profil.png
delete mode 100644 admin/src/assets/uploadFile.png
delete mode 100644 admin/src/environments/environment.prod.ts
delete mode 100644 admin/src/environments/environment.ts
delete mode 100644 admin/src/favicon.ico
delete mode 100644 admin/src/index.html
delete mode 100644 admin/src/main.ts
delete mode 100644 admin/src/polyfills.ts
delete mode 100644 admin/src/styles.scss
delete mode 100644 admin/src/test.ts
delete mode 100644 admin/tsconfig.app.json
delete mode 100644 admin/tsconfig.json
delete mode 100644 admin/tsconfig.spec.json
diff --git a/admin/.browserslistrc b/admin/.browserslistrc
deleted file mode 100644
index 427441d..0000000
--- a/admin/.browserslistrc
+++ /dev/null
@@ -1,17 +0,0 @@
-# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
-# For additional information regarding the format and rule options, please see:
-# https://github.com/browserslist/browserslist#queries
-
-# For the full list of supported browsers by the Angular framework, please see:
-# https://angular.io/guide/browser-support
-
-# You can see what browsers were selected by your queries by running:
-# npx browserslist
-
-last 1 Chrome version
-last 1 Firefox version
-last 2 Edge major versions
-last 2 Safari major versions
-last 2 iOS major versions
-Firefox ESR
-not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line.
diff --git a/admin/.editorconfig b/admin/.editorconfig
deleted file mode 100644
index 59d9a3a..0000000
--- a/admin/.editorconfig
+++ /dev/null
@@ -1,16 +0,0 @@
-# Editor configuration, see https://editorconfig.org
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.ts]
-quote_type = single
-
-[*.md]
-max_line_length = off
-trim_trailing_whitespace = false
diff --git a/admin/.gitignore b/admin/.gitignore
deleted file mode 100644
index de51f68..0000000
--- a/admin/.gitignore
+++ /dev/null
@@ -1,45 +0,0 @@
-# See http://help.github.com/ignore-files/ for more about ignoring files.
-
-# compiled output
-/dist
-/tmp
-/out-tsc
-# Only exists if Bazel was run
-/bazel-out
-
-# dependencies
-/node_modules
-
-# profiling files
-chrome-profiler-events*.json
-
-# IDEs and editors
-/.idea
-.project
-.classpath
-.c9/
-*.launch
-.settings/
-*.sublime-workspace
-
-# IDE - VSCode
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
-.history/*
-
-# misc
-/.sass-cache
-/connect.lock
-/coverage
-/libpeerconnection.log
-npm-debug.log
-yarn-error.log
-testem.log
-/typings
-
-# System Files
-.DS_Store
-Thumbs.db
diff --git a/admin/README.md b/admin/README.md
deleted file mode 100644
index a653293..0000000
--- a/admin/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# Admin
-
-This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.10.
-
-## Development server
-
-Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
-
-## Code scaffolding
-
-Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
-
-## Build
-
-Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory.
-
-## Running unit tests
-
-Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
-
-## Running end-to-end tests
-
-Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.
-
-## Further help
-
-To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
diff --git a/admin/angular.json b/admin/angular.json
deleted file mode 100644
index 62b77eb..0000000
--- a/admin/angular.json
+++ /dev/null
@@ -1,113 +0,0 @@
-{
- "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
- "version": 1,
- "newProjectRoot": "projects",
- "projects": {
- "admin": {
- "projectType": "application",
- "schematics": {
- "@schematics/angular:component": {
- "style": "scss"
- },
- "@schematics/angular:application": {
- "strict": true
- }
- },
- "root": "",
- "sourceRoot": "src",
- "prefix": "app",
- "architect": {
- "build": {
- "builder": "@angular-devkit/build-angular:browser",
- "options": {
- "outputPath": "dist/admin",
- "index": "src/index.html",
- "main": "src/main.ts",
- "polyfills": "src/polyfills.ts",
- "tsConfig": "tsconfig.app.json",
- "inlineStyleLanguage": "scss",
- "assets": [
- "src/favicon.ico",
- "src/assets"
- ],
- "styles": [
- "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css",
- "src/styles.scss",
- "node_modules/bootstrap/scss/bootstrap.scss"
- ],
- "scripts": []
- },
- "configurations": {
- "production": {
- "budgets": [
- {
- "type": "initial",
- "maximumWarning": "500kb",
- "maximumError": "1mb"
- },
- {
- "type": "anyComponentStyle",
- "maximumWarning": "2kb",
- "maximumError": "4kb"
- }
- ],
- "fileReplacements": [
- {
- "replace": "src/environments/environment.ts",
- "with": "src/environments/environment.prod.ts"
- }
- ],
- "outputHashing": "all"
- },
- "development": {
- "buildOptimizer": false,
- "optimization": false,
- "vendorChunk": true,
- "extractLicenses": false,
- "sourceMap": true,
- "namedChunks": true
- }
- },
- "defaultConfiguration": "production"
- },
- "serve": {
- "builder": "@angular-devkit/build-angular:dev-server",
- "configurations": {
- "production": {
- "browserTarget": "admin:build:production"
- },
- "development": {
- "browserTarget": "admin:build:development"
- }
- },
- "defaultConfiguration": "development"
- },
- "extract-i18n": {
- "builder": "@angular-devkit/build-angular:extract-i18n",
- "options": {
- "browserTarget": "admin:build"
- }
- },
- "test": {
- "builder": "@angular-devkit/build-angular:karma",
- "options": {
- "main": "src/test.ts",
- "polyfills": "src/polyfills.ts",
- "tsConfig": "tsconfig.spec.json",
- "karmaConfig": "karma.conf.js",
- "inlineStyleLanguage": "scss",
- "assets": [
- "src/favicon.ico",
- "src/assets"
- ],
- "styles": [
- "src/styles.scss"
- ],
- "scripts": []
- }
- }
- }
- }
- },
- "defaultProject": "admin"
-}
diff --git a/admin/karma.conf.js b/admin/karma.conf.js
deleted file mode 100644
index 2023ed1..0000000
--- a/admin/karma.conf.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// Karma configuration file, see link for more information
-// https://karma-runner.github.io/1.0/config/configuration-file.html
-
-module.exports = function (config) {
- config.set({
- basePath: '',
- frameworks: ['jasmine', '@angular-devkit/build-angular'],
- plugins: [
- require('karma-jasmine'),
- require('karma-chrome-launcher'),
- require('karma-jasmine-html-reporter'),
- require('karma-coverage'),
- require('@angular-devkit/build-angular/plugins/karma')
- ],
- client: {
- jasmine: {
- // you can add configuration options for Jasmine here
- // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
- // for example, you can disable the random execution with `random: false`
- // or set a specific seed with `seed: 4321`
- },
- clearContext: false // leave Jasmine Spec Runner output visible in browser
- },
- jasmineHtmlReporter: {
- suppressAll: true // removes the duplicated traces
- },
- coverageReporter: {
- dir: require('path').join(__dirname, './coverage/admin'),
- subdir: '.',
- reporters: [
- { type: 'html' },
- { type: 'text-summary' }
- ]
- },
- reporters: ['progress', 'kjhtml'],
- port: 9876,
- colors: true,
- logLevel: config.LOG_INFO,
- autoWatch: true,
- browsers: ['Chrome'],
- singleRun: false,
- restartOnFileChange: true
- });
-};
diff --git a/admin/package.json b/admin/package.json
deleted file mode 100644
index 1e0e314..0000000
--- a/admin/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "admin",
- "version": "0.0.0",
- "scripts": {
- "ng": "ng",
- "start": "ng serve",
- "build": "ng build",
- "watch": "ng build --watch --configuration development",
- "test": "ng test"
- },
- "private": true,
- "dependencies": {
- "@angular/animations": "~12.2.0",
- "@angular/cdk": "^13.1.1",
- "@angular/common": "~12.2.0",
- "@angular/compiler": "~12.2.0",
- "@angular/core": "~12.2.0",
- "@angular/forms": "~12.2.0",
- "@angular/material": "^13.1.1",
- "@angular/platform-browser": "~12.2.0",
- "@angular/platform-browser-dynamic": "~12.2.0",
- "@angular/router": "~12.2.0",
- "bootstrap": "^5.1.3",
- "jquery": "^3.6.0",
- "popper": "^1.0.1",
- "rxjs": "~6.6.0",
- "tslib": "^2.3.0",
- "zone.js": "~0.11.4"
- },
- "devDependencies": {
- "@angular-devkit/build-angular": "~12.2.10",
- "@angular/cli": "~12.2.10",
- "@angular/compiler-cli": "~12.2.0",
- "@types/jasmine": "~3.8.0",
- "@types/node": "^12.11.1",
- "jasmine-core": "~3.8.0",
- "karma": "~6.3.0",
- "karma-chrome-launcher": "~3.1.0",
- "karma-coverage": "~2.0.3",
- "karma-jasmine": "~4.0.0",
- "karma-jasmine-html-reporter": "~1.7.0",
- "typescript": "~4.3.5"
- }
-}
diff --git a/admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.html b/admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.html
deleted file mode 100644
index 76bc154..0000000
--- a/admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.html
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filtre
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- visible
- non visible
-
-
-
-
-
- Sujets
-
-
- {{formControlInterests.value ? formControlInterests.value[0] : ''}}
- 1">
- (+{{formControlInterests.value.length - 1}} {{formControlInterests.value?.length === 2 ? 'autre' : 'autres'}})
-
-
- {{topping}}
-
-
-
-
-
-
-
- Période de création:
-
- Date de début
-
-
- -
-
- Date de fin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- | Titre |
-
- {{advert.title}}
- |
-
-
-
-
- Entreprise |
-
- {{advert.company}}
- |
-
-
-
-
- Sujets |
-
-
- {{objectInterest.interest}},
- {{objectInterest.interest}}
-
- |
-
-
-
-
- Date de création |
-
- {{ advert.createdAt | date:'dd/LL/YYYY à HH:mm:ss' }}
- |
-
-
-
-
- Dernière modification |
-
- {{ advert.updatedAt | date:'dd/LL/YYYY à HH:mm:ss' }}
- |
-
-
-
-
- Vues |
-
- {{advert.countViews}}
- |
-
-
-
-
- Visible |
-
- check
-
- |
-
-
-
-
- Actions |
-
-
-
- |
-
-
-
-
-
-
- | Aucune vidéo ne correspond au filtre: "{{input.value}}" |
-
-
-
-
-
-
-
-
-
-
diff --git a/admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.scss b/admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.scss
deleted file mode 100644
index 954f3d0..0000000
--- a/admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.scss
+++ /dev/null
@@ -1,74 +0,0 @@
-.myContainer {
- max-width: 100vw;
- height: 100vh;
- overflow-x: hidden;
- font-size: small;
-}
-
-// ----------------------------------------------------------
-
-
-.filtersContainer {
- width: 80%;
- background-color: white;
- padding: 10px 10px 10px 10px;
- margin: 20px 3% 20px 3%
-}
-
-.myRow {
- margin-left: 1%;
-}
-
-.textFilter {
- width: 50%;
- font-size: medium;
- border-radius: 5px;
-}
-
-// ----------------------------------------------------------
-
-
-table {
- margin: 0 auto;
- width: 94%;
- font-size: small;
-}
-.darkTheme table { border: solid 2px white; }
-
-th.mat-sort-header-sorted {
- color: black;
-}
-
-td {
- font-size: small;
-}
-
-input {
- width: 30%;
- font-size: large;
- border-radius: 5px;
-}
-
-
-// -------------------------------------------------------------------------
-
-
-// aura
-::ng-deep .mat-checkbox-ripple .mat-ripple-element {
- background-color: grey !important;
-}
-
-// contenu coche
-::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background {
- background-color: black !important;
-}
-
-// indeterminate
-::ng-deep .mat-checkbox .mat-checkbox-frame {
- border: solid 1px black !important;
- background-color: white !important;
-}
-
-::ng-deep .mat-pseudo-checkbox-checked {
- background-color: black !important;
-}
diff --git a/admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.spec.ts b/admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.spec.ts
deleted file mode 100644
index 5b77dff..0000000
--- a/admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PageAdListAdminComponent } from './page-ad-list-admin.component';
-
-describe('PageAdListAdminComponent', () => {
- let component: PageAdListAdminComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ PageAdListAdminComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(PageAdListAdminComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.ts b/admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.ts
deleted file mode 100644
index a0fa87f..0000000
--- a/admin/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.ts
+++ /dev/null
@@ -1,260 +0,0 @@
-import {AfterViewInit, Component, ViewChild} from '@angular/core';
-import {MatSort} from "@angular/material/sort";
-import {MatPaginator} from "@angular/material/paginator";
-import {MatDialog} from "@angular/material/dialog";
-import {MatSnackBar} from "@angular/material/snack-bar";
-import {MatTableDataSource} from "@angular/material/table";
-import {PopupDeleteAdAdminComponent} from "../popup-delete-ad-admin/popup-delete-ad-admin.component";
-import {PopupVisualizeImagesAdminComponent} from "../popup-visualize-images-admin/popup-visualize-images-admin.component";
-import {FormControl} from "@angular/forms";
-import {HttpParams} from "@angular/common/http";
-import {ThemeService} from "../../../utils/theme/theme.service";
-import {MessageService} from "../../../utils/message/message.service";
-
-
-
-export interface AdvertWithCountViewsAndCompany {
- id: string,
- userId: string,
- company: string,
- title: string,
- url: string,
- images: {
- url: string,
- description: string,
- }[],
- interests: string[],
- comment: string,
- views: Date[],
- countViews: number,
- isVisible: boolean,
- isActive: boolean,
- createdAt: Date,
- updatedAt: Date,
-}
-
-
-@Component({
- selector: 'app-page-ad-list-admin',
- templateUrl: './page-ad-list-admin.component.html',
- styleUrls: ['./page-ad-list-admin.component.scss']
-})
-export class PageAdListAdminComponent implements AfterViewInit
-{
- tabAdvertWithCountViews: AdvertWithCountViewsAndCompany[] = [];
- tabAdvertiser: any[];
- displayedColumns: string[] = [ 'title', 'company', 'interests', 'createdAt', 'updatedAt', 'countViews', 'isVisible', 'actions' ];
- dataSource ;
- @ViewChild(MatSort) sort: MatSort;
- @ViewChild(MatPaginator) paginator: MatPaginator;
-
- visible: boolean = true;
- noVisible: boolean = true;
- startDate: Date = null;
- endDate: Date = null;
- formControlInterests = new FormControl();
- allInterests: string[] = [];
-
-
- constructor( public themeService: ThemeService,
- public dialog: MatDialog,
- private snackBar: MatSnackBar,
- private messageService: MessageService) { }
-
-
- ngAfterViewInit(): void
- {
- // Ask for ads and then for advertiser
- let params = new HttpParams();
- params = params.append("isActive", true);
- this.messageService
- .get("ad/findAll", params)
- .subscribe(ret => this.afterReceivingAds(ret), err => this.afterReceivingAds(err) );
-
- // Ask for interest
- this.messageService
- .get("misc/getInterests")
- .subscribe(ret => this.afterReceivingInterests(ret), err => this.afterReceivingInterests(err) );
- }
-
-
- afterReceivingAds(retour: any): void
- {
- if(retour.status !== "success") {
- console.log(retour);
- }
- else {
- const tabAdvert = retour.data;
- this.messageService
- .get("user/findAll")
- .subscribe(ret => this.afterReceivingAdvertiser(ret, tabAdvert), err => this.afterReceivingAdvertiser(err, tabAdvert) );
- }
- }
-
-
- afterReceivingAdvertiser(retour: any, tabAdvert): void
- {
- if(retour.status !== "success") {
- console.log(retour);
- }
- else {
- this.tabAdvertiser = retour.data.filter(x => x.role.name === "advertiser");
- for(let advert of tabAdvert) this.tabAdvertWithCountViews.push(this.advertToAdvertWithCountViewsAndCompany(advert));
- this.dataSource = new MatTableDataSource();
- this.onFilter();
- }
- }
-
-
- afterReceivingInterests(retour: any): void
- {
- if(retour.status !== "success") {
- console.log(retour);
- }
- else {
- this.allInterests = retour.data.map(x => x.interest);
- this.allInterests.sort();
- }
- }
-
-
- applyFilter(event: Event): void
- {
- const filterValue = (event.target as HTMLInputElement).value;
- this.dataSource.filter = filterValue.trim().toLowerCase();
- }
-
-
- onVisualizeImages(advert: AdvertWithCountViewsAndCompany)
- {
- if(advert.images.length !== 0)
- {
- const config = {
- width: '30%',
- height: '90%',
- data: { images: advert.images }
- };
- this.dialog
- .open(PopupVisualizeImagesAdminComponent, config)
- .afterClosed()
- .subscribe(retour => {});
- }
- else {
- const config = { duration: 2000, panelClass: "custom-class" };
- const message = "Cette annonce ne contient aucune image" ;
- this.snackBar.open( message, "", config);
- }
- }
-
-
- onDelete(advert: AdvertWithCountViewsAndCompany): void
- {
- const config = {
- data: { advert: advert }
- };
- this.dialog
- .open(PopupDeleteAdAdminComponent, config)
- .afterClosed()
- .subscribe( retour => {
-
- const config = { duration: 1000, panelClass: "custom-class" };
- let message = "" ;
- if((retour === undefined) || (retour === null)) {
- message = "Opération annulée" ;
- }
- else {
- const index = this.dataSource.data.findIndex( elt => (elt.id === advert.id));
- this.dataSource.data.splice(index, 1);
- this.dataSource.data = this.dataSource.data;
- this.dataSource = this.dataSource;
- message = advert.title + " a bien été supprimée ✔" ;
- }
- this.snackBar.open( message, "", config);
- });
- }
-
-
- onFilter(): void
- {
- this.dataSource.data = [];
- for(let advert of this.tabAdvertWithCountViews)
- {
- let valide: boolean = true;
-
- if(advert.isVisible && this.visible) valide = true;
- else if((!advert.isVisible) && this.noVisible) valide = true;
- else valide = false;
-
- if(valide)
- {
- if ((advert.createdAt === null) && (this.startDate !== null)) valide = false;
- else if ((advert.createdAt === null) && (this.endDate !== null)) valide = false;
- else if (this.startDate !== null)
- {
- if(this.startDate.getTime() > advert.createdAt.getTime()) valide = false;
- else if (this.endDate !== null)
- {
- if(this.endDate.getTime() < advert.createdAt.getTime()) valide = false;
- }
- }
- }
-
- if(valide) {
- if(this.formControlInterests.value !== null) {
- for (let interest of this.formControlInterests.value) {
- if (advert.interests.indexOf(interest) === -1) {
- valide = false;
- break;
- }
- }
- }
- }
-
- if(valide) this.dataSource.data.push(advert);
- }
-
- this.dataSource = new MatTableDataSource(this.dataSource.data);
- this.dataSource.sort = this.sort;
- this.dataSource.paginator = this.paginator;
- }
-
-
- onNewStartDate(event): void {
- this.startDate = new Date(event);
- }
-
- onNewEndDate(event): void {
- this.endDate = new Date(event);
- }
-
-
- advertToAdvertWithCountViewsAndCompany(advert): AdvertWithCountViewsAndCompany
- {
- let company0 = "company" ;
- for(let advertiser of this.tabAdvertiser)
- {
- if(advert.userId === advertiser.id) {
- company0 = advertiser.company;
- break;
- }
- }
-
- return {
- id: advert.id,
- userId: advert.userId,
- title: advert.title,
- company: company0,
- url: advert.url,
- images: advert.images,
- interests: advert.interests,
- comment: advert.comment,
- views: advert.views,
- countViews: advert.views.length,
- isVisible: advert.isVisible,
- isActive: advert.isActive,
- createdAt: advert.createdAt,
- updatedAt: advert.updatedAt,
- }
- }
-
-}
diff --git a/admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.html b/admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.html
deleted file mode 100644
index d92e686..0000000
--- a/admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
- Êtes-vous sûr de vouloir supprimer l'annonce {{advert.title}} ?
-
-
-
-
-
-
diff --git a/admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.scss b/admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.scss
deleted file mode 100644
index e69de29..0000000
diff --git a/admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.spec.ts b/admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.spec.ts
deleted file mode 100644
index 811eee8..0000000
--- a/admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PopupDeleteAdAdminComponent } from './popup-delete-ad-admin.component';
-
-describe('PopupDeleteAdAdminComponent', () => {
- let component: PopupDeleteAdAdminComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ PopupDeleteAdAdminComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(PopupDeleteAdAdminComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.ts b/admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.ts
deleted file mode 100644
index 8470921..0000000
--- a/admin/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import {Component, Inject, OnInit} from '@angular/core';
-import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog";
-import {MessageService} from "../../../utils/message/message.service";
-
-@Component({
- selector: 'app-popup-delete-ad-admin',
- templateUrl: './popup-delete-ad-admin.component.html',
- styleUrls: ['./popup-delete-ad-admin.component.scss']
-})
-export class PopupDeleteAdAdminComponent implements OnInit
-{
- advert: any;
-
-
- constructor( public dialogRef: MatDialogRef,
- @Inject(MAT_DIALOG_DATA) public data,
- private messageService: MessageService) { }
-
-
- ngOnInit(): void
- {
- this.advert = this.data.advert;
- }
-
-
- onValidate(): void
- {
- this.messageService
- .delete("ad/delete/"+this.advert.id)
- .subscribe(ret => this.onValidateCallback(ret), err => this.onValidateCallback(err));
- }
-
-
- onValidateCallback(retour: any): void
- {
- if(retour.status !== "success") {
- console.log(retour);
- this.dialogRef.close();
- }
- else {
- console.log("suppr");
- console.log(retour);
- this.dialogRef.close(true);
- }
- }
-
-}
diff --git a/admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.html b/admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.html
deleted file mode 100644
index dfbc2fe..0000000
--- a/admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.html
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.scss b/admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.scss
deleted file mode 100644
index eb60d48..0000000
--- a/admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-carousel {
- width: 100%;
- margin: 0 auto;
- text-align: center;
- justify-content: center
-}
-
-
-
-.dialog-title {
- display: flex;
- justify-content: space-between;
- align-items: center;
-}
diff --git a/admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.spec.ts b/admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.spec.ts
deleted file mode 100644
index 24f276f..0000000
--- a/admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PopupVisualizeImagesAdminComponent } from './popup-visualize-images-admin.component';
-
-describe('PopupVisualizeImagesAdminComponent', () => {
- let component: PopupVisualizeImagesAdminComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ PopupVisualizeImagesAdminComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(PopupVisualizeImagesAdminComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.ts b/admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.ts
deleted file mode 100644
index 634d051..0000000
--- a/admin/src/app/admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import {Component, Inject, OnInit} from '@angular/core';
-import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog";
-
-@Component({
- selector: 'app-popup-visualize-images-admin',
- templateUrl: './popup-visualize-images-admin.component.html',
- styleUrls: ['./popup-visualize-images-admin.component.scss']
-})
-export class PopupVisualizeImagesAdminComponent implements OnInit {
- tabImages = [];
- index: number = 0;
- nbImage: number = 0;
-
-
- constructor( public dialogRef: MatDialogRef,
- @Inject(MAT_DIALOG_DATA) public data ) { }
-
-
- ngOnInit(): void
- {
- this.tabImages = this.data.images;
- this.nbImage = this.tabImages.length;
- }
-
- onPrecedent(): void
- {
- if(this.index !== 0) this.index -= 1;
- }
-
- onSuivant(): void
- {
- if(this.index !== (this.nbImage-1)) this.index += 1;
- }
-
-}
diff --git a/admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.html b/admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.html
deleted file mode 100644
index 7e025c5..0000000
--- a/admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
![]()
-
-
-
-
-
Pseudo:
-
{{admin.login}}
-
-
-
-
-
Mail:
-
{{admin.email}}
-
-
-
-
-
Date de création:
-
{{admin.createdAt | date:'dd/LL/YYYY'}}
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.scss b/admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.scss
deleted file mode 100644
index 966c9a2..0000000
--- a/admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.scss
+++ /dev/null
@@ -1,61 +0,0 @@
-.myContainer {
- max-width: 100vw;
- height: 100vh;
- overflow-x: hidden;
-}
-
-
-.boite {
- margin-left: auto;
- margin-right: auto;
- width: 25%;
- margin-top: 10vh;
- border: solid 3px;
- border-radius: 10px;
- padding: 20px 40px 20px 40px;
- background-color: #ffffff;
- text-align: center;
- box-shadow: 10px 5px 5px black;
-}
-.lightTheme .boite {
- border-color: black;
-}
-.darkTheme .boite {
- border-color: white;
-}
-
-
-img {
- margin: 0px 0px 10px 0px;
- width: 5vw;
- height: 5vw;
- border: solid 2px black;
- border-radius: 50%;
- font-size: xxx-large;
-}
-
-
-.myRow {
- margin: 15px 0px 15px 0px;
-}
-.myLabel {
- text-align: right;
- padding: 0px 5px 0px 0px;
- margin: 0px;
- font-weight: bold;
-}
-.myValue {
- text-align: left;
- padding: 0px 0px 0px 5px;
- margin: 0px;
-}
-
-
-.btnContainer {
- text-align: center;
- margin-top: 40px;
-}
-.myBtn {
- border: solid 1px black;
- background-color: white;
-}
diff --git a/admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.spec.ts b/admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.spec.ts
deleted file mode 100644
index 39fbdd9..0000000
--- a/admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PageProfilAdminComponent } from './page-profil-admin.component';
-
-describe('PageProfilAdminComponent', () => {
- let component: PageProfilAdminComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ PageProfilAdminComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(PageProfilAdminComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.ts b/admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.ts
deleted file mode 100644
index a282706..0000000
--- a/admin/src/app/admin/myProfil/page-profil-admin/page-profil-admin.component.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import {ThemeService} from "../../../utils/theme/theme.service";
-import {MatDialog} from "@angular/material/dialog";
-import {MatSnackBar} from "@angular/material/snack-bar";
-import {MessageService} from "../../../utils/message/message.service";
-import {ProfilService} from "../../../utils/profil/profil.service";
-import {PopupUpdateAdminComponent} from "../popup-update-admin/popup-update-admin.component";
-
-@Component({
- selector: 'app-page-profil-admin',
- templateUrl: './page-profil-admin.component.html',
- styleUrls: ['./page-profil-admin.component.scss']
-})
-export class PageProfilAdminComponent implements OnInit
-{
- admin = {
- _id: "",
- login: "",
- hashPass: "",
- email: "",
- role: {
- name: "admin",
- permission: 10,
- isAccepted: true,
- },
- profileImageUrl: "",
- dateOfBirth: null,
- gender: "man",
- interests: [],
- company: "",
- isActive: true,
- createdAt: new Date(),
- updatedAt: new Date(),
- lastConnexion: null
- };
-
-
- constructor( public themeService: ThemeService,
- public dialog: MatDialog,
- private snackBar: MatSnackBar,
- private messageService: MessageService,
- private profilService: ProfilService ) { }
-
-
- ngOnInit(): void
- {
- this.messageService
- .get( "user/findOne/"+this.profilService.getId())
- .subscribe( retour => this.ngOnInitCallback(retour), err => this.ngOnInitCallback(err) )
- }
-
-
- ngOnInitCallback(retour: any)
- {
- if(retour.status !== "success") {
- console.log(retour);
- }
- else {
- this.admin = retour.data;
- }
- }
-
-
- onModifier()
- {
- const config = {
- width: '25%',
- data: { admin: this.admin }
- };
- this.dialog
- .open(PopupUpdateAdminComponent, config)
- .afterClosed()
- .subscribe(retour => {
-
- if((retour === null) || (retour === undefined))
- {
- const config = { duration: 1000, panelClass: "custom-class" };
- this.snackBar.open( "Opération annulé", "", config);
- }
- else
- {
- this.admin = retour;
- }
- });
- }
-
-}
diff --git a/admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.html b/admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.html
deleted file mode 100644
index 38cf7e5..0000000
--- a/admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.html
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
-
-
![]()
-
-
-
-
-
-
-
-
- Pseudo
-
-
-
-
-
-
-
-
- Modifier mot de passe:
-
-
-
-
-
-
-
- Nouveau mot de passe
-
-
-
-
-
- Confirmation nouveau mot de passe
-
-
-
-
-
-
-
-
-
-
- {{errorMessage}}
-
-
-
-
-
-
-
-
-
-
diff --git a/admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.scss b/admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.scss
deleted file mode 100644
index 1968e90..0000000
--- a/admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-.boite {
- font-size: small;
-}
-
-button {
- font-size: small;
-}
-
-img {
- margin: 0px 0px 10px 0px;
- width: 5vw;
- height: 5vw;
- border: solid 2px black;
- border-radius: 50%;
- font-size: xxx-large;
-}
-
-// -------------------------------------------------------------------------
-
-// aura
-::ng-deep .mat-checkbox-ripple .mat-ripple-element {
- background-color: grey !important;
-}
-
-// contenu coche
-::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background {
- background-color: black !important;
-}
-
-// indeterminate
-::ng-deep .mat-checkbox .mat-checkbox-frame {
- background-color: white !important;
-}
diff --git a/admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.spec.ts b/admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.spec.ts
deleted file mode 100644
index 9f1a0f5..0000000
--- a/admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PopupUpdateAdminComponent } from './popup-update-admin.component';
-
-describe('PopupUpdateAdminComponent', () => {
- let component: PopupUpdateAdminComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ PopupUpdateAdminComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(PopupUpdateAdminComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.ts b/admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.ts
deleted file mode 100644
index 2e11b68..0000000
--- a/admin/src/app/admin/myProfil/popup-update-admin/popup-update-admin.component.ts
+++ /dev/null
@@ -1,122 +0,0 @@
-import {Component, Inject, OnInit} from '@angular/core';
-import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog";
-import {MessageService} from "../../../utils/message/message.service";
-import {ProfilService} from "../../../utils/profil/profil.service";
-
-
-@Component({
- selector: 'app-popup-update-admin',
- templateUrl: './popup-update-admin.component.html',
- styleUrls: ['./popup-update-admin.component.scss']
-})
-export class PopupUpdateAdminComponent implements OnInit
-{
- adminCopy;
- newPassword: string = "";
- confirmNewPassword: string = "" ;
- changePassword: boolean = false ;
- hasError: boolean = false;
- errorMessage: string = "" ;
-
-
- constructor( public dialogRef: MatDialogRef,
- @Inject(MAT_DIALOG_DATA) public data,
- private messageService: MessageService,
- private profilService: ProfilService ) { }
-
-
- ngOnInit(): void
- {
- const admin0 = this.data.admin;
- this.adminCopy = {
- _id: admin0._id,
- login: admin0.login,
- hashPass: admin0.hashPass,
- email: admin0.email,
- role: {
- name: admin0.role.name,
- permission: admin0.role.permission,
- isAccepted: admin0.role.isAccepted,
- },
- profileImageUrl: admin0.profileImageUrl,
- dateOfBirth: admin0.dateOfBirth,
- gender: admin0.gender,
- interests: [],
- company: "",
- isActive: admin0.isActive,
- createdAt: admin0.createdAt,
- updatedAt: admin0.updatedAt,
- lastConnexion: admin0.lastConnexion
- };
- for(let interest of admin0.interests) this.adminCopy.interests.push(interest);
- }
-
-
- onValider()
- {
- this.checkField();
- if(!this.hasError)
- {
- if(this.changePassword) this.adminCopy.hashPass = this.newPassword;
- const data = {
- login: this.adminCopy.login,
- hashPass: this.adminCopy.hashPass,
- email: this.adminCopy.email,
- profileImageUrl: this.adminCopy.profileImageUrl,
- };
- this.messageService
- .put("user/update/"+this.profilService.getId(), data)
- .subscribe( ret => this.onValiderCallback(ret), err => this.onValiderCallback(err) );
- }
- }
-
-
- onValiderCallback(retour: any)
- {
- if(retour.status !== "success") {
- console.log(retour);
- this.dialogRef.close(null);
- }
- else {
- this.profilService.setProfileImageUrl(this.adminCopy.profileImageUrl);
- this.dialogRef.close(this.adminCopy);
- }
- }
-
-
- checkField()
- {
- if(this.adminCopy.login.length === 0) {
- this.errorMessage = "Veuillez remplir le champ 'pseudo'" ;
- this.hasError = true;
- }
- else if(this.adminCopy.email.length === 0) {
- this.errorMessage = "Veuillez remplir le champ 'email'" ;
- this.hasError = true;
- }
- else if(!this.isValidEmail(this.adminCopy.email)) {
- this.errorMessage = "Email invalide" ;
- this.hasError = true;
- }
- else if((this.changePassword) && (this.newPassword.length === 0)) {
- this.errorMessage = "Veuillez remplir le champ 'mot de passe'" ;
- this.hasError = true;
- }
- else if((this.changePassword) && (this.newPassword !== this.confirmNewPassword)) {
- this.errorMessage = "Le mot de passe est différent de sa confirmation" ;
- this.hasError = true;
- }
- else {
- this.errorMessage = "" ;
- this.hasError = false;
- }
- }
-
-
- isValidEmail(email)
- {
- let re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
- return re.test(email);
- }
-
-}
diff --git a/admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.html b/admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.html
deleted file mode 100644
index 2a7c484..0000000
--- a/admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
- Centres d'intérêt
-
-
-
-
-
-
- {{interest}}
-
-
-
-
-
-
-
-
-
-
-
- {{interest}}
-
-
-
-
-
-
diff --git a/admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.scss b/admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.scss
deleted file mode 100644
index c7acb4b..0000000
--- a/admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-mat-form-field {
- width: 100%;
-}
diff --git a/admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.spec.ts b/admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.spec.ts
deleted file mode 100644
index 62f9051..0000000
--- a/admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { InputInterestsAdminComponent } from './input-interests-admin.component';
-
-describe('InputInterestsAdminComponent', () => {
- let component: InputInterestsAdminComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ InputInterestsAdminComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(InputInterestsAdminComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.ts b/admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.ts
deleted file mode 100644
index c0b3560..0000000
--- a/admin/src/app/admin/userList/input-interests-admin/input-interests-admin.component.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';
-import {COMMA, ENTER} from "@angular/cdk/keycodes";
-import {FormControl} from "@angular/forms";
-import {Observable} from "rxjs";
-import {map, startWith} from "rxjs/operators";
-import {MatChipInputEvent} from "@angular/material/chips";
-import {MatAutocompleteSelectedEvent} from "@angular/material/autocomplete";
-import {MessageService} from "../../../utils/message/message.service";
-
-
-
-@Component({
- selector: 'app-input-interests-admin',
- templateUrl: './input-interests-admin.component.html',
- styleUrls: ['./input-interests-admin.component.scss']
-})
-export class InputInterestsAdminComponent implements OnInit
-{
- selectable = true;
- removable = true;
- separatorKeysCodes: number[] = [ENTER, COMMA];
- formControl = new FormControl();
- filteredInterests: Observable;
- @Input() myInterests: string[] = [];
- allInterests: string[] = [];
- @Output() eventEmitter = new EventEmitter();
- @ViewChild('tagInput') tagInput: ElementRef;
- interestsNotSelected: string[] = [];
-
-
- constructor( private messageService: MessageService ) {}
-
-
- ngOnInit(): void
- {
- this.filteredInterests = this.formControl.valueChanges.pipe(
- startWith(null),
- map((fruit: string | null) => fruit ? this._filter(fruit) : this.interestsNotSelected.slice()));
-
- this.messageService
- .get("misc/getInterests")
- .subscribe( retour => {
-
- if(retour.status !== "success") {
- console.log(retour);
- }
- else {
- this.allInterests = [];
- for(let elt of retour.data)
- {
- this.allInterests.push(elt.interest);
- this.interestsNotSelected.push(elt.interest);
- }
- }
- });
- }
-
-
- add(event: MatChipInputEvent): void
- {
- const value = (event.value || '').trim();
- const index = this.interestsNotSelected.indexOf(value);
- if (value && (index !== -1) && (!this.myInterests.includes(value)))
- {
- this.myInterests.push(value);
- event.chipInput!.clear();
- this.formControl.setValue(null);
- this.eventEmitter.emit(this.myInterests);
- this.interestsNotSelected.splice(index, 1);
- }
- }
-
-
- remove(interest: string): void
- {
- // supprimer 'interest' de 'myInterest'
- const index = this.myInterests.indexOf(interest);
- if (index >= 0) this.myInterests.splice(index, 1);
- this.eventEmitter.emit(this.myInterests);
-
- // remmettre 'interest' dans 'interestsNotSelected'
- if(!this.interestsNotSelected.includes(interest))
- {
- const indexOfAutres = this.interestsNotSelected.indexOf("Autres");
- if(indexOfAutres !== -1)
- {
- this.interestsNotSelected.splice(indexOfAutres, 1);
- if(interest !== "Autres") this.interestsNotSelected.push(interest);
- this.interestsNotSelected.sort();
- this.interestsNotSelected.push("Autres");
- }
- else {
- this.interestsNotSelected.push(interest);
- if(interest !== "Autres") this.interestsNotSelected.sort();
- }
- }
- }
-
-
- selected(event: MatAutocompleteSelectedEvent): void
- {
- const value = event.option.viewValue;
- if(!this.myInterests.includes(value))
- {
- this.myInterests.push(value);
- const index = this.interestsNotSelected.indexOf(value);
- this.interestsNotSelected.splice(index, 1);
- }
- this.tagInput.nativeElement.value = '';
- this.formControl.setValue(null);
- this.eventEmitter.emit(this.myInterests);
- }
-
-
- private _filter(value: string): string[]
- {
- const filterValue = value.toLowerCase();
- return this.interestsNotSelected.filter(fruit => fruit.toLowerCase().includes(filterValue));
- }
-
-}
diff --git a/admin/src/app/admin/userList/page-user-list/page-user-list.component.html b/admin/src/app/admin/userList/page-user-list/page-user-list.component.html
deleted file mode 100644
index 25fe6f5..0000000
--- a/admin/src/app/admin/userList/page-user-list/page-user-list.component.html
+++ /dev/null
@@ -1,193 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filtre
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Utilisateur
-
-
- Annonceur
-
-
- Admin
-
-
-
-
-
-
- actif
- non actif
-
-
-
-
- Période de dernière connexion:
-
- Date de début
-
-
- -
-
- Date de fin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
- power_settings_new
- |
-
-
-
- |
-
-
-
-
- Pseudo |
-
- {{user.login}}
- |
-
-
-
-
- Email |
-
- {{user.email}}
- |
-
-
-
-
- Date de naissance |
-
-
- {{ user.dateOfBirth | date:'dd/LL/YYYY' }}
- |
-
-
-
-
- Âge |
-
-
- {{user.age}}
- |
-
-
-
-
- Sexe |
-
- H
- F
- |
-
-
-
-
- Centres d'intérêt |
-
-
- {{interest}},
- {{interest}}
-
- |
-
-
-
-
- Date de création |
-
- {{ user.createdAt | date:'dd/LL/YYYY à HH:mm:ss' }}
- |
-
-
-
-
- Dernière connexion |
-
- {{ user.lastConnexion | date:'dd/LL/YYYY à HH:mm:ss' }}
- |
-
-
-
-
- Accepté |
-
-
- |
-
-
-
-
-
-
- | Aucune vidéo ne correspond au filtre: "{{input.value}}" |
-
-
-
-
-
-
-
-
-
-
diff --git a/admin/src/app/admin/userList/page-user-list/page-user-list.component.scss b/admin/src/app/admin/userList/page-user-list/page-user-list.component.scss
deleted file mode 100644
index bbeac05..0000000
--- a/admin/src/app/admin/userList/page-user-list/page-user-list.component.scss
+++ /dev/null
@@ -1,99 +0,0 @@
-.myContainer {
- min-height: 100vh;
- font-size: small;
-}
-
-// ----------------------------------------------------------
-
-.filtersContainer {
- width: 90%;
- background-color: white;
- padding: 10px 10px 10px 10px;
-}
-
-.myRow {
- margin-left: 1%;
-}
-
-.textFilter {
- width: 50%;
- font-size: medium;
- border-radius: 5px;
-}
-
-.btnAjouter {
- background-color: white;
- border: solid 1px black;
-}
-
-// ----------------------------------------------------------
-
-table {
- margin: 0 auto;
- width: 94%;
- font-size: small;
-}
-.darkTheme table { border: solid 2px white; }
-
-th.mat-sort-header-sorted {
- color: black;
-}
-
-td {
- font-size: small;
-}
-
-// -------------------------------------------------------------------------
-
-::ng-deep .mat-radio-inner-circle {
- color: black !important;
- background-color: black !important;
-}
-
-::ng-deep .mat-radio-outer-circle{
- color: black !important;
- border: solid 1px gray !important;
-}
-
-// -------------------------------------------------------------------------
-
-
-// aura
-::ng-deep .mat-checkbox-ripple .mat-ripple-element {
- background-color: grey !important;
-}
-
-// contenu coche
-::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background {
- background-color: black !important;
-}
-
-// indeterminate
-::ng-deep .mat-checkbox .mat-checkbox-frame {
- border: solid 1px black !important;
- background-color: white !important;
-}
-
-
-// --------------------------------------------------------------------
-
-
-// rong gauche
-::ng-deep .mat-slide-toggle-thumb {
- background-color: white !important;
-}
-
-// trait droite
-::ng-deep .mat-slide-toggle-bar {
- background-color: gray !important;
-}
-
-// rond droite
-::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb {
- background-color: white !important;
-}
-
-// trait gauche
-::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar {
- background-color: cornflowerblue !important;
-}
diff --git a/admin/src/app/admin/userList/page-user-list/page-user-list.component.spec.ts b/admin/src/app/admin/userList/page-user-list/page-user-list.component.spec.ts
deleted file mode 100644
index edbbffe..0000000
--- a/admin/src/app/admin/userList/page-user-list/page-user-list.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PageUserListComponent } from './page-user-list.component';
-
-describe('PageUserListComponent', () => {
- let component: PageUserListComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ PageUserListComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(PageUserListComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/admin/userList/page-user-list/page-user-list.component.ts b/admin/src/app/admin/userList/page-user-list/page-user-list.component.ts
deleted file mode 100644
index 995b053..0000000
--- a/admin/src/app/admin/userList/page-user-list/page-user-list.component.ts
+++ /dev/null
@@ -1,232 +0,0 @@
-import {AfterViewInit, Component, ViewChild} from '@angular/core';
-import {MatSort} from "@angular/material/sort";
-import {MatPaginator} from "@angular/material/paginator";
-import {MatDialog} from "@angular/material/dialog";
-import {MatSnackBar} from "@angular/material/snack-bar";
-import {MatTableDataSource} from "@angular/material/table";
-import {PopupDeleteUserComponent} from "../popup-delete-user/popup-delete-user.component";
-import {PopupCreateUserComponent} from "../popup-create-user/popup-create-user.component";
-import {ThemeService} from "../../../utils/theme/theme.service";
-import {MessageService} from "../../../utils/message/message.service";
-
-
-@Component({
- selector: 'app-page-user-list',
- templateUrl: './page-user-list.component.html',
- styleUrls: ['./page-user-list.component.scss']
-})
-export class PageUserListComponent implements AfterViewInit
-{
- displayedColumns: string[];
- displayedColumnsUser: string[] = [ 'isActive', 'login', 'email', 'dateOfBirth', 'age', 'sexe', 'interests', 'createdAt', 'lastConnexion' ];
- displayedColumnsAdvertiser: string[] = [ 'isActive', 'login', 'email', 'createdAt', 'lastConnexion', 'isAccepted' ];
- displayedColumnsAdmin: string[] = [ 'isActive', 'login', 'email', 'createdAt', 'lastConnexion' ];
-
- tabUser: any[] = [];
- tabAdvertiser: any[] = [];
- tabAdmin: any[] = [];
-
- roleName: string = "user" ;
- dataSource ;
- @ViewChild(MatSort) sort: MatSort;
- @ViewChild(MatPaginator) paginator: MatPaginator;
-
- active: boolean = true;
- noActive: boolean = false;
- startDate: Date = null;
- endDate: Date = null;
-
-
- constructor( public themeService: ThemeService,
- public dialog: MatDialog,
- private snackBar: MatSnackBar,
- private messageService: MessageService ) { }
-
-
- ngAfterViewInit(): void
- {
- this.messageService
- .get("user/findAll")
- .subscribe(ret => this.ngAfterViewInitCallback(ret), err => this.ngAfterViewInitCallback(err));
- }
-
-
- ngAfterViewInitCallback(retour: any): void
- {
- if(retour.status !== "success") {
- console.log(retour);
- }
- else {
- for(let person of retour.data)
- {
- if(person.role.name === "user") {
- person["age"] = this.getAge(person.dateOfBirth);
- this.tabUser.push(person);
- }
- else if(person.role.name === "advertiser") this.tabAdvertiser.push(person);
- else this.tabAdmin.push(person);
- }
- this.onFilter();
- }
- }
-
-
- applyFilter(event: Event): void
- {
- const filterValue = (event.target as HTMLInputElement).value;
- this.dataSource.filter = filterValue.trim().toLowerCase();
- }
-
-
- onDelete(user: any): void
- {
- const config = {
- data: { user: user }
- };
- this.dialog
- .open(PopupDeleteUserComponent, config)
- .afterClosed()
- .subscribe( retour => {
-
- const config = { duration: 1000, panelClass: "custom-class" };
- let message = "" ;
- if((retour === undefined) || (retour === null)) {
- message = "Opération annulée" ;
- }
- else {
- const index = this.dataSource.data.findIndex( elt => (elt.id === user.id));
- this.dataSource.data.splice(index, 1);
- this.dataSource.data = this.dataSource.data;
- this.dataSource = this.dataSource;
- message = user.login + " a bien été supprimée ✔" ;
- }
- this.snackBar.open(message, "", config);
- });
- }
-
-
- onCreateUser(): void
- {
- const config = { width: '50%' };
- this.dialog
- .open(PopupCreateUserComponent, config)
- .afterClosed()
- .subscribe( retour => {
-
- const config = { duration: 1000, panelClass: "custom-class" };
- if((retour === null) || (retour === undefined)) {
- this.snackBar.open( "Opération annulée", "", config);
- }
- else {
- this.snackBar.open( "L'utilisateur a bien été créé", "", config);
- if(retour.role.name === "user") this.tabUser.push(retour);
- else if(retour.role.name === "advertiser") this.tabAdvertiser.push(retour);
- else if(retour.role.name === "admin") this.tabAdmin.push(retour);
- this.onFilter();
- }
- });
- }
-
-
- onSliderIsActive(user: any): void
- {
- // il faut envoyer la négation de user.isActive
- this.messageService
- .put("user/update/"+user.id, { isActive: !user.isActive })
- .subscribe(
- ret => {},
- err => {
- console.log("onSliderIsActive");
- console.log(err);
- }
- );
- }
-
-
- onSlideIsAccepted(user: any): void
- {
- // il faut envoyer la négation de user.role.isAccepted
- const role0 = {
- name: user.role.name,
- permission: user.role.permission,
- isAccepted: !user.role.isAccepted,
- };
- this.messageService
- .put("user/update/"+user.id, {role: role0})
- .subscribe(
- ret => {},
- err => {
- console.log("onSlideIsAccepted");
- console.log(err);
- }
- );
- }
-
-
- getAge(date: Date): number
- {
- if((date === null) || (date === undefined)) return -1;
- else {
- const diff = Date.now() - (new Date(date)).getTime();
- const age = new Date(diff);
- return Math.abs(age.getUTCFullYear() - 1970);
- }
- }
-
-
- onFilter(): void
- {
- let tab1 = [];
- if(this.roleName === "user") {
- this.displayedColumns = this.displayedColumnsUser;
- tab1 = this.tabUser;
- }
- else if(this.roleName === "advertiser") {
- this.displayedColumns = this.displayedColumnsAdvertiser;
- tab1 = this.tabAdvertiser;
- }
- else if(this.roleName === "admin") {
- this.displayedColumns = this.displayedColumnsAdmin;
- tab1 = this.tabAdmin;
- }
-
- let tab2 = [];
- for(let user of tab1)
- {
- let valide: boolean = true;
-
- if(user.isActive && this.active) valide = true;
- else if((!user.isActive) && this.noActive) valide = true;
- else valide = false;
- if(valide)
- {
- if ((user.lastConnexion === null) && (this.startDate !== null)) valide = false;
- else if ((user.lastConnexion === null) && (this.endDate !== null)) valide = false;
- else if (this.startDate !== null)
- {
- if(this.startDate.getTime() > user.lastConnexion.getTime()) valide = false;
- else if (this.endDate !== null)
- {
- if(this.endDate.getTime() < user.lastConnexion.getTime()) valide = false;
- }
- }
- }
-
- if(valide) tab2.push(user);
- }
-
- this.dataSource = new MatTableDataSource(tab2);
- this.dataSource.sort = this.sort;
- this.dataSource.paginator = this.paginator;
- }
-
-
- onNewStartDate(event): void {
- this.startDate = new Date(event);
- }
-
- onNewEndDate(event): void {
- this.endDate = new Date(event);
- }
-
-}
diff --git a/admin/src/app/admin/userList/popup-create-user/popup-create-user.component.html b/admin/src/app/admin/userList/popup-create-user/popup-create-user.component.html
deleted file mode 100644
index dc7ac87..0000000
--- a/admin/src/app/admin/userList/popup-create-user/popup-create-user.component.html
+++ /dev/null
@@ -1,160 +0,0 @@
-
-
-
-
-
- Utilisateur
- Annonceur
- Admin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{errorMessage}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
![]()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
![]()
-
-
-
-
-
-
-
-
-
diff --git a/admin/src/app/admin/userList/popup-create-user/popup-create-user.component.scss b/admin/src/app/admin/userList/popup-create-user/popup-create-user.component.scss
deleted file mode 100644
index 4c8a0c6..0000000
--- a/admin/src/app/admin/userList/popup-create-user/popup-create-user.component.scss
+++ /dev/null
@@ -1,16 +0,0 @@
-.myContainer {
- font-size: small;
-}
-
-img {
- margin: 0px 0px 10px 0px;
- width: 10%;
- height: 10%;
- border: solid 2px black;
- border-radius: 50%;
- font-size: xxx-large;
-}
-
-.leftCol {
- border-right: solid 1px #dcdcdc;
-}
diff --git a/admin/src/app/admin/userList/popup-create-user/popup-create-user.component.spec.ts b/admin/src/app/admin/userList/popup-create-user/popup-create-user.component.spec.ts
deleted file mode 100644
index 9c57fcc..0000000
--- a/admin/src/app/admin/userList/popup-create-user/popup-create-user.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PopupCreateUserComponent } from './popup-create-user.component';
-
-describe('PopupCreateUserComponent', () => {
- let component: PopupCreateUserComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ PopupCreateUserComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(PopupCreateUserComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/admin/userList/popup-create-user/popup-create-user.component.ts b/admin/src/app/admin/userList/popup-create-user/popup-create-user.component.ts
deleted file mode 100644
index b5714a2..0000000
--- a/admin/src/app/admin/userList/popup-create-user/popup-create-user.component.ts
+++ /dev/null
@@ -1,125 +0,0 @@
-import {Component, Inject, OnInit} from '@angular/core';
-import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog";
-import {MessageService} from "../../../utils/message/message.service";
-
-@Component({
- selector: 'app-popup-create-user',
- templateUrl: './popup-create-user.component.html',
- styleUrls: ['./popup-create-user.component.scss']
-})
-export class PopupCreateUserComponent implements OnInit
-{
- user: any;
- hasError: boolean = false;
- errorMessage: string = "";
- password: string = "";
- confirmPassword: string = "";
-
-
- constructor( public dialogRef: MatDialogRef,
- @Inject(MAT_DIALOG_DATA) public data,
- private messageService: MessageService ) { }
-
-
- // Initialise l'utilisateur qui va être créé
- ngOnInit(): void
- {
- this.user = {
- _id: "",
- login: "",
- hashPass: "",
- email: "",
- role: {
- name: "",
- permission: 0,
- isAccepted: false,
- },
- profileImageUrl: "",
- dateOfBirth: null,
- gender: "man",
- interests: [],
- company: "",
- isActive: false,
- createdAt: new Date(),
- updatedAt: new Date(),
- lastConnexion: new Date()
- };
- }
-
-
- // Crée le nouvel utilisateur
- onEnregistrer(): void
- {
- this.checkField();
- if(!this.hasError)
- {
- this.user.hashPass = this.password;
- this.user.role = this.user.role.name;
- this.messageService
- .post("user/create", this.user)
- .subscribe(ret => this.onEnregistrerCallback(ret), err => this.onEnregistrerCallback(err));
- }
- }
-
-
- // Callback de 'onEnregistrer'
- onEnregistrerCallback(retour: any): void
- {
- if(retour.status !== "success") {
- console.log(retour);
- }
- else {
- this.dialogRef.close(retour.data);
- }
- }
-
-
- // Check les champs saisies par l'utilisateur
- checkField(): void
- {
- if(this.user.login.length === 0) {
- this.errorMessage = "Veuillez remplir le champ 'pseudo'.";
- this.hasError = true;
- }
- else if(this.user.email.length === 0) {
- this.errorMessage = "Veuillez remplir le champ 'email'.";
- this.hasError = true;
- }
- else if(!this.isValidEmail(this.user.email)) {
- this.errorMessage = "Email invalide.";
- this.hasError = true;
- }
- else if(this.password.length === 0) {
- this.errorMessage = "Veuillez remplir le champ 'mot de passe'.";
- this.hasError = true;
- }
- else if(this.password !== this.confirmPassword) {
- this.errorMessage = "Le mot de passe est différent de sa confirmation.";
- this.hasError = true;
- }
- else if((this.user.role.name === 'advertiser') && (this.user.company.length === 0)) {
- this.errorMessage = "Veuillez remplir le champ 'entreprise'.";
- this.hasError = true;
- }
- else {
- this.errorMessage = "" ;
- this.hasError = false;
- }
- }
-
-
- // Indique si email a bien le format d'un email
- isValidEmail(email): boolean
- {
- let re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
- return re.test(email);
- }
-
-
- // Récupère la liste des centres d'intérets (car celle-ci est remplie à l'aide d'un component intermédiaire)
- onEventInputInterests(myInterets: string[]): void
- {
- this.user.interests = myInterets;
- }
-
-}
diff --git a/admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.html b/admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.html
deleted file mode 100644
index 26e3854..0000000
--- a/admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
- Êtes-vous sûr de vouloir supprimer {{user.login}} ?
-
-
-
-
-
-
diff --git a/admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.scss b/admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.scss
deleted file mode 100644
index e69de29..0000000
diff --git a/admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.spec.ts b/admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.spec.ts
deleted file mode 100644
index 273cdc6..0000000
--- a/admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PopupDeleteUserComponent } from './popup-delete-user.component';
-
-describe('PopupDeleteUserComponent', () => {
- let component: PopupDeleteUserComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ PopupDeleteUserComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(PopupDeleteUserComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.ts b/admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.ts
deleted file mode 100644
index cd8091c..0000000
--- a/admin/src/app/admin/userList/popup-delete-user/popup-delete-user.component.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import {Component, Inject, OnInit} from '@angular/core';
-import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog";
-import {MessageService} from "../../../utils/message/message.service";
-
-@Component({
- selector: 'app-popup-delete-user',
- templateUrl: './popup-delete-user.component.html',
- styleUrls: ['./popup-delete-user.component.scss']
-})
-export class PopupDeleteUserComponent implements OnInit
-{
- user;
-
- constructor( public dialogRef: MatDialogRef,
- @Inject(MAT_DIALOG_DATA) public data,
- private messageService: MessageService ) { }
-
- ngOnInit(): void
- {
- this.user = this.data.user;
- }
-
- onValidate(): void
- {
- // --- FAUX CODE ---
- this.dialogRef.close(true);
- }
-
-}
diff --git a/admin/src/app/admin/utils/navbar-admin/navbar-admin.component.html b/admin/src/app/admin/utils/navbar-admin/navbar-admin.component.html
deleted file mode 100644
index a73059e..0000000
--- a/admin/src/app/admin/utils/navbar-admin/navbar-admin.component.html
+++ /dev/null
@@ -1,37 +0,0 @@
-
diff --git a/admin/src/app/admin/utils/navbar-admin/navbar-admin.component.scss b/admin/src/app/admin/utils/navbar-admin/navbar-admin.component.scss
deleted file mode 100644
index 285d629..0000000
--- a/admin/src/app/admin/utils/navbar-admin/navbar-admin.component.scss
+++ /dev/null
@@ -1,80 +0,0 @@
-.navbar {
- background-color: black;
- height: 60px;
- font-size: medium;
- color: white;
-}
-
-
-.navbar-expand-lg {
- border-bottom: solid;
- border-color: white;
- border-bottom-width: 2px;
-}
-
-
-// PolyNotFound
-.navbar-brand {
- font-family: cursive;
- font-weight: bold;
- font-size: x-large;
- margin-left: 15px;
- color: white;
-}
-
-
-.monLi {
- margin: 0px 10px 0px 10px;
-}
-
-
-.nav-link {
- color: white;
-}
-.nav-link:hover {
- color: grey;
-}
-.myActiveLink {
- text-decoration: underline;
-}
-
-
-.btnDeconnexion {
- font-size: medium;
- margin: 0px 10px 0px 10px
-}
-.btnDeconnexion:hover {
- color: grey;
-}
-
-
-img {
- border: solid 2px white;
- border-radius: 50px;
- margin: 0px 10px 0px 15px;
- width: 40px;
- height: 40px;
-}
-img:hover {
- cursor: pointer;
-}
-
-
-// --------------------------------------------------------------------
-
-
-::ng-deep .mat-slide-toggle-thumb {
- background-color: #c8c8c8;
-}
-
-::ng-deep .mat-slide-toggle-bar {
- background-color: #ffffff;
-}
-
-::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb {
- background-color: #ffffff;
-}
-
-::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar {
- background-color: #646464;
-}
diff --git a/admin/src/app/admin/utils/navbar-admin/navbar-admin.component.spec.ts b/admin/src/app/admin/utils/navbar-admin/navbar-admin.component.spec.ts
deleted file mode 100644
index 44f2cf6..0000000
--- a/admin/src/app/admin/utils/navbar-admin/navbar-admin.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { NavbarAdminComponent } from './navbar-admin.component';
-
-describe('NavbarAdminComponent', () => {
- let component: NavbarAdminComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ NavbarAdminComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(NavbarAdminComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/admin/utils/navbar-admin/navbar-admin.component.ts b/admin/src/app/admin/utils/navbar-admin/navbar-admin.component.ts
deleted file mode 100644
index bbf07fb..0000000
--- a/admin/src/app/admin/utils/navbar-admin/navbar-admin.component.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { Component } from '@angular/core';
-import {Router} from "@angular/router";
-import {ProfilService} from "../../../utils/profil/profil.service";
-import {MessageService} from "../../../utils/message/message.service";
-
-@Component({
- selector: 'app-navbar-admin',
- templateUrl: './navbar-admin.component.html',
- styleUrls: ['./navbar-admin.component.scss']
-})
-export class NavbarAdminComponent
-{
- routes: string[] = [
- "/admin", // 0
- "/admin/userList", // 1
- "/admin/adList", // 2
- "/admin/myProfil", // 3
- ];
-
- url = this.router.url;
-
- constructor( private router: Router,
- public profilService: ProfilService,
- private messageService: MessageService ) { }
-
- onDeconnexion(): void
- {
- this.messageService
- .delete('user/logout')
- .subscribe(retour => this.onDeconnexionCallback(retour), err => this.onDeconnexionCallback(err));
- }
-
- onDeconnexionCallback(retour: any): void
- {
- if(retour.status !== "success") console.log(retour);
- }
-
-}
diff --git a/admin/src/app/app-routing.module.ts b/admin/src/app/app-routing.module.ts
deleted file mode 100644
index a61b1b1..0000000
--- a/admin/src/app/app-routing.module.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-import {PageLoginComponent} from "./beforeConnexion/login/page-login/page-login.component";
-import {PageRegisterComponent} from "./beforeConnexion/register/page-register/page-register.component";
-import {PageAdListAdminComponent} from "./admin/adList/page-ad-list-admin/page-ad-list-admin.component";
-import {PageProfilAdminComponent} from "./admin/myProfil/page-profil-admin/page-profil-admin.component";
-import {PageUserListComponent} from "./admin/userList/page-user-list/page-user-list.component";
-
-const routes: Routes = [
-
- // Before connexion
- { path: '', component: PageLoginComponent },
- { path: 'login', component: PageLoginComponent },
- { path: 'register', component: PageRegisterComponent },
-
- // Admin
- { path: 'admin', component: PageUserListComponent },
- { path: 'admin/userList', component: PageUserListComponent },
- { path: 'admin/adList', component: PageAdListAdminComponent },
- { path: 'admin/myProfil', component: PageProfilAdminComponent },
-];
-
-@NgModule({
- imports: [RouterModule.forRoot(routes)],
- exports: [RouterModule]
-})
-export class AppRoutingModule { }
diff --git a/admin/src/app/app.component.html b/admin/src/app/app.component.html
deleted file mode 100644
index d5d92f3..0000000
--- a/admin/src/app/app.component.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/admin/src/app/app.component.scss b/admin/src/app/app.component.scss
deleted file mode 100644
index 22a5665..0000000
--- a/admin/src/app/app.component.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-::ng-deep snack-bar-container.custom-class {
- //background: yellow;
-}
-::ng-deep .custom-class .mat-simple-snackbar {
- //color: green;
- justify-content: center;
-}
-
-
-// aura
-::ng-deep .mat-checkbox-ripple .mat-ripple-element {
- background-color: grey !important;
-}
-
-// contenu coche
-::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background {
- background-color: black !important;
-}
-
-// indeterminate
-::ng-deep .mat-checkbox .mat-checkbox-frame {
- border: solid 1px black !important;
- background-color: white !important;
-}
diff --git a/admin/src/app/app.component.spec.ts b/admin/src/app/app.component.spec.ts
deleted file mode 100644
index 1391984..0000000
--- a/admin/src/app/app.component.spec.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { TestBed } from '@angular/core/testing';
-import { RouterTestingModule } from '@angular/router/testing';
-import { AppComponent } from './app.component';
-
-describe('AppComponent', () => {
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- imports: [
- RouterTestingModule
- ],
- declarations: [
- AppComponent
- ],
- }).compileComponents();
- });
-
- it('should create the app', () => {
- const fixture = TestBed.createComponent(AppComponent);
- const app = fixture.componentInstance;
- expect(app).toBeTruthy();
- });
-
- it(`should have as title 'admin'`, () => {
- const fixture = TestBed.createComponent(AppComponent);
- const app = fixture.componentInstance;
- expect(app.title).toEqual('admin');
- });
-
- it('should render title', () => {
- const fixture = TestBed.createComponent(AppComponent);
- fixture.detectChanges();
- const compiled = fixture.nativeElement as HTMLElement;
- expect(compiled.querySelector('.content span')?.textContent).toContain('admin app is running!');
- });
-});
diff --git a/admin/src/app/app.component.ts b/admin/src/app/app.component.ts
deleted file mode 100644
index e81341b..0000000
--- a/admin/src/app/app.component.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
- selector: 'app-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.scss']
-})
-export class AppComponent {
- title = 'admin';
-}
diff --git a/admin/src/app/app.module.ts b/admin/src/app/app.module.ts
deleted file mode 100644
index 3537350..0000000
--- a/admin/src/app/app.module.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-import { NgModule } from '@angular/core';
-import { BrowserModule } from '@angular/platform-browser';
-
-import { AppRoutingModule } from './app-routing.module';
-import { AppComponent } from './app.component';
-import { PageLoginComponent } from './beforeConnexion/login/page-login/page-login.component';
-import { PopupForgottenPasswordComponent } from './beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component';
-import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
-import {HttpClientModule} from "@angular/common/http";
-import {FormsModule, ReactiveFormsModule} from "@angular/forms";
-import {MatTableModule} from "@angular/material/table";
-import {MatSortModule} from "@angular/material/sort";
-import {MatRadioModule} from "@angular/material/radio";
-import {MatDialogModule} from "@angular/material/dialog";
-import {MatSnackBarModule} from "@angular/material/snack-bar";
-import {MatButtonModule} from "@angular/material/button";
-import {MatCheckboxModule} from "@angular/material/checkbox";
-import { PageRegisterComponent } from './beforeConnexion/register/page-register/page-register.component';
-import { PopupConfirmationComponent } from './beforeConnexion/register/popup-confirmation/popup-confirmation.component';
-import { InputInterestsRegisterComponent } from './beforeConnexion/register/input-interests-register/input-interests-register.component';
-import {MatFormFieldModule} from "@angular/material/form-field";
-import {MatChipsModule} from "@angular/material/chips";
-import {MatIconModule} from "@angular/material/icon";
-import {MatAutocompleteModule} from "@angular/material/autocomplete";
-import {MatStepperModule} from "@angular/material/stepper";
-import { NavbarBeforeConnexionComponent } from './beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component';
-import { PageProfilAdminComponent } from './admin/myProfil/page-profil-admin/page-profil-admin.component';
-import { PopupUpdateAdminComponent } from './admin/myProfil/popup-update-admin/popup-update-admin.component';
-import { PageAdListAdminComponent } from './admin/adList/page-ad-list-admin/page-ad-list-admin.component';
-import { PopupDeleteAdAdminComponent } from './admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component';
-import { PopupVisualizeImagesAdminComponent } from './admin/adList/popup-visualize-images-admin/popup-visualize-images-admin.component';
-import {MatDividerModule} from "@angular/material/divider";
-import {MatSelectModule} from "@angular/material/select";
-import {MatPaginatorModule} from "@angular/material/paginator";
-import {MatGridListModule} from "@angular/material/grid-list";
-import { PageUserListComponent } from './admin/userList/page-user-list/page-user-list.component';
-import { InputInterestsAdminComponent } from './admin/userList/input-interests-admin/input-interests-admin.component';
-import { PopupCreateUserComponent } from './admin/userList/popup-create-user/popup-create-user.component';
-import { PopupDeleteUserComponent } from './admin/userList/popup-delete-user/popup-delete-user.component';
-import {MatSlideToggleModule} from "@angular/material/slide-toggle";
-import { NavbarAdminComponent } from './admin/utils/navbar-admin/navbar-admin.component';
-import {MatInputModule} from "@angular/material/input";
-
-@NgModule({
- declarations: [
- AppComponent,
- PageLoginComponent,
- PopupForgottenPasswordComponent,
- PageRegisterComponent,
- PopupConfirmationComponent,
- InputInterestsRegisterComponent,
- NavbarBeforeConnexionComponent,
- PageProfilAdminComponent,
- PopupUpdateAdminComponent,
- PageAdListAdminComponent,
- PopupDeleteAdAdminComponent,
- PopupVisualizeImagesAdminComponent,
- PageUserListComponent,
- InputInterestsAdminComponent,
- PopupCreateUserComponent,
- PopupDeleteUserComponent,
- NavbarAdminComponent
- ],
- imports: [
- BrowserModule,
- AppRoutingModule,
- BrowserAnimationsModule,
- MatTableModule,
- MatSortModule,
- MatRadioModule,
- FormsModule,
- HttpClientModule,
- MatDialogModule,
- MatButtonModule,
- MatCheckboxModule,
- MatSnackBarModule,
- MatFormFieldModule,
- MatInputModule,
- MatChipsModule,
- MatIconModule,
- MatAutocompleteModule,
- ReactiveFormsModule,
- MatStepperModule,
- MatDividerModule,
- MatSelectModule,
- MatPaginatorModule,
- MatGridListModule,
- MatSlideToggleModule,
- ],
- providers: [],
- bootstrap: [AppComponent]
-})
-export class AppModule { }
diff --git a/admin/src/app/beforeConnexion/login/page-login/page-login.component.html b/admin/src/app/beforeConnexion/login/page-login/page-login.component.html
deleted file mode 100644
index 675270e..0000000
--- a/admin/src/app/beforeConnexion/login/page-login/page-login.component.html
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
StreamNotFound
-

-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/admin/src/app/beforeConnexion/login/page-login/page-login.component.scss b/admin/src/app/beforeConnexion/login/page-login/page-login.component.scss
deleted file mode 100644
index 8924202..0000000
--- a/admin/src/app/beforeConnexion/login/page-login/page-login.component.scss
+++ /dev/null
@@ -1,271 +0,0 @@
-html {
- background-color: #56baed;
-}
-
-body {
- font-family: "Poppins", sans-serif;
- height: 100vh;
-}
-
-a {
- color: #5E89FF;
- display:inline-block;
- text-decoration: none;
- font-weight: 400;
-}
-
-h2 {
- text-align: center;
- font-size: 16px;
- font-weight: 600;
- text-transform: uppercase;
- display:inline-block;
- margin: 40px 8px 10px 8px;
- color: #cccccc;
-}
-
-
-
-/* STRUCTURE */
-
-.wrapper {
- display: flex;
- align-items: center;
- flex-direction: column;
- justify-content: center;
- width: 100%;
- min-height: 80%;
- padding: 20px;
-}
-
-#formContent {
- -webkit-border-radius: 10px 10px 10px 10px;
- border-radius: 10px 10px 10px 10px;
- background: #fff;
- padding: 30px;
- width: 90%;
- max-width: 450px;
- position: relative;
- padding: 0px;
- -webkit-box-shadow: 0 30px 60px 0 rgba(0,0,0,0.3);
- box-shadow: 0 30px 60px 0 rgba(0,0,0,0.3);
- text-align: center;
-}
-
-#formFooter {
- background-color: #f6f6f6;
- border-top: 1px solid #dce8f1;
- padding: 25px;
- text-align: center;
- -webkit-border-radius: 0 0 10px 10px;
- border-radius: 0 0 10px 10px;
-}
-
-
-
-/* TABS */
-
-h2.inactive {
- color: #cccccc;
-}
-
-h2.active {
- color: #0d0d0d;
- border-bottom: 2px solid #5fbae9;
-}
-
-
-
-/* FORM TYPOGRAPHY*/
-
-input[type=button], input[type=submit], input[type=reset] {
- background-color: #5E89FF;
- border: none;
- color: white;
- padding: 15px 80px;
- text-align: center;
- text-decoration: none;
- display: inline-block;
- text-transform: uppercase;
- font-size: 13px;
- -webkit-box-shadow: 0 10px 30px 0 rgba(95,186,233,0.4);
- box-shadow: 0 10px 30px 0 rgba(95,186,233,0.4);
- -webkit-border-radius: 5px 5px 5px 5px;
- border-radius: 5px 5px 5px 5px;
- margin: 5px 20px 40px 20px;
- -webkit-transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -ms-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
- transition: all 0.3s ease-in-out;
-}
-
-input[type=button]:hover, input[type=submit]:hover, input[type=reset]:hover {
- background-color: #39ace7;
-}
-
-input[type=button]:active, input[type=submit]:active, input[type=reset]:active {
- -moz-transform: scale(0.95);
- -webkit-transform: scale(0.95);
- -o-transform: scale(0.95);
- -ms-transform: scale(0.95);
- transform: scale(0.95);
-}
-
-input[type=text], input[type=password] {
- background-color: #f6f6f6;
- border: none;
- color: #0d0d0d;
- padding: 15px 32px;
- text-align: center;
- text-decoration: none;
- display: inline-block;
- font-size: 16px;
- margin: 5px;
- width: 85%;
- border: 2px solid #f6f6f6;
- -webkit-transition: all 0.5s ease-in-out;
- -moz-transition: all 0.5s ease-in-out;
- -ms-transition: all 0.5s ease-in-out;
- -o-transition: all 0.5s ease-in-out;
- transition: all 0.5s ease-in-out;
- -webkit-border-radius: 5px 5px 5px 5px;
- border-radius: 5px 5px 5px 5px;
-}
-
-
-
-input[type=text]:focus, input[type=password]:focus {
- background-color: #fff;
- border-bottom: 2px solid #5fbae9;
-}
-
-input[type=text]::placeholder, input[type=password]::placeholder {
- color: #cccccc;
-}
-
-.bg{
- margin: 0;
- padding: 0;
- height: 100vh;
- width: 100vw;
- overflow-y: hidden;
- overflow-x: hidden;
-}
-
-/* ANIMATIONS */
-
-/* Simple CSS3 Fade-in-down Animation */
-.fadeInDown {
- -webkit-animation-name: fadeInDown;
- animation-name: fadeInDown;
- -webkit-animation-duration: 1s;
- animation-duration: 1s;
- -webkit-animation-fill-mode: both;
- animation-fill-mode: both;
-}
-
-@-webkit-keyframes fadeInDown {
- 0% {
- opacity: 0;
- -webkit-transform: translate3d(0, -100%, 0);
- transform: translate3d(0, -100%, 0);
- }
- 100% {
- opacity: 1;
- -webkit-transform: none;
- transform: none;
- }
-}
-
-@keyframes fadeInDown {
- 0% {
- opacity: 0;
- -webkit-transform: translate3d(0, -100%, 0);
- transform: translate3d(0, -100%, 0);
- }
- 100% {
- opacity: 1;
- -webkit-transform: none;
- transform: none;
- }
-}
-
-/* Simple CSS3 Fade-in Animation */
-@-webkit-keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
-@-moz-keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
-@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
-
-.fadeIn {
- opacity:0;
- -webkit-animation:fadeIn ease-in 1;
- -moz-animation:fadeIn ease-in 1;
- animation:fadeIn ease-in 1;
-
- -webkit-animation-fill-mode:forwards;
- -moz-animation-fill-mode:forwards;
- animation-fill-mode:forwards;
-
- -webkit-animation-duration:1s;
- -moz-animation-duration:1s;
- animation-duration:1s;
-}
-
-.fadeIn.first {
- -webkit-animation-delay: 0.4s;
- -moz-animation-delay: 0.4s;
- animation-delay: 0.4s;
-}
-
-.fadeIn.second {
- -webkit-animation-delay: 0.6s;
- -moz-animation-delay: 0.6s;
- animation-delay: 0.6s;
-}
-
-.fadeIn.third {
- -webkit-animation-delay: 0.8s;
- -moz-animation-delay: 0.8s;
- animation-delay: 0.8s;
-}
-
-.fadeIn.fourth {
- -webkit-animation-delay: 1s;
- -moz-animation-delay: 1s;
- animation-delay: 1s;
-}
-
-/* Simple CSS3 Fade-in Animation */
-.underlineHover:after {
- display: block;
- left: 0;
- bottom: -10px;
- width: 0;
- height: 2px;
- //background-color: #5E89FF;
- background-color: #5E89FF;
- content: "";
- transition: width 0.2s;
-}
-
-.underlineHover:hover {
- color: #0d0d0d;
-}
-
-.underlineHover:hover:after{
- width: 100%;
-}
-
-h1{
- color: black;
-}
-
-/* OTHERS */
-
-*:focus {
- outline: none;
-}
-
-#icon {
- width:30%;
-}
diff --git a/admin/src/app/beforeConnexion/login/page-login/page-login.component.spec.ts b/admin/src/app/beforeConnexion/login/page-login/page-login.component.spec.ts
deleted file mode 100644
index a4ee677..0000000
--- a/admin/src/app/beforeConnexion/login/page-login/page-login.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PageLoginComponent } from './page-login.component';
-
-describe('PageLoginComponent', () => {
- let component: PageLoginComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ PageLoginComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(PageLoginComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/beforeConnexion/login/page-login/page-login.component.ts b/admin/src/app/beforeConnexion/login/page-login/page-login.component.ts
deleted file mode 100644
index 555e496..0000000
--- a/admin/src/app/beforeConnexion/login/page-login/page-login.component.ts
+++ /dev/null
@@ -1,101 +0,0 @@
-import {Component, OnInit} from '@angular/core';
-import {Router} from "@angular/router";
-import {MatDialog} from "@angular/material/dialog";
-import {PopupForgottenPasswordComponent} from "../popup-forgotten-password/popup-forgotten-password.component";
-import {MatSnackBar} from "@angular/material/snack-bar";
-import {ProfilService} from "../../../utils/profil/profil.service";
-import {MessageService} from "../../../utils/message/message.service";
-import {ThemeService} from "../../../utils/theme/theme.service";
-
-
-
-@Component({
- selector: 'app-page-login',
- templateUrl: './page-login.component.html',
- styleUrls: ['./page-login.component.scss']
-})
-export class PageLoginComponent implements OnInit
-{
- email: string = "" ;
- password: string = "" ;
- hasError: boolean = false;
- errorMessage: string = "";
-
-
- constructor( private messageService: MessageService,
- private router: Router,
- public themeService: ThemeService,
- public dialog: MatDialog,
- private snackBar: MatSnackBar,
- private profilService: ProfilService) { }
-
-
- ngOnInit(): void {}
-
-
- onSeConnecter(): void
- {
- this.checkError();
-
- if(!this.hasError)
- {
- let data = {
- email: this.email,
- hashPass: this.password
- };
- this.messageService
- .post('user/auth', data)
- .subscribe( retour => this.onSeConnecterCallback(retour), err => this.onSeConnecterCallback(err));
- }
- }
-
-
- onSeConnecterCallback(retour: any): void
- {
- if(retour.status !== "success") {
- console.log(retour);
- this.errorMessage = retour.error.reason;
- this.hasError = true;
- }
- else {
- this.profilService.setId(retour.data.id);
- this.profilService.setProfileImageUrl(retour.data.profileImageUrl);
- if(retour.data.role.name === "user") this.router.navigateByUrl( '/user/search');
- else if(retour.data.role.name === "advertiser") this.router.navigateByUrl( '/advertiser/adList');
- else if(retour.data.role.name === "admin" || retour.data.role.name === "superAdmin") this.router.navigateByUrl( '/admin/userList');
- }
- }
-
-
- onForgottenPassword(): void
- {
- this.dialog
- .open(PopupForgottenPasswordComponent, {width: '30%'})
- .afterClosed()
- .subscribe(result => {
- if((result !== null) && (result !== undefined))
- {
- const config = { duration: 5000, panelClass: "custom-class" };
- this.snackBar.open( "Un mail de réinitialisation de mot de passe vous a été envoyé.", "", config);
- }
- });
- }
-
-
- checkError(): void
- {
- if(this.email === "") {
- this.errorMessage = "Veuillez remplir le champ email" ;
- this.hasError = true;
- }
- else if(this.password === "") {
- this.errorMessage = "Veuillez remplir le champ mot de passe" ;
- this.hasError = true;
- }
- else {
- this.errorMessage = "" ;
- this.hasError = false;
- }
- }
-
-}
diff --git a/admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.html b/admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.html
deleted file mode 100644
index c34b58e..0000000
--- a/admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.html
+++ /dev/null
@@ -1,24 +0,0 @@
-Récupération du mot de passe
-
-
-
-
-
-
- Email
-
-
-
-
-
-
- {{errorMessage}}
-
-
-
-
-
-
-
-
-
diff --git a/admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.scss b/admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.scss
deleted file mode 100644
index fa75013..0000000
--- a/admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-h4 {
- text-align: center;
-}
-
-.myDiv {
- text-align: center;
- font-size: small;
-}
-
-.myError {
- text-align: center;
-}
diff --git a/admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.spec.ts b/admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.spec.ts
deleted file mode 100644
index ebf101c..0000000
--- a/admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PopupForgottenPasswordComponent } from './popup-forgotten-password.component';
-
-describe('PopupForgottenPasswordComponent', () => {
- let component: PopupForgottenPasswordComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ PopupForgottenPasswordComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(PopupForgottenPasswordComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.ts b/admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.ts
deleted file mode 100644
index 1ff70ce..0000000
--- a/admin/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { Component } from '@angular/core';
-import {MatDialogRef} from "@angular/material/dialog";
-
-
-
-@Component({
- selector: 'app-popup-forgotten-password',
- templateUrl: './popup-forgotten-password.component.html',
- styleUrls: ['./popup-forgotten-password.component.scss']
-})
-export class PopupForgottenPasswordComponent
-{
- email: string;
- hasError: boolean = false;
- errorMessage: string = "";
-
-
- constructor(public dialogRef: MatDialogRef) {}
-
-
- // Click sur valider
- onValidate()
- {
- if(this.email.length === 0) {
- this.errorMessage = "Veuillez remplir le champ 'email'." ;
- this.hasError = true;
- }
- else if(!this.isValidEmail(this.email)) {
- this.errorMessage = "Email invalide." ;
- this.hasError = true;
- }
- else {
- this.errorMessage = "" ;
- this.hasError = false;
- this.dialogRef.close(true);
- }
- }
-
-
- // Indique si email a bien le format d'un email
- isValidEmail(email): boolean
- {
- let re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
- return re.test(email);
- }
-
-}
diff --git a/admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.html b/admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.html
deleted file mode 100644
index 2a7c484..0000000
--- a/admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
- Centres d'intérêt
-
-
-
-
-
-
- {{interest}}
-
-
-
-
-
-
-
-
-
-
-
- {{interest}}
-
-
-
-
-
-
diff --git a/admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.scss b/admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.scss
deleted file mode 100644
index e69de29..0000000
diff --git a/admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.spec.ts b/admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.spec.ts
deleted file mode 100644
index 9917b1a..0000000
--- a/admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { InputInterestsRegisterComponent } from './input-interests-register.component';
-
-describe('InputInterestsRegisterComponent', () => {
- let component: InputInterestsRegisterComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ InputInterestsRegisterComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(InputInterestsRegisterComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.ts b/admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.ts
deleted file mode 100644
index 8dba84e..0000000
--- a/admin/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';
-import {COMMA, ENTER} from "@angular/cdk/keycodes";
-import {FormControl} from "@angular/forms";
-import {Observable} from "rxjs";
-import {map, startWith} from "rxjs/operators";
-import {MatChipInputEvent} from "@angular/material/chips";
-import {MatAutocompleteSelectedEvent} from "@angular/material/autocomplete";
-import {MessageService} from "../../../utils/message/message.service";
-
-
-
-@Component({
- selector: 'app-input-interests-register',
- templateUrl: './input-interests-register.component.html',
- styleUrls: ['./input-interests-register.component.scss']
-})
-export class InputInterestsRegisterComponent implements OnInit
-{
- selectable = true;
- removable = true;
- separatorKeysCodes: number[] = [ENTER, COMMA];
- formControl = new FormControl();
- filteredInterests: Observable;
- @Input() myInterests: string[] = [];
- allInterests: string[] = [];
- @Output() eventEmitter = new EventEmitter();
- @ViewChild('tagInput') tagInput: ElementRef;
- interestsNotSelected: string[] = [];
-
-
- constructor( private messageService: MessageService ) {}
-
-
- ngOnInit(): void
- {
- this.filteredInterests = this.formControl.valueChanges.pipe(
- startWith(null),
- map((fruit: string | null) => fruit ? this._filter(fruit) : this.interestsNotSelected.slice()));
-
- this.messageService
- .get("misc/getInterests")
- .subscribe( retour => {
-
- if(retour.status !== "success") {
- console.log(retour);
- }
- else {
- this.allInterests = [];
- for(let elt of retour.data)
- {
- this.allInterests.push(elt.interest);
- this.interestsNotSelected.push(elt.interest);
- }
- }
- });
- }
-
-
- add(event: MatChipInputEvent): void
- {
- const value = (event.value || '').trim();
- const index = this.interestsNotSelected.indexOf(value);
- if (value && (index !== -1) && (!this.myInterests.includes(value)))
- {
- this.myInterests.push(value);
- event.chipInput!.clear();
- this.formControl.setValue(null);
- this.eventEmitter.emit(this.myInterests);
- this.interestsNotSelected.splice(index, 1);
- }
- }
-
-
- remove(interest: string): void
- {
- // supprimer 'interest' de 'myInterest'
- const index = this.myInterests.indexOf(interest);
- if (index >= 0) this.myInterests.splice(index, 1);
- this.eventEmitter.emit(this.myInterests);
-
- // remmettre 'interest' dans 'interestsNotSelected'
- if(!this.interestsNotSelected.includes(interest))
- {
- const indexOfAutres = this.interestsNotSelected.indexOf("Autres");
- if(indexOfAutres !== -1)
- {
- this.interestsNotSelected.splice(indexOfAutres, 1);
- if(interest !== "Autres") this.interestsNotSelected.push(interest);
- this.interestsNotSelected.sort();
- this.interestsNotSelected.push("Autres");
- }
- else {
- this.interestsNotSelected.push(interest);
- if(interest !== "Autres") this.interestsNotSelected.sort();
- }
- }
- }
-
-
- selected(event: MatAutocompleteSelectedEvent): void
- {
- const value = event.option.viewValue;
- if(!this.myInterests.includes(value))
- {
- this.myInterests.push(value);
- const index = this.interestsNotSelected.indexOf(value);
- this.interestsNotSelected.splice(index, 1);
- }
- this.tagInput.nativeElement.value = '';
- this.formControl.setValue(null);
- this.eventEmitter.emit(this.myInterests);
- }
-
-
- private _filter(value: string): string[]
- {
- const filterValue = value.toLowerCase();
- return this.interestsNotSelected.filter(fruit => fruit.toLowerCase().includes(filterValue));
- }
-
-}
diff --git a/admin/src/app/beforeConnexion/register/page-register/page-register.component.html b/admin/src/app/beforeConnexion/register/page-register/page-register.component.html
deleted file mode 100644
index fb6e3ac..0000000
--- a/admin/src/app/beforeConnexion/register/page-register/page-register.component.html
+++ /dev/null
@@ -1,162 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Entreprise
-
-
-
-
-
-
- Pseudo
-
-
-
-
-
-
- Email
-
-
-
-
-
-
- Mot de passe
-
-
-
-
-
-
- Confirmation mot de passe
-
-
-
-
diff --git a/admin/src/app/beforeConnexion/register/page-register/page-register.component.scss b/admin/src/app/beforeConnexion/register/page-register/page-register.component.scss
deleted file mode 100644
index 5f0dc53..0000000
--- a/admin/src/app/beforeConnexion/register/page-register/page-register.component.scss
+++ /dev/null
@@ -1,47 +0,0 @@
-.myContainer {
- width: 100vw;
- height: 100vh;
-}
-
-
-mat-stepper {
- width: 60%;
- margin: 10vh auto;
- border: solid 1px black;
- border-radius: 20px;
-}
-
-
-.leftCol {
- border-right: solid 1px #dcdcdc;
-}
-
-
-.myRow {
- margin: 15px 0px 15px 0px;
-}
-.myLabel {
- text-align: right;
- padding: 0px 5px 0px 0px;
- margin: 0px;
- font-weight: bold;
-}
-.myValue {
- text-align: left;
- padding: 0px 0px 0px 5px;
- margin: 0px;
-}
-
-
-// -------------------------------------------------------------------------
-
-
-::ng-deep .mat-radio-inner-circle {
- color: black !important;
- background-color: black !important;
-}
-
-::ng-deep .mat-radio-outer-circle{
- color: black !important;
- border: solid 1px gray !important;
-}
diff --git a/admin/src/app/beforeConnexion/register/page-register/page-register.component.spec.ts b/admin/src/app/beforeConnexion/register/page-register/page-register.component.spec.ts
deleted file mode 100644
index 5cff194..0000000
--- a/admin/src/app/beforeConnexion/register/page-register/page-register.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PageRegisterComponent } from './page-register.component';
-
-describe('PageRegisterComponent', () => {
- let component: PageRegisterComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ PageRegisterComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(PageRegisterComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/beforeConnexion/register/page-register/page-register.component.ts b/admin/src/app/beforeConnexion/register/page-register/page-register.component.ts
deleted file mode 100644
index 788c8be..0000000
--- a/admin/src/app/beforeConnexion/register/page-register/page-register.component.ts
+++ /dev/null
@@ -1,134 +0,0 @@
-import { Component } from '@angular/core';
-import {PopupConfirmationComponent} from "../popup-confirmation/popup-confirmation.component";
-import {MessageService} from "../../../utils/message/message.service";
-import {Router} from "@angular/router";
-import {MatDialog} from "@angular/material/dialog";
-import {ThemeService} from "../../../utils/theme/theme.service";
-
-
-
-@Component({
- selector: 'app-page-register',
- templateUrl: './page-register.component.html',
- styleUrls: ['./page-register.component.scss']
-})
-export class PageRegisterComponent
-{
- password: string = "";
- confirmPassword: string = "";
- hasError: boolean = false;
- errorMessage: string = "";
- user = {
- _id: "",
- login: "",
- hashPass: "",
- email: "",
- role: {
- name: "user",
- permission: 0,
- isAccepted: false,
- },
- profileImageUrl: "",
- dateOfBirth: null,
- gender: "man",
- interests: [],
- company: "",
- isActive: true,
- createdAt: new Date(),
- updatedAt: new Date(),
- lastConnexion: null
- };
-
-
- constructor( private messageService: MessageService,
- private router: Router,
- public dialog: MatDialog,
- public themeService: ThemeService ) { }
-
-
- // Envoie de l'utilisateur au backend
- onEnregistrer(): void
- {
- this.checkField();
- if(!this.hasError)
- {
- let data: any = Object.assign({}, this.user);
- if(this.user.role.name === "user") data.role = "user" ;
- else data.role = "advertiser";
- data.hashPass = this.password;
- this.messageService
- .post('user/create', data)
- .subscribe(retour => this.onEnregistrerCallback(retour), err => this.onEnregistrerCallback(err));
- }
- }
-
-
- // Gestion de la réponse du backend
- onEnregistrerCallback(retour): void
- {
- if(retour.status !== "success") {
- console.log(retour);
- }
- else
- {
- const config = {
- width: '25%',
- data: {roleName: this.user.role.name}
- };
- this.dialog
- .open(PopupConfirmationComponent, config)
- .afterClosed()
- .subscribe(result => this.router.navigateByUrl( '/login' ));
- }
- }
-
-
- // Check les champs saisies par l'utilisateur
- checkField(): void
- {
- if((this.user.role.name === 'advertiser') && (this.user.company.length === 0)) {
- this.errorMessage = "Veuillez remplir le champ 'entreprise'.";
- this.hasError = true;
- }
- else if(this.user.login.length === 0) {
- this.errorMessage = "Veuillez remplir le champ 'pseudo'.";
- this.hasError = true;
- }
- else if(this.user.email.length === 0) {
- this.errorMessage = "Veuillez remplir le champ 'email'.";
- this.hasError = true;
- }
- else if(!this.isValidEmail(this.user.email)) {
- this.errorMessage = "Email invalide.";
- this.hasError = true;
- }
- else if(this.password.length === 0) {
- this.errorMessage = "Veuillez remplir le champ 'mot de passe'.";
- this.hasError = true;
- }
- else if(this.password !== this.confirmPassword) {
- this.errorMessage = "Le mot de passe est différent de sa confirmation.";
- this.hasError = true;
- }
- else {
- this.errorMessage = "" ;
- this.hasError = false;
- }
- }
-
-
- // Indique si email a bien le format d'un email
- isValidEmail(email): boolean
- {
- let re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
- return re.test(email);
- }
-
-
- // Récupère la liste des centres d'intérets (car celle-ci est remplie à l'aide d'un component intermédiaire)
- onEventInputInterests(myInterets: string[]): void
- {
- this.user.interests = myInterets;
- }
-
-}
diff --git a/admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.html b/admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.html
deleted file mode 100644
index 1cd51fe..0000000
--- a/admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
- Votre inscription a bien été effectuée.
-
-
-
- Votre inscription est en cours de validation.
-
-
-
-
-
diff --git a/admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.scss b/admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.scss
deleted file mode 100644
index 85730e0..0000000
--- a/admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-p {
- font-size: small;
-}
-
-div {
- font-size: small;
-}
diff --git a/admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.spec.ts b/admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.spec.ts
deleted file mode 100644
index d6f9908..0000000
--- a/admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PopupConfirmationComponent } from './popup-confirmation.component';
-
-describe('PopupConfirmationComponent', () => {
- let component: PopupConfirmationComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ PopupConfirmationComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(PopupConfirmationComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.ts b/admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.ts
deleted file mode 100644
index 59e3325..0000000
--- a/admin/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import {Component, Inject} from '@angular/core';
-import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog";
-
-@Component({
- selector: 'app-popup-confirmation',
- templateUrl: './popup-confirmation.component.html',
- styleUrls: ['./popup-confirmation.component.scss']
-})
-export class PopupConfirmationComponent
-{
- constructor( public dialogRef: MatDialogRef,
- @Inject(MAT_DIALOG_DATA) public data) {}
-}
diff --git a/admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.html b/admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.html
deleted file mode 100644
index d4ad9f5..0000000
--- a/admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.html
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.scss b/admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.scss
deleted file mode 100644
index e1fefaa..0000000
--- a/admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.scss
+++ /dev/null
@@ -1,79 +0,0 @@
-.navbar {
- background-color: black;
- height: 60px;
- font-size: medium;
- color: white;
-}
-
-
-.navbar-expand-lg {
- border-bottom: solid;
- border-color: white;
- border-bottom-width: 2px;
-}
-
-
-// PolyNotFound
-.navbar-brand {
- font-family: cursive;
- font-weight: bold;
- font-size: x-large;
- margin-left: 15px;
- color: white;
-}
-
-
-// Recherche, Mes Playlists, Historique
-.nav-link {
- color: white;
-}
-.nav-link:hover {
- color: grey;
-}
-
-
-// Bonton deconnexion
-.btnDeconnexion {
- font-size: medium;
- margin: 0px 10px 0px 10px
-}
-.btnDeconnexion:hover {
- color: grey;
-}
-
-
-.monLi {
- margin: 0px 10px 0px 10px;
-}
-
-
-img {
- border: solid 2px white;
- border-radius: 50px;
- margin: 0px 10px 0px 15px;
- width: 40px;
- height: 40px;
-}
-img:hover {
- cursor: pointer;
-}
-
-
-// --------------------------------------------------------------------
-
-
-::ng-deep .mat-slide-toggle-thumb {
- background-color: #c8c8c8;
-}
-
-::ng-deep .mat-slide-toggle-bar {
- background-color: #ffffff;
-}
-
-::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb {
- background-color: #ffffff;
-}
-
-::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar {
- background-color: #646464;
-}
diff --git a/admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.spec.ts b/admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.spec.ts
deleted file mode 100644
index f3f7f27..0000000
--- a/admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { NavbarBeforeConnexionComponent } from './navbar-before-connexion.component';
-
-describe('NavbarBeforeConnexionComponent', () => {
- let component: NavbarBeforeConnexionComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- declarations: [ NavbarBeforeConnexionComponent ]
- })
- .compileComponents();
- });
-
- beforeEach(() => {
- fixture = TestBed.createComponent(NavbarBeforeConnexionComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.ts b/admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.ts
deleted file mode 100644
index 4a3f05e..0000000
--- a/admin/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import {Component, Input} from '@angular/core';
-
-@Component({
- selector: 'app-navbar-before-connexion',
- templateUrl: './navbar-before-connexion.component.html',
- styleUrls: ['./navbar-before-connexion.component.scss']
-})
-export class NavbarBeforeConnexionComponent
-{
- @Input() pour = "login";
-}
diff --git a/admin/src/app/utils/message/message.service.spec.ts b/admin/src/app/utils/message/message.service.spec.ts
deleted file mode 100644
index 1db761b..0000000
--- a/admin/src/app/utils/message/message.service.spec.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { TestBed } from '@angular/core/testing';
-
-import { MessageService } from './message.service';
-
-describe('MessageService', () => {
- let service: MessageService;
-
- beforeEach(() => {
- TestBed.configureTestingModule({});
- service = TestBed.inject(MessageService);
- });
-
- it('should be created', () => {
- expect(service).toBeTruthy();
- });
-});
diff --git a/admin/src/app/utils/message/message.service.ts b/admin/src/app/utils/message/message.service.ts
deleted file mode 100644
index c20d5b1..0000000
--- a/admin/src/app/utils/message/message.service.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { Injectable } from '@angular/core';
-import {HttpClient, HttpParams} from "@angular/common/http";
-import {Observable} from "rxjs";
-import {environment} from "../../../environments/environment";
-
-@Injectable({
- providedIn: 'root'
-})
-export class MessageService
-{
-
- constructor( private http: HttpClient ) { }
-
- post(url: string, data: any): Observable
- {
- const urlComplete = environment.debutUrl + url ;
- return this.http.post(urlComplete, data, {withCredentials: true});
- }
-
- get(url: string, params:HttpParams = new HttpParams()): Observable
- {
- const urlComplete = environment.debutUrl + url ;
- return this.http.get(urlComplete,{ withCredentials: true, params: params });
- }
-
- put(url: string, data: any): Observable
- {
- const urlComplete = environment.debutUrl + url ;
- return this.http.put(urlComplete, data, {withCredentials: true});
- }
-
- delete(url: string): Observable
- {
- const urlComplete = environment.debutUrl + url ;
- return this.http.delete(urlComplete,{withCredentials: true});
- }
-
-}
diff --git a/admin/src/app/utils/profil/profil.service.spec.ts b/admin/src/app/utils/profil/profil.service.spec.ts
deleted file mode 100644
index 5cee000..0000000
--- a/admin/src/app/utils/profil/profil.service.spec.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { TestBed } from '@angular/core/testing';
-
-import { ProfilService } from './profil.service';
-
-describe('ProfilService', () => {
- let service: ProfilService;
-
- beforeEach(() => {
- TestBed.configureTestingModule({});
- service = TestBed.inject(ProfilService);
- });
-
- it('should be created', () => {
- expect(service).toBeTruthy();
- });
-});
diff --git a/admin/src/app/utils/profil/profil.service.ts b/admin/src/app/utils/profil/profil.service.ts
deleted file mode 100644
index 4bbe5ea..0000000
--- a/admin/src/app/utils/profil/profil.service.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { Injectable } from '@angular/core';
-
-@Injectable({
- providedIn: 'root'
-})
-export class ProfilService
-{
-
- getId(): string
- {
- return localStorage.getItem('id');
- }
-
- getProfileImageUrl(): string
- {
- return localStorage.getItem('profileImageUrl');
- }
-
- setId(id: string): void
- {
- localStorage.setItem('id', id);
- }
-
- setProfileImageUrl(profileImageUrl: string): void
- {
- localStorage.setItem('profileImageUrl', profileImageUrl);
- }
-
-}
diff --git a/admin/src/app/utils/theme/theme.service.spec.ts b/admin/src/app/utils/theme/theme.service.spec.ts
deleted file mode 100644
index 1c2957b..0000000
--- a/admin/src/app/utils/theme/theme.service.spec.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { TestBed } from '@angular/core/testing';
-
-import { ThemeService } from './theme.service';
-
-describe('ThemeService', () => {
- let service: ThemeService;
-
- beforeEach(() => {
- TestBed.configureTestingModule({});
- service = TestBed.inject(ThemeService);
- });
-
- it('should be created', () => {
- expect(service).toBeTruthy();
- });
-});
diff --git a/admin/src/app/utils/theme/theme.service.ts b/admin/src/app/utils/theme/theme.service.ts
deleted file mode 100644
index 00768e5..0000000
--- a/admin/src/app/utils/theme/theme.service.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { Injectable } from '@angular/core';
-
-@Injectable({
- providedIn: 'root'
-})
-export class ThemeService
-{
-
- isLightTheme = true;
-
- getClassTheme(): string
- {
- if(this.isLightTheme) return "lightTheme" ;
- else return "darkTheme"
- }
-
-}
diff --git a/admin/src/assets/.gitkeep b/admin/src/assets/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/admin/src/assets/darkBackground.webp b/admin/src/assets/darkBackground.webp
deleted file mode 100644
index 0d0692b8c331ccbacf8631b679686525fbb5c85a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 712
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
C8Oa_1
diff --git a/admin/src/assets/logo.png b/admin/src/assets/logo.png
deleted file mode 100644
index 93b93755e49963d09c63cbd0df33669376c8f90d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 5798
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
diff --git a/admin/src/assets/logo_plateforms/dailymotion.png b/admin/src/assets/logo_plateforms/dailymotion.png
deleted file mode 100644
index d35ee8a8b0e209615e57966d3d6f108844b2135d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 6478
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
diff --git a/admin/src/assets/play.png b/admin/src/assets/play.png
deleted file mode 100644
index 194f73beb22f040cf7ef156fe3f6403c1b5323e0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 3586
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