-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
21 changed files
with
816 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
interface _hospitalCreator { | ||
_id: string; | ||
nombre: string; | ||
img: string; | ||
} | ||
|
||
export class Hospital { | ||
constructor( | ||
public nombre: string, | ||
public _id?: string, | ||
public img?: string, | ||
public usuario?: _hospitalCreator, | ||
){} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
import { Hospital } from "./hospital.model"; | ||
|
||
interface _medicoCreator { | ||
_id: string; | ||
nombre: string; | ||
img: string; | ||
} | ||
|
||
export class Medico { | ||
constructor( | ||
public nombre: string, | ||
public _id?: string, | ||
public img?: string, | ||
public usuario?: _medicoCreator, | ||
public hospital?: Hospital | ||
){} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
101 changes: 101 additions & 0 deletions
101
src/app/pages/mantenimientos/hospitales/hospitales.component.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
<div class="row animated fadeIn fast"> | ||
<div class="col-12"> | ||
<div class="card"> | ||
<div class="card-body"> | ||
|
||
<input type="text" | ||
class="form-control" | ||
placeholder="Buscar hospital..." | ||
#termino | ||
(keyup)="searchQuery(termino.value)" | ||
/> | ||
|
||
</div> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
<div class="row animated fadeIn fast" | ||
*ngIf="cargando"> | ||
<div class="col-12"> | ||
<div class="alert alert-success text-center"> | ||
<h4 class="alert-heading">Cargando</h4> | ||
<i class="fa fa-spin fa-refresh fa-2x fa-"></i> | ||
<p class="mb-0">Por favor espere</p> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
<div class="row animated fadeIn fast" *ngIf="!cargando"> | ||
<div class="col-12"> | ||
<div class="card"> | ||
<div class="card-body"> | ||
<!-- <div class="text-right btn-crear"> | ||
<button class="btn btn-primary"> | ||
<i class="fa far fa-hospital"></i> | ||
Crear hospital | ||
</button> | ||
</div> | ||
<h4 class="card-title">Hospitales ({{hospitales.length}})</h4> | ||
<h6 class="card-subtitle">Hospitales registrados en la aplicación</h6> --> | ||
|
||
<div class="row"> | ||
<div class="col-8"> | ||
<h4 class="card-title">Hospitales ({{hospitales.length}})</h4> | ||
<h6 class="card-subtitle">Hospitales registrados en la aplicación</h6> | ||
</div> | ||
<div class="col"> | ||
<div class="text-right"> | ||
<button class="btn btn-primary" (click)="abrirSweetAlert()"> | ||
<i class="fa fa-hospital-o mr-1"></i> | ||
Crear hospital | ||
</button> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
<div class="table-responsive"> | ||
<table class="table table-bordered"> | ||
<thead> | ||
<tr> | ||
<th class="w100">Foto</th> | ||
<th>Nombre</th> | ||
<th class="text-nowrap w100">Acciones</th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<tr *ngFor="let hospital of hospitales"> | ||
<!-- <td>{{hospital.img | imagen:'hospitales'}}</td> --> | ||
<td class="text-center"> | ||
<img (click)="abrirModal(hospital)"[src]="hospital.img | imagen:'hospitales'" [alt]="hospital.nombre" class="w100 cursor"> | ||
</td> | ||
<td> | ||
<input type="text" class="form-control" placeholder="Nombre del hospital" [(ngModel)]="hospital.nombre"/> | ||
</td> | ||
<td class="text-nowrap text-center"> | ||
<a (click)="guardarCambios(hospital)" | ||
data-toggle="tooltip" | ||
class="cursor" | ||
data-original-title="Guardar"> | ||
<i class="fa fa-save text-inverse m-r-10"></i> | ||
</a> | ||
<a (click)="eliminarHospital(hospital)" | ||
data-toggle="tooltip" | ||
class="cursor" | ||
data-original-title="Borrar"> | ||
<i class="fa fa-close text-danger"></i> | ||
</a> | ||
</td> | ||
</tr> | ||
</tbody> | ||
</table> | ||
</div> | ||
|
||
<!-- <button class="btn btn-secondary">Anterior</button> | ||
| ||
<button class="btn btn-secondary">Siguiente</button> --> | ||
|
||
</div> | ||
</div> | ||
</div> | ||
</div> |
114 changes: 114 additions & 0 deletions
114
src/app/pages/mantenimientos/hospitales/hospitales.component.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
import { Component, Input, OnInit, OnDestroy } from '@angular/core'; | ||
|
||
import { Subscription } from 'rxjs'; | ||
import { delay } from 'rxjs/operators'; | ||
import Swal from 'sweetalert2'; | ||
|
||
import { Hospital } from '../../../models/hospital.model'; | ||
import { HospitalService } from '../../../services/hospital.service'; | ||
import { ModalImagenService } from '../../../services/modal-imagen.service'; | ||
import { BusquedasService } from '../../../services/busquedas.service'; | ||
|
||
@Component({ | ||
selector: 'app-hospitales', | ||
templateUrl: './hospitales.component.html', | ||
styles: [ | ||
] | ||
}) | ||
export class HospitalesComponent implements OnInit, OnDestroy { | ||
|
||
public hospitales: Hospital[] = []; | ||
public hospitalesTemp: Hospital[] = []; | ||
public cargando: boolean = true; | ||
|
||
private imgSubs!: Subscription; | ||
|
||
|
||
constructor(private _hospitalService: HospitalService, | ||
private _modalImagenService: ModalImagenService, | ||
private _busquedasService: BusquedasService) { } | ||
|
||
ngOnDestroy(): void { | ||
this.imgSubs.unsubscribe(); | ||
} | ||
|
||
ngOnInit(): void { | ||
this.cargarHospitales(); | ||
|
||
this.imgSubs = this._modalImagenService.nuevaImagen | ||
.pipe(delay(200)) | ||
.subscribe(img => this.cargarHospitales()); | ||
} | ||
|
||
cargarHospitales(){ | ||
// Creo que seria mejor actualizar el hospital en el array para evitar demasiadas peticiones http | ||
this.cargando = true; | ||
|
||
this._hospitalService.cargarHospitales() | ||
.subscribe( hospitales => { | ||
this.cargando = false; | ||
this.hospitales = hospitales; | ||
this.hospitalesTemp = this.hospitales | ||
}); | ||
} | ||
|
||
guardarCambios(hospital: Hospital){ | ||
this._hospitalService.actualizarHospital(hospital._id!,hospital.nombre) | ||
.subscribe( resp => { | ||
this.cargarHospitales(); // Creo que seria mejor actualizar el hospital en el array para evitar demasiadas peticiones http | ||
Swal.fire('Actualizado', hospital.nombre, 'success') | ||
}) | ||
} | ||
|
||
eliminarHospital(hospital: Hospital){ | ||
this._hospitalService.borrarHospital(hospital._id!) | ||
.subscribe( resp => { | ||
this.cargarHospitales(); // Creo que seria mejor actualizar el hospital en el array para evitar demasiadas peticiones http | ||
Swal.fire('Borrado', hospital.nombre, 'success') | ||
}) | ||
} | ||
|
||
async abrirSweetAlert(){ | ||
const {value = '', ...valor} = await Swal.fire<string>({ | ||
title: 'Crear hospital', | ||
text: 'Ingrese el nombre del nuevo hospital', | ||
input: 'text', | ||
inputPlaceholder: 'Nombre del hospital', | ||
showCancelButton: true | ||
}) | ||
|
||
// if (valor.isDismissed) return; // SImplemente se arregla asignandole un string vacio a value en la desestructuración | ||
|
||
if (value!.trim().length > 0) { | ||
this._hospitalService.crearHospital(value!) | ||
.subscribe((resp: any) => { | ||
this.hospitales.push(resp.hospital) | ||
}) | ||
} | ||
|
||
// if (url) { | ||
// Swal.fire(`Entered URL: ${url}`) | ||
// } | ||
} | ||
|
||
abrirModal(hospital: Hospital) { | ||
// if (this._usuarioService.usuario.role === 'ADMIN_ROLE'){ | ||
this._modalImagenService.abrirModal('hospitales',hospital._id!,hospital.img); | ||
// } | ||
} | ||
|
||
searchQuery(termino: string){ | ||
|
||
if (termino.length === 0) { | ||
this.hospitales = this.hospitalesTemp | ||
return; | ||
// return this.cargarHospitales(); // Para no complicarse mucho, pero seria mejor guardar los hospitales para tener la referencia local y así evitar hacer una petición extra | ||
} | ||
|
||
this._busquedasService.buscar('hospitales',termino) | ||
.subscribe((resp: Hospital[]) => { | ||
this.hospitales = resp | ||
}) | ||
} | ||
|
||
} |
65 changes: 65 additions & 0 deletions
65
src/app/pages/mantenimientos/medicos/medico.component.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
<div class="row"> | ||
<div class="col-md-6"> | ||
<div class="card"> | ||
<div class="card-body"> | ||
<h4 class="card-title">Médico</h4> | ||
<h6 class="card-subtitle">Actualizar información</h6> | ||
<form class="form-horizontal p-t-20" [formGroup]="medicoForm" (ngSubmit)="guardarMedico()"> | ||
|
||
<div class="form-group row" *ngIf="medicoSeleccionado"> | ||
<label for="exampleInputuname3" class="col-sm-3 control-label">Foto</label> | ||
<div class="col-sm-9"> | ||
<div class="input-group"> | ||
<img class="w200" [src]="medicoSeleccionado.img | imagen:'medicos'"/> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
<div class="form-group row"> | ||
<label for="exampleInputuname3" class="col-sm-3 control-label">Nombre</label> | ||
<div class="col-sm-9"> | ||
<div class="input-group"> | ||
<div class="input-group-addon"><i class="ti-user"></i></div> | ||
<input type="text" class="form-control" id="exampleInputuname3" placeholder="Nombre del médico" formControlName="nombre"> | ||
</div> | ||
</div> | ||
</div> | ||
<div class="form-group row"> | ||
<label for="exampleInputEmail3" class="col-sm-3 control-label">Hospital</label> | ||
<div class="col-sm-9"> | ||
<div class="input-group"> | ||
<select class="form-control" formControlName="hospital"> | ||
<option value="">Seleccione Hospital</option> | ||
<option [value]="hospital._id" | ||
*ngFor="let hospital of hospitales">{{hospital.nombre}}</option> | ||
</select> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
<div class="form-group row m-b-0"> | ||
<div class="offset-sm-3 col-sm-9"> | ||
<button type="submit" class="btn btn-success waves-effect waves-light" [disabled]="medicoForm.invalid"> | ||
<i class="fa fas fa-save mr-1"></i> | ||
{{(medicoSeleccionado ? 'Actualizar' : 'Crear')}} | ||
</button> | ||
</div> | ||
</div> | ||
</form> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
<div class="col-md-6 animated fadeIn fast" *ngIf="hospitalSeleccionado"> | ||
<div class="card"> | ||
<div class="card-body"> | ||
<h4 class="card-title">Hospital</h4> | ||
<h6 class="card-subtitle">{{hospitalSeleccionado.nombre}}</h6> | ||
|
||
<img class="img-thumbnail" [src]="hospitalSeleccionado.img | imagen:'hospitales'"/> | ||
|
||
</div> | ||
</div> | ||
</div> | ||
|
||
</div> |
Oops, something went wrong.