diff --git a/api-gateway/src/app.controller.ts b/api-gateway/src/app.controller.ts index df91e6e0..f0feefba 100644 --- a/api-gateway/src/app.controller.ts +++ b/api-gateway/src/app.controller.ts @@ -241,6 +241,26 @@ export class AppController { return this.appService.changeStatusUser(pId, pStatus); } + @Put('user/updateAdminCommunity/:id') + updateAdminCommunity( + @Param('id') id: string, + @Body('dni') dni: string, + @Body('name') name: string, + @Body('last_name') last_name: string, + @Body('email') email: string, + @Body('phone') phone: number, + @Body('community_id') community_id: string, + ) { + return this.appService.updateAdminCommunity( + id, + dni, + name, + last_name, + email, + phone, + community_id, + ); + } @Post('user/updateAdminSystem') updateAdminSystem( diff --git a/api-gateway/src/app.service.ts b/api-gateway/src/app.service.ts index 243a73e1..2ce6a609 100644 --- a/api-gateway/src/app.service.ts +++ b/api-gateway/src/app.service.ts @@ -152,7 +152,29 @@ export class AppService { .send(pattern, payload) .pipe(map((message: string) => ({ message }))); } - + updateAdminCommunity( + id: string, + dni: string, + name: string, + last_name: string, + email: string, + phone: number, + community_id: string, + ) { + const pattern = { cmd: 'updateAdminCommunity' }; + const payload = { + _id: id, + dni: dni, + name: name, + last_name: last_name, + email: email, + phone: phone, + community_id: community_id, + }; + return this.clientUserApp + .send(pattern, payload) + .pipe(map((message: string) => ({ message }))); + } //POST parameter from API createAdminSystem(dni: string, name: string, last_name: string, email: string, phone: number , user_type: string, status: string, date_entry: Date) { diff --git a/servicio-usuarios/src/users/users.controller.ts b/servicio-usuarios/src/users/users.controller.ts index be7deb01..bfdb4481 100644 --- a/servicio-usuarios/src/users/users.controller.ts +++ b/servicio-usuarios/src/users/users.controller.ts @@ -80,6 +80,11 @@ export class UsersController { return this.userService.update(guard.id, guard); } + @MessagePattern({ cmd: 'updateAdminCommunity' }) + updateAdminCommunity(@Payload() user: UserDocument) { + return this.userService.update(user._id, user); + } + @MessagePattern({ cmd: 'removeUser' }) remove(@Payload() id: string) { let dni = id['dni']; diff --git a/web-ui/web-react/src/components/AdministradoresComunidad.js b/web-ui/web-react/src/components/AdministradoresComunidad.js index 0ec73891..2fdd1289 100644 --- a/web-ui/web-react/src/components/AdministradoresComunidad.js +++ b/web-ui/web-react/src/components/AdministradoresComunidad.js @@ -49,6 +49,7 @@ const AdministradoresComunidad = () => { const dt = useRef(null); const [changeStatusAdminCommunityDialog, setChangeStatusAdminCommunityDialog] = useState(false); + const [saveButtonTitle, setSaveButtonTitle] = useState("Registrar"); async function listaAdmin() { @@ -151,22 +152,22 @@ const AdministradoresComunidad = () => { } ); - + }; const deleteSelectedAdminsCommunity = () => { let _admins = listaAdmins.filter( (val) => !selectedAdminsCommunities.includes(val), ); - selectedAdminsCommunities.map((item) => { - fetch('http://localhost:4000/user/deleteAdminCommunity/' + item._id, { - cache: 'no-cache', - method: 'DELETE', - headers: { - 'Content-Type': 'application/json' - } - }) - }) + selectedAdminsCommunities.map((item) => { + fetch('http://localhost:4000/user/deleteAdminCommunity/' + item._id, { + cache: 'no-cache', + method: 'DELETE', + headers: { + 'Content-Type': 'application/json' + } + }) + }) setListaAdmins(_admins); setDeleteAdminsCommunitiesDialog(false); setSelectedAdminsCommunities(null); @@ -224,52 +225,104 @@ const AdministradoresComunidad = () => { ); } - const saveAdminCommunity = () => { - if (adminCommunity.name && adminCommunity.dni && adminCommunity.last_name && adminCommunity.email && adminCommunity.phone) { - - let _administrators = [...listaAdmins]; - let _adminCommunity = { ...adminCommunity }; - _adminCommunity.community_id = communityId; - console.log(_adminCommunity) - console.log(communityId) - - fetch('http://localhost:4000/user/createAdminCommunity', { - cache: 'no-cache', - method: 'POST', - body: JSON.stringify(_adminCommunity), - 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(() => { - - // _adminCommunity.community_id = communitiesList.find(c => c._id === _adminCommunity.community_id).name - - _administrators.push(_adminCommunity); - toast.current.show({ severity: 'success', summary: 'Registro exitoso', detail: 'Administrador de Comunidad de vivienda Creada', life: 3000 }); - - setListaAdmins(_administrators); - - setAdminCommunity(emptyAdminCommunity); - - }) - .catch( - err => console.log('Ocurrió un error con el fetch', err) - ); - - - } else { - setSubmitted(true); - + const findIndexById = (id) => { + let index = -1; + for (let i = 0; i < listaAdmins.length; i++) { + if (listaAdmins[i]._id === id) { + index = i; + break; + } } + return index; + + } + + const findRepeated = (name, value) => { + let _administrators = [...listaAdmins]; + let value_filtered = _administrators.filter(item => item[`${name}`] === value); + return value_filtered.length + } + + const saveAdminCommunity = () => { + let _administrators = [...listaAdmins]; + let _admin = { ...adminCommunity }; + _admin.community_id = communityId; + + if (adminCommunity._id === null) { + if (adminCommunity.name && adminCommunity.dni && + adminCommunity.last_name && adminCommunity.email && + adminCommunity.phone) { + + + fetch('http://localhost:4000/user/createAdminCommunity', { + cache: 'no-cache', + method: 'POST', + body: JSON.stringify(_admin), + 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(() => { + + // _adminCommunity.community_id = communitiesList.find(c => c._id === _adminCommunity.community_id).name + + _administrators.push(_admin); + toast.current.show({ severity: 'success', summary: 'Exito', detail: 'Administrador de Comunidad de vivienda Creada', life: 3000 }); + + setListaAdmins(_administrators); + + setAdminCommunity(emptyAdminCommunity); + + }) + .catch( + err => console.log('Ocurrió un error con el fetch', err) + ); + + + } else { + setSubmitted(true); + } + } else { + console.log(`Actualizando admnistrador de comunidad: ${_admin}`) + _admin.community_id = communityId; + console.log(`Actualizando admnistrador de comunidad: ${_admin}`) + + fetch(`http://localhost:4000/user/updateAdminCommunity/${_admin._id}`, { + cache: 'no-cache', + method: 'PUT', + body: JSON.stringify(_admin), + headers: { + 'Content-Type': 'application/json', + }, + }).then((response) => { + if (response.status !== 200) + console.log(`Hubo un error en el servicio: ${response.status}`) + else return response.json() + }).then(() => { + + toast.current.show({ + severity: 'success', + summary: 'Éxito', + detail: 'Administrador de comunidad actualizado', + life: 3000, + }) + toast.current.show({ severity: 'success', summary: 'Exito', detail: 'Administrador de Comunidad de vivienda Actualizada', life: 3000 }); + + listaAdmin(); + setCommunityId(''); + + setAdminCommunity(emptyAdminCommunity); + }) + } + } const hideDeleteAdminCommunityDialog = () => { @@ -298,6 +351,19 @@ const AdministradoresComunidad = () => { setChangeStatusAdminCommunityDialog(true); }; + const editAdmin = (admin) => { + setAdminCommunity(admin); + setSaveButtonTitle('Actualizar'); + setCommunityId(admin.community_id) + } + + + const cancelEdit = () => { + setAdminCommunity(emptyAdminCommunity); + setSaveButtonTitle('Registrar'); + setCommunityId(''); + } + const actionsAdminCommunity = (rowData) => { let icono = ''; let text = ''; @@ -310,15 +376,22 @@ const AdministradoresComunidad = () => { } return (
+
@@ -503,7 +576,7 @@ const AdministradoresComunidad = () => { - +
@@ -548,7 +621,7 @@ const AdministradoresComunidad = () => {
- + onInputChange(e, 'name')} required autoFocus className={classNames({ 'p-invalid': submitted && adminCommunity.name === '' })} />
@@ -560,7 +633,7 @@ const AdministradoresComunidad = () => {
- + onInputChange(e, 'last_name')} required autoFocus className={classNames({ 'p-invalid': submitted && adminCommunity.last_name === '' })} />
@@ -572,12 +645,18 @@ const AdministradoresComunidad = () => {
- + - onInputChange(e, 'email')} required autoFocus className={classNames({ 'p-invalid': submitted && adminCommunity.email === '' })} /> + onInputChange(e, 'email')} required autoFocus + className={classNames({ 'p-invalid': submitted && + (adminCommunity.email === '' || findRepeated('email', adminCommunity.email) > 0) })} />
{submitted && adminCommunity.email === '' && Correo electrónico es requirido.} + {submitted && findRepeated('email', adminCommunity.email) > 0 && + Correo electrónico se encuentra repetido. + }
@@ -585,11 +664,17 @@ const AdministradoresComunidad = () => {
- + - onInputChange(e, 'dni')} required autoFocus className={classNames({ 'p-invalid': submitted && adminCommunity.dni === '' })} /> + onInputChange(e, 'dni')} required autoFocus + className={classNames({ 'p-invalid': submitted + && (adminCommunity.dni === '' || findRepeated('dni', adminCommunity.dni) > 0)})} />
- {submitted && adminCommunity.email === '' && Identificación es requirida.} + {submitted && adminCommunity.dni === '' && Identificación es requirida.} + {submitted && findRepeated('dni', adminCommunity.dni) > 0 && + Identificación se encuentra repetida. + }
@@ -617,7 +702,23 @@ const AdministradoresComunidad = () => { {submitted && !communityId && Comunidad es requirida.}
-
+ diff --git a/web-ui/web-react/src/components/AdministradoresSistema.js b/web-ui/web-react/src/components/AdministradoresSistema.js index 6fa70310..adf8b3bf 100644 --- a/web-ui/web-react/src/components/AdministradoresSistema.js +++ b/web-ui/web-react/src/components/AdministradoresSistema.js @@ -107,9 +107,6 @@ const AdministradoresSistema = () => { } else { if (_admin._id) { - - - fetch('http://localhost:4000/user/updateAdminSystem/', { cache: 'no-cache', method: 'POST', @@ -145,15 +142,7 @@ const AdministradoresSistema = () => { .catch( err => console.log('Ocurrió un error con el fetch', err) ); - - - - - - } else { - - fetch('http://localhost:4000/user/createAdminSystem/', { cache: 'no-cache', method: 'POST', @@ -181,15 +170,8 @@ const AdministradoresSistema = () => { ); } } - - - - - - } else { setSubmitted(true); - } } @@ -268,16 +250,13 @@ const AdministradoresSistema = () => { setSubmitted(false); setAdminDialog(false); setSysAdmin(emptySysAdmin); - }; const infoAdmin = (sysadmin) => { setSysAdmin({ ...sysadmin }); setAdminDialog(true); - }; - const cancelEdit = () => { setSaveButtonTitle('Registrar'); setSubmitted(false); diff --git a/web-ui/web-react/src/components/Inquilinos.js b/web-ui/web-react/src/components/Inquilinos.js index c932116f..e4f49014 100644 --- a/web-ui/web-react/src/components/Inquilinos.js +++ b/web-ui/web-react/src/components/Inquilinos.js @@ -874,7 +874,7 @@ const Inquilinos = () => { onInputChange(e, 'dni')} required autoFocus className={classNames({ 'p-invalid': submitted && tenant.dni === '' })} /> - {submitted && tenant.email === '' && Identificación es requerida.} + {submitted && tenant.dni === '' && Identificación es requerida.}