Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server
1 result
Select Git revision
Show changes
Commits on Source (31)
Showing
with 868 additions and 1057 deletions
......@@ -30,36 +30,26 @@ More reading on checklists can be found in the "Checklist Manifesto": http://atu
### Quality [![Bugs](https://sonarqube.forge.grandlyon.com/api/project_badges/measure?project=ram_server&metric=bugs&token=ac7a374a553a3aa458e5b538ce1a85c4fba146fb)](https://sonarqube.forge.grandlyon.com/dashboard?id=ram_server) - [![Code Smells](https://sonarqube.forge.grandlyon.com/api/project_badges/measure?project=ram_server&metric=code_smells&token=ac7a374a553a3aa458e5b538ce1a85c4fba146fb)](https://sonarqube.forge.grandlyon.com/dashboard?id=ram_server)
* [ ] Confirmed
1. For the code that this change impacts, I believe that the automated tests validate functionality that is highly important to users. If the existing automated tests do not cover this functionality, I have added the necessary additional tests or I have added an issue to describe the automation testing gap and linked it to this MR.
1. I have made sure that the sonar quality coverage is up to standards.
1. I have considered the impact of this change on the front-end, back-end, and database portions of the system where appropriate and applied.
1. I have tested this MR in all supported browsers or determined that this testing is not needed.
1. I have confirmed that this change is backwards compatible across updates (migrate up needs a migrate down), or I have decided that this does not apply.
- For the code that this change impacts, I believe that the **automated tests validate functionality** that is **highly important to users**. If the existing automated tests do not cover this functionality, I have **added the necessary additional tests** or I have added an issue to describe the automation testing gap and linked it to this MR.
- I have made sure that the **sonar quality coverage is up to standards**.
- I have **considered the impact** of this change on the **front-end**, **back-end**, and **database** portions of the system where appropriate and applied.
- I have tested this MR in **all supported browsers** or determined that this testing is not needed.
- I have confirmed that this change is **backwards compatible** across updates (migrate up needs a migrate down), or I have decided that this does not apply.
### Performance, reliability and availability
* [ ] Confirmed
1. I am confident that this MR does not harm performance, or I have asked a reviewer to help assess the performance impact.
1. I have considered the scalability risk based on future predicted growth.
- I am confident that this MR **does not harm performance**, or I have asked a reviewer to help assess the performance impact.
- I have considered the **scalability risk** based on future predicted growth.
### Documentation
* [ ] Confirmed
1. The MR is named after the desired squash commit to feed the changelog linked to the current milestone.
1. I have added/updated documentation (also updated if the changes feature a deprecation) or I have decided that documentation changes are not needed for this MR.
- The MR is named after the **desired squash commit** to feed the changelog linked to the current milestone.
- I have **added/updated documentation** (also updated if the changes feature a deprecation) or I have decided that documentation changes are not needed for this MR.
### Security [![Security Rating](https://sonarqube.forge.grandlyon.com/api/project_badges/measure?project=ram_server&metric=security_rating&token=ac7a374a553a3aa458e5b538ce1a85c4fba146fb)](https://sonarqube.forge.grandlyon.com/dashboard?id=ram_server)
* [ ] Confirmed
1. I have confirmed that if this MR does not contains any sensitive informations hidden in the changes.
- I have confirmed that if this MR **does not contains any sensitive informations** hidden in the changes.
### Deployment
* [ ] Confirmed
1. When featured on a self-data project release, i have made sure my app version in the manifest and package.json is incremented and any relative changes to the permissions are clearly written and transmitted to Cozy.
- When featured on a self-data project release, I have made sure my **app version** in the manifest and package.json is **incremented** and any relative **changes to the permissions are clearly written and transmitted to Cozy**.
......@@ -2,6 +2,30 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [2.0.0-beta4](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/compare/v2.0.0-beta3...v2.0.0-beta4) (2022-10-31)
### Features
* **carto:** add populate for structureType ([369160f](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/369160f3e310ece58e1a654f302cc08c5bc0f81c))
* **CNFS:** bind idCNFS to resin structures ([a3f3466](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/a3f3466191dd703606d9b77a517ffb111e49d05f))
* **init-script:** refacto to exit after structures creation ([cb75392](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/cb75392e9218163b117a1bebbcf5ddce6c7a765b))
* **orientation:** Add new endpoint for online mediation ([03b6389](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/03b63896841eb5274d1eb1331e9c124140bade41))
* **orientation:** Send mail sos tech and clean db ([aa607c8](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/aa607c83f16e63e4ab839504b18ce9e92026f824))
* **referential:** new referential, structure format and filters ([fc77a97](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/fc77a97098839e3270440f3c1f915102ec78b449))
* removed tcl night buses ([11c45a5](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/11c45a57a686c7b1626b3e93cf702543ddd5aec1))
* structure icon depends on structure category (public, private, ...) ([7bcdfa4](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/7bcdfa405a86212444df2abd54c0710842559775))
* **structure:** add soft delete ([846254a](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/846254a72991c38be4827d6fb126ea635ca98552))
* **users:** Send mail to existing users added to structure ([28adaf2](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/28adaf2cff0f0a4c27dab0abb531c95bcbc2a3f7))
### Bug Fixes
* **init:** update init script ([1ca33da](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/1ca33da51bbd9e3cddd2d1c520899c1d11819a39))
* **migration:** bad formating in new repository script ([2ce3c3e](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/2ce3c3e5c55f3a6380ee13f0cdd6dffd6f0dfedf))
* **migration:** increase security on repository migration ([b9c274b](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/b9c274bd42764f1868d7ca50efdfc241d4d78d85))
* upgrade rxjs for nest compatibility ([297cc8e](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/297cc8eacc6b21aa360f55b98b07a692f38a7e38))
## [2.0.0-beta3](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/compare/v1.17.0...v2.0.0-beta3) (2022-10-03)
......
<p align="center">
<a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo_text.svg" width="320" alt="Nest Logo" /></a>
</p>
[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456
[circleci-url]: https://circleci.com/gh/nestjs/nest
<p align="center">A progressive <a href="http://nodejs.org" target="_blank">Node.js</a> framework for building efficient and scalable server-side applications.</p>
<p align="center">
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/v/@nestjs/core.svg" alt="NPM Version" /></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/common.svg" alt="NPM Downloads" /></a>
<a href="https://circleci.com/gh/nestjs/nest" target="_blank"><img src="https://img.shields.io/circleci/build/github/nestjs/nest/master" alt="CircleCI" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#9" alt="Coverage" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
<a href="https://paypal.me/kamilmysliwiec" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg"/></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://img.shields.io/badge/Support%20us-Open%20Collective-41B883.svg" alt="Support us"></a>
<a href="https://twitter.com/nestframework" target="_blank"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow"></a>
</p>
<!--[![Backers on Open Collective](https://opencollective.com/nest/backers/badge.svg)](https://opencollective.com/nest#backer)
[![Sponsors on Open Collective](https://opencollective.com/nest/sponsors/badge.svg)](https://opencollective.com/nest#sponsor)-->
## Description
L'appplication est basée sur le framework [Nest](https://github.com/nestjs/nest). Celle-ci utilise une BDD mongodb.
# Res'In Serveur
L'appplication est basée sur le framework [Nest](https://nestjs.com). Celle-ci utilise une BDD mongodb.
## Installation
......@@ -35,13 +11,9 @@ Linux: avoir docker et docker-compose installé
Créer un ficher .env sur le modèle du ficher `template.env` et remplir les différentes variables.
### Application
### Installation
Installation des dépendences applicatives:
```bash
$ npm install
```
Suivre le [wiki d'installation disponible sur le client](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/-/wikis/Installation-projet-RESIN)
## Running the app
......@@ -65,15 +37,11 @@ $ npm run start:dev
$ npm run start:prod
```
### Infos
### Liens
```bash
# Lien vers le swagger
$ http://localhost:3000/doc
- [Swagger](http://localhost:3000/api/doc)
- [Mongo Express](http://localhost:8081)
# Lien vers le mongo-express
$ http://localhost:8081
```
## Documentation
......
......@@ -2,7 +2,7 @@ version: '2'
services:
service-ram:
image: registry.forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server:dev
image: registry.forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server:dev
container_name: resin-back
ports:
- ${SERVICE_API_BIND_PORT}:3000
......@@ -18,6 +18,7 @@ services:
SALT: ${SALT}
MAIL_URL: ${MAIL_URL}
MAIL_TOKEN: ${MAIL_TOKEN}
MAIL_SOSTECH: ${MAIL_SOSTECH}
MAIL_CONTACT: ${MAIL_CONTACT}
NODE_ENV: ${NODE_ENV}
APTIC_TOKEN: ${APTIC_TOKEN}
......@@ -52,7 +53,7 @@ services:
mongo-express:
image: mongo-express
restart: unless-stopped
restart: unless-stopped
container_name: resin-mongo-express
depends_on:
- database-ram
......@@ -68,6 +69,7 @@ services:
ME_CONFIG_MONGODB_SERVER: database-ram
ghost:
platform: linux/x86_64
image: ghost:latest
restart: always
container_name: resin-ghost
......@@ -88,6 +90,7 @@ services:
- ghost-content:/var/lib/ghost/content
ghost-db:
platform: linux/x86_64
image: mysql:5.7
container_name: resin-ghost-db
restart: always
......
{
"name": "ram_server",
"version": "2.0.0-beta3",
"version": "2.0.0-beta4",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
......@@ -2277,37 +2277,10 @@
"vary": "^1"
}
},
"http-errors": {
"depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dev": true,
"requires": {
"depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"dependencies": {
"depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"dev": true
},
"statuses": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"dev": true
}
}
},
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"dev": true
},
"ms": {
......@@ -2319,14 +2292,17 @@
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"dev": true
},
"proxy-middleware": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz",
"integrity": "sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==",
"dev": true
"on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"dev": true,
"requires": {
"ee-first": "1.1.1"
}
},
"readdirp": {
"version": "3.6.0",
......@@ -2356,47 +2332,12 @@
"on-finished": "2.4.1",
"range-parser": "~1.2.1",
"statuses": "2.0.1"
},
"dependencies": {
"depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"dev": true
},
"destroy": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
"dev": true
},
"on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"dev": true,
"requires": {
"ee-first": "1.1.1"
}
},
"statuses": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"dev": true
}
}
},
"setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
"dev": true
},
"toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"statuses": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"dev": true
}
}
......@@ -9569,6 +9510,15 @@
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"rxjs": {
"version": "6.6.7",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
"integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
......@@ -9577,6 +9527,12 @@
"requires": {
"has-flag": "^4.0.0"
}
},
"tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"dev": true
}
}
},
......@@ -13483,6 +13439,12 @@
"ipaddr.js": "1.9.1"
}
},
"proxy-middleware": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz",
"integrity": "sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==",
"dev": true
},
"prr": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
......@@ -13981,18 +13943,11 @@
"dev": true
},
"rxjs": {
"version": "6.6.3",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
"integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
"version": "7.5.7",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz",
"integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==",
"requires": {
"tslib": "^1.9.0"
},
"dependencies": {
"tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
}
"tslib": "^2.1.0"
}
},
"safe-buffer": {
......
{
"name": "ram_server",
"private": true,
"version": "2.0.0-beta3",
"version": "2.0.0-beta4",
"description": "Nest TypeScript starter repository",
"license": "MIT",
"scripts": {
......@@ -57,7 +57,7 @@
"passport-local": "^1.0.0",
"reflect-metadata": "^0.1.13",
"rimraf": "^3.0.2",
"rxjs": "^6.6.3",
"rxjs": "^7.5.7",
"sanitize-html": "^2.6.1",
"standard-version": "^9.3.2",
"swagger-ui-express": "^4.3.0"
......@@ -88,7 +88,7 @@
"ts-loader": "^8.0.8",
"ts-node": "^10.9.1",
"tsconfig-paths": "^3.9.0",
"typescript": "^4.0.5"
"typescript": "^4.2.4"
},
"jest": {
"moduleFileExtensions": [
......
// eslint-disable-next-line @typescript-eslint/no-var-requires
const mongoose = require('mongoose');
module.exports = {
data: [
{
modules: [
{
id: 'computer',
name: 'Ordinateur',
},
{
id: 'wifiEnAccesLibre',
name: 'Wifi',
},
{
id: 'printer',
name: 'Imprimante',
},
{
id: 'scanner',
name: 'Scanner',
},
],
name: 'Accéder à du matériel numérique en libre service',
theme: 'Matériel et wifi',
id: 'selfServiceMaterial',
_id: mongoose.Types.ObjectId('5fbb92dd80a5c257dc0161ef'),
},
{
modules: [
{
id: 'computer',
name: 'Ordinateur',
},
{
id: 'tablette',
name: 'Tablette',
},
{
id: 'smartphone',
name: 'Smartphone',
},
{
id: 'telecom',
name: 'Forfait internet et mobile',
},
{
id: '4g',
name: 'Clé 4G',
},
],
name: 'Acheter du matériel numérique à tarif solidaire',
theme: 'Matériel et wifi',
id: 'solidarityMaterial',
_id: mongoose.Types.ObjectId('5fbb92e480a5c257dc0161f0'),
},
{
modules: [
{
id: 'caf',
name: 'CAF',
},
{
id: 'cpam',
name: 'CPAM',
},
{
id: 'idDoc',
name: 'Carte d’identité, passeport',
},
{
id: 'foreigners',
name: 'Démarches liées aux étrangers',
},
{
id: 'needs',
name: 'Énergie, téléphonie, internet',
},
{
id: 'training',
name: 'Formation (CPF...)',
},
{
id: 'franceConnect',
name: 'France Connect',
},
{
id: 'taxes',
name: 'Impôts',
},
{
id: 'housing',
name: 'Logement',
},
{
id: 'retirement',
name: 'Retraite',
},
{
id: 'health',
name: 'Santé (Ameli...)',
},
{
id: 'scolarity',
name: 'Scolarité (CROUS…)',
},
{
id: 'transport',
name: 'Transports (carte grise, permis, TCL…)',
},
{
id: 'work',
name: 'Travail (Pôle emploi, CESU…)',
},
{
id: 'autres',
name: 'Autres',
},
],
name: 'Démarches en ligne',
theme: 'Démarches en ligne',
id: 'onlineProcedures',
_id: mongoose.Types.ObjectId('5fbb92e980a5c257dc0161f1'),
},
{
modules: [
{
id: 'computer',
name: "Prise en main de l'ordinateur",
apticIds: ['1'],
},
{
id: 'internet',
name: "Utilisation d'Internet",
apticIds: ['11', '34'],
},
{
id: 'smartphone',
name: 'Prise en main du smartphone, de la tablette',
apticIds: ['38', '74', '77'],
},
{
id: 'mail',
name: 'Création et gestion de sa boîte mail',
apticIds: ['48'],
},
{
id: 'work',
name: "Recherche d'emploi en ligne",
apticIds: ['6', '20', '124', '125', '127'],
},
{
id: 'officeAutomation',
name: 'Bureautique et mise en page',
apticIds: ['66', '67', '68', '69'],
},
{
id: 'communication',
name: 'Outils de communication (réseaux sociaux, visio...)',
apticIds: ['5', '65'],
},
{
id: 'data',
name: 'Gérer ses données',
apticIds: ['51', '52', '54'],
},
{
id: 'scolarity',
name: 'Scolarité (Pronote, laclasse.com...)',
apticIds: ['82'],
},
],
name: 'Compétences numériques de base',
theme: 'Compétences numériques',
id: 'baseSkills',
_id: mongoose.Types.ObjectId('5fbb92ef80a5c257dc0161f2'),
},
{
modules: [
{
id: 'cyberAndConf',
name: 'Cybersécurité et confidentialité',
apticIds: ['1', '2', '96', '97', '98'],
},
{
id: 'parenting',
name: 'Parentalité et éducation numérique',
apticIds: ['3'],
},
{
id: 'videoGames',
name: 'Découverte des jeux vidéos',
apticIds: ['22'],
},
{
id: 'numericCreate',
name: 'Création numérique (FabLab)',
apticIds: ['9'],
},
{
id: 'fakeNews',
name: 'Vérifier les informations, repérer les fake news',
apticIds: ['39'],
},
{
id: 'photoVideo',
name: 'Création photo et vidéo',
},
{
id: 'devAndRobots',
name: 'Programmation et robotique',
},
{
id: 'numericalCitizenship',
name: 'Citoyenneté numérique',
},
{
id: 'responsibleDigital',
name: 'Numérique responsable',
},
],
name: 'Approfondir sa culture numérique',
theme: 'Compétences numériques',
id: 'advancedSkills',
_id: mongoose.Types.ObjectId('5fbb92f380a5c257dc0161f3'),
},
{
modules: [
{
id: 'accesLibre',
name: 'Accès libre',
},
{
id: 'telephoneVisio',
name: 'Téléphone / Visio',
},
{
id: 'surRdv',
name: 'Sur RDV',
},
],
name: "Modalités d'accès",
id: 'accessModality',
_id: mongoose.Types.ObjectId('5fbb933b80a5c257dc0161f5'),
},
{
modules: [
{
id: 'aidantsConnect',
name: 'Aidants Connect',
},
{
id: 'espacePublicNumeriqueepn',
name: 'Espace public numérique',
},
{
id: 'fabriqueDeTerritoire',
name: 'Fabrique de territoire',
},
{
id: 'maisonFranceService',
name: 'Maison France Service',
},
{
id: 'passNumerique',
name: 'Pass numérique',
},
{
id: 'conseillerNumFranceServices',
name: 'Conseiller numérique France services',
},
{
id: 'monEspaceSante',
name: 'Mon espace santé',
},
{
id: 'numRelay',
name: 'Les relais numériques',
},
{
id: 'pix',
name: 'Pix',
},
],
name: 'Labels et qualifications',
id: 'labelsQualifications',
_id: mongoose.Types.ObjectId('5fbb934c80a5c257dc0161f8'),
},
{
modules: [
{
id: 'family',
name: 'Familles et/ou enfants',
},
{
id: 'young',
name: 'Jeunes (16-25 ans)',
},
{
id: 'adults',
name: 'Adultes',
},
{
id: 'old',
name: 'Seniors (plus de 65 ans)',
},
],
name: 'Âge',
theme: 'Public',
id: 'age',
_id: mongoose.Types.ObjectId('5fbb935080a5c257dc0161f9'),
},
{
modules: [
{
id: 'illettrisme',
name: 'Personne en situation d’illettrisme',
},
{
id: 'english',
name: 'Langue étrangère (Anglais)',
},
{
id: 'foreignLanguage',
name: 'Langue étrangère (autres)',
},
],
name: 'Langue et illettrisme',
theme: 'Public',
id: 'languageAndIlliteracy',
_id: mongoose.Types.ObjectId('5fbb931c80a5c257dc0161f4'),
},
{
modules: [
{
id: 'blindness',
name: 'Déficience visuelle',
},
{
id: 'deafness',
name: 'Surdité',
},
{
id: 'physicalDisability',
name: 'Handicaps moteurs',
},
{
id: 'mentalDisability',
name: 'Handicaps mentaux',
},
],
name: 'Handicaps',
theme: 'Public',
id: 'handicaps',
},
{
modules: [
{
id: 'uniquementFemmes',
name: 'Uniquement femmes',
},
],
name: 'Autres',
theme: 'Public',
id: 'publicOthers',
},
{
modules: [
{
id: 'donDeMateriels',
name: 'Prêt / don de matériels',
},
{
id: 'reconditionnementsDeMateriel',
name: 'Reconditionnements de matériel',
},
{
id: 'accesLivresInformatiques',
name: 'Accès à des revues ou livres informatiques et numériques',
},
],
name: 'Autres services',
theme: 'Matériel et wifi',
id: 'equipmentsServices',
},
],
};
// eslint-disable-next-line @typescript-eslint/no-var-requires
const mongoose = require('mongoose');
module.exports = {
data: [
{
_id: mongoose.Types.ObjectId('5fbb933b80a5c257dc0161f5'),
modules: [
{
id: '84',
display_id: '84',
display_name: 'Modules APTIC - n°84',
digest: 'Pôle Emploi : faire ses déclarations en ligne',
text: 'Pôle Emploi : faire ses déclarations en ligne',
},
{
id: '85',
display_id: '85',
display_name: 'Modules APTIC - n°85',
digest: 'Déclarer ses revenus en ligne et découvertes des services proposés',
text: 'Déclarer ses revenus en ligne et découvertes des services proposés',
},
{
id: '86',
display_id: '86',
display_name: 'Modules APTIC - n°86',
digest: 'Accéder à ses droits sociaux et les gérer en ligne (RSA…)',
text: 'Accéder à ses droits sociaux et les gérer en ligne (RSA…)',
},
{
id: '87',
display_id: '87',
display_name: 'Modules APTIC - n°87',
digest: 'Ouvrir et gérer son dossier de retraite (CNAF/CARSAT) en ligne',
text: 'Ouvrir et gérer son dossier de retraite (CNAF/CARSAT) en ligne',
},
{
id: '88',
display_id: '88',
display_name: 'Modules APTIC - n°88',
digest: "Gérer son abonnement et ses factures d'électricité/gaz en ligne",
text: "Gérer son abonnement et ses factures d'électricité/gaz en ligne",
},
{
id: '89',
display_id: '89',
display_name: 'Modules APTIC - n°89',
digest: "Gérer ses droits d'assuré social en ligne/sur internet",
text: "Gérer ses droits d'assuré social en ligne/sur internet",
},
{
id: '93',
display_id: '93',
display_name: 'Modules APTIC - n°93',
digest: 'Plateforme Ameli.fr : la sécurité sociale en ligne',
text: 'Plateforme Ameli.fr : la sécurité sociale en ligne',
},
{
id: '95',
display_id: '95',
display_name: 'Modules APTIC - n°95',
digest: 'Plateforme France Connect',
text: 'Plateforme France Connect',
},
],
name: 'Accès aux droits',
id: 'accessRight',
__v: 0,
},
{
modules: [
{
id: '260',
display_id: '260',
display_name: 'Modules APTIC - n°260',
digest: 'Maitrise de l’environnement d’un ordinateur (clavier, souris)',
text: 'Maitrise de l’environnement d’un ordinateur (clavier, souris)',
},
{
id: '1',
display_id: '1',
display_name: 'Modules APTIC - n°1',
digest: 'Composantes et facettes de l’identité numérique',
text: 'Composantes et facettes de l’identité numérique',
},
{
id: '11',
display_id: '11',
display_name: 'Modules APTIC - n°11',
digest: 'Internet : fonctionnement et outils de navigation web',
text: 'Internet : fonctionnement et outils de navigation web',
},
{
id: '38',
display_id: '38',
display_name: 'Modules APTIC - n°38',
digest: 'Le smartphone : principes de fonctionnement',
text: 'Le smartphone : principes de fonctionnement',
},
{
id: '48',
display_id: '48',
display_name: 'Modules APTIC - n°48',
digest: 'Internet : envoyer, recevoir, gérer ses emails',
text: 'Internet : envoyer, recevoir, gérer ses emails',
},
{
id: '74',
display_id: '74',
display_name: 'Modules APTIC - n°74',
digest: 'Smartphones et Tablettes sous Androïd',
text: 'Smartphones et Tablettes sous Androïd',
},
{
id: '77',
display_id: '77',
display_name: 'Modules APTIC - n°77',
digest: "Smartphone : Les principaux gestes pour l'écran tactile",
text: "Smartphone : Les principaux gestes pour l'écran tactile",
},
],
name: 'Les compétences de base',
id: 'baseSkills',
__v: 0,
},
{
modules: [
{
id: '6',
display_id: '6',
display_name: 'Modules APTIC - n°6',
digest: "Utiliser les réseaux sociaux pour sa recherche d'emploi",
text: "Utiliser les réseaux sociaux pour sa recherche d'emploi",
},
{
id: '20',
display_id: '20',
display_name: 'Modules APTIC - n°20',
digest: 'Panorama des plateformes de recherche d’emploi',
text: 'Panorama des plateformes de recherche d’emploi',
},
{
id: '66',
display_id: '66',
display_name: 'Modules APTIC - n°66',
digest: 'Traitement de texte : découverte',
text: 'Traitement de texte : découverte',
},
{
id: '67',
display_id: '67',
display_name: 'Modules APTIC - n°67',
digest: 'Traitement de texte : utilisation de base',
text: 'Traitement de texte : utilisation de base',
},
{
id: '68',
display_id: '68',
display_name: 'Modules APTIC - n°68',
digest: 'Traitement de texte : utilisation avancée',
text: 'Traitement de texte : utilisation avancée',
},
{
id: '69',
display_id: '69',
display_name: 'Modules APTIC - n°69',
digest: 'Tableur : découverte',
text: 'Tableur : découverte',
},
{
id: '124',
display_id: '124',
display_name: 'Modules APTIC - n°124',
digest: 'Réalisation CV',
text: 'Réalisation CV',
},
{
id: '125',
display_id: '125',
display_name: 'Modules APTIC - n°125',
digest: 'Diffuser son CV en ligne',
text: 'Diffuser son CV en ligne',
},
{
id: '127',
display_id: '127',
display_name: 'Modules APTIC - n°127',
digest: "Organiser sa recherche d'emploi",
text: "Organiser sa recherche d'emploi",
},
],
name: 'Insertion sociale et professionnelle',
id: 'socialAndProfessional',
__v: 0,
},
{
_id: mongoose.Types.ObjectId('5fbb934c80a5c257dc0161f8'),
modules: [
{
id: '3',
display_id: '3',
display_name: 'Modules APTIC - n°3',
digest: "Être parent à l'ère numérique: connaître les usages, jouer son rôle de parent",
text: "Être parent à l'ère numérique: connaître les usages, jouer son rôle de parent",
},
{
id: '22',
display_id: '22',
display_name: 'Modules APTIC - n°22',
digest: 'Découvrir l’univers des jeux vidéo - 22',
text: 'Découvrir l’univers des jeux vidéo',
},
{
id: '82',
display_id: '82',
display_name: 'Modules APTIC - n°82',
digest: 'Suivre la scolarité de son enfant - 82',
text: 'Suivre la scolarité de son enfant',
},
{
id: '94',
display_id: '94',
display_name: 'Modules APTIC - n°94',
digest: "Découvrir les services en ligne de l'enfance de votre commune - 94",
text: "Découvrir les services en ligne de l'enfance de votre commune",
},
],
name: 'Aide à la parentalité',
id: 'parentingHelp',
__v: 0,
},
{
_id: mongoose.Types.ObjectId('5fbb935080a5c257dc0161f9'),
modules: [
{
id: '2',
display_id: '2',
display_name: 'Modules APTIC - n°2',
digest: 'Les conduites à risques et les bons usages du numérique - 02',
text: 'Les conduites à risques et les bons usages du numérique',
},
{
id: '5',
display_id: '5',
display_name: 'Modules APTIC - n°5',
digest: 'Découvrir les réseaux sociaux : définition, fonctionnement - 05',
text: 'Découvrir les réseaux sociaux : définition, fonctionnement',
},
{
id: '9',
display_id: '9',
display_name: 'Modules APTIC - n°9',
digest: 'Fablab : charte, valeurs et panorama des outils numériques - 09',
text: 'Fablab : charte, valeurs et panorama des outils numériques',
},
{
id: '28',
display_id: '28',
display_name: 'Modules APTIC - n°28',
digest: 'Les paiements en ligne - 28',
text: 'Les paiements en ligne',
},
{
id: '34',
display_id: '34',
display_name: 'Modules APTIC - n°34',
digest: 'Internet : comprendre les principes de fonctionnement - 35',
text: 'Internet : comprendre les principes de fonctionnement',
},
{
id: '39',
display_id: '39',
display_name: 'Modules APTIC - n°39',
digest: 'Techniques de vérification de l’information - 39',
text: 'Techniques de vérification de l’information',
},
{
id: '42',
display_id: '42',
display_name: 'Modules APTIC - n°42',
digest: 'Créer et paramétrer un compte Google - 42',
text: 'Créer et paramétrer un compte Google',
},
{
id: '51',
display_id: '51',
display_name: 'Modules APTIC - n°51',
digest: 'Gérer ses données : sauvegarde en ligne (dans le cloud) - 51',
text: 'Gérer ses données : sauvegarde en ligne (dans le cloud)',
},
{
id: '52',
display_id: '52',
display_name: 'Modules APTIC - n°52',
digest: 'Gérer ses données : sauvegardes locales (disques durs externes, clé USB) - 52',
text: 'Gérer ses données : sauvegardes locales (disques durs externes, clé USB)',
},
{
id: '54',
display_id: '54',
display_name: 'Modules APTIC - n°54',
digest: 'Classer, gérer et partager ses photos - 54',
text: 'Classer, gérer et partager ses photos',
},
{
id: '65',
display_id: '65',
display_name: 'Modules APTIC - n°65',
digest: 'Skype et autres outils de visioconférence - 65',
text: 'Skype et autres outils de visioconférence',
},
{
id: '96',
display_id: '96',
display_name: 'Modules APTIC - n°96',
digest: 'Connaitre et gérer son identité numérique - 96',
text: 'Connaitre et gérer son identité numérique',
},
{
id: '97',
display_id: '97',
display_name: 'Modules APTIC - n°97',
digest: 'Nettoyer son identité numérique - 97',
text: 'Nettoyer son identité numérique',
},
{
id: '98',
display_id: '98',
display_name: 'Modules APTIC - n°98',
digest: 'Effacer ses traces sur le web, protéger ses données personnelles - 98',
text: 'Effacer ses traces sur le web, protéger ses données personnelles',
},
],
name: 'Culture et sécurité numérique',
id: 'digitalCultureSecurity',
__v: 0,
},
],
};
// eslint-disable-next-line @typescript-eslint/no-var-requires
const mongoose = require('mongoose');
module.exports = {
data: [
{
_id: mongoose.Types.ObjectId('5fbb92dd80a5c257dc0161ef'),
modules: [
{
id: 'toutPublic',
text: 'Tout public',
},
{
id: 'moinsDe16Ans',
text: 'Moins de 16 ans',
},
{
id: 'jeunes1625Ans',
text: 'Jeunes (16-25 ans)',
},
{
id: 'adultes',
text: 'Adultes',
},
{
id: 'seniorsPlusDe65Ans',
text: 'Séniors (+ de 65 ans)',
},
],
name: 'Publics acceptés',
id: 'publics',
__v: 0,
},
{
_id: mongoose.Types.ObjectId('5fbb92e480a5c257dc0161f0'),
modules: [
{
id: 'aidantsConnect',
text: 'Aidants Connect',
},
{
id: 'espacePublicNumeriqueepn',
text: 'Espace public numérique',
},
{
id: 'fabriqueDeTerritoire',
text: 'Fabrique de territoire',
},
{
id: 'maisonFranceService',
text: 'Maison France Service',
},
{
id: 'passNumerique',
text: 'Pass numérique',
},
{
id: 'conseillerNumFranceServices',
text: 'Conseiller numérique France services',
},
],
name: 'Labels et qualifications',
id: 'labelsQualifications',
__v: 0,
},
{
_id: mongoose.Types.ObjectId('5fbb92e980a5c257dc0161f1'),
modules: [
{
id: 'accesLibre',
text: 'Accès libre',
},
{
id: 'telephoneVisio',
text: 'Téléphone / Visio',
},
{
id: 'surRdv',
text: 'Sur RDV',
},
],
name: "Modalités d'accès",
id: 'accessModality',
__v: 0,
},
{
_id: mongoose.Types.ObjectId('5fbb92ef80a5c257dc0161f2'),
modules: [
{
id: "Personnes en situation d'illetrisme",
text: "Personnes en situation d'illetrisme",
},
{
id: 'Langue étrangère (anglais)',
text: 'Langue étrangère (anglais)',
},
{
id: 'Langues étrangères (autres)',
text: 'Langues étrangères (autres)',
},
{
id: 'Surdité',
text: 'Surdité',
},
{
id: 'Déficience visuelle',
text: 'Déficience visuelle',
},
{
id: 'Handicap moteur',
text: 'Handicap moteur',
},
],
name: 'Accompagnement des publics spécifiques',
id: 'publicsAccompaniment',
__v: 0,
},
{
_id: mongoose.Types.ObjectId('5fbb92f380a5c257dc0161f3'),
modules: [
{
id: 'wifiEnAccesLibre',
text: 'Wifi en accès libre',
},
{
id: 'ordinateurs',
text: 'Ordinateurs',
},
{
id: 'tablettes',
text: 'Tablettes',
},
{
id: 'bornesNumeriques',
text: 'Bornes numériques',
},
{
id: 'imprimantes',
text: 'Imprimantes',
},
{
id: 'scanners',
text: 'Scanners',
},
{
id: 'donDeMateriels',
text: 'Prêt / don de matériels',
},
{
id: 'reconditionnementsDeMateriel',
text: 'Reconditionnements de matériel',
},
{
id: 'accesLivresInformatiques',
text: 'Accès à des revues ou livres informatiques et numériques',
},
],
name: 'Équipements et services proposés',
id: 'equipmentsAndServices',
__v: 0,
},
],
};
......@@ -20,24 +20,51 @@ module.exports = {
twitter: null,
instagram: null,
pmrAccess: true,
accessModality: ['accesLibre', 'surRdv'],
labelsQualifications: [],
publics: ['toutPublic'],
exceptionalClosures: 'Jours fériés',
jaccompagneLesUsagersDansLeursDemarchesEnLigne: true,
proceduresAccompaniment: ['poleEmploi', 'accompagnantCaf'],
publicsAccompaniment: [],
categories: {
accessModality: ['accesLibre'],
labelsQualifications: [
'monEspaceSante',
'numRelay',
'pix',
'passNumerique',
'fabriqueDeTerritoire',
'aidantsConnect',
'espacePublicNumeriqueepn',
'maisonFranceService',
'conseillerNumFranceServices',
],
onlineProcedures: [
'idDoc',
'training',
'health',
'work',
'caf',
'cpam',
'foreigners',
'needs',
'franceConnect',
'taxes',
'housing',
'retirement',
'scolarity',
'transport',
'autres',
],
selfServiceMaterial: ['wifiEnAccesLibre', 'computer', 'printer', 'scanner'],
solidarityMaterial: [],
equipmentsServices: ['donDeMateriels', 'reconditionnementsDeMateriel', 'accesLivresInformatiques'],
baseSkills: ['computer', 'internet'],
advancedSkills: [],
age: ['young', 'family'],
languageAndIlliteracy: ['illettrisme', 'english'],
handicaps: ['physicalDisability'],
publicOthers: ['uniquementFemmes'],
},
autresAccompagnements: '',
baseSkills: [],
accessRight: ['84'],
socialAndProfessional: [],
parentingHelp: [],
digitalCultureSecurity: [],
equipmentsAndServices: ['ordinateurs', 'imprimantes', 'wifiEnAccesLibre'],
nbComputers: 5,
nbPrinters: 1,
nbTablets: 1,
nbNumericTerminal: 1,
nbScanners: 1,
structureType: 'mairie',
hours: {
monday: {
......@@ -118,21 +145,25 @@ module.exports = {
accountVerified: true,
coord: [4.8563106, 45.6693619],
linkedin: null,
nbScanners: 1,
otherDescription: null,
},
{
_id: mongoose.Types.ObjectId('6001a37716b08100062e4160'),
structureType: null,
digitalCultureSecurity: [],
parentingHelp: [],
socialAndProfessional: ['124', '125', '127'],
accessRight: ['84'],
baseSkills: [],
proceduresAccompaniment: ['poleEmploi'],
publics: ['toutPublic'],
labelsQualifications: ['espacePublicNumeriqueepn'],
accessModality: ['accesLibre', 'surRdv'],
categories: {
accessModality: ['accesLibre'],
labelsQualifications: ['conseillerNumFranceServices'],
onlineProcedures: [],
selfServiceMaterial: ['computer', 'scanner'],
solidarityMaterial: [],
equipmentsServices: ['donDeMateriels', 'reconditionnementsDeMateriel', 'accesLivresInformatiques'],
baseSkills: ['computer', 'internet'],
advancedSkills: [],
age: ['young'],
languageAndIlliteracy: [],
handicaps: ['physicalDisability'],
publicOthers: ['uniquementFemmes'],
},
freeWorkShop: false,
createdAt: '2020-11-16T10:19:00.000Z',
updatedAt: '2020-12-16T10:19:00.000Z',
......@@ -147,14 +178,11 @@ module.exports = {
instagram: null,
pmrAccess: true,
exceptionalClosures: '',
jaccompagneLesUsagersDansLeursDemarchesEnLigne: true,
publicsAccompaniment: [],
autresAccompagnements: '',
equipmentsAndServices: ['ordinateurs', 'imprimantes'],
nbComputers: 10,
nbPrinters: 1,
nbTablets: 1,
nbNumericTerminal: 1,
hours: {
monday: {
open: true,
......@@ -235,7 +263,7 @@ module.exports = {
accountVerified: true,
coord: [4.8678548, 45.7075853],
linkedin: null,
nbScanners: 1,
nbScanners: 0,
otherDescription: null,
deletedAt: new Date('2021-05-10T08:45:50.076Z'),
},
......@@ -255,24 +283,24 @@ module.exports = {
twitter: null,
instagram: null,
pmrAccess: true,
accessModality: ['telephoneVisio', 'surRdv'],
labelsQualifications: [],
publics: ['jeunes1625Ans', 'adultes', 'seniorsPlusDe65Ans', 'toutPublic'],
categories: {
accessModality: ['accesLibre'],
labelsQualifications: ['conseillerNumFranceServices'],
onlineProcedures: [],
selfServiceMaterial: ['computer', 'scanner'],
solidarityMaterial: [],
equipmentsServices: ['donDeMateriels', 'reconditionnementsDeMateriel', 'accesLivresInformatiques'],
baseSkills: ['computer', 'internet'],
advancedSkills: [],
age: ['young'],
languageAndIlliteracy: [],
handicaps: ['physicalDisability'],
publicOthers: ['uniquementFemmes'],
},
exceptionalClosures: "vacances de Noel + tout le mois d'Aout",
jaccompagneLesUsagersDansLeursDemarchesEnLigne: true,
proceduresAccompaniment: ['poleEmploi', 'cpam', 'impots', 'logement', 'carsat', 'accompagnantCaf'],
publicsAccompaniment: [],
autresAccompagnements: '',
baseSkills: ['260', '1', '11', '38', '48', '74', '77'],
accessRight: ['84', '85', '86', '87', '88', '89', '93', '95'],
socialAndProfessional: ['66', '67', '68', '69', '124'],
parentingHelp: ['3', '22', '82', '94'],
digitalCultureSecurity: ['2', '28', '34', '39', '42', '52', '65'],
equipmentsAndServices: ['ordinateurs', 'imprimantes'],
nbComputers: 3,
nbPrinters: 1,
nbTablets: 1,
nbNumericTerminal: 1,
structureType: 'centreSocio',
address: {
numero: '7',
......@@ -328,15 +356,20 @@ module.exports = {
{
_id: mongoose.Types.ObjectId('6001a39c16b08100062e4164'),
structureType: null,
digitalCultureSecurity: ['2', '5', '9', '28', '34', '39', '42', '51', '52', '54', '65', '96', '97', '98'],
parentingHelp: ['3', '22', '82', '94'],
socialAndProfessional: ['6', '20', '66', '67', '68', '69', '124', '125', '127'],
accessRight: ['84', '85', '86', '87', '88', '89', '93', '95'],
baseSkills: ['260', '1', '11', '38', '48', '74', '77'],
proceduresAccompaniment: ['cpam', 'impots', 'carsat', 'poleEmploi'],
publics: ['toutPublic'],
labelsQualifications: ['passNumerique', 'espacePublicNumeriqueepn'],
accessModality: ['accesLibre', 'telephoneVisio', 'surRdv'],
categories: {
accessModality: ['accesLibre'],
labelsQualifications: ['conseillerNumFranceServices'],
onlineProcedures: [],
selfServiceMaterial: ['computer', 'scanner'],
solidarityMaterial: [],
equipmentsServices: ['donDeMateriels', 'reconditionnementsDeMateriel', 'accesLivresInformatiques'],
baseSkills: ['computer', 'internet'],
advancedSkills: [],
age: ['young'],
languageAndIlliteracy: [],
handicaps: ['physicalDisability'],
publicOthers: ['uniquementFemmes'],
},
freeWorkShop: false,
createdAt: '2020-11-16T09:30:00.000Z',
updatedAt: '2021-04-12T08:48:00.000Z',
......@@ -353,10 +386,7 @@ module.exports = {
instagram: null,
pmrAccess: true,
exceptionalClosures: '',
jaccompagneLesUsagersDansLeursDemarchesEnLigne: true,
publicsAccompaniment: [],
autresAccompagnements: '',
equipmentsAndServices: ['ordinateurs', 'tablettes'],
nbComputers: 16,
nbPrinters: 1,
nbTablets: 1,
......@@ -448,15 +478,40 @@ module.exports = {
{
_id: mongoose.Types.ObjectId('6001a3aa16b08100062e4166'),
structureType: 'mjc',
digitalCultureSecurity: ['2', '5', '9', '28', '34', '39', '42', '51', '52', '54', '65', '96', '97', '98'],
parentingHelp: ['3', '22', '82', '94'],
socialAndProfessional: ['66', '67', '68', '69'],
accessRight: [],
baseSkills: ['260', '1', '11', '38', '48', '74', '77'],
proceduresAccompaniment: [],
publics: ['toutPublic'],
labelsQualifications: ['passNumerique', 'espacePublicNumeriqueepn'],
accessModality: ['accesLibre', 'telephoneVisio', 'surRdv'],
categories: {
accessModality: ['accesLibre'],
labelsQualifications: ['pix'],
onlineProcedures: [],
selfServiceMaterial: ['computer', 'scanner'],
solidarityMaterial: [],
equipmentsServices: ['donDeMateriels', 'reconditionnementsDeMateriel', 'accesLivresInformatiques'],
baseSkills: [
'computer',
'internet',
'smartphone',
'mail',
'work',
'officeAutomation',
'communication',
'data',
'scolarity',
],
advancedSkills: [
'cyberAndConf',
'parenting',
'videoGames',
'numericCreate',
'fakeNews',
'photoVideo',
'devAndRobots',
'numericalCitizenship',
'responsibleDigital',
],
age: ['young'],
languageAndIlliteracy: [],
handicaps: ['physicalDisability'],
publicOthers: ['uniquementFemmes'],
},
freeWorkShop: false,
createdAt: '2020-11-16T08:53:00.000Z',
updatedAt: '2021-04-27T17:06:46.000Z',
......@@ -473,21 +528,9 @@ module.exports = {
instagram: 'instagram.com/mjc_louis_aragon_bron/',
pmrAccess: true,
exceptionalClosures: '',
jaccompagneLesUsagersDansLeursDemarchesEnLigne: false,
publicsAccompaniment: [],
autresAccompagnements: '',
equipmentsAndServices: [
'wifiEnAccesLibre',
'ordinateurs',
'tablettes',
'imprimantes',
'scanners',
'accesLivresInformatiques',
],
nbComputers: 9,
nbPrinters: 1,
nbTablets: 6,
nbNumericTerminal: 1,
hours: {
monday: {
open: false,
......@@ -558,15 +601,20 @@ module.exports = {
{
_id: mongoose.Types.ObjectId('6001a3b116b08100062e4167'),
structureType: 'association',
digitalCultureSecurity: ['2', '5', '28', '34', '39', '42', '51', '52', '54', '65', '96', '97', '98'],
parentingHelp: ['3', '82', '94'],
socialAndProfessional: ['6', '20', '66', '67', '68', '69', '124', '125', '127'],
accessRight: ['84', '85', '86', '87', '88', '89', '93', '95'],
baseSkills: ['260', '1', '11', '38', '48', '74', '77'],
proceduresAccompaniment: ['cpam', 'impots', 'poleEmploi'],
publics: ['toutPublic'],
labelsQualifications: ['passNumerique'],
accessModality: ['accesLibre', 'surRdv'],
categories: {
accessModality: ['accesLibre'],
labelsQualifications: ['pix'],
onlineProcedures: [],
selfServiceMaterial: ['computer', 'scanner'],
solidarityMaterial: [],
equipmentsServices: ['donDeMateriels', 'reconditionnementsDeMateriel', 'accesLivresInformatiques'],
baseSkills: ['computer', 'internet', 'smartphone', 'mail'],
advancedSkills: ['cyberAndConf', 'photoVideo', 'devAndRobots', 'numericalCitizenship', 'responsibleDigital'],
age: ['young'],
languageAndIlliteracy: [],
handicaps: ['physicalDisability'],
publicOthers: ['uniquementFemmes'],
},
freeWorkShop: false,
createdAt: '2020-11-04T09:27:00.000Z',
updatedAt: '2021-03-02T10:07:48.000Z',
......@@ -581,14 +629,11 @@ module.exports = {
instagram: null,
pmrAccess: true,
exceptionalClosures: '',
jaccompagneLesUsagersDansLeursDemarchesEnLigne: true,
publicsAccompaniment: [],
autresAccompagnements: '',
equipmentsAndServices: ['ordinateurs', 'imprimantes'],
nbComputers: 8,
nbPrinters: 1,
nbTablets: 1,
nbNumericTerminal: 1,
hours: {
monday: {
open: true,
......@@ -658,16 +703,29 @@ module.exports = {
},
{
_id: mongoose.Types.ObjectId('6001a3b716b08100062e4168'),
structureType: 'coworking',
digitalCultureSecurity: ['2', '5', '28', '34', '39', '42', '51', '52', '54', '65', '96', '97', '98'],
parentingHelp: ['82', '94'],
socialAndProfessional: ['6', '20', '66', '67', '68', '69', '124', '125', '127'],
accessRight: ['84', '85', '87', '88', '89', '93', '95'],
baseSkills: ['260', '1', '11', '38', '48', '74', '77'],
proceduresAccompaniment: ['poleEmploi', 'cpam', 'impots', 'carsat', 'accompagnantCaf'],
publics: ['toutPublic'],
labelsQualifications: ['passNumerique'],
accessModality: ['telephoneVisio', 'surRdv'],
structureType: 'poleEmploi',
categories: {
accessModality: ['accesLibre'],
labelsQualifications: ['pix'],
onlineProcedures: [],
selfServiceMaterial: ['computer', 'scanner'],
solidarityMaterial: [],
equipmentsServices: ['donDeMateriels', 'reconditionnementsDeMateriel', 'accesLivresInformatiques'],
baseSkills: ['computer', 'internet', 'smartphone', 'mail', 'work', 'officeAutomation', 'communication'],
advancedSkills: [
'cyberAndConf',
'parenting',
'videoGames',
'numericCreate',
'fakeNews',
'photoVideo',
'devAndRobots',
],
age: ['young'],
languageAndIlliteracy: [],
handicaps: ['physicalDisability'],
publicOthers: ['uniquementFemmes'],
},
freeWorkShop: false,
createdAt: '2020-11-13T14:13:00.000Z',
updatedAt: '2021-03-02T10:09:30.000Z',
......@@ -684,14 +742,9 @@ module.exports = {
instagram: null,
pmrAccess: true,
exceptionalClosures: '',
jaccompagneLesUsagersDansLeursDemarchesEnLigne: true,
publicsAccompaniment: [],
autresAccompagnements: '',
equipmentsAndServices: ['ordinateurs'],
nbComputers: 8,
nbPrinters: 1,
nbTablets: 1,
nbNumericTerminal: 1,
hours: {
monday: {
open: true,
......@@ -762,17 +815,27 @@ module.exports = {
{
_id: mongoose.Types.ObjectId('61e9260c2ac971550065e262'),
coord: [4.88428, 45.727292],
equipmentsAndServices: [],
digitalCultureSecurity: ['2', '5', '9', '28', '34', '39', '42', '51', '52', '54', '65', '96', '97', '98'],
parentingHelp: ['3', '22', '82', '94'],
socialAndProfessional: ['6', '20', '66', '67', '68', '69', '124', '125', '127'],
accessRight: ['84', '85', '86', '87', '88', '89', '93', '95'],
baseSkills: ['1', '11', '38', '48', '74', '77'],
proceduresAccompaniment: [],
publicsAccompaniment: [],
publics: ['toutPublic'],
labelsQualifications: ['passNumerique'],
accessModality: ['accesLibre'],
categories: {
accessModality: ['accesLibre'],
labelsQualifications: ['pix'],
onlineProcedures: [],
selfServiceMaterial: [],
solidarityMaterial: [],
equipmentsServices: ['donDeMateriels'],
baseSkills: ['computer', 'internet', 'officeAutomation', 'communication', 'data', 'scolarity'],
advancedSkills: [
'cyberAndConf',
'parenting',
'videoGames',
'devAndRobots',
'numericalCitizenship',
'responsibleDigital',
],
age: ['adults'],
languageAndIlliteracy: [],
handicaps: [],
publicOthers: [],
},
structureName: "Maison Lyon pour l'Emploi - Lyon 8",
contactPhone: '04 04 04 04 04',
contactMail: 'a@a.com',
......@@ -784,8 +847,36 @@ module.exports = {
nbComputers: 0,
nbPrinters: 0,
nbScanners: 0,
nbTablets: 0,
nbNumericTerminal: 0,
hours: {
monday: {
open: false,
time: [],
},
tuesday: {
open: false,
time: [],
},
wednesday: {
open: false,
time: [],
},
thursday: {
open: false,
time: [],
},
friday: {
open: false,
time: [],
},
saturday: {
open: false,
time: [],
},
sunday: {
open: false,
time: [],
},
},
address: {
numero: '172',
street: 'Avenue Général Frère',
......@@ -799,17 +890,20 @@ module.exports = {
{
_id: mongoose.Types.ObjectId('61e9260b2ac971550065e261'),
coord: [4.844309, 45.865288],
equipmentsAndServices: [],
digitalCultureSecurity: ['2', '5', '9', '28', '34', '39', '42', '51', '52', '54', '65', '96', '97', '98'],
parentingHelp: ['3', '22', '82', '94'],
socialAndProfessional: ['6', '20', '66', '67', '68', '69', '124', '125', '127'],
accessRight: ['84', '85', '86', '87', '88', '89', '93', '95'],
baseSkills: ['1', '11', '38', '48', '74', '77'],
proceduresAccompaniment: [],
publicsAccompaniment: [],
publics: ['toutPublic'],
labelsQualifications: ['passNumerique'],
accessModality: ['accesLibre'],
categories: {
accessModality: ['accesLibre'],
labelsQualifications: ['pix'],
onlineProcedures: [],
selfServiceMaterial: [],
solidarityMaterial: [],
equipmentsServices: [],
baseSkills: ['scolarity'],
advancedSkills: ['cyberAndConf'],
age: ['adults'],
languageAndIlliteracy: [],
handicaps: ['physicalDisability'],
publicOthers: [],
},
structureName: 'mon assistant numérique val de saone',
contactPhone: '04 04 04 04 04',
contactMail: 'a@a.com',
......@@ -821,8 +915,36 @@ module.exports = {
nbComputers: 0,
nbPrinters: 0,
nbScanners: 0,
nbTablets: 0,
nbNumericTerminal: 0,
hours: {
monday: {
open: false,
time: [],
},
tuesday: {
open: false,
time: [],
},
wednesday: {
open: false,
time: [],
},
thursday: {
open: false,
time: [],
},
friday: {
open: false,
time: [],
},
saturday: {
open: false,
time: [],
},
sunday: {
open: false,
time: [],
},
},
address: {
numero: '2',
street: 'Rue Neuve',
......
......@@ -17,13 +17,12 @@ module.exports = {
emailVerified: true,
email: 'admin@admin.com',
structureOutdatedMailSent: [],
employer: mongoose.Types.ObjectId('627b6ca899862168705ca836'),
job: mongoose.Types.ObjectId('627b6ca899862168705ca846'),
unattachedSince: Date.now(),
},
{
structureOutdatedMailSent: [],
pendingStructuresLink: [],
structuresLink: [mongoose.Types.ObjectId('6001a39c16b08100062e4164')],
structuresLink: [],
newEmail: null,
changeEmailToken: null,
role: 0,
......@@ -36,6 +35,7 @@ module.exports = {
phone: '06 07 08 09 10',
employer: mongoose.Types.ObjectId('627b6ca899862168705ca836'),
job: mongoose.Types.ObjectId('627b6ca899862168705ca846'),
unattachedSince: Date.now(),
},
{
structureOutdatedMailSent: [],
......@@ -58,6 +58,7 @@ module.exports = {
phone: '06 11 11 11 11',
employer: mongoose.Types.ObjectId('627b6ca899862168705ca835'),
job: mongoose.Types.ObjectId('627b6ca899862168705ca848'),
unattachedSince: null,
},
{
structureOutdatedMailSent: [],
......@@ -78,6 +79,7 @@ module.exports = {
phone: '06 11 11 11 11',
employer: mongoose.Types.ObjectId('627b6ca899862168705ca837'),
job: mongoose.Types.ObjectId('627b6ca899862168705ca848'),
unattachedSince: null,
},
{
structureOutdatedMailSent: [],
......@@ -98,6 +100,7 @@ module.exports = {
phone: '06 11 11 11 11',
employer: mongoose.Types.ObjectId('627b6ca899862168705ca833'),
job: mongoose.Types.ObjectId('627b6ca899862168705ca846'),
unattachedSince: null,
},
{
structureOutdatedMailSent: [],
......@@ -118,6 +121,7 @@ module.exports = {
phone: '06 11 11 11 11',
employer: mongoose.Types.ObjectId('627b6ca899862168705ca835'),
job: mongoose.Types.ObjectId('627b6ca899862168705ca849'),
unattachedSince: null,
},
{
structureOutdatedMailSent: [],
......@@ -138,6 +142,7 @@ module.exports = {
phone: '06 11 11 11 11',
employer: mongoose.Types.ObjectId('627b6ca899862168705ca834'),
job: mongoose.Types.ObjectId('627b6ca899862168705ca848'),
unattachedSince: null,
},
{
structureOutdatedMailSent: [],
......@@ -158,6 +163,7 @@ module.exports = {
phone: '06 11 11 11 11',
employer: mongoose.Types.ObjectId('627b6ca899862168705ca835'),
job: mongoose.Types.ObjectId('627b6ca899862168705ca846'),
unattachedSince: null,
},
{
structureOutdatedMailSent: [],
......@@ -178,6 +184,7 @@ module.exports = {
phone: '06 11 11 11 11',
employer: mongoose.Types.ObjectId('627b6ca899862168705ca835'),
job: mongoose.Types.ObjectId('627b6ca899862168705ca845'),
unattachedSince: null,
},
],
};
......@@ -4,9 +4,7 @@ const mongoose = require('mongoose');
// eslint-disable-next-line @typescript-eslint/no-var-requires
const userData = require('./data/users');
const structuresTypeData = require('./data/structuresType');
const categoriesOthersData = require('./data/categoriesOthers');
const categoriesAccompanementsData = require('./data/categoriesAccompanements');
const categoriesFormationData = require('./data/categoriesFormation');
const categoriesData = require('./data/categoriesData');
const structuresData = require('./data/structures');
const jobsData = require('./data/jobs');
const employersData = require('./data/employers');
......@@ -36,14 +34,6 @@ function hashPassword() {
return bcrypt.hashSync(process.env.USER_PWD, process.env.SALT);
}
const handleError = async (name, err) => {
/* show messages */
if (err) {
if (err.code === 26) console.error(`-- ${name} collection does not exists --`);
else throw err;
} else console.log(`-- ${name} collection dropped --`);
};
// define Schema
const usersSchema = mongoose.Schema({
name: String,
......@@ -58,6 +48,7 @@ const usersSchema = mongoose.Schema({
structuresLink: [],
structureOutdatedMailSent: [],
pendingStructuresLink: [],
unattachedSince: Date,
password: String,
phone: String,
employer: String,
......@@ -88,21 +79,13 @@ const structuresTypeSchema = mongoose.Schema(
},
{ collection: 'structuretype' }
);
const categoriesOthersSchema = mongoose.Schema({
name: String,
id: String,
modules: [],
});
const categoriesAccompanementsSchema = mongoose.Schema({
name: String,
id: String,
modules: [],
});
const categoriesFormationSchema = mongoose.Schema({
const categoriesSchema = mongoose.Schema({
name: String,
id: String,
theme: String,
modules: [],
});
const structuresSchema = mongoose.Schema({
numero: String,
createdAt: String,
......@@ -120,20 +103,10 @@ const structuresSchema = mongoose.Schema({
instagram: String,
linkedin: String,
pmrAccess: Boolean,
accessModality: [],
otherDescription: String,
labelsQualifications: [],
publics: [],
exceptionalClosures: String,
publicsAccompaniment: [],
proceduresAccompaniment: [],
remoteAccompaniment: Boolean,
baseSkills: [],
accessRight: [],
socialAndProfessional: [],
parentingHelp: [],
digitalCultureSecurity: [],
equipmentsAndServices: [],
categories: {},
freeWorkShop: Boolean,
nbComputers: Number,
nbPrinters: Number,
......@@ -142,23 +115,50 @@ const structuresSchema = mongoose.Schema({
nbScanners: Number,
hours: Object,
coord: [],
toBeDeletedAt: Date,
deletedAt: Date,
accountVerified: Boolean,
});
// compile schema to model
const user = mongoose.model('users', usersSchema);
const structuresType = mongoose.model('structureType', structuresTypeSchema);
const categoriesOthers = mongoose.model('categoriesOthers', categoriesOthersSchema);
const categoriesAccompanements = mongoose.model('CategoriesAccompagnement', categoriesAccompanementsSchema);
const categoriesFormation = mongoose.model('categoriesFormation', categoriesFormationSchema);
const structuresType = mongoose.model('structuretype', structuresTypeSchema);
const categories = mongoose.model('categories', categoriesSchema);
const structures = mongoose.model('structures', structuresSchema);
const jobs = mongoose.model('jobs', jobsSchema);
const employers = mongoose.model('employers', employersSchema);
/* drop users collections */
mongoose.connection.dropCollection('users', async (err) => {
await handleError('Users', err);
async function deleteData() {
/* drop users collections */
let usersPromise = mongoose.connection.dropCollection('users');
/* Create structures ref */
let structureTypePromise = mongoose.connection.dropCollection('structuretype');
/* Create structures */
let structuresPromise = mongoose.connection.dropCollection('structures');
/* Create jobs */
let jobPromise = mongoose.connection.dropCollection('jobs');
/* Create employers */
let employersPromise = mongoose.connection.dropCollection('employers');
let categoriesPromise = mongoose.connection.dropCollection('categories');
await Promise.all([
employersPromise,
structureTypePromise,
jobPromise,
structuresPromise,
usersPromise,
categoriesPromise,
]);
return true;
}
async function createData() {
let employersPromise = employers.create(employersData.data);
let structureTypePromise = structuresType.create(structuresTypeData.data);
let structuresPromise = structures.create(structuresData.data);
let jobPromise = jobs.create(jobsData.data);
let categoriesPromise = categories.create(categoriesData.data);
// Init passsword
console.log('-- Users password encryption based on .env --');
......@@ -166,60 +166,37 @@ mongoose.connection.dropCollection('users', async (err) => {
user.password = hashPassword();
});
// save model to database
user.create(userData.data, (error) => {
if (error) return console.error(error);
console.log('-- Users collection initialized --');
});
});
/* Create structures ref */
mongoose.connection.dropCollection('structuretype', async (err) => {
await handleError('structureType', err);
structuresType.create(structuresTypeData.data, (error) => {
if (error) return console.error(error);
});
});
mongoose.connection.dropCollection('categoriesothers', async (err) => {
await handleError('categoriesOthers', err);
categoriesOthers.create(categoriesOthersData.data, (error) => {
if (error) return console.error(error);
});
});
mongoose.connection.dropCollection('categoriesaccompagnements', async (err) => {
await handleError('categoriesAccompanements', err);
categoriesAccompanements.create(categoriesAccompanementsData.data, (error) => {
if (error) return console.error(error);
});
});
let userPromise = user.create(userData.data);
await Promise.all([
employersPromise,
structureTypePromise,
jobPromise,
structuresPromise,
userPromise,
categoriesPromise,
]);
return true;
}
mongoose.connection.dropCollection('categoriesformations', async (err) => {
await handleError('categoriesFormations', err);
categoriesFormation.create(categoriesFormationData.data, (error) => {
if (error) return console.error(error);
});
});
function main() {
deleteData()
.then(() => {
console.log('-- Deleting data done --');
})
.catch((err) => {
if (err.code === 26) console.warn(`-- collection(s) does not exists --`);
else console.error(err);
})
.then(() => {
createData()
.then(() => {
console.log('-- Init db done--');
process.exit(0);
})
.catch((err) => {
console.error(err);
});
});
}
/* Create structures */
mongoose.connection.dropCollection('structures', async (err) => {
await handleError('structures', err);
structures.create(structuresData.data, (error) => {
if (error) return console.error(error);
});
});
/* Create structures */
mongoose.connection.dropCollection('jobs', async (err) => {
await handleError('jobs', err);
jobs.create(jobsData.data, (error) => {
if (error) return console.error(error);
});
});
/* Create structures */
mongoose.connection.dropCollection('employers', async (err) => {
await handleError('employers', err);
employers.create(employersData.data, (error) => {
if (error) return console.error(error);
process.exit(0);
});
});
main();
......@@ -14,18 +14,18 @@ const GhostAdminAPI = require('@tryghost/admin-api');
// eslint-disable-next-line @typescript-eslint/no-var-requires
require('dotenv').config({ path: path.resolve(__dirname, '../.env') });
var api = new GhostAdminAPI({
const api = new GhostAdminAPI({
url: process.env.GHOST_HOST_AND_PORT,
key: process.env.GHOST_ADMIN_API_KEY,
version: 'v3',
});
async function deleteTags(existingTags) {
return await Promise.all(
return Promise.all(
_.forEach(existingTags, async (tag) => {
await api.tags
.delete(_.pick(tag, ['id']))
.then((res) => {
.then(() => {
return null;
})
.catch((error) => console.error(error));
......@@ -33,11 +33,11 @@ async function deleteTags(existingTags) {
);
}
async function deletePosts(existingPosts) {
return await Promise.all(
return Promise.all(
_.forEach(existingPosts, async (tag) => {
await api.posts
.delete(_.pick(tag, ['id']))
.then((res) => {
.then(() => {
return null;
})
.catch((error) => console.error(error));
......@@ -45,11 +45,11 @@ async function deletePosts(existingPosts) {
);
}
async function deletePages(existingPages) {
return await Promise.all(
return Promise.all(
_.forEach(existingPages, async (id) => {
await api.pages
.delete(_.pick(id, ['id']))
.then((res) => {
.then(() => {
return null;
})
.catch((error) => console.error(error));
......@@ -94,30 +94,6 @@ async function createTags(deleteOnly) {
.catch((error) => console.error(error));
}
// Utility function to find and upload any images in an HTML string
function processImagesInHTML(html) {
// Find images that Ghost Upload supports
let imageRegex = /="([^"]*?(?:\.jpg|\.jpeg|\.gif|\.png|\.svg|\.sgvz))"/gim;
let imagePromises = [];
let result;
while ((result = imageRegex.exec(html)) !== null) {
let file = result[1];
// Upload the image, using the original matched filename as a reference
imagePromises.push(
api.images.upload({
ref: file,
file: path.resolve(file),
})
);
}
return Promise.all(imagePromises).then((images) => {
images.forEach((image) => (html = html.replace(image.ref, image.url)));
return html;
});
}
async function uploadPostImage(imagePath) {
let imagePromise = api.images.upload({
ref: imagePath,
......@@ -214,44 +190,6 @@ async function createPages(deleteOnly) {
.catch((error) => console.error(error));
}
async function createPages(deleteOnly) {
api.pages
.browse({ limit: 'all' })
.then(async (existingPages) => {
// remove 'meta' key
delete existingPages['meta'];
if (existingPages.length > 0) {
console.log(`-- Dropping ${existingPages.length} pages... --`);
// Delete existing pages
await deletePages(existingPages).then(() => {
console.log('-- Pages dropped --');
});
} else {
console.log('-- No pages to drop --');
}
// wait complete delete of pages, if not page slugs are appended by _2
await new Promise((r) => setTimeout(r, 1000));
// Creating new pages
if (!deleteOnly) {
console.log(`-- Creating ${pagesData.length} pages --`);
_.forEach(pagesData, async (page) => {
//upload de l'image en featured_image
if (page.feature_image) {
page.feature_image = await uploadPostImage(page.feature_image);
}
api.pages
.add(page, { source: 'html' })
.then((res) => {
console.log(`-- Page \`${res.title}\` created --`);
})
.catch((error) => console.error(error));
});
}
})
.catch((error) => console.error(error));
}
async function main(deleteOnly) {
createTags(deleteOnly)
.then(() => {
......@@ -262,7 +200,7 @@ async function main(deleteOnly) {
});
}
var myArgs = process.argv.slice(2);
const myArgs = process.argv.slice(2);
switch (myArgs[0]) {
case 'drop':
......
// eslint-disable-next-line @typescript-eslint/no-var-requires
const axios = require('axios');
// eslint-disable-next-line @typescript-eslint/no-var-requires
const path = require('path');
// eslint-disable-next-line @typescript-eslint/no-var-requires
require('dotenv').config({ path: path.resolve(__dirname, '../.env') });
axios
......
// eslint-disable-next-line @typescript-eslint/no-var-requires
const axios = require('axios');
// eslint-disable-next-line @typescript-eslint/no-var-requires
const path = require('path');
// eslint-disable-next-line @typescript-eslint/no-var-requires
require('dotenv').config({ path: path.resolve(__dirname, '../.env') });
axios
.post('http://localhost:3000/api/auth/login', {
email: 'admin@admin.com',
password: process.env.USER_PWD,
})
.then((res) => {
const config = {
headers: { Authorization: `Bearer ${res.data.accessToken}` },
};
axios
.get('http://localhost:3000/api/tcl/update', config)
.then((res) => {
console.log(`TCL stop points | statusCode: ${res.status}`);
})
.catch((error) => {
console.error('Error in fetching TCL stop points');
console.error(error);
});
})
.catch((error) => {
console.error('Error in auth');
console.error(error);
});
......@@ -190,9 +190,10 @@ export class AdminController {
public async deleteUser(@Param() params) {
const user = await this.usersService.deleteOneId(params.id);
user.structuresLink.forEach((structureId) => {
this.usersService.isStructureClaimed(structureId.toString()).then((userFound) => {
this.usersService.isStructureClaimed(structureId.toString()).then(async (userFound) => {
if (!userFound) {
this.structuresService.deleteOne(structureId.toString());
const structure = await this.structuresService.findOne(structureId.toString());
this.structuresService.deleteOne(structure);
}
});
});
......@@ -219,6 +220,7 @@ export class AdminController {
return {
id: user._id,
createdAt: user.createdAt ? user.createdAt.toLocaleDateString() : '',
unattachedSince: user.unattachedSince ? user.unattachedSince.toLocaleDateString() : '',
surname: user.surname,
name: user.name,
email: user.email,
......
......@@ -9,6 +9,7 @@ import { ConfigurationModule } from './configuration/configuration.module';
import { ContactModule } from './contact/contact.module';
import { MailerModule } from './mailer/mailer.module';
import { NewsletterModule } from './newsletter/newsletter.module';
import { OnlineMediationModule } from './online-mediation/onlineMediation.module';
import { PagesModule } from './pages/pages.module';
import { ParametersModule } from './parameters/parameters.module';
import { PersonalOffersModule } from './personal-offers/personal-offers.module';
......@@ -38,6 +39,7 @@ import { UsersModule } from './users/users.module';
ContactModule,
PersonalOffersModule,
ParametersModule,
OnlineMediationModule,
],
controllers: [AppController],
})
......
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { CategoriesFormationsController } from './controllers/categories-formations.controller';
import { CategoriesFormationsService } from './services/categories-formations.service';
import { CategoriesFormations, CategoriesFormationsSchema } from './schemas/categoriesFormations.schema';
import { CategoriesAccompagnementController } from './controllers/categories-accompagnement.controller';
import { CategoriesOthersController } from './controllers/categories-others.controller';
import { CategoriesAccompagnementService } from './services/categories-accompagnement.service';
import { CategoriesOthersService } from './services/categories-others.service';
import { CategoriesOthers, CategoriesOthersSchema } from './schemas/categoriesOthers.schema';
import { CategoriesAccompagnement, CategoriesAccompagnementSchema } from './schemas/categoriesAccompagnement.schema';
import { CategoriesService } from './services/categories.service';
import { Categories, CategoriesSchema } from './schemas/categories.schema';
import { CategoriesController } from './controllers/categories.controller';
@Module({
imports: [
MongooseModule.forFeature([
{ name: CategoriesFormations.name, schema: CategoriesFormationsSchema },
{ name: CategoriesAccompagnement.name, schema: CategoriesAccompagnementSchema },
{ name: CategoriesOthers.name, schema: CategoriesOthersSchema },
]),
],
controllers: [CategoriesFormationsController, CategoriesAccompagnementController, CategoriesOthersController],
exports: [CategoriesFormationsService, CategoriesAccompagnementService, CategoriesOthersService],
providers: [CategoriesFormationsService, CategoriesAccompagnementService, CategoriesOthersService],
imports: [MongooseModule.forFeature([{ name: Categories.name, schema: CategoriesSchema }])],
controllers: [CategoriesController],
exports: [CategoriesService],
providers: [CategoriesService],
})
export class CategoriesModule {
id: string;
text: any;
}
export class CategoriesModule {}
import { Body, Controller, Get, Post, UseGuards } from '@nestjs/common';
import { CategoriesAccompagnementService } from '../services/categories-accompagnement.service';
import { CreateCategoriesAccompagnement } from '../dto/create-categoriesAccompagnement.dto';
import { CategoriesAccompagnement } from '../schemas/categoriesAccompagnement.schema';
import { JwtAuthGuard } from '../../auth/guards/jwt-auth.guard';
import { Roles } from '../../users/decorators/roles.decorator';
import { RolesGuard } from '../../users/guards/roles.guard';
import { ApiTags } from '@nestjs/swagger';
@ApiTags('categories')
@Controller('categories/categoriesAccompagnement')
export class CategoriesAccompagnementController {
constructor(private readonly categoriesAccompagnementService: CategoriesAccompagnementService) {}
@Post()
@UseGuards(JwtAuthGuard, RolesGuard)
@Roles('admin')
public async create(@Body() createStructureDto: CreateCategoriesAccompagnement): Promise<CategoriesAccompagnement> {
return this.categoriesAccompagnementService.create(createStructureDto);
}
@Get()
public async findAll(): Promise<CategoriesAccompagnement[]> {
return this.categoriesAccompagnementService.findAll();
}
}
import { getModelToken } from '@nestjs/mongoose';
import { Test, TestingModule } from '@nestjs/testing';
import { CategoriesFormationsServiceMock } from '../../../test/mock/services/categoriesFormations.mock.service';
import { CreateCategoriesFormations } from '../dto/create-categoriesFormations.dto';
import { CategoriesFormations } from '../schemas/categoriesFormations.schema';
import { CategoriesFormationsService } from '../services/categories-formations.service';
import { CategoriesFormationsController } from './categories-formations.controller';
describe('CategoriesFormationsController', () => {
let controller: CategoriesFormationsController;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
imports: [],
providers: [
{
provide: CategoriesFormationsService,
useClass: CategoriesFormationsServiceMock,
},
{
provide: getModelToken('CategoriesFormations'),
useValue: CategoriesFormations,
},
],
controllers: [CategoriesFormationsController],
}).compile();
controller = module.get<CategoriesFormationsController>(CategoriesFormationsController);
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
it('should find all formations', async () => {
expect((await controller.findAll()).length).toBe(6);
expect((await controller.findAll())[0].modules.length).toBe(8);
});
it('should create a formation', async () => {
const data: CreateCategoriesFormations = {
name: 'test',
modules: [
{
id: '74',
display_id: '74',
display_name: 'Modules APTIC - n°74',
digest: 'Smartphones et Tablettes sous Androïd',
text: 'Smartphones et Tablettes sous Androïd',
},
],
};
expect((await controller.create(data)).modules.length).toBe(2);
});
});