Skip to content

Commit

Permalink
Bi-queries: Módulo para englobar todo tipo de salida de informacion (#…
Browse files Browse the repository at this point in the history
…1920)

* feat(vis-info): se agrega bi-queries-component

* feat(permisos): agrego type queries en arbol de permisos

* feat(permisos): agrego al arbol permiso querie

* ref(bi-quries): cambios sugeridos

Co-authored-by: Pancho <martinebucarey@gmail,com>
  • Loading branch information
martinebucarey and Pancho authored Oct 5, 2020
1 parent a06d80e commit b65908b
Show file tree
Hide file tree
Showing 4 changed files with 205 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,24 @@ <h5>
{{item.title}}
<plex-bool *ngIf="!item.avoidAll" [(ngModel)]="all" label="Seleccionar todos" type="slide"> </plex-bool>
</h5>
<plex-wrapper>
<plex-select [multiple]="true" [readonly]="all" [(ngModel)]="seleccionados" *ngIf="!loading"
<plex-wrapper *ngIf="!loading">
<plex-select *ngIf="item.type === 'queries'" [multiple]="true" [readonly]="all" [(ngModel)]="seleccionados"
(getData)="loadData(item.type, $event)" placeholder="Seleccione los elementos con permisos"
name="plexSelect" idField="id" (change)="parseSelecionados()"
name="plexSelect" idField="_id" (change)="parseSelecionados()"
(paste)="$event.preventDefault();onPaste($event);">
</plex-select>
<plex-select *ngIf="item.type === 'prestacion'" [multiple]="true" [readonly]="all"
[(ngModel)]="seleccionados" (getData)="loadData(item.type, $event)"
placeholder="Seleccione los elementos con permisos" name="plexSelect" idField="id"
(change)="parseSelecionados()" (paste)="$event.preventDefault();onPaste($event);">
</plex-select>
<plex-select *ngIf="item.type === 'organizacion'" [multiple]="true" [readonly]="all"
[(ngModel)]="seleccionados" (getData)="loadData(item.type, $event)"
placeholder="Seleccione los elementos con permisos" name="plexSelect" idField="id"
(change)="parseSelecionados()" (paste)="$event.preventDefault();onPaste($event);">
</plex-select>
<plex-copy *ngIf="!loading && item.type === 'prestacion'" [value]="seleccionadosJson">
</plex-copy>
</plex-wrapper>
</div>
</div>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { OrganizacionService } from '../../../../services/organizacion.service';
import { TipoPrestacionService } from '../../../../services/tipoPrestacion.service';
import { Auth } from '@andes/auth';
import { Plex } from '@andes/plex';
import { QueriesService } from 'src/app/services/query.service';
// import { IPermiso } from '../interfaces/IPermiso';
let shiroTrie = require('shiro-trie');

Expand Down Expand Up @@ -39,6 +40,7 @@ export class ArbolPermisosItemComponent implements OnInit, OnChanges, AfterViewI
constructor(
private servicioTipoPrestacion: TipoPrestacionService,
private organizacionService: OrganizacionService,
private queryService: QueriesService,
private auth: Auth,
public plex: Plex
) { }
Expand Down Expand Up @@ -144,6 +146,13 @@ export class ArbolPermisosItemComponent implements OnInit, OnChanges, AfterViewI
this.parseSelecionados();
});
break;
case 'queries':
this.queryService.getAllQueries({ _id: items }).subscribe((data) => {
this.loading = false;
this.seleccionados = [...data];
this.parseSelecionados();
});
break;
}
}
} else {
Expand Down Expand Up @@ -179,6 +188,10 @@ export class ArbolPermisosItemComponent implements OnInit, OnChanges, AfterViewI
event.callback(data);
});
break;
case 'queries':
this.queryService.getAllQueries({ desdeAndes: true }).subscribe((data) => {
event.callback(data);
});
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1,71 @@
<p>bi-queries works!</p>
<plex-layout>
<plex-layout-main>
<plex-title titulo="Ejecutar consultas">
<plex-button size="sm" type="success" (click)="descargar()" [disabled]="form.invalid">
Descargar CSV
</plex-button>
</plex-title>
<form #form="ngForm">
<plex-grid type="full" size="sm">
<plex-select [(ngModel)]="consultaSeleccionada" name="select" [required]="true"
[data]="queries$ | async" labelField="nombre" idField="_id"
placeholder="Seleccione consulta" (change)="getArgumentos()">
</plex-select>
<ng-container *ngFor="let argumento of consultaSeleccionada?.argumentos">
<plex-bool *ngIf="argumento.tipo==='salida'" [(ngModel)]="argumento.check"
[label]="argumento.label?argumento.label:argumento.key" name={{argumento.key}}>
</plex-bool>
</ng-container>
</plex-grid>
<ng-container *ngIf="consultaSeleccionada">
<plex-title titulo="Argumentos"></plex-title>
<plex-wrapper>
<ng-container *ngFor="let argumento of consultaSeleccionada.argumentos" [ngSwitch]="argumento.tipo">
<plex-datetime *ngSwitchCase="'date'" [label]="argumento.label?argumento.label:argumento.key"
grow="auto" name="{{ argumento.key }}" [(ngModel)]="argumentos[argumento.key]"
[required]="argumento.required">
</plex-datetime>
<plex-select *ngSwitchCase="'organizacion'"
[label]="argumento.label?argumento.label:argumento.key" grow="2"
name="{{ argumento.key }}" [(ngModel)]="argumentos[argumento.key]"
[required]="argumento.required" [data]="organizaciones$ |async">>
</plex-select>
<plex-select *ngSwitchCase="'conceptoTurneable'"
[label]="argumento.label?argumento.label:argumento.key" grow="2"
name="{{ argumento.key }}" [(ngModel)]="argumentos[argumento.key]"
idField="conceptId" [required]="argumento.required"
(getData)="loadConceptosTurneables($event)">>
</plex-select>
<plex-text *ngSwitchCase="'string'" [label]="argumento.label?argumento.label:argumento.key"
grow="2" name="{{ argumento.key }}" [(ngModel)]="argumentos[argumento.key]"
[required]="argumento.required">
</plex-text>
<plex-select *ngSwitchCase="'profesional'"
[label]="argumento.label?argumento.label:argumento.key" grow=" 2"
name="{{ argumento.key }}" [(ngModel)]="argumentos[argumento.key]"
[required]="argumento.required" labelField="nombreCompleto"
(getData)="loadProfesionales($event)">>
</plex-select>
<plex-select *ngSwitchCase="'estadoAgenda'"
[label]="argumento.label?argumento.label:argumento.key" grow=" 2"
name="{{ argumento.key }}" [(ngModel)]="argumentos[argumento.key]"
[required]="argumento.required" labelField="nombre"
(getData)="loadEstadosAgenda($event)">>
</plex-select>
<plex-select *ngSwitchCase="'estadoTurno'"
[label]="argumento.label?argumento.label:argumento.key" grow=" 2"
name="{{ argumento.key }}" [(ngModel)]="argumentos[argumento.key]"
[required]="argumento.required" labelField="nombre"
(getData)="loadEstadosTurno($event)">>
</plex-select>
</ng-container>
</plex-wrapper>
</ng-container>
</form>
<div justify="center" class="h-75">
<plex-label titulo="Comience seleccionando una consulta" direction="column"
subtitulo="Complete los filtros requeridos y presione en el boton Descargar CSV para obtener su reporte "
type="default" size="xl" icon="arrow-up"></plex-label>
</div>
</plex-layout-main>
</plex-layout>
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
import { Component, OnInit } from '@angular/core';
import { QueriesService } from '../../../../services/query.service';
import { Observable } from 'rxjs';
import { ProfesionalService } from '../../../../services/profesional.service';
import { Auth } from '@andes/auth';
import { Router } from '@angular/router';
import { TipoPrestacionService } from '../../../../services/tipoPrestacion.service';


@Component({
selector: 'app-bi-queries',
Expand All @@ -7,9 +14,108 @@ import { Component, OnInit } from '@angular/core';
})
export class BiQueriesComponent implements OnInit {

constructor() { }
public consultaSeleccionada;
public opciones = [];
public queries$: Observable<any>;
public organizaciones$: Observable<any>;
public argumentos;
public argumentosSalida = [];
public resultados;
public mostrarSalida = false;
public tipoPrestaciones;

constructor(private queryService: QueriesService,
private profesionalService: ProfesionalService,
private auth: Auth,
private router: Router,
public servicioPrestacion: TipoPrestacionService
) { }

ngOnInit() {
const permisos = this.auth.getPermissions('visualizacionInformacion:biQueries:?');
if (permisos.length) {
if (permisos[0] === '*') {
this.queries$ = this.queryService.getAllQueries({ desdeAndes: true });
} else {
this.queries$ = this.queryService.getAllQueries({ _id: permisos });
}
} else {
this.router.navigate(['./inicio']);
}

}

getArgumentos() {
if (this.consultaSeleccionada) {
this.argumentos = this.consultaSeleccionada.argumentos;
this.organizaciones$ = this.auth.organizaciones();
}
}

loadProfesionales(event) {
let listaProfesionales = [];
if (event.query) {
let query = {
nombreCompleto: event.query
};
this.profesionalService.get(query).subscribe(resultado => {
listaProfesionales = resultado;
event.callback(listaProfesionales);
});
} else {
event.callback(listaProfesionales);
}
}

loadConceptosTurneables(event) {
this.servicioPrestacion.get({ turneable: 1 }).subscribe(event.callback);
}

loadEstadosAgenda(event) {
const estadosAgendas = [
{ id: 'planificacion', nombre: 'Planificación' },
{ id: 'disponible', nombre: 'Disponible' },
{ id: 'publicada', nombre: 'Publicada' },
{ id: 'suspendida', nombre: 'Suspendida' },
{ id: 'pausada', nombre: 'Pausada' },
{ id: 'pendienteAsistencia', nombre: 'Pendiente Asistencia' },
{ id: 'pendienteAuditoria', nombre: 'Pendiente Auditoría' },
{ id: 'auditada', nombre: 'Auditada' },
{ id: 'borrada', nombre: 'Borrada' }
];
event.callback(estadosAgendas);
}

loadEstadosTurno(event) {
const estadosTurnos = [
{ id: 'disponible', nombre: 'Disponible' },
{ id: 'asignado', nombre: 'Asignado' },
{ id: 'suspendido', nombre: 'Suspendido' },
{ id: 'turnoDoble', nombre: 'Turno Doble' }
];
event.callback(estadosTurnos);
}

descargar() {
let resultado = this.queries$.find(query => query.nombre === this.consultaSeleccionada.nombre);
if (resultado) {
const params = {};

this.argumentos.forEach(arg => {
const key = arg.key;
const valor = this.argumentos[key];
params[key] = valor;
if (valor instanceof Date) {
params[key] = valor;
} else {
if (valor && valor.id) {
params[key] = valor.id;
} else if (valor === undefined && arg.tipo === 'salida') {
params[key] = arg.check;
}
}
});
this.queryService.descargarCsv(this.consultaSeleccionada.nombre, params).subscribe();
}
}
}

0 comments on commit b65908b

Please sign in to comment.