Merge branch 'desarrollo' into 'master'

validaciones con controles versión 10

See merge request !9
parents e72fba59 f5477a32
...@@ -7,7 +7,6 @@ import { MatDialog } from '@angular/material/dialog'; ...@@ -7,7 +7,6 @@ import { MatDialog } from '@angular/material/dialog';
import { AccesoDenegadoComponent } from 'src/app/modules/main/pages/programa/opciones/AccesoDenegado/AccesoDenegado.component'; import { AccesoDenegadoComponent } from 'src/app/modules/main/pages/programa/opciones/AccesoDenegado/AccesoDenegado.component';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',
}) })
...@@ -19,30 +18,30 @@ export class AuthGuard implements CanActivate { ...@@ -19,30 +18,30 @@ export class AuthGuard implements CanActivate {
private dialog: MatDialog private dialog: MatDialog
) {} ) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree { canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree {
const requiredEmails = route.data['requiredEmails'] as string[]; const requiredEmails = route.data['requiredEmails'] as string[];
const userCurrentEmail = this.authService.email; const userCurrentEmail = this.authService.email;
if (this.authorizationService.hasAccess(requiredEmails)) { if (this.authorizationService.hasAccess(requiredEmails)) {
return true; return true;
} else { } else {
console.log("Access denied for:", userCurrentEmail); console.log("Access denied for:", userCurrentEmail);
this.openModal(); this.openModal();
this.router.navigate(['/main/principal']);
return false; return false;
} }
}
openModal(): void {
const dialogRef = this.dialog.open(AccesoDenegadoComponent, {
width: '400px',
disableClose: true
});
dialogRef.afterClosed().subscribe(result => {
console.log('La ventana modal se ha cerrado');
this.formularioEnviado = true;
this.router.navigate(['/main/principal']);
});
}
} }
openModal() {
const dialogRef = this.dialog.open(AccesoDenegadoComponent, {
width: '400px',
disableClose: true
});
dialogRef.afterClosed().subscribe(result => {
console.log('La ventana modal se ha cerrado');
this.formularioEnviado = true;
});
}
}
...@@ -147,8 +147,7 @@ const routes: Routes = [ ...@@ -147,8 +147,7 @@ const routes: Routes = [
//-----------------Generales-------------------- //-----------------Generales--------------------
{ path: '', redirectTo: 'principal', pathMatch: 'full' }, { path: '', redirectTo: 'principal', pathMatch: 'full' },
{ path: 'principal', component: MainComponent, canActivate:[AuthGuard], data: { requiredEmails: ['jacaceres1@espe.edu.ec', 'jamolina13@espe.edu.ec', 'aczambrano3@espe.edu.ec'] } }, { path: 'principal', component: MainComponent, canActivate:[AuthGuard], data: { requiredEmails: ['jacaceres1@espe.edu.ec', 'jamolina13@espe.edu.ec', 'aczambrano3@espe.edu.ec', 'jvzambrano4@espe.edu.ec'] } }, { path: 'ejemplo', component: EjemploComponent , canActivate:[AuthGuard], data: { requiredEmails: ['jacaceres1@espe.edu.ec', 'jamolina13@espe.edu.ec', 'aczambrano3@espe.edu.ec'] } },
{ path: 'ejemplo', component: EjemploComponent , canActivate:[AuthGuard], data: { requiredEmails: ['jacaceres1@espe.edu.ec', 'jamolina13@espe.edu.ec', 'aczambrano3@espe.edu.ec'] } },
{ path: 'inicio', component: InicioComponent , canActivate:[AuthGuard], data: { requiredEmails: ['jacaceres1@espe.edu.ec', 'jamolina13@espe.edu.ec', 'aczambrano3@espe.edu.ec'] } }, { path: 'inicio', component: InicioComponent , canActivate:[AuthGuard], data: { requiredEmails: ['jacaceres1@espe.edu.ec', 'jamolina13@espe.edu.ec', 'aczambrano3@espe.edu.ec'] } },
{ path: 'home', component: HomeComponent , canActivate:[AuthGuard], data: { requiredEmails: ['jacaceres1@espe.edu.ec', 'jamolina13@espe.edu.ec', 'aczambrano3@espe.edu.ec'] } }, { path: 'home', component: HomeComponent , canActivate:[AuthGuard], data: { requiredEmails: ['jacaceres1@espe.edu.ec', 'jamolina13@espe.edu.ec', 'aczambrano3@espe.edu.ec'] } },
{ path: 'configuraciones', component: ConfiguracionesComponent , canActivate:[AuthGuard], data: { requiredEmails: ['jacaceres1@espe.edu.ec', 'jamolina13@espe.edu.ec', 'aczambrano3@espe.edu.ec'] } }, { path: 'configuraciones', component: ConfiguracionesComponent , canActivate:[AuthGuard], data: { requiredEmails: ['jacaceres1@espe.edu.ec', 'jamolina13@espe.edu.ec', 'aczambrano3@espe.edu.ec'] } },
......
...@@ -148,7 +148,7 @@ export class ActaDirectorProyectoComponent implements OnInit { ...@@ -148,7 +148,7 @@ export class ActaDirectorProyectoComponent implements OnInit {
filename: response.fileName filename: response.fileName
}; };
} catch (error) { } catch (error) {
this.openModalError('¡Este PDF ya se ha subido!'); this.openModalError('Ya existe un Documento con ese Nombre');
return { return {
idPDF: null, idPDF: null,
filename: '' filename: ''
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<button mat-raised-button color="primary" *ngIf="ocultar" <button mat-raised-button color="primary" *ngIf="ocultar"
(click)="AgregarF()" [disabled]="myForm.get('hitos').invalid">Agregar (click)="AgregarF()" [disabled]="myForm.get('hitos').invalid">Agregar
Fecha</button> Fecha</button>
<button mat-raised-button color="primary" *ngIf="showDataAdd" (click)="enviarInfo()">Guardar</button> <button mat-raised-button color="primary" *ngIf="showDataAdd" [disabled]="myForm.invalid">Guardar</button>
<span class="separator"></span> <span class="separator"></span>
<button mat-raised-button color="warn" *ngIf="showDataAdd" <button mat-raised-button color="warn" *ngIf="showDataAdd"
(click)="cancelarF()">Cancelar</button> (click)="cancelarF()">Cancelar</button>
......
...@@ -116,29 +116,7 @@ export class AddHitosComponent implements OnInit { ...@@ -116,29 +116,7 @@ export class AddHitosComponent implements OnInit {
} }
} }
enviarInfo(){
if (this.myForm.valid) {
const id_recuperado = this.myForm.get('hitos').value;
try {
const fechaIni = moment(this.myForm.get('fechaIniHitos').value).utc().toDate();
const fechaHoraIni = new Date(fechaIni);
fechaHoraIni.setUTCHours(fechaHoraIni.getUTCHours() - 5);
this.hitoM.uzytavseguim_fecha_logro = fechaHoraIni
this.hitoM.uzytavproyec_id = this.idProyecto;
this.hitoM.uzytavobjetivo_programa_id = id_recuperado;
this.hitoM.uzytavseguim_descrip = this.myForm.get('descrip').value;
this.hitoM.uzytavseguim_logro = this.myForm.get('resultados').value;
this.hitoS.guardarParametros(this.hitoM).subscribe(response => {
});
} catch (error) {
console.error('Error al enviar los datos:', error);
}
}
}
......
...@@ -428,7 +428,7 @@ ...@@ -428,7 +428,7 @@
<td> <td>
<button> <button>
<mat-icon color="warn" <mat-icon color="warn"
(click)="eliminarActividad(item.uzytavobjetivo_programa_id)">delete</mat-icon> (click)="eliminarActividad(acti.uzytavobjetivo_programa_id)">delete</mat-icon>
</button> </button>
</td> </td>
</ng-container> </ng-container>
......
...@@ -363,20 +363,24 @@ export class AddMatrizLogicoComponent implements OnInit { ...@@ -363,20 +363,24 @@ export class AddMatrizLogicoComponent implements OnInit {
} }
eliminarActividad(id: number) { eliminarActividad(id: number) {
this.openModalDelete('¿Desea eliminar el registro?').subscribe(result =>{
if (result) {
this.objeProS.eliminarParametros(id).subscribe( this.openModalDelete('¿Desea eliminar el registro?').subscribe(result =>{
() => { if (result) {
console.log('El registro se ha eliminado'); this.objeProS.eliminarParametrosHijo(id).subscribe(
this.obtenerRegistros(); () => {
}, console.log('El registro se ha eliminado');
(error) => { this.obtenerRegistros();
// No mostrar el error en la consola },
console.log('Error durante el tratamiento al registro'); (error) => {
} // No mostrar el error en la consola
); console.log('Error durante el tratamiento al registro');
} }
}); );
}
});
} }
......
...@@ -92,7 +92,7 @@ export class EditViabilidadComponent implements OnInit { ...@@ -92,7 +92,7 @@ export class EditViabilidadComponent implements OnInit {
this.proyectos.uzytavproyec_resultados = this.myForm.get('resultadoO').value; this.proyectos.uzytavproyec_resultados = this.myForm.get('resultadoO').value;
this.proyectosService.modificarParametros(this.idRecuperado, this.proyectos).subscribe(response => { this.proyectosService.modificarParametros(this.idRecuperado, this.proyectos).subscribe(response => {
this.cambio = false; this.cambio = false;
this.openModal(); this.openModal('Se ha enviado la Viabilidad y Plan de Sostenibilidad');
}); });
} catch (error) { } catch (error) {
console.error('Error al enviar los datos:', error); console.error('Error al enviar los datos:', error);
...@@ -100,9 +100,10 @@ export class EditViabilidadComponent implements OnInit { ...@@ -100,9 +100,10 @@ export class EditViabilidadComponent implements OnInit {
} }
} }
openModal() { openModal(mensaje: string) {
const dialogRef = this.dialog.open(EnvioFormularioComponent, { const dialogRef = this.dialog.open(EnvioFormularioComponent, {
disableClose: true disableClose: true,
data: {mensaje: mensaje}
}); });
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe(result => {
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
<ng-container matColumnDef="Director" class="Column"> <ng-container matColumnDef="Director" class="Column">
<th class="Column" mat-header-cell *matHeaderCellDef mat-sort-header>Diretor</th> <th class="Column" mat-header-cell *matHeaderCellDef mat-sort-header>Campus</th>
<td class="Column" mat-cell *matCellDef="let dato"> <td class="Column" mat-cell *matCellDef="let dato">
{{dato.nombres$ | async }} </td> {{dato.nombres$ | async }} </td>
</ng-container> </ng-container>
......
...@@ -24,7 +24,9 @@ export class ListaProyectosComponent implements OnInit { ...@@ -24,7 +24,9 @@ export class ListaProyectosComponent implements OnInit {
idpara: number; idpara: number;
usuario!: Usuario[]; usuario!: Usuario[];
proyecto: Proyectos; proyecto: Proyectos;
proyec: Proyectos; usuarioUnico: Usuario;
idusuarioUnico: number;
proyectos!: Proyectos[]; proyectos!: Proyectos[];
enviarIdUsuario: Proyectos; enviarIdUsuario: Proyectos;
director: string; director: string;
...@@ -51,28 +53,34 @@ export class ListaProyectosComponent implements OnInit { ...@@ -51,28 +53,34 @@ export class ListaProyectosComponent implements OnInit {
private datosUsuarioService: UsuariosService, private datosUsuarioService: UsuariosService,
private mostrarOcultarService: MostrarOcultarService, private mostrarOcultarService: MostrarOcultarService,
private compartirID: Compartir_idService, private compartirID: Compartir_idService,
private datosEspeService: DatosEspeService private datosEspeService: DatosEspeService,
private compartiId: Compartir_idService,
) { ) {
this.proyecto = new Proyectos(); this.proyecto = new Proyectos();
this.usuarioUnico = new Usuario();
this.dataSource = new MatTableDataSource<Proyectos>([]); this.dataSource = new MatTableDataSource<Proyectos>([]);
this.enviarIdUsuario = new Proyectos() this.enviarIdUsuario = new Proyectos()
} }
ngOnInit(): void { ngOnInit(): void {
this.obtenerRegistros(); this.obtenerDatosUsuarioUnico().then(() => {
this.dataSource.paginator = this.paginator; this.dataSource.paginator = this.paginator;
this.dataSource.sort = this.sort; this.dataSource.sort = this.sort;
this.obtenerRegistros();
});
} }
ngAfterViewInit() { ngAfterViewInit() {
this.dataSource.paginator = this.paginator; this.dataSource.paginator = this.paginator;
this.dataSource.sort = this.sort; this.dataSource.sort = this.sort;
} }
obtenerRegistros() { obtenerRegistros() {
this.proyectosService.obtenerParametros().subscribe(data => { console.log("usuariounico",this.usuarioUnico)
this.proyectosService.obtenerParametrosPorRol(this.usuarioUnico.uzytusuario_id).subscribe(data => {
this.proyectos = data.map(proyecto => { this.proyectos = data.map(proyecto => {
return { return {
...proyecto, ...proyecto,
...@@ -85,6 +93,21 @@ export class ListaProyectosComponent implements OnInit { ...@@ -85,6 +93,21 @@ export class ListaProyectosComponent implements OnInit {
this.dataSource.data = this.proyectos; this.dataSource.data = this.proyectos;
}); });
} }
obtenerDatosUsuarioUnico(): Promise<void> {
return new Promise<void>((resolve, reject) => {
this.datosUsuarioService.obtenerDatosUsuario()
.subscribe(data => {
this.usuarioUnico = data;
this.idusuarioUnico = this.usuarioUnico.uzytusuario_id;
this.compartiId.setIdUsuario(this.idusuarioUnico);
resolve(); // Resuelve la Promesa cuando se haya completado la operación
},
error => {
console.log('Error al obtener los parámetros:', error);
reject(error); // Rechaza la Promesa si ocurre un error
});
});
}
obtenerDatosCampus(codigo: string): Observable<string> { obtenerDatosCampus(codigo: string): Observable<string> {
...@@ -136,7 +159,6 @@ export class ListaProyectosComponent implements OnInit { ...@@ -136,7 +159,6 @@ export class ListaProyectosComponent implements OnInit {
agregarP() { agregarP() {
this.router.navigate(['main/Proyecto-Inicial']); this.router.navigate(['main/Proyecto-Inicial']);
} }
editar(id: number) { editar(id: number) {
const registroSeleccionado = this.proyectos.find( const registroSeleccionado = this.proyectos.find(
proyectoFind => proyectoFind.uzytavproyec_id === id proyectoFind => proyectoFind.uzytavproyec_id === id
......
...@@ -105,7 +105,7 @@ export class ConvocatoriasAgregarComponent implements OnInit { ...@@ -105,7 +105,7 @@ export class ConvocatoriasAgregarComponent implements OnInit {
filename: response.fileName filename: response.fileName
}; };
} catch (error) { } catch (error) {
this.openModalError('¡Ya existe un Documento con ese Nombre! \n Ingrese Datos Nuevamente'); this.openModalError('Ya existe un Documento con ese Nombre \n Ingrese Datos Nuevamente');
return { return {
idPDF: null, idPDF: null,
filename: '' filename: ''
......
...@@ -32,6 +32,10 @@ export class Objetivo_programaService { ...@@ -32,6 +32,10 @@ export class Objetivo_programaService {
return this.httpClient.delete(`${this.URL}/eliminar/${id}`, { responseType: 'text' }); return this.httpClient.delete(`${this.URL}/eliminar/${id}`, { responseType: 'text' });
} }
eliminarParametrosHijo(id: number): Observable<any> {
return this.httpClient.delete(`${this.URL}/eliminarHijo/${id}`, { responseType: 'text' });
}
modificarParametros(id: number, parametros: objetivoprograma): Observable<any> { modificarParametros(id: number, parametros: objetivoprograma): Observable<any> {
return this.httpClient.put<any>(`${this.URL}/editar/${id}`, parametros); return this.httpClient.put<any>(`${this.URL}/editar/${id}`, parametros);
} }
......
...@@ -20,6 +20,9 @@ export class ProyectosService { ...@@ -20,6 +20,9 @@ export class ProyectosService {
obtenerParametros(): Observable<Proyectos[]> { obtenerParametros(): Observable<Proyectos[]> {
return this.httpClient.get<Proyectos[]>(`${this.URL}/getAll`); return this.httpClient.get<Proyectos[]>(`${this.URL}/getAll`);
} }
obtenerParametrosPorRol(id: number): Observable<Proyectos[]> {
return this.httpClient.get<Proyectos[]>(`${this.URL}/findAllByUserIdAndRole/${id}`);
}
obtenerParametrosId(id: number): Observable<Proyectos> { obtenerParametrosId(id: number): Observable<Proyectos> {
return this.httpClient.get<Proyectos>(`${this.URL_ID}/${id}`); return this.httpClient.get<Proyectos>(`${this.URL_ID}/${id}`);
...@@ -52,4 +55,5 @@ export class ProyectosService { ...@@ -52,4 +55,5 @@ export class ProyectosService {
return this.idGuardado; return this.idGuardado;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment