Merge branch 'desarrollo' into 'master'

controles en proyecto

See merge request !11
parents f62691bf 3ca5b574
...@@ -82,7 +82,7 @@ export class ActaCompromisoCarrerasComponent implements OnInit { ...@@ -82,7 +82,7 @@ export class ActaCompromisoCarrerasComponent implements OnInit {
return fileName.toLocaleLowerCase().endsWith('.pdf'); return fileName.toLocaleLowerCase().endsWith('.pdf');
} }
openModal() { openModal(mensaje: string) {
const dialogRef = this.dialog.open(EnvioFormularioComponent, { const dialogRef = this.dialog.open(EnvioFormularioComponent, {
width: '400px', width: '400px',
disableClose: true disableClose: true
...@@ -107,7 +107,7 @@ export class ActaCompromisoCarrerasComponent implements OnInit { ...@@ -107,7 +107,7 @@ export class ActaCompromisoCarrerasComponent implements OnInit {
this.proyecto.uzytavproyec_com_part2_nom = pdfData.filename; this.proyecto.uzytavproyec_com_part2_nom = pdfData.filename;
this.proyectosService.modificarParametros(this.proyecto.uzytavproyec_id, this.proyecto).subscribe( this.proyectosService.modificarParametros(this.proyecto.uzytavproyec_id, this.proyecto).subscribe(
response => { response => {
this.openModal(); this.openModal('El PDF ha sido Enviado');
console.log('Datos Actualizados', this.proyecto); console.log('Datos Actualizados', this.proyecto);
this.myForm.disable(); this.myForm.disable();
this.cambio = false; this.cambio = false;
......
...@@ -94,7 +94,7 @@ export class ListarAnexosImagenesComponent implements OnInit { ...@@ -94,7 +94,7 @@ export class ListarAnexosImagenesComponent implements OnInit {
eliminarParametro(id: number) { eliminarParametro(id: number) {
this.openModalDelete('¿Desea eliminar la Entidad?').subscribe(result => { this.openModalDelete('¿Desea eliminar el Anexo?').subscribe(result => {
if (result) { if (result) {
this.anexosImagenesService.eliminarParametros(id).subscribe( this.anexosImagenesService.eliminarParametros(id).subscribe(
() => { () => {
...@@ -110,6 +110,8 @@ export class ListarAnexosImagenesComponent implements OnInit { ...@@ -110,6 +110,8 @@ export class ListarAnexosImagenesComponent implements OnInit {
}); });
} }
formatFecha(fecha: Date): string { formatFecha(fecha: Date): string {
const dateObj = new Date(fecha); const dateObj = new Date(fecha);
return format(dateObj, 'dd-MM-yyyy'); return format(dateObj, 'dd-MM-yyyy');
......
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
<ng-container matColumnDef="resultado"> <ng-container matColumnDef="resultado">
<th mat-header-cell *matHeaderCellDef> Resultado </th> <th mat-header-cell *matHeaderCellDef> Resultado </th>
<td mat-cell *matCellDef="let actividad"> <td mat-cell *matCellDef="let actividad">
<input matInput type="number" [formControlName]="'resultado' + actividad.uzytavobjetivo_programa_id" <input matInput [formControlName]="'resultado' + actividad.uzytavobjetivo_programa_id"
placeholder="Resultado"> placeholder="Resultado">
</td> </td>
</ng-container> </ng-container>
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
<ng-container matColumnDef="observacion"> <ng-container matColumnDef="observacion">
<th mat-header-cell *matHeaderCellDef> Observación </th> <th mat-header-cell *matHeaderCellDef> Observación </th>
<td mat-cell *matCellDef="let actividad"> <td mat-cell *matCellDef="let actividad">
<input matInput type="number" [formControlName]="'observacion' + actividad.uzytavobjetivo_programa_id" <input matInput [formControlName]="'observacion' + actividad.uzytavobjetivo_programa_id"
placeholder="Observación"> placeholder="Observación">
</td> </td>
</ng-container> </ng-container>
......
...@@ -173,7 +173,7 @@ export class AddInformeComponent implements OnInit { ...@@ -173,7 +173,7 @@ export class AddInformeComponent implements OnInit {
this.guardarBody(this.informeS.obtenerIdCabe()); this.guardarBody(this.informeS.obtenerIdCabe());
this.cancelarF(); this.cancelarF();
this.datosCompartidos.actualizarDatos(this.cabeM); this.datosCompartidos.actualizarDatos(this.cabeM);
this.openModal(); this.openModal('Los datos han sido Enviados');
}); });
} }
} }
...@@ -222,7 +222,7 @@ export class AddInformeComponent implements OnInit { ...@@ -222,7 +222,7 @@ export class AddInformeComponent implements OnInit {
} }
openModal() { openModal(mensaje: string) {
const dialogRef = this.dialog.open(EnvioFormularioComponent, { const dialogRef = this.dialog.open(EnvioFormularioComponent, {
disableClose: true disableClose: true
}); });
......
...@@ -38,10 +38,10 @@ ...@@ -38,10 +38,10 @@
<mat-icon color="warn" <mat-icon color="warn"
(click)="eliminarHeader(item.uzytavactproy_id)">delete</mat-icon> (click)="eliminarHeader(item.uzytavactproy_id)">delete</mat-icon>
</button> </button>
<button> <!-- <button>
<mat-icon color="azul" <mat-icon color="azul"
(click)="editarCabecera(item.uzytavactproy_id)">edit</mat-icon> (click)="editarCabecera(item.uzytavactproy_id)">edit</mat-icon>
</button> </button>-->
</td> </td>
</tr> </tr>
......
import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';
import { format } from 'date-fns'; import { format } from 'date-fns';
import { Observable } from 'rxjs';
import { actproy } from 'src/app/modules/main/Models/actproy'; import { actproy } from 'src/app/modules/main/Models/actproy';
import { detactproy } from 'src/app/modules/main/Models/detactproy'; import { detactproy } from 'src/app/modules/main/Models/detactproy';
import { objetivoprograma } from 'src/app/modules/main/Models/objetivoPrograma'; import { objetivoprograma } from 'src/app/modules/main/Models/objetivoPrograma';
...@@ -8,6 +9,8 @@ import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/ ...@@ -8,6 +9,8 @@ import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/
import { Informes_avanceService } from 'src/app/modules/main/services/informes_avance/informes_avance.service'; import { Informes_avanceService } from 'src/app/modules/main/services/informes_avance/informes_avance.service';
import { MostrarOcultarService } from 'src/app/modules/main/services/mostrar-ocultar.service'; import { MostrarOcultarService } from 'src/app/modules/main/services/mostrar-ocultar.service';
import { Objetivo_programaService } from 'src/app/modules/main/services/objetivo_programa/objetivo_programa.service'; import { Objetivo_programaService } from 'src/app/modules/main/services/objetivo_programa/objetivo_programa.service';
import { ConfirmacionEliminacionComponent } from '../../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component';
import { MatDialog } from '@angular/material/dialog';
@Component({ @Component({
selector: 'vex-list-informe', selector: 'vex-list-informe',
...@@ -35,7 +38,8 @@ export class ListInformeComponent implements OnInit { ...@@ -35,7 +38,8 @@ export class ListInformeComponent implements OnInit {
private bodyM: detactproy, private bodyM: detactproy,
private compartirDatos: Actualiza_datosService, private compartirDatos: Actualiza_datosService,
private mostrarOcultarService: MostrarOcultarService, private mostrarOcultarService: MostrarOcultarService,
public idCompartido: Compartir_idService public idCompartido: Compartir_idService,
private dialog: MatDialog
) { } ) { }
ngOnInit(): void { ngOnInit(): void {
...@@ -113,23 +117,34 @@ export class ListInformeComponent implements OnInit { ...@@ -113,23 +117,34 @@ export class ListInformeComponent implements OnInit {
} }
eliminarHeader(id: number){ eliminarHeader(id: number){
const confirmacion = confirm('¿Desea eliminar el registro?'); this.openModalDelete('¿Desea Eliminar el Registro?').subscribe(result => {
if (confirmacion) { if (result) {
this.informeS.eliminarParametrosCabecera(id).subscribe( this.informeS.eliminarParametrosCabecera(id).subscribe(
() => { () => {
console.log('El registro se ha eliminado'); console.log('El registro se ha eliminado');
this.obtenerRegistros(); this.obtenerRegistros();
}, },
(error) => { (error) => {
// No mostrar el error en la consola // No mostrar el error en la consola
console.log('Error durante el tratamiento al registro'); console.log('Error durante el tratamiento al registro');
} }
); );
} }
});
} }
formatFecha(fecha: Date): string { formatFecha(fecha: Date): string {
const dateObj = new Date(fecha); const dateObj = new Date(fecha);
return format(dateObj, 'dd-MM-yyyy'); return format(dateObj, 'dd-MM-yyyy');
} }
formularioEnviado:boolean;
openModalDelete(mensaje: string): Observable<string>{
const dialogRef = this.dialog.open(ConfirmacionEliminacionComponent, {
disableClose: true,
data: { mensaje: mensaje }
});
return dialogRef.afterClosed();
}
} }
...@@ -12,6 +12,10 @@ import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/ ...@@ -12,6 +12,10 @@ import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/
import { Objetivo_programaService } from 'src/app/modules/main/services/objetivo_programa/objetivo_programa.service'; import { Objetivo_programaService } from 'src/app/modules/main/services/objetivo_programa/objetivo_programa.service';
import { DatePipe } from "@angular/common"; import { DatePipe } from "@angular/common";
import { Observable } from 'rxjs';
import { ConfirmacionEliminacionComponent } from '../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component';
import { MatDialog } from '@angular/material/dialog';
import { EnvioFormularioComponent } from '../../../programa/opciones/envio-formulario/envio-formulario.component';
@Component({ @Component({
selector: 'vex-add-cronograma-acti', selector: 'vex-add-cronograma-acti',
...@@ -44,7 +48,8 @@ export class AddCronogramaActiComponent implements OnInit { ...@@ -44,7 +48,8 @@ export class AddCronogramaActiComponent implements OnInit {
private objPS: Objetivo_programaService, private objPS: Objetivo_programaService,
private idCompartido: Compartir_idService, private idCompartido: Compartir_idService,
private datosCompartidos: Actualiza_datosService, private datosCompartidos: Actualiza_datosService,
private objM: objetivoprograma private objM: objetivoprograma,
private dialog: MatDialog
) { ) {
this.myForm = this.formBuilder.group({ this.myForm = this.formBuilder.group({
Actividades: ['', Validators.required], Actividades: ['', Validators.required],
...@@ -94,6 +99,7 @@ export class AddCronogramaActiComponent implements OnInit { ...@@ -94,6 +99,7 @@ export class AddCronogramaActiComponent implements OnInit {
console.log('yo digo', this.objM.uzytavobjetivo_programafec_fin) console.log('yo digo', this.objM.uzytavobjetivo_programafec_fin)
this.objPS.modificarParametros(id_recuperado, this.objM).subscribe(response => { this.objPS.modificarParametros(id_recuperado, this.objM).subscribe(response => {
this.showDataAdd = false; this.showDataAdd = false;
this.openModal('Los Datos han sido agregados');
this.ocultar = true; this.ocultar = true;
this.myForm.reset(); this.myForm.reset();
this.datosCompartidos.actualizarDatos(this.objM); this.datosCompartidos.actualizarDatos(this.objM);
...@@ -153,18 +159,42 @@ export class AddCronogramaActiComponent implements OnInit { ...@@ -153,18 +159,42 @@ export class AddCronogramaActiComponent implements OnInit {
} }
eliminarFechas(id: number) { eliminarFechas(id: number) {
const confirmacion = confirm('¿Desea eliminar el registro?'); this.openModalDelete('¿Desea eliminar el registro?').subscribe(result=>{
if (confirmacion) { if (result) {
this.objPS.modificarFechas(id).subscribe( this.objPS.modificarFechas(id).subscribe(
() => { () => {
console.log('El registro se ha eliminado'); console.log('El registro se ha eliminado');
this.obtenerRegistros(); this.obtenerRegistros();
}, },
(error) => { (error) => {
console.log('Error durante el tratamiento al registro'); console.log('Error durante el tratamiento al registro');
} }
); );
} }
});
}
openModal(mensaje: string) {
const dialogRef = this.dialog.open(EnvioFormularioComponent, {
width: '400px',
disableClose: true,
data: { mensaje: mensaje }
});
dialogRef.afterClosed().subscribe(result => {
this.formularioEnviado = true;
});
}
formularioEnviado:boolean;
openModalDelete(mensaje: string): Observable<string>{
const dialogRef = this.dialog.open(ConfirmacionEliminacionComponent, {
disableClose: true,
data: { mensaje: mensaje }
});
return dialogRef.afterClosed();
} }
} }
...@@ -3,12 +3,16 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms'; ...@@ -3,12 +3,16 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { CalendarOptions, EventApi, EventClickArg, EventInput } from '@fullcalendar/core'; import { CalendarOptions, EventApi, EventClickArg, EventInput } from '@fullcalendar/core';
import dayGridPlugin from '@fullcalendar/daygrid'; import dayGridPlugin from '@fullcalendar/daygrid';
import moment from 'moment'; import moment from 'moment';
import { Observable } from 'rxjs';
import { seguim } from 'src/app/modules/main/Models/hito'; import { seguim } from 'src/app/modules/main/Models/hito';
import { objetivoprograma } from 'src/app/modules/main/Models/objetivoPrograma'; import { objetivoprograma } from 'src/app/modules/main/Models/objetivoPrograma';
import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'; import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service';
import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service'; import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service';
import { HitosService } from 'src/app/modules/main/services/hitos/hitos.service'; import { HitosService } from 'src/app/modules/main/services/hitos/hitos.service';
import { Objetivo_programaService } from 'src/app/modules/main/services/objetivo_programa/objetivo_programa.service'; import { Objetivo_programaService } from 'src/app/modules/main/services/objetivo_programa/objetivo_programa.service';
import { ConfirmacionEliminacionComponent } from '../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component';
import { MatDialog } from '@angular/material/dialog';
import { EnvioFormularioComponent } from '../../../programa/opciones/envio-formulario/envio-formulario.component';
@Component({ @Component({
selector: 'vex-add-hitos', selector: 'vex-add-hitos',
templateUrl: './add-hitos.component.html', templateUrl: './add-hitos.component.html',
...@@ -38,7 +42,8 @@ export class AddHitosComponent implements OnInit { ...@@ -38,7 +42,8 @@ export class AddHitosComponent implements OnInit {
private objM: objetivoprograma, private objM: objetivoprograma,
private objPS: Objetivo_programaService, private objPS: Objetivo_programaService,
private hitoS: HitosService, private hitoS: HitosService,
private hitoM: seguim private hitoM: seguim,
private dialog: MatDialog
) { ) {
this.myForm = this.formBuilder.group({ this.myForm = this.formBuilder.group({
hitos: ['', Validators.required], hitos: ['', Validators.required],
...@@ -105,6 +110,7 @@ export class AddHitosComponent implements OnInit { ...@@ -105,6 +110,7 @@ export class AddHitosComponent implements OnInit {
this.objM.uzytavobjetivo_programafec_fin = fechaHoraSecond; this.objM.uzytavobjetivo_programafec_fin = fechaHoraSecond;
this.objPS.modificarParametros(id_recuperado, this.objM).subscribe(response => { this.objPS.modificarParametros(id_recuperado, this.objM).subscribe(response => {
this.showDataAdd = false; this.showDataAdd = false;
this.openModal('Los Datos han sido agregados');
this.ocultar = true; this.ocultar = true;
this.myForm.reset(); this.myForm.reset();
this.datosCompartidos.actualizarDatos(this.objM); this.datosCompartidos.actualizarDatos(this.objM);
...@@ -141,19 +147,43 @@ export class AddHitosComponent implements OnInit { ...@@ -141,19 +147,43 @@ export class AddHitosComponent implements OnInit {
return color; return color;
} }
openModal(mensaje: string) {
const dialogRef = this.dialog.open(EnvioFormularioComponent, {
width: '400px',
disableClose: true,
data: { mensaje: mensaje }
});
dialogRef.afterClosed().subscribe(result => {
this.formularioEnviado = true;
});
}
eliminarFechas(id: number) { eliminarFechas(id: number) {
const confirmacion = confirm('¿Desea eliminar el registro?'); this.openModalDelete('¿Desea eliminar el registro?').subscribe(result => {
if (confirmacion) { if (result) {
this.objPS.modificarFechas(id).subscribe( this.objPS.modificarFechas(id).subscribe(
() => { () => {
console.log('El registro se ha eliminado'); console.log('El registro se ha eliminado');
this.obtenerRegistros(); this.obtenerRegistros();
}, },
(error) => { (error) => {
// No mostrar el error en la consola // No mostrar el error en la consola
console.log('Error durante el tratamiento al registro'); console.log('Error durante el tratamiento al registro');
} }
); );
} }
});
}
formularioEnviado:boolean;
openModalDelete(mensaje: string): Observable<string>{
const dialogRef = this.dialog.open(ConfirmacionEliminacionComponent, {
disableClose: true,
data: { mensaje: mensaje }
});
return dialogRef.afterClosed();
} }
} }
/* Estilos para el formulario */ /* Estilos para el formulario */
.formulario {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
max-width: 96%;
margin: 0 auto;
background-color: white;
border-radius: 10px;
}
.botones{
width: 100px;
height: 40px;
text-align: center;
padding: 0;
}
/* Estilos para la columna única */
.columna-unico {
width: 100%;
box-sizing: border-box;
padding-right: 0;
padding-left: 0;
}
/* Estilos para los labels */
label {
display: block;
margin-bottom: 8px;
font-weight: bold;
}
/* Estilos para los inputs y selects */
input[type="text"],
select {
width: 100%;
padding: 10px;
border: none;
border-bottom: 1px solid #ccc;
background-color: transparent;
font-size: 16px;
margin-bottom: 16px;
transition: border-color 0.3s ease;
}
input[type="text"]:focus,
select:focus {
outline: none;
border-color: #4caf50;
}
/* Estilos para los mensajes de error */
.error-message {
color: red;
font-size: 14px;
margin-top: 4px;
}
/* Estilos para el botón */
button {
display: block;
margin: 20px auto;
padding: 10px 20px;
background-color: rgb(71, 127, 75);
color: #fff;
border: none;
border-radius: 5px;
font-size: 16px;
cursor: pointer;
transition: background-color 0.3s ease;
}
button:hover {
background-color: rgb(90, 159, 95);
}
/* Estilos para el contenedor principal */
.contenedor {
width: 96%;
margin-left: 2%;
margin-right: 2%;
margin-top: 10%;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
background-color: #ffffff;
position: relative;
z-index: 1;
}
/* Estilos para el contenedor del formulario */
.contenedor-dos {
padding: 0.9375rem 20px;
position: relative;
}
/* Estilos para el título sobremontado */
.sobremontado {
position: relative;
width: 96%;
top: -20px;
left: 2%;
background-color: #477f4b;
color: #fff;
text-align: center;
padding: 10px;
box-sizing: border-box;
margin-bottom: -50px;
z-index: 2;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
}
/* Estilos para el icono de instituciones */
.icono-instituciones {
display: flex;
align-items: center;
justify-content: center;
margin-right: 5px;
font-size: 20px;
}
.volver{
position: absolute;
top: 25%;
right: 10px;
transform: translateY(-50%);
border-radius: 50%;
background-color: white;
display: flex;
color: rgb(71, 127, 75);
align-items: center;
justify-content: center;
padding: 0;
width: 32px;
height: 32px;
border: none;
outline: none;
cursor: pointer;
}
.save-button {
display: flex;
justify-content: flex-end;
margin-bottom: 16px;
}
.input-container {
width: 100%;
display: flex;
flex-direction: column;
}
/* Estilos para el formulario */
.formulario { .formulario {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
...@@ -295,7 +142,7 @@ button:hover { ...@@ -295,7 +142,7 @@ button:hover {
.save-button { .save-button {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
margin-bottom: 5px; margin-bottom: 16px;
} }
...@@ -303,5 +150,158 @@ button:hover { ...@@ -303,5 +150,158 @@ button:hover {
width: 100%; width: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin-bottom: 5px; }
/* Estilos para el formulario */
.formulario {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
max-width: 96%;
margin: 0 auto;
background-color: white;
border-radius: 10px;
}
.botones{
width: 100px;
height: 40px;
text-align: center;
padding: 0;
}
/* Estilos para la columna única */
.columna-unico {
width: 100%;
box-sizing: border-box;
padding-right: 0;
padding-left: 0;
}
/* Estilos para los labels */
label {
display: block;
margin-bottom: 8px;
font-weight: bold;
}
/* Estilos para los inputs y selects */
input[type="text"],
select {
width: 100%;
padding: 10px;
border: none;
border-bottom: 1px solid #ccc;
background-color: transparent;
font-size: 16px;
margin-bottom: 16px;
transition: border-color 0.3s ease;
}
input[type="text"]:focus,
select:focus {
outline: none;
border-color: #4caf50;
}
/* Estilos para los mensajes de error */
.error-message {
color: red;
font-size: 14px;
margin-top: 4px;
}
/* Estilos para el botón */
button {
display: block;
margin: 20px auto;
padding: 10px 20px;
background-color: rgb(71, 127, 75);
color: #fff;
border: none;
border-radius: 5px;
font-size: 16px;
cursor: pointer;
transition: background-color 0.3s ease;
}
button:hover {
background-color: rgb(90, 159, 95);
}
/* Estilos para el contenedor principal */
.contenedor {
width: 96%;
margin-left: 2%;
margin-right: 2%;
margin-top: 10%;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
background-color: #ffffff;
position: relative;
z-index: 1;
}
/* Estilos para el contenedor del formulario */
.contenedor-dos {
padding: 0.9375rem 20px;
position: relative;
}
/* Estilos para el título sobremontado */
.sobremontado {
position: relative;
width: 96%;
top: -20px;
left: 2%;
background-color: #477f4b;
color: #fff;
text-align: center;
padding: 10px;
box-sizing: border-box;
margin-bottom: -50px;
z-index: 2;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
}
/* Estilos para el icono de instituciones */
.icono-instituciones {
display: flex;
align-items: center;
justify-content: center;
margin-right: 5px;
font-size: 20px;
}
.volver{
position: absolute;
top: 25%;
right: 10px;
transform: translateY(-50%);
border-radius: 50%;
background-color: white;
display: flex;
color: rgb(71, 127, 75);
align-items: center;
justify-content: center;
padding: 0;
width: 32px;
height: 32px;
border: none;
outline: none;
cursor: pointer;
}
.save-button {
display: flex;
justify-content: flex-end;
margin-bottom: 5px;
}
.input-container {
width: 100%;
display: flex;
flex-direction: column;
margin-bottom: 5px;
} }
<div class="contenedor-dos"> <div class="contenedor-dos">
<form class="formulario" [formGroup]="myForm" (ngSubmit)="onSubmit()"> <form class="formulario" [formGroup]="myForm" (ngSubmit)="onSubmit()">
<!-- Información de la institución -->
<div class="columna-unico"> <div class="columna-unico">
<!-- Control de fechas inicio -->
<div class="save-button"> <div class="save-button">
<button mat-raised-button class="botones" color="primary" *ngIf="!cambio" (click)="cambiar()">Agregar</button> <button mat-raised-button class="botones" color="primary" *ngIf="!cambio" (click)="cambiar()">Agregar</button>
<button mat-raised-button class="botones" color="primary" *ngIf="cambio" <button mat-raised-button class="botones" color="primary" *ngIf="cambio"
[disabled]="myForm.invalid">Guardar</button> [disabled]="myForm.invalid">Guardar</button>
<span class="separator"></span> <span class="separator"></span>
<button mat-raised-button class="botones" color="warn" *ngIf="cambio" (click)="cancelado()">Cancelar</button> <button mat-raised-button class="botones" color="warn" *ngIf="cambio"
(click)="cancelado()">Cancelar</button>
</div> </div>
<div class="input-container"> <div class="input-container">
<mat-form-field class="contenedor-dos"> <mat-form-field class="contenedor-dos">
<mat-label>Nombres</mat-label> <mat-label>Nombres</mat-label>
<input matInput [formControl]="myControl" formControlName="nombres" <input matInput #searchInput id="#searchInput"
placeholder="Realizar búsqueda" /> (input)="resetAutocompleteVisibility();realizarBusqueda(searchInput.value)"
[value]="selectedUsuario ? selectedUsuario.uzytusuario_nombres + ' ' + selectedUsuario.uzytusuario_apellidos : ''"
placeholder="Realizar búsqueda" [disabled]="!cambio" />
</mat-form-field> </mat-form-field>
<mat-autocomplete *ngIf="usuarios" autoActiveFirstOption > <mat-autocomplete *ngIf="usuarios && autocompleteVisible" [displayWith]="displayFn">
<mat-option *ngFor="let usuario of filteredOptions | async" [value]="usuario" <mat-option *ngFor="let usuario of usuarios" [value]="usuario" (click)="onUsuarioSelected(usuario)">
(click)="onUsuarioSelected(usuario)">
{{ usuario.uzytusuario_nombres }} {{ usuario.uzytusuario_apellidos }} {{ usuario.uzytusuario_nombres }} {{ usuario.uzytusuario_apellidos }}
</mat-option> </mat-option>
</mat-autocomplete> </mat-autocomplete>
</div> </div>
<div class="input-container"> <div class="input-container">
<mat-form-field class="contenedor-dos"> <mat-form-field class="contenedor-dos">
<mat-label>Seleccionar Funcion</mat-label> <mat-label>Seleccionar Funcion</mat-label>
......
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';
import { FormBuilder, Validators, FormGroup, FormControl } from '@angular/forms'; import { FormBuilder, Validators, FormGroup, FormControl } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'; import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service';
...@@ -6,51 +6,40 @@ import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/ ...@@ -6,51 +6,40 @@ import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/
import { Programa } from 'src/app/modules/main/Models/programa-v'; import { Programa } from 'src/app/modules/main/Models/programa-v';
import { DocenteParticipante } from 'src/app/modules/main/Models/docente-participante'; import { DocenteParticipante } from 'src/app/modules/main/Models/docente-participante';
import { DocentesParticipantesService } from 'src/app/modules/main/services/docentes-participantes/docentes-participantes.service'; import { DocentesParticipantesService } from 'src/app/modules/main/services/docentes-participantes/docentes-participantes.service';
import { ProgramaService } from 'src/app/modules/main/services/programa/programa.service';
import { DatosEspeService } from 'src/app/modules/main/services/APIs Externas/Datos espe/datos-espe.service'; import { DatosEspeService } from 'src/app/modules/main/services/APIs Externas/Datos espe/datos-espe.service';
import { UsuariosService } from 'src/app/modules/main/services/usuarios/usuarios.service'; import { UsuariosService } from 'src/app/modules/main/services/usuarios/usuarios.service';
import { Usuario } from 'src/app/modules/main/Models/usuario'; import { Usuario } from 'src/app/modules/main/Models/usuario';
import { MatAutocomplete, MatAutocompleteTrigger } from '@angular/material/autocomplete';
import { TiPres } from 'src/app/modules/main/Models/tiv-pres'; import { TiPres } from 'src/app/modules/main/Models/tiv-pres';
import { TipresService } from 'src/app/modules/main/services/tipres/tipres.service';
import { ResponsableProg } from 'src/app/modules/main/Models/responsable-prog'; import { ResponsableProg } from 'src/app/modules/main/Models/responsable-prog';
import { Observable } from 'rxjs';
import { map, startWith } from 'rxjs/operators';
import { ResponsableProgService } from 'src/app/modules/main/services/responsable-prog/responsable-prog.service'; import { ResponsableProgService } from 'src/app/modules/main/services/responsable-prog/responsable-prog.service';
import { TipresService } from 'src/app/modules/main/services/tipres/tipres.service';
import { EnvioFormularioComponent } from '../../../../programa/opciones/envio-formulario/envio-formulario.component'; import { EnvioFormularioComponent } from '../../../../programa/opciones/envio-formulario/envio-formulario.component';
interface Funcion {
value: string;
viewValue: string;
}
@Component({ @Component({
selector: 'app-asignacion-docentes', selector: 'app-asignacion-docentes',
templateUrl: './asignacion-docentes.component.html', templateUrl: './asignacion-docentes.component.html',
styleUrls: ['./asignacion-docentes.component.css'] styleUrls: ['./asignacion-docentes.component.css']
}) })
export class AsignacionDocentesComponent implements OnInit { export class AsignacionDocentesComponent implements OnInit {
@ViewChild('searchInput', { static: false }) searchInput: ElementRef;
@ViewChild(MatAutocomplete) autocomplete: MatAutocomplete;
@ViewChild(MatAutocompleteTrigger) autocompleteTrigger: MatAutocompleteTrigger;
autocompleteVisible: boolean = true;
idRecuperado: number; idRecuperado: number;
myForm: FormGroup; myForm: FormGroup;
docenteParticipante: DocenteParticipante; docenteParticipante: DocenteParticipante;
responsableProg: ResponsableProg; responsableProg: ResponsableProg;
responsableProgAll!: ResponsableProg[]
selectedDepartamentoId: number; selectedDepartamentoId: number;
selectedCampusId: number; selectedCampusId: number;
searchTerm: string; searchTerm: string;
debounceTimeout: any; debounceTimeout: any;
tipres!: TiPres [] tipres!: TiPres[]
selectedUsuario: Usuario; selectedUsuario: Usuario;
idUsuario: number idUsuario: number
filteredOptions: Observable<Usuario[]>;
myControl = new FormControl('');
usuarios: Usuario[]; usuarios: Usuario[];
enviarSolicitud = false; enviarSolicitud = false;
...@@ -81,36 +70,26 @@ export class AsignacionDocentesComponent implements OnInit { ...@@ -81,36 +70,26 @@ export class AsignacionDocentesComponent implements OnInit {
ngOnInit(): void { ngOnInit(): void {
this.idRecuperado = parseInt(localStorage.getItem('proyectoId'),10); this.idRecuperado = parseInt(localStorage.getItem('proyectoId'), 10);
this.cambio = false; this.cambio = false; // Set initial value to false
this.obtenerCampus() this.obtenerCampus();
this.obtenerFuncion() this.obtenerFuncion();
this.obtenerUsuarios() this.obtenerDepartamento();
this.obtenerDepartamento() this.obtenerRegistros()
this.filteredOptions = this.myControl.valueChanges.pipe(
startWith(''),
map(value => this._filter(value || '')),
);
this.myForm = this.formBuilder.group({ this.myForm = this.formBuilder.group({
numero: [{ value: '', disabled: true }, Validators.required], numero: [{ value: '', disabled: true }, Validators.required],
funcion: [{ value: '', disabled: true }, Validators.required], funcion: [{ value: '', disabled: true }, Validators.required],
//nombres: [{ value: '', disabled: true }, Validators.required], nombre: [{ value: '', disabled: true }, Validators.required],
}); });
} }
private _filter(value: string): Usuario[] {
const filterValue = value.toLowerCase();
return this.usuarios.filter(option =>
(option.uzytusuario_nombres + ' ' + option.uzytusuario_apellidos).toLowerCase().includes(filterValue)
);
}
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 => {
...@@ -118,48 +97,52 @@ export class AsignacionDocentesComponent implements OnInit { ...@@ -118,48 +97,52 @@ export class AsignacionDocentesComponent implements OnInit {
}); });
} }
realizarBusqueda() {
clearTimeout(this.debounceTimeout);
realizarBusqueda(searchTerm: string) {
clearTimeout(this.debounceTimeout);
this.debounceTimeout = setTimeout(() => { this.debounceTimeout = setTimeout(() => {
this.usuariosService.obtenerParametros().subscribe(data => {
this.usuariosService.obtenerUsuarios(searchTerm).subscribe(data => {
this.usuarios = data; this.usuarios = data;
console.log(this.usuarios)
}); });
}, 300); }, 0);
} }
obtenerUsuarios() {
this.usuariosService.obtenerParametros().subscribe(
usuarios => {
this.usuarios = usuarios;
},
error => {
console.log('Error al obtener los usuarios:', error);
}
);
}
displayFn(usuario: Usuario): string { displayFn(usuario: Usuario): string {
return usuario ? usuario.uzytusuario_nombres + ' ' + usuario.uzytusuario_apellidos : ''; return usuario ? usuario.uzytusuario_nombres + ' ' + usuario.uzytusuario_apellidos : '';
} }
onUsuarioSelected(usuario: Usuario): void {
if (usuario) {
this.idUsuario = usuario.uzytusuario_id;
console.log("id idUsuario ",this.idUsuario)
this.selectedUsuario = usuario; resetAutocompleteVisibility() {
const nombreCompleto = usuario.uzytusuario_nombres + " " + usuario.uzytusuario_apellidos; this.autocompleteVisible = true;
this.myControl.setValue(nombreCompleto); // Asigna el nombre completo al FormControl }
async onUsuarioSelected(usuario: Usuario): Promise<void> {
await this.datosCompartidos.datos$.subscribe(() => {
this.obtenerRegistros();
});
// Cierra el componente de autocompletar manualmente usando el trigger console.log("this.responsableProgAll2", this.responsableProgAll)
if (this.autocompleteTrigger) { if (usuario) {
this.autocompleteTrigger.closePanel(); // Verificar si el idUsuario ya existe en los registros
const usuarioExistente = this.responsableProgAll.find(responsable => responsable.uzytusuario_id_docente === usuario.uzytusuario_id);
if (usuarioExistente) {
this.openModal("El usuario ya existe en los registros.");
// Puedes mostrar un mensaje en la interfaz aquí si lo deseas
} else {
this.idUsuario = usuario.uzytusuario_id;
console.log("idUsuario", this.idUsuario);
this.selectedUsuario = usuario;
this.myForm.get('nombre').patchValue(usuario.uzytusuario_nombres + ' ' + usuario.uzytusuario_apellidos);
this.autocompleteVisible = false;
} }
} else { } else {
console.log("no existe el usuario"); console.log("No existe el usuario.");
} }
} }
...@@ -167,30 +150,32 @@ export class AsignacionDocentesComponent implements OnInit { ...@@ -167,30 +150,32 @@ export class AsignacionDocentesComponent implements OnInit {
obtenerRegistros() {
if (this.idRecuperado !== undefined) {
this.responsableProgService.obtenerParametrosRelacionados(this.idRecuperado)
.subscribe(data => {
this.responsableProgAll = data;
});
}
}
onSubmit() { onSubmit() {
if (this.myForm.valid && this.myControl.valid) { if (this.myForm.valid) {
console.log("id idUsuario ",this.idUsuario) console.log("id idUsuario ", this.idUsuario)
this.responsableProg.uzytavproyec_id = this.idRecuperado; this.responsableProg.uzytavproyec_id = this.idRecuperado;
this.responsableProg.uzytusuario_id_docente = this.idUsuario; this.responsableProg.uzytusuario_id_docente = this.idUsuario;
this.responsableProg.uzytavtipres_id = this.myForm.value.funcion this.responsableProg.uzytavtipres_id = this.myForm.value.funcion
this.responsableProg.uzytavresponsable_prog_g_horas_planif = this.myForm.value.numero this.responsableProg.uzytavresponsable_prog_g_horas_planif = this.myForm.value.numero
/*/
this.docenteParticipante.uzytavcamp_code = this.selectedCampusId.toString();
this.docenteParticipante.uzytavsubj_code = this.selectedDepartamentoId.toString();
this.docenteParticipante.uzytavdocparti_numero = this.myForm.value.numero;
*/
this.responsableProgService.guardarParametros(this.responsableProg).subscribe( this.responsableProgService.guardarParametros(this.responsableProg).subscribe(
response => { response => {
console.log("Datos enviados ",this.responsableProg) console.log("Datos enviados ", this.responsableProg)
this.openModal(); this.openModal('El Docente ha sido Agregado');
this.guardar() this.guardar()
this.datosCompartidos.actualizarDatos(this.responsableProg); this.datosCompartidos.actualizarDatos(this.responsableProg);
}, },
error => { error => {
console.log(error) console.log(error)
//this.router.navigate(['main/Convocatorias']);
} }
); );
} }
...@@ -215,7 +200,7 @@ export class AsignacionDocentesComponent implements OnInit { ...@@ -215,7 +200,7 @@ export class AsignacionDocentesComponent implements OnInit {
this.tipresService.obtenerParametros().subscribe( this.tipresService.obtenerParametros().subscribe(
tipres => { tipres => {
this.tipres = tipres.filter(item => item.uzytavtipres_id === 1 || item.uzytavtipres_id === 2); this.tipres = tipres.filter(item => item.uzytavtipres_id === 1 || item.uzytavtipres_id === 2);
console.log("obtenido ",tipres) console.log("obtenido ", tipres)
}, },
error => { error => {
console.log('Error al obtener los tipresService:', error); console.log('Error al obtener los tipresService:', error);
...@@ -244,15 +229,19 @@ export class AsignacionDocentesComponent implements OnInit { ...@@ -244,15 +229,19 @@ export class AsignacionDocentesComponent implements OnInit {
this.cambio = false; this.cambio = false;
this.myForm.disable(); this.myForm.disable();
this.myForm.reset() this.myForm.reset()
this.myControl.reset() if (this.searchInput && this.searchInput.nativeElement) {
this.searchInput.nativeElement.value = ''; // Vacía el contenido del input
}
} }
guardar() { guardar() {
this.cambio = false; this.cambio = false;
this.myForm.disable(); this.myForm.disable();
this.myForm.reset() this.myForm.reset();
this.myControl.disable();
this.myControl.reset() if (this.searchInput && this.searchInput.nativeElement) {
this.searchInput.nativeElement.value = ''; // Vacía el contenido del input
}
} }
} }
...@@ -12,35 +12,43 @@ ...@@ -12,35 +12,43 @@
<!-- Dirección Column --> <!-- Dirección Column -->
<ng-container matColumnDef="Campus" class="Column"> <ng-container matColumnDef="Nombres" class="Column">
<th class="Column" mat-header-cell *matHeaderCellDef mat-sort-header>Campus</th> <th class="Column" mat-header-cell *matHeaderCellDef mat-sort-header>Nombre</th>
<td class="Column" mat-cell *matCellDef="let dato"> <td class="Column" mat-cell *matCellDef="let dato">
{{dato.campus$ | async }} </td> {{dato.usuario.uzytusuario_nombres }} </td>
</ng-container> </ng-container>
<ng-container matColumnDef="Departamento" class="Column"> <ng-container matColumnDef="Apellidos" class="Column">
<th class="Column" mat-header-cell *matHeaderCellDef mat-sort-header>Departamento</th> <th class="Column" mat-header-cell *matHeaderCellDef mat-sort-header>Apellido</th>
<td class="Column" mat-cell *matCellDef="let dato"> <td class="Column" mat-cell *matCellDef="let dato">
{{ dato.departamento$ | async }} {{ dato.usuario.uzytusuario_apellidos }}
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="Funcion" class="Column">
<ng-container matColumnDef="Docentes Participantes" class="Column"> <th class="Column" mat-header-cell *matHeaderCellDef mat-sort-header>Funcion</th>
<th class="Column" mat-header-cell *matHeaderCellDef mat-sort-header>Docentes Participantes</th> <td class="Column" mat-cell *matCellDef="let dato">
<td class="Column" mat-cell *matCellDef="let dato"> {{dato.uzytavdocparti_numero}} </td> {{ dato.tiPres.uzytavtipres_descrip }}
</td>
</ng-container> </ng-container>
<ng-container matColumnDef="HorasP" class="Column">
<th class="Column" mat-header-cell *matHeaderCellDef mat-sort-header>Horas Planificadas</th>
<td class="Column" mat-cell *matCellDef="let dato">
{{ dato.uzytavresponsable_prog_g_horas_planif }}
</td>
</ng-container>
<ng-container matColumnDef="Acciones" class="Column"> <ng-container matColumnDef="Acciones" class="Column">
<th class="Column" mat-header-cell *matHeaderCellDef mat-sort-header>Acciones</th> <th class="Column" mat-header-cell *matHeaderCellDef mat-sort-header>Acciones</th>
<td class="Column" mat-cell *matCellDef="let dato"> <td class="Column" mat-cell *matCellDef="let dato">
<!--eliminar--> <!--eliminar-->
<button> <button>
<mat-icon color="warn" (click)="eliminarParametro(dato.uzytavdocparti_id)">delete</mat-icon> <mat-icon color="warn" (click)="eliminarParametro(dato.uzytavresponsable_prog_id)">delete</mat-icon>
</button> </button>
</td> </td>
</ng-container> </ng-container>
...@@ -48,14 +56,5 @@ ...@@ -48,14 +56,5 @@
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table> </table>
<table> <!-- Nueva tabla para la fila de total -->
<tr>
<td class="Column1 negrita " colspan="1">Total</td>
<td class="Column ">{{ totalDocentesParticipantes }}</td>
<td class="Column "></td>
<td class="Column "></td>
</tr>
</table>
</div> </div>
</div> </div>
\ No newline at end of file
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { MatTableDataSource } from '@angular/material/table'; import { MatTableDataSource } from '@angular/material/table';
import { Observable, of } from 'rxjs'; import { Observable, forkJoin, of } from 'rxjs';
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
import { DocenteParticipante } from 'src/app/modules/main/Models/docente-participante'; import { DocenteParticipante } from 'src/app/modules/main/Models/docente-participante';
import { Programa } from 'src/app/modules/main/Models/programa-v'; import { Programa } from 'src/app/modules/main/Models/programa-v';
import { Proyectos } from 'src/app/modules/main/Models/proyectos';
import { ResponsableProg } from 'src/app/modules/main/Models/responsable-prog';
import { TiPres } from 'src/app/modules/main/Models/tiv-pres';
import { Usuario } from 'src/app/modules/main/Models/usuario';
import { DatosEspeService } from 'src/app/modules/main/services/APIs Externas/Datos espe/datos-espe.service'; import { DatosEspeService } from 'src/app/modules/main/services/APIs Externas/Datos espe/datos-espe.service';
import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'; import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service';
import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service'; import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service';
import { DocentesParticipantesService } from 'src/app/modules/main/services/docentes-participantes/docentes-participantes.service'; import { DocentesParticipantesService } from 'src/app/modules/main/services/docentes-participantes/docentes-participantes.service';
import { MostrarOcultarService } from 'src/app/modules/main/services/mostrar-ocultar.service';
import { ResponsableProgService } from 'src/app/modules/main/services/responsable-prog/responsable-prog.service';
import { TipresService } from 'src/app/modules/main/services/tipres/tipres.service';
import { UsuariosService } from 'src/app/modules/main/services/usuarios/usuarios.service';
import { ConfirmacionEliminacionComponent } from '../../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component';
import { MatDialog } from '@angular/material/dialog';
@Component({ @Component({
selector: 'app-listar-docentes-asignados', selector: 'app-listar-docentes-asignados',
...@@ -16,63 +26,96 @@ import { DocentesParticipantesService } from 'src/app/modules/main/services/doce ...@@ -16,63 +26,96 @@ import { DocentesParticipantesService } from 'src/app/modules/main/services/doce
}) })
export class ListarDocentesAsignadosComponent implements OnInit { export class ListarDocentesAsignadosComponent implements OnInit {
idRecuperado: number; idRecuperado: number;
dataSource: MatTableDataSource<DocenteParticipante>; dataSource: MatTableDataSource<ResponsableProg>;
docenteParticipante: DocenteParticipante[] = []; docenteParticipante: DocenteParticipante[] = [];
programas: Programa[]; // Arreglo de programas obtenidos del servicio programas: Programa[]; // Arreglo de programas obtenidos del servicio
selectedProgramaId: number; selectedProgramaId: number;
displayedColumns: string[] = ['Nro','Campus','Departamento','Docentes Participantes', 'Acciones']; displayedColumns: string[] = ['Nro',
'Nombres',
'Apellidos',
'Funcion',
'HorasP',
'Acciones'];
totalDocentesParticipantes: number = 0; //total de participantes totalDocentesParticipantes: number = 0; //total de participantes
usuario!: Usuario[];
tiPres!: TiPres[];
proyecto: Proyectos
responsableProg!: ResponsableProg[]
constructor( constructor(
private idCompartido: Compartir_idService, private idCompartido: Compartir_idService,
private datosCompar: Actualiza_datosService, private datosCompar: Actualiza_datosService,
private docentesParticipantesService: DocentesParticipantesService, private responsableProgService: ResponsableProgService,
private datosEspeService: DatosEspeService private datosEspeService: DatosEspeService,
private mostrarOcultarService: MostrarOcultarService,
private datosUsuarioService: UsuariosService,
private tipresService: TipresService,
private datosCompartidos: Actualiza_datosService,
private dialog: MatDialog
) { ) {
this.dataSource = new MatTableDataSource<DocenteParticipante>([]); this.dataSource = new MatTableDataSource<ResponsableProg>([]);
} }
ngOnInit(): void { ngOnInit(): void {
this.idRecuperado = parseInt(localStorage.getItem('proyectoId'),10); this.idRecuperado = parseInt(localStorage.getItem('proyectoId'), 10);
this.proyecto = this.mostrarOcultarService.editProyecto;
this.datosCompar.datos$.subscribe(() => { this.datosCompar.datos$.subscribe(() => {
this.obtenerRegistros(); this.obtenerRegistros();
}); });
this.docentesParticipantesService.parametrosActualizados.subscribe(() => { this.responsableProgService.parametrosActualizados.subscribe(() => {
this.obtenerRegistros(); this.obtenerRegistros();
}); });
} }
obtenerRegistros() { obtenerRegistros() {
if (this.idRecuperado !== undefined) { if (this.idRecuperado !== undefined) {
this.docentesParticipantesService.obtenerRegistrosRelacionadosProyecto(this.idRecuperado). this.responsableProgService.obtenerParametrosRelacionados(this.idRecuperado)
subscribe(data => { .subscribe(data => {
this.docenteParticipante = data.map(docente => { if (data !== undefined) {
return { const userObservables: Observable<Usuario>[] = [];
...docente, const tiPresObservables: Observable<TiPres>[] = [];
departamento$: this.obtenerDatosDepartamento(docente.uzytavsubj_code),
campus$: this.obtenerDatosCampus(docente.uzytavcamp_code) for (const responsable of data) {
}; console.log("id usuario ", responsable.uzytusuario_id_docente)
console.log("id obtenerTipres ", responsable.uzytusuario_id_docente)
userObservables.push(this.obtenerUsuarios(responsable.uzytusuario_id_docente));
tiPresObservables.push(this.obtenerTipres(responsable.uzytavtipres_id));
}
forkJoin([...userObservables, ...tiPresObservables]).subscribe(results => {
const users = results.slice(0, userObservables.length);
const tiPres = results.slice(userObservables.length);
this.responsableProg = data.map((responsable, index) => ({
...responsable,
usuario: users[index],
tiPres: tiPres[index]
}));
console.log("this.responsableProg;", this.responsableProg);
this.dataSource.data = this.responsableProg;
});
}
}); });
this.dataSource.data = this.docenteParticipante;
this.calcularTotalDocentesParticipantes(); // Total de docentes
});
} }
} }
calcularTotalDocentesParticipantes() {
this.totalDocentesParticipantes = 0; // Reinicia el total a 0
for (const docente of this.docenteParticipante) {
this.totalDocentesParticipantes += docente.uzytavdocparti_numero;
}
obtenerUsuarios(id: number){
return this.datosUsuarioService.obtenerUsuariosId(id);
} }
obtenerTipres(id: number){
return this.tipresService.obtenerParametrosId(id);
}
obtenerDatosCampus(codigo: string): Observable<string> { obtenerDatosCampus(codigo: string): Observable<string> {
return this.datosEspeService.obtenerCampus().pipe( return this.datosEspeService.obtenerCampus().pipe(
...@@ -94,20 +137,32 @@ export class ListarDocentesAsignadosComponent implements OnInit { ...@@ -94,20 +137,32 @@ export class ListarDocentesAsignadosComponent implements OnInit {
eliminarParametro(id: number) { eliminarParametro(id: number) {
const confirmacion = confirm('¿Desea eliminar el registro?'); this.openModalDelete('¿Desea eliminar el Docente?').subscribe(resutl=> {
if (confirmacion) { if (resutl) {
this.docentesParticipantesService.eliminarParametros(id).subscribe( this.responsableProgService.eliminarParametros(id).subscribe(
() => { () => {
console.log('El registro se ha eliminado'); console.log('El registro se ha eliminado');
this.obtenerRegistros(); this.datosCompartidos.actualizarDatos(this.responsableProg);
}, this.obtenerRegistros();
(error) => {
// No mostrar el error en la consola
console.log(error) },
} (error) => {
); // No mostrar el error en la consola
} console.log(error)
}
);
}
});
} }
formularioEnviado:boolean;
openModalDelete(mensaje: string): Observable<string>{
const dialogRef = this.dialog.open(ConfirmacionEliminacionComponent, {
disableClose: true,
data: { mensaje: mensaje }
});
return dialogRef.afterClosed();
}
} }
...@@ -8,6 +8,10 @@ import { ParametrosdetService } from 'src/app/modules/main/services/parametrosde ...@@ -8,6 +8,10 @@ import { ParametrosdetService } from 'src/app/modules/main/services/parametrosde
import { EnvioFormularioComponent } from '../../../../programa/opciones/envio-formulario/envio-formulario.component'; import { EnvioFormularioComponent } from '../../../../programa/opciones/envio-formulario/envio-formulario.component';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'; import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service';
import { Parroquia } from 'src/app/modules/main/Models/Ubicaciones/parroquia';
import { Canton } from 'src/app/modules/main/Models/Ubicaciones/canton';
import { Provincia } from 'src/app/modules/main/Models/Ubicaciones/provincia';
import { UbicacionesService } from 'src/app/modules/main/services/Ubicaciones/ubicaciones.service';
@Component({ @Component({
...@@ -26,13 +30,18 @@ export class AddCompromisoComponent implements OnInit { ...@@ -26,13 +30,18 @@ export class AddCompromisoComponent implements OnInit {
entidad: parametrosdet[] = []; entidad: parametrosdet[] = [];
orga: parametrosdet[] = []; orga: parametrosdet[] = [];
institu: Instituciones[] = []; institu: Instituciones[] = [];
parroquias: Parroquia[] = [];
cantones: Canton[] = [];
provincias: Provincia[]=[];
constructor( constructor(
private formBuilder: FormBuilder, private formBuilder: FormBuilder,
private instP: ParametrosdetService, private instP: ParametrosdetService,
private instituS: InstitucionesService, private instituS: InstitucionesService,
private instproyM: instproy, private instproyM: instproy,
private dialog: MatDialog, private dialog: MatDialog,
private datosCompartidos: Actualiza_datosService private datosCompartidos: Actualiza_datosService,
private UbicacionesS: UbicacionesService
) { } ) { }
ngOnInit(): void { ngOnInit(): void {
...@@ -62,10 +71,10 @@ export class AddCompromisoComponent implements OnInit { ...@@ -62,10 +71,10 @@ export class AddCompromisoComponent implements OnInit {
this.instproyM.uzytparametros_det_id_organizacion = this.myForm.get('organizacionI').value; this.instproyM.uzytparametros_det_id_organizacion = this.myForm.get('organizacionI').value;
this.instproyM.uzytavinstproy_declaracion = this.myForm.get('declaracion').value; this.instproyM.uzytavinstproy_declaracion = this.myForm.get('declaracion').value;
this.instP.guardarParametros(this.instproyM).subscribe(response => { this.instP.guardarParametros(this.instproyM).subscribe(response => {
this.openModal(); this.openModal('Los Datos han sido Enviados');
this.instP.parametrosActualizados.next(); this.instP.parametrosActualizados.next();
this.datosCompartidos.actualizarDatos(this.instproyM); this.datosCompartidos.actualizarDatos(this.instproyM);
this.formularioGuardado.emit();
}); });
} catch (error) { } catch (error) {
console.error('Error al enviar los datos:', error); console.error('Error al enviar los datos:', error);
...@@ -86,11 +95,24 @@ export class AddCompromisoComponent implements OnInit { ...@@ -86,11 +95,24 @@ export class AddCompromisoComponent implements OnInit {
this.instituS.obtenerParametros().subscribe(data => { this.instituS.obtenerParametros().subscribe(data => {
this.institu = data; this.institu = data;
}); });
this.UbicacionesS.obtenerProvincias().subscribe(data =>{
this.provincias = data;
});
this.UbicacionesS.obtenerCant().subscribe(data =>{
this.cantones = data;
})
this.UbicacionesS.obtenerParro().subscribe(data =>{
this.parroquias = data;
});
} }
onInstitucionSelected(selectedInstitucionId: number) { onInstitucionSelected(selectedInstitucionId: number) {
const selectedInstitucion = this.institu.find(item => item.uzytavinstituc_id === selectedInstitucionId); const selectedInstitucion = this.institu.find(item => item.uzytavinstituc_id === selectedInstitucionId);
if (selectedInstitucion) { if (selectedInstitucion) {
this.myForm.get('provinciaI')?.setValue(this.getParroquiaNombre(selectedInstitucion.uzytparroquia_id));
this.myForm.get('direccionI')?.setValue(selectedInstitucion.uzytavinstituc_calle); this.myForm.get('direccionI')?.setValue(selectedInstitucion.uzytavinstituc_calle);
this.myForm.get('nombreR')?.setValue(selectedInstitucion.uzytavinstituc_nombre); this.myForm.get('nombreR')?.setValue(selectedInstitucion.uzytavinstituc_nombre);
this.myForm.get('apellidoR')?.setValue(selectedInstitucion.uzytavinstituc_apellirl); this.myForm.get('apellidoR')?.setValue(selectedInstitucion.uzytavinstituc_apellirl);
...@@ -100,7 +122,7 @@ export class AddCompromisoComponent implements OnInit { ...@@ -100,7 +122,7 @@ export class AddCompromisoComponent implements OnInit {
} }
} }
openModal() { openModal(mensaje: string) {
const dialogRef = this.dialog.open(EnvioFormularioComponent, { const dialogRef = this.dialog.open(EnvioFormularioComponent, {
disableClose: true disableClose: true
}); });
...@@ -110,4 +132,15 @@ export class AddCompromisoComponent implements OnInit { ...@@ -110,4 +132,15 @@ export class AddCompromisoComponent implements OnInit {
this.formularioEnviado = true; this.formularioEnviado = true;
}); });
} }
getParroquiaNombre(parroquiaId: string): string {
const parroquia = this.parroquias.find(p => p.uzytparroquia_id === parroquiaId);
if (parroquia) {
const canton = this.cantones.find(c => c.uzytcanton_id === parroquia.uzytcanton_id)
const prov = this.provincias.find(pro => pro.uzytprovincia_id === canton.uzytprovincia_id)
const nombre = prov.uzytprovincia_nombre.toLowerCase();
return nombre.charAt(0).toUpperCase() + nombre.slice(1);
}
return '';
}
} }
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { MatTableDataSource } from '@angular/material/table'; import { MatTableDataSource } from '@angular/material/table';
import { Observable } from 'rxjs';
import { Canton } from 'src/app/modules/main/Models/Ubicaciones/canton'; import { Canton } from 'src/app/modules/main/Models/Ubicaciones/canton';
import { Parroquia } from 'src/app/modules/main/Models/Ubicaciones/parroquia'; import { Parroquia } from 'src/app/modules/main/Models/Ubicaciones/parroquia';
import { Provincia } from 'src/app/modules/main/Models/Ubicaciones/provincia'; import { Provincia } from 'src/app/modules/main/Models/Ubicaciones/provincia';
...@@ -11,6 +12,8 @@ import { UbicacionesService } from 'src/app/modules/main/services/Ubicaciones/ub ...@@ -11,6 +12,8 @@ import { UbicacionesService } from 'src/app/modules/main/services/Ubicaciones/ub
import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'; import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service';
import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service'; import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service';
import { ParametrosdetService } from 'src/app/modules/main/services/parametrosdet/parametrosdet.service'; import { ParametrosdetService } from 'src/app/modules/main/services/parametrosdet/parametrosdet.service';
import { ConfirmacionEliminacionComponent } from '../../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component';
import { MatDialog } from '@angular/material/dialog';
@Component({ @Component({
selector: 'vex-list-compromiso', selector: 'vex-list-compromiso',
...@@ -36,7 +39,8 @@ export class ListCompromisoComponent implements OnInit { ...@@ -36,7 +39,8 @@ export class ListCompromisoComponent implements OnInit {
private instP: ParametrosdetService, private instP: ParametrosdetService,
private ubicacionesS: UbicacionesService, private ubicacionesS: UbicacionesService,
private InstitucionesS: InstitucionesService, private InstitucionesS: InstitucionesService,
private paratS: ParametrosdetService private paratS: ParametrosdetService,
private dialog: MatDialog
) { ) {
this.dataSource = new MatTableDataSource<instproy>([]); this.dataSource = new MatTableDataSource<instproy>([]);
} }
...@@ -169,20 +173,30 @@ export class ListCompromisoComponent implements OnInit { ...@@ -169,20 +173,30 @@ export class ListCompromisoComponent implements OnInit {
eliminarParametro(id: number) { eliminarParametro(id: number) {
const confirmacion = confirm('¿Desea eliminar el registro?'); this.openModalDelete('¿Desea Eliminar la Institución?').subscribe(result =>{
if (confirmacion) { if (result) {
this.instP.eliminarParametros(id).subscribe( this.instP.eliminarParametros(id).subscribe(
() => { () => {
console.log('El registro se ha eliminado'); console.log('El registro se ha eliminado');
this.obtenerRegistros(); this.obtenerRegistros();
}, },
(error) => { (error) => {
// No mostrar el error en la consola // No mostrar el error en la consola
console.log('Error durante el tratamiento al registro'); console.log('Error durante el tratamiento al registro');
} }
); );
} }
});
} }
formularioEnviado:boolean;
openModalDelete(mensaje: string): Observable<string>{
const dialogRef = this.dialog.open(ConfirmacionEliminacionComponent, {
disableClose: true,
data: { mensaje: mensaje }
});
return dialogRef.afterClosed();
}
} }
import { Component, OnInit,Input } from '@angular/core'; import { Component, OnInit, Input } from '@angular/core';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { docompar } from 'src/app/modules/main/Models/docompar'; import { docompar } from 'src/app/modules/main/Models/docompar';
import { AddDocumentosComponent } from '../add-documentos/add-documentos.component'; import { AddDocumentosComponent } from '../add-documentos/add-documentos.component';
...@@ -6,6 +6,8 @@ import { ParametrosdetService } from 'src/app/modules/main/services/parametrosde ...@@ -6,6 +6,8 @@ import { ParametrosdetService } from 'src/app/modules/main/services/parametrosde
import { ActualizarAnexosService } from 'src/app/modules/main/services/actualizar_anexos/actualizar-anexos.service'; import { ActualizarAnexosService } from 'src/app/modules/main/services/actualizar_anexos/actualizar-anexos.service';
import { saveAs } from 'file-saver'; import { saveAs } from 'file-saver';
import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'; import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service';
import { Observable } from 'rxjs';
import { ConfirmacionEliminacionComponent } from '../../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component';
@Component({ @Component({
selector: 'vex-list-documentos', selector: 'vex-list-documentos',
templateUrl: './list-documentos.component.html', templateUrl: './list-documentos.component.html',
...@@ -23,16 +25,16 @@ export class ListDocumentosComponent implements OnInit { ...@@ -23,16 +25,16 @@ export class ListDocumentosComponent implements OnInit {
) { } ) { }
ngOnInit(): void { ngOnInit(): void {
this.datosCompartidos.datos$.subscribe(() =>{ this.datosCompartidos.datos$.subscribe(() => {
this.obtenerDocumentos(); this.obtenerDocumentos();
}); });
this.pdfService.parametrosActualizados.subscribe(() =>{ this.pdfService.parametrosActualizados.subscribe(() => {
this.obtenerDocumentos(); this.obtenerDocumentos();
}); });
} }
GuardarParametro(){ GuardarParametro() {
const dialogRef = this.dialog.open(AddDocumentosComponent, { const dialogRef = this.dialog.open(AddDocumentosComponent, {
data: { idConf: this.idConf } data: { idConf: this.idConf }
}); });
...@@ -70,31 +72,42 @@ export class ListDocumentosComponent implements OnInit { ...@@ -70,31 +72,42 @@ export class ListDocumentosComponent implements OnInit {
return 'document.pdf'; // Nombre predeterminado si no se puede obtener el nombre del archivo return 'document.pdf'; // Nombre predeterminado si no se puede obtener el nombre del archivo
} }
obtenerDocumentos(){ obtenerDocumentos() {
this.pdfService.obtenerNombrePDF().subscribe(data => { this.pdfService.obtenerNombrePDF().subscribe(data => {
this.documentoInst = data.filter(item => item.uzytavinstproy_id === this.idConf); this.documentoInst = data.filter(item => item.uzytavinstproy_id === this.idConf);
}); });
} }
descargar(){ descargar() {
} }
eliminarParametro(id: number) { eliminarParametro(id: number) {
const confirmacion = confirm('¿Estás seguro de que quieres eliminar este parámetro?'); this.openModalDelete('¿Desea eliminar el PDF?').subscribe(result => {
if (confirmacion) { if (result) {
this.pdfService.eliminarPDF(id).subscribe( this.pdfService.eliminarPDF(id).subscribe(
() => { () => {
// Manejar la eliminación exitosa // Manejar la eliminación exitosa
console.log('Registro eliminado correctamente'); console.log('Registro eliminado correctamente');
this.obtenerDocumentos(); this.obtenerDocumentos();
}, },
(error) => { (error) => {
this.obtenerDocumentos(); this.obtenerDocumentos();
// Manejar el error en caso de que ocurra // Manejar el error en caso de que ocurra
console.error('Error al eliminar el registro', error); console.error('Error al eliminar el registro', error);
} }
); );
} }
});
}
formularioEnviado: boolean;
openModalDelete(mensaje: string): Observable<string> {
const dialogRef = this.dialog.open(ConfirmacionEliminacionComponent, {
disableClose: true,
data: { mensaje: mensaje }
});
return dialogRef.afterClosed();
} }
} }
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { MatTable, MatTableDataSource } from '@angular/material/table'; import { MatTable, MatTableDataSource } from '@angular/material/table';
import { Observable } from 'rxjs';
import { CatalogoPP } from 'src/app/modules/main/Models/catalogo-partidas-presupuestarias'; import { CatalogoPP } from 'src/app/modules/main/Models/catalogo-partidas-presupuestarias';
import { PartidasPresupuestarias } from 'src/app/modules/main/Models/partidas-presupuestarias'; import { PartidasPresupuestarias } from 'src/app/modules/main/Models/partidas-presupuestarias';
import { PresupuestoPartidas } from 'src/app/modules/main/Models/presupuesto-partidas'; import { PresupuestoPartidas } from 'src/app/modules/main/Models/presupuesto-partidas';
import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'; import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service';
import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service'; import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service';
import { PresupuestoPartidasService } from 'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service'; import { PresupuestoPartidasService } from 'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service';
import { ConfirmacionEliminacionComponent } from '../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component';
@Component({ @Component({
selector: 'app-aporte-comunidad', selector: 'app-aporte-comunidad',
...@@ -97,6 +99,7 @@ export class AporteComunidadComponent implements OnInit { ...@@ -97,6 +99,7 @@ export class AporteComunidadComponent implements OnInit {
eliminarParametros(id: number) { eliminarParametros(id: number) {
this.openModalDelete('¿Dsea eliminar el Aporte de la Comunidad?').subscribe(result=>{
const confirmacion = confirm('¿Desea eliminar el registro?'); const confirmacion = confirm('¿Desea eliminar el registro?');
if (confirmacion) { if (confirmacion) {
this.presupuestoPartidasService.eliminarParametros(id).subscribe( this.presupuestoPartidasService.eliminarParametros(id).subscribe(
...@@ -109,7 +112,18 @@ export class AporteComunidadComponent implements OnInit { ...@@ -109,7 +112,18 @@ export class AporteComunidadComponent implements OnInit {
} }
); );
} }
});
} }
formularioEnviado:boolean;
openModalDelete(mensaje: string): Observable<string>{
const dialogRef = this.dialog.open(ConfirmacionEliminacionComponent, {
disableClose: true,
data: { mensaje: mensaje }
});
return dialogRef.afterClosed();
}
} }
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { MatTable, MatTableDataSource } from '@angular/material/table'; import { MatTable, MatTableDataSource } from '@angular/material/table';
import { Observable } from 'rxjs';
import { CatalogoPP } from 'src/app/modules/main/Models/catalogo-partidas-presupuestarias'; import { CatalogoPP } from 'src/app/modules/main/Models/catalogo-partidas-presupuestarias';
import { PartidasPresupuestarias } from 'src/app/modules/main/Models/partidas-presupuestarias'; import { PartidasPresupuestarias } from 'src/app/modules/main/Models/partidas-presupuestarias';
import { PresupuestoPartidas } from 'src/app/modules/main/Models/presupuesto-partidas'; import { PresupuestoPartidas } from 'src/app/modules/main/Models/presupuesto-partidas';
import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'; import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service';
import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service'; import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service';
import { PresupuestoPartidasService } from 'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service'; import { PresupuestoPartidasService } from 'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service';
import { ConfirmacionEliminacionComponent } from '../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component';
@Component({ @Component({
...@@ -51,7 +53,7 @@ export class AporteEntidadComponent implements OnInit { ...@@ -51,7 +53,7 @@ export class AporteEntidadComponent implements OnInit {
} }
ngOnInit(): void { ngOnInit(): void {
this.idRecuperado = parseInt(localStorage.getItem('proyectoId'),10); this.idRecuperado = parseInt(localStorage.getItem('proyectoId'), 10);
this.datosCompartidos.datos$.subscribe(() => { this.datosCompartidos.datos$.subscribe(() => {
this.obtenerRegistros(); this.obtenerRegistros();
}); });
...@@ -93,24 +95,36 @@ export class AporteEntidadComponent implements OnInit { ...@@ -93,24 +95,36 @@ export class AporteEntidadComponent implements OnInit {
calcularTotales() { calcularTotales() {
this.totalSuma = this.presupuestoPartidas.reduce((total, dato) => { this.totalSuma = this.presupuestoPartidas.reduce((total, dato) => {
return total + dato.uzytavpresup_valor * dato.uzytavpresup_cantidad; return total + dato.uzytavpresup_valor * dato.uzytavpresup_cantidad;
}, 0); }, 0);
this.totalSuma = parseFloat(this.totalSuma.toFixed(2)); this.totalSuma = parseFloat(this.totalSuma.toFixed(2));
} }
eliminarParametros(id: number) { eliminarParametros(id: number) {
const confirmacion = confirm('¿Desea eliminar el registro?'); this.openModalDelete('¿Dsea eliminar el Aporte de la Universidad?').subscribe(result => {
if (confirmacion) { const confirmacion = confirm('¿Desea eliminar el registro?');
this.presupuestoPartidasService.eliminarParametros(id).subscribe( if (confirmacion) {
(response) => { this.presupuestoPartidasService.eliminarParametros(id).subscribe(
console.log('El registro se ha eliminado exitosamente.'); (response) => {
this.obtenerRegistros(); // Refresh the records after successful deletion console.log('El registro se ha eliminado exitosamente.');
}, this.obtenerRegistros(); // Refresh the records after successful deletion
(error) => { },
console.log('Error during the treatment of the record', error); (error) => {
} console.log('Error during the treatment of the record', error);
); }
} );
}
});
}
formularioEnviado: boolean;
openModalDelete(mensaje: string): Observable<string> {
const dialogRef = this.dialog.open(ConfirmacionEliminacionComponent, {
disableClose: true,
data: { mensaje: mensaje }
});
return dialogRef.afterClosed();
} }
} }
...@@ -10,6 +10,7 @@ import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_ ...@@ -10,6 +10,7 @@ import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_
import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service'; import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service';
import { PartidasPresupuestariasService } from 'src/app/modules/main/services/partidas-presupuestarias/partidas-presupuestarias.service'; import { PartidasPresupuestariasService } from 'src/app/modules/main/services/partidas-presupuestarias/partidas-presupuestarias.service';
import { PresupuestoPartidasService } from 'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service'; import { PresupuestoPartidasService } from 'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service';
import { ConfirmacionEliminacionComponent } from '../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component';
@Component({ @Component({
selector: 'app-aporte-universidad', selector: 'app-aporte-universidad',
...@@ -166,18 +167,30 @@ export class AporteUniversidadComponent implements OnInit { ...@@ -166,18 +167,30 @@ export class AporteUniversidadComponent implements OnInit {
eliminarParametros(id: number) { eliminarParametros(id: number) {
const confirmacion = confirm('¿Desea eliminar el registro?'); this.openModalDelete('¿Dsea eliminar el Aporte de la Universidad?').subscribe(result=>{
if (confirmacion) { if (result) {
this.presupuestoPartidasService.eliminarParametros(id).subscribe( this.presupuestoPartidasService.eliminarParametros(id).subscribe(
(response) => { (response) => {
console.log('El registro se ha eliminado exitosamente.'); console.log('El registro se ha eliminado exitosamente.');
this.obtenerRegistros(); // Refresh the records after successful deletion this.obtenerRegistros(); // Refresh the records after successful deletion
}, },
(error) => { (error) => {
console.log('Error during the treatment of the record', error); console.log('Error during the treatment of the record', error);
} }
); );
} }
});
}
formularioEnviado:boolean;
openModalDelete(mensaje: string): Observable<string>{
const dialogRef = this.dialog.open(ConfirmacionEliminacionComponent, {
disableClose: true,
data: { mensaje: mensaje }
});
return dialogRef.afterClosed();
} }
} }
...@@ -7,6 +7,8 @@ import { PresupuestoPartidas } from 'src/app/modules/main/Models/presupuesto-par ...@@ -7,6 +7,8 @@ import { PresupuestoPartidas } from 'src/app/modules/main/Models/presupuesto-par
import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'; import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service';
import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service'; import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service';
import { PresupuestoPartidasService } from 'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service'; import { PresupuestoPartidasService } from 'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service';
import { ConfirmacionEliminacionComponent } from '../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component';
import { Observable } from 'rxjs';
@Component({ @Component({
selector: 'app-list-comunidad', selector: 'app-list-comunidad',
...@@ -37,7 +39,7 @@ export class ListComunidadComponent implements OnInit { ...@@ -37,7 +39,7 @@ export class ListComunidadComponent implements OnInit {
} }
ngOnInit(): void { ngOnInit(): void {
this.idRecuperado = parseInt(localStorage.getItem('proyectoId'),10); this.idRecuperado = parseInt(localStorage.getItem('proyectoId'), 10);
this.datosCompartidos.datos$.subscribe(() => { this.datosCompartidos.datos$.subscribe(() => {
this.obtenerRegistros(); this.obtenerRegistros();
}); });
...@@ -78,26 +80,36 @@ export class ListComunidadComponent implements OnInit { ...@@ -78,26 +80,36 @@ export class ListComunidadComponent implements OnInit {
calcularTotales() { calcularTotales() {
this.totalSuma = this.presupuestoPartidas.reduce((total, dato) => { this.totalSuma = this.presupuestoPartidas.reduce((total, dato) => {
return total + dato.uzytavpresup_valor * dato.uzytavpresup_cantidad; return total + dato.uzytavpresup_valor * dato.uzytavpresup_cantidad;
}, 0); }, 0);
this.totalSuma = parseFloat(this.totalSuma.toFixed(2)); this.totalSuma = parseFloat(this.totalSuma.toFixed(2));
} }
eliminarParametros(id: number) { eliminarParametros(id: number) {
const confirmacion = confirm('¿Desea eliminar el registro?'); this.openModalDelete('¿Dsea eliminar el Aporte de la Comunidad?').subscribe(result => {
if (confirmacion) { if (result) {
this.presupuestoPartidasService.eliminarParametros(id).subscribe( this.presupuestoPartidasService.eliminarParametros(id).subscribe(
(response) => { (response) => {
console.log('El registro se ha eliminado exitosamente.'); console.log('El registro se ha eliminado exitosamente.');
this.obtenerRegistros(); // Refresh the records after successful deletion this.obtenerRegistros(); // Refresh the records after successful deletion
}, },
(error) => { (error) => {
console.log('Error during the treatment of the record', error); console.log('Error during the treatment of the record', error);
} }
); );
} }
});
} }
formularioEnviado: boolean;
openModalDelete(mensaje: string): Observable<string> {
const dialogRef = this.dialog.open(ConfirmacionEliminacionComponent, {
disableClose: true,
data: { mensaje: mensaje }
});
return dialogRef.afterClosed();
}
} }
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { MatTable, MatTableDataSource } from '@angular/material/table'; import { MatTable, MatTableDataSource } from '@angular/material/table';
import { Observable } from 'rxjs';
import { CatalogoPP } from 'src/app/modules/main/Models/catalogo-partidas-presupuestarias'; import { CatalogoPP } from 'src/app/modules/main/Models/catalogo-partidas-presupuestarias';
import { PartidasPresupuestarias } from 'src/app/modules/main/Models/partidas-presupuestarias'; import { PartidasPresupuestarias } from 'src/app/modules/main/Models/partidas-presupuestarias';
import { PresupuestoPartidas } from 'src/app/modules/main/Models/presupuesto-partidas'; import { PresupuestoPartidas } from 'src/app/modules/main/Models/presupuesto-partidas';
import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service'; import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service';
import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service'; import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service';
import { PresupuestoPartidasService } from 'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service'; import { PresupuestoPartidasService } from 'src/app/modules/main/services/presupuesto-partidas/presupuesto-partidas.service';
import { ConfirmacionEliminacionComponent } from '../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component';
@Component({ @Component({
selector: 'app-list-entidad', selector: 'app-list-entidad',
...@@ -24,7 +26,7 @@ export class ListEntidadComponent implements OnInit { ...@@ -24,7 +26,7 @@ export class ListEntidadComponent implements OnInit {
politicas: any[] = []; politicas: any[] = [];
objetivos: any[] = []; objetivos: any[] = [];
presupuestoPartidas!: PresupuestoPartidas[]; presupuestoPartidas!: PresupuestoPartidas[];
@ViewChild(MatTable) table: MatTable<any>; @ViewChild(MatTable) table: MatTable<any>;
...@@ -88,8 +90,8 @@ export class ListEntidadComponent implements OnInit { ...@@ -88,8 +90,8 @@ export class ListEntidadComponent implements OnInit {
eliminarParametros(id: number) { eliminarParametros(id: number) {
const confirmacion = confirm('¿Desea eliminar el registro?'); this.openModalDelete('¿Dsea eliminar el Aporte de la Entidad Auspiciante?').subscribe(result=>{
if (confirmacion) { if (result) {
this.presupuestoPartidasService.eliminarParametros(id).subscribe( this.presupuestoPartidasService.eliminarParametros(id).subscribe(
(response) => { (response) => {
console.log('El registro se ha eliminado exitosamente.'); console.log('El registro se ha eliminado exitosamente.');
...@@ -100,5 +102,16 @@ export class ListEntidadComponent implements OnInit { ...@@ -100,5 +102,16 @@ export class ListEntidadComponent implements OnInit {
} }
); );
} }
});
}
formularioEnviado:boolean;
openModalDelete(mensaje: string): Observable<string>{
const dialogRef = this.dialog.open(ConfirmacionEliminacionComponent, {
disableClose: true,
data: { mensaje: mensaje }
});
return dialogRef.afterClosed();
} }
} }
...@@ -10,9 +10,11 @@ import { ResponsableProg } from '../../Models/responsable-prog'; ...@@ -10,9 +10,11 @@ import { ResponsableProg } from '../../Models/responsable-prog';
}) })
export class ResponsableProgService { export class ResponsableProgService {
private readonly URL = environment.appApiUrl + '/cabevalp'; private readonly URL = environment.appApiUrl + '/responsableprog';
private readonly URLRelacionadoProyec = environment.appApiUrl + '/responsableprog/obtenerRegistrosPorProyectID';
parametrosActualizados: Subject<void> = new Subject<void>(); parametrosActualizados: Subject<void> = new Subject<void>();
private idCabEvalProy: number; private idCabEvalProy: number;
constructor(private httpClient: HttpClient) {} constructor(private httpClient: HttpClient) {}
...@@ -25,12 +27,14 @@ export class ResponsableProgService { ...@@ -25,12 +27,14 @@ export class ResponsableProgService {
return this.httpClient.get<ResponsableProg>(`${this.URL}/exampleFindId/${id}`) return this.httpClient.get<ResponsableProg>(`${this.URL}/exampleFindId/${id}`)
} }
obtenerParametrosRelacionados(idProyecto: number): Observable<ResponsableProg[]> {
return this.httpClient.get<ResponsableProg[]>(`${this.URLRelacionadoProyec}/${idProyecto}`)
}
guardarParametros(parametros: ResponsableProg):Observable<Object>{ guardarParametros(parametros: ResponsableProg):Observable<Object>{
return this.httpClient.post(`${this.URL+"/guardar"}`, parametros).pipe( return this.httpClient.post(`${this.URL+"/guardar"}`, parametros).pipe(
tap((response: any) => { tap((response: any) => {
this.idCabEvalProy = response.uzytavcabevalp_id; this.idCabEvalProy = response.uzytavcabevalp_id;
console.log("id cabecera evaluacion", this.idCabEvalProy) // Captura el ID devuelto por el servidor
}) })
); );
} }
......
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