diff --git a/api-gateway/package-lock.json b/api-gateway/package-lock.json index 45818f0c..ffffe99e 100644 --- a/api-gateway/package-lock.json +++ b/api-gateway/package-lock.json @@ -12,6 +12,8 @@ "@nestjs/core": "^8.0.0", "@nestjs/microservices": "^8.4.7", "@nestjs/platform-express": "^8.0.0", + "@types/cors": "^2.8.12", + "cors": "^2.8.5", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.2.0" @@ -1882,6 +1884,11 @@ "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", "dev": true }, + "node_modules/@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + }, "node_modules/@types/eslint": { "version": "8.4.3", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", @@ -10108,6 +10115,11 @@ "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", "dev": true }, + "@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + }, "@types/eslint": { "version": "8.4.3", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", diff --git a/api-gateway/package.json b/api-gateway/package.json index cdd17cfe..78136508 100644 --- a/api-gateway/package.json +++ b/api-gateway/package.json @@ -25,6 +25,8 @@ "@nestjs/core": "^8.0.0", "@nestjs/microservices": "^8.4.7", "@nestjs/platform-express": "^8.0.0", + "@types/cors": "^2.8.12", + "cors": "^2.8.5", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.2.0" diff --git a/api-gateway/src/app.controller.ts b/api-gateway/src/app.controller.ts index adbdeeca..3a559841 100644 --- a/api-gateway/src/app.controller.ts +++ b/api-gateway/src/app.controller.ts @@ -1,10 +1,8 @@ import { Controller, Get, Post, Body, Param } from '@nestjs/common'; import { AppService } from "./app.service"; - @Controller() export class AppController { constructor(private readonly appService: AppService) { } - // #==== API Users @Post('user/createAdminSystem') createAdminSystem( @@ -22,6 +20,24 @@ export class AppController { user_type, status, date_entry); } + @Post('user/createGuard') + createGuard( + //Nombre, Apellidos, Correo electrónico, Cédula, Teléfono, Contraseña + @Body('dni') dni: string, + @Body('name') name: string, + @Body('last_name') last_name: string, + @Body('email') email: string, + @Body('phone') phone: number, + @Body('password') password: string, + @Body('user_type') user_type: string, + @Body('status') status: string, + @Body('date_entry') date_entry: Date, + @Body('community_id') community_id:string + ) { + return this.appService.createGuard(dni, name, last_name, email, phone, password, + user_type, status, date_entry,community_id); + } + @Post('user/createUser') createUser( @Body('dni') dni: string, @@ -61,6 +77,12 @@ export class AppController { allUsersAdminComunidad() { return this.appService.allUsersAdminComunidad(); } + @Get('user/findGuards/:community') + findGuardsCommunity( + @Param('community_id') community_id: string + ) { + return this.appService.findGuardsCommunity(community_id); + } @Get('user/find/:dni') findUser( diff --git a/api-gateway/src/app.service.ts b/api-gateway/src/app.service.ts index 4659f1b9..592117eb 100644 --- a/api-gateway/src/app.service.ts +++ b/api-gateway/src/app.service.ts @@ -50,12 +50,13 @@ export class AppService { ); } - testSendMail(dni: string, name: string, last_name: string, email: string, phone: number - , password: string, user_type: string, status: string, date_entry: Date) { - const pattern = { cmd: 'testSendMail' }; + createGuard(dni: string, name: string, last_name: string, email: string, phone: number + , password: string, user_type: string, status: string, date_entry: Date, community_id: string) { + const pattern = { cmd: 'createGuard' }; const payload = { dni: dni, name: name, last_name: last_name, email: email, phone: phone, - password: password, user_type: user_type, status: status, date_entry: date_entry + password: password, user_type: user_type, status: status, date_entry: date_entry, community_id + }; return this.clientUserApp .send(pattern, payload) @@ -105,6 +106,16 @@ export class AppService { ); } + findGuardsCommunity(community_id: string) { + const pattern = { cmd: 'findGuardsCommunity' }; + const payload = { community_id: community_id }; + return this.clientUserApp + .send(pattern, payload) + .pipe( + map((message: string) => ({ message })), + ); + } + inicioSesion(pEmail: string, pPassword: string) { const pattern = { cmd: 'loginUser' }; const payload = { email: pEmail, password: pPassword}; diff --git a/servicio-comunidad-viviendas/package-lock.json b/servicio-comunidad-viviendas/package-lock.json index 22c95f9b..46dd3dd0 100644 --- a/servicio-comunidad-viviendas/package-lock.json +++ b/servicio-comunidad-viviendas/package-lock.json @@ -5,7 +5,6 @@ "requires": true, "packages": { "": { - "name": "servicio-comunidad-viviendas", "version": "0.0.1", "license": "UNLICENSED", "dependencies": { diff --git a/servicio-usuarios/package-lock.json b/servicio-usuarios/package-lock.json index bcc50489..9d7a82b9 100644 --- a/servicio-usuarios/package-lock.json +++ b/servicio-usuarios/package-lock.json @@ -17,6 +17,7 @@ "@nestjs/platform-express": "^8.0.0", "@nestjs/swagger": "^5.2.1", "buffer": "^5.7.1", + "cors": "^2.8.5", "crypto-browserify": "^3.12.0", "md5-typescript": "^1.0.5", "mongoose": "^6.4.1", diff --git a/servicio-usuarios/package.json b/servicio-usuarios/package.json index 453489ec..65b4ea6b 100644 --- a/servicio-usuarios/package.json +++ b/servicio-usuarios/package.json @@ -29,6 +29,7 @@ "@nestjs/platform-express": "^8.0.0", "@nestjs/swagger": "^5.2.1", "buffer": "^5.7.1", + "cors": "^2.8.5", "crypto-browserify": "^3.12.0", "md5-typescript": "^1.0.5", "mongoose": "^6.4.1", diff --git a/servicio-usuarios/src/users/users.controller.ts b/servicio-usuarios/src/users/users.controller.ts index 7f4718dd..1fbe7658 100644 --- a/servicio-usuarios/src/users/users.controller.ts +++ b/servicio-usuarios/src/users/users.controller.ts @@ -17,6 +17,10 @@ export class UsersController { return this.userService.create(user); } + @MessagePattern({ cmd: 'createGuard' }) + createGuard(@Payload() user: UserDocument) { + return this.userService.create(user); + } @MessagePattern({ cmd: 'findAllUsers' }) @@ -30,6 +34,13 @@ export class UsersController { return this.userService.findOneByDNI(dni); } + @MessagePattern({ cmd: 'findGuardsCommunity' }) + findGuardsCommunity(@Payload() community_id: string) { + let pcommunity_id = community_id['community_id']; + return this.userService.findGuardsCommunity(pcommunity_id); + } + + @MessagePattern({ cmd: 'updateUser' }) update(@Payload() user: UserDocument) { return this.userService.update(user.id, user); diff --git a/servicio-usuarios/src/users/users.service.ts b/servicio-usuarios/src/users/users.service.ts index 2040c3b5..18b219cb 100644 --- a/servicio-usuarios/src/users/users.service.ts +++ b/servicio-usuarios/src/users/users.service.ts @@ -77,6 +77,16 @@ export class UsersService { return this.userModel.find({ user_type: 1 }).exec(); } + + //find admin del sistema + async findGuardsCommunity(pcommunity_id: string): Promise { + return this.userModel.find({ user_type: 4 }).exec(); + } + //find admin de comunidad + async allUsersAdminComunidad(): Promise { + return this.userModel.find({ user_type: 2 }).exec(); + } + //find admin de comunidad async allUsersAdminComunidad(): Promise { return this.userModel.find({ user_type: 2 }).exec(); @@ -105,4 +115,5 @@ export class UsersService { return this.userModel.findOne({ community_id: community_id, user_type: user_type }).exec(); } + } diff --git a/web-ui/web-react/package-lock.json b/web-ui/web-react/package-lock.json index 45064bbd..48c45103 100644 --- a/web-ui/web-react/package-lock.json +++ b/web-ui/web-react/package-lock.json @@ -17,6 +17,7 @@ "axios": "^0.19.0", "chart.js": "3.3.2", "classnames": "^2.2.6", + "cors": "^2.8.5", "primeflex": "3.1.0", "primeicons": "^5.0.0", "primereact": "7.2.0", @@ -5183,6 +5184,18 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -21869,6 +21882,15 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", diff --git a/web-ui/web-react/package.json b/web-ui/web-react/package.json index 7c1031f7..00421d8f 100644 --- a/web-ui/web-react/package.json +++ b/web-ui/web-react/package.json @@ -12,12 +12,15 @@ "@fullcalendar/core": "^5.7.2", "@fullcalendar/daygrid": "^5.7.2", "@fullcalendar/interaction": "^5.7.2", - "@fullcalendar/timegrid": "^5.7.2", "@fullcalendar/react": "^5.7.0", + "@fullcalendar/timegrid": "^5.7.2", + "axios": "^0.19.0", "chart.js": "3.3.2", - "primereact": "7.2.0", + "classnames": "^2.2.6", + "cors": "^2.8.5", "primeflex": "3.1.0", "primeicons": "^5.0.0", + "primereact": "7.2.0", "prismjs": "1.9.0", "react": "^17.0.1", "react-app-polyfill": "^1.0.6", @@ -25,9 +28,7 @@ "react-router-dom": "^5.2.0", "react-scripts": "3.4.1", "react-transition-group": "^4.4.1", - "sass": "^1.32.8", - "axios": "^0.19.0", - "classnames": "^2.2.6" + "sass": "^1.32.8" }, "scripts": { "start": "react-scripts start", diff --git a/web-ui/web-react/src/App.js b/web-ui/web-react/src/App.js index a98659e9..aa1e4a1b 100644 --- a/web-ui/web-react/src/App.js +++ b/web-ui/web-react/src/App.js @@ -30,6 +30,7 @@ import BlocksDemo from './templates/BlocksDemo'; import IconsDemo from './templates/IconsDemo'; import AdministradoresSistema from './components/AdministradoresSistema'; import AdministradoresComunidad from './components/AdministradoresComunidad'; +import GuardasSeguridad from './components/GuardasSeguridad'; import Communities from './components/ComunidadViviendas'; import Crud from './pages/Crud'; @@ -166,6 +167,7 @@ const App = () => { {label: 'Dashboard', icon: 'pi pi-fw pi-home', to: '/'}, {label: 'Administradores del sistema', icon: 'pi pi-fw pi-id-card', to: '/administradoresSistema'}, {label: 'Administradores de comunidad', icon: 'pi pi-fw pi-id-card', to: '/administradoresComunidad'}, + {label: 'Guardas de seguridad', icon: 'pi pi-fw pi-id-card', to: '/guardasSeguridad'}, {label: 'Comunidadades', icon: 'pi pi-fw pi-id-card', to: '/comunidadesViviendas'}, {label: 'Log in', icon: 'pi pi-fw pi-id-card', to: '/logIn'} ] @@ -322,6 +324,7 @@ const App = () => { + diff --git a/web-ui/web-react/src/components/GuardasSeguridad.js b/web-ui/web-react/src/components/GuardasSeguridad.js new file mode 100644 index 00000000..bc4ec2f8 --- /dev/null +++ b/web-ui/web-react/src/components/GuardasSeguridad.js @@ -0,0 +1,121 @@ +import React, { useEffect, useState } from 'react'; +import { InputText } from 'primereact/inputtext'; +import { Button } from 'primereact/button'; +import { DataTable } from 'primereact/datatable'; +import { Column } from 'primereact/column'; + +const GuardasSeguridad = () => { + + const [pokemones,setPokemones]=useState([]); + const [urlFetch,setUrlFetch]=useState('http://localhost:4000/user/findGuards/62be68215692582bbfd77134'); + async function fetchP(){ + let nombres=await fetch(urlFetch, {method:'GET'}); + let pokemonesRes= await nombres.json(); + setPokemones(pokemonesRes.message); + console.log(pokemones); + } + useEffect(()=>{ + fetchP(); + },[]) + + function registrarGuarda() { + var data = { + dni: document.getElementById('identificacion').value, + name: document.getElementById('nombre').value, + last_name: document.getElementById('apellidos').value, + email: document.getElementById('correo_electronico').value, + phone: document.getElementById('telefono').value, + password: document.getElementById('correo_electronico').value, + user_type: "4", //4 es guarda + status: "1", + community_id:"62be68215692582bbfd77134" + }; + var data2={ + dni: "98765", + name: "Danielito", + last_name: "Rodriguez", + email: "danirodriguez@gmail.com", + phone: 84664515, + password: "1203", + user_type: "2", + status: "4", + community_id:"62be68215692582bbfd77134" + } + console.log(data2); + + fetch('http://localhost:4000/user/createGuard', { + cache: 'no-cache', + method: 'POST', + mode:'cors', + body: JSON.stringify(data2), + headers: { + 'Content-Type': 'application/json' + } + }) + .then( + function (response) { + if (response.status != 201) + console.log('Ocurrió un error con el servicio: ' + response.status); + else + return response.json(); + } + ) + .then( + function (response) { + fetchP(); + } + ) + .catch( + err => console.log('Ocurrió un error con el fetch', err) + ); + } + + return ( +
+
+
+
Guardas de seguridad
+ + + + + + + +
+
+
+
+
Registro de un guarda de seguridad
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+
+ + + ) +} + +export default React.memo(GuardasSeguridad); \ No newline at end of file