Skip to content

Commit

Permalink
tratando de arreglar fetch y controller
Browse files Browse the repository at this point in the history
  • Loading branch information
FranciscoGonzalez03 committed Dec 3, 2023
1 parent eaf0796 commit aa48fe3
Show file tree
Hide file tree
Showing 3 changed files with 165 additions and 25 deletions.
130 changes: 118 additions & 12 deletions ENTREGA 6/src/Frontend/abrir-incidentePrueba.html
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,15 @@ <h1 class="titulo">Abrir incidente</h1>
<div class="opciones">
<label class="label" for="selectEstablecimiento">Selecciona la estacion o sucursal:</label>
<select class="input" id="selectEstablecimiento" v-model="establecimientoSeleccionado">
<option v-for="establecimiento in establecimientosFiltrados" :value="establecimiento">{{ establecimiento }}</option>
<option v-for="establecimiento in establecimientosFiltrados" :value="establecimiento">{{ establecimiento.nombre }}</option>
</select>
</div>
<div style="height: 20px"></div>
<div class="opciones">
<label class="label" for="selectMonitoreable">Selecciona un Servicio:</label>
<select class="input" id="selectMonitoreable">
<select class="input" id="selectMonitoreable" v-model="servicioSeleccionado">
<!-- Aquí se llenará la lista de monitoreables/servicios con JavaScript -->
<option v-for="servicio in servicios" :value="servicio">{{ servicio.nombre }}</option>
</select>
</div>
<div style="height: 20px"></div>
Expand All @@ -67,32 +68,137 @@ <h1 class="titulo">Abrir incidente</h1>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<!--<script> ESTA PARTE ERA MODELO VISUAL-->
<!-- new Vue({-->
<!-- el: '#app',-->
<!-- data: {-->
<!-- entidadSeleccionada: 'Medio de Transporte',-->
<!-- entidades: ["Medio de Transporte", "Empresa"],-->
<!-- establecimientos: {-->
<!-- 'Medio de Transporte': ["Estacion 1", "Estacion 2"],-->
<!-- 'Empresa': ["Sucursal 1", "Sucursal 2"]-->
<!-- },-->
<!-- establecimientoSeleccionado: '',-->
<!-- descripcion: ''-->
<!-- },-->
<!-- computed: {-->
<!-- establecimientosFiltrados() {-->
<!-- return this.establecimientos[this.entidadSeleccionada];-->
<!-- }-->
<!-- },-->
<!-- methods: {-->
<!-- actualizarEstablecimientos() {-->
<!-- this.establecimientoSeleccionado = '';-->
<!-- },-->
<!-- guardarIncidente() {-->
<!-- console.log('Descripción:', this.descripcion);-->
<!-- console.log('Establecimiento seleccionado:', this.establecimientoSeleccionado);-->
<!-- }-->
<!-- }-->
<!-- });-->
<!--</script>-->
<script>
new Vue({
el: '#app',
data: {
entidadSeleccionada: 'Medio de Transporte',
entidades: ["Medio de Transporte", "Empresa"],
establecimientos: {
'Medio de Transporte': ["Estacion 1", "Estacion 2"],
'Empresa': ["Sucursal 1", "Sucursal 2"]
},
entidadSeleccionada: '',//el id
entidades: [], // cargar las entidades etc
establecimientos: [],
establecimientoSeleccionado: '',
servicios: [],
servicioSeleccionado: '',
descripcion: ''
},
computed: {
establecimientosFiltrados() {
return this.establecimientos[this.entidadSeleccionada];
return this.establecimientos.filter(establecimiento => establecimiento.entidad === this.entidadSeleccionada);
}
},
methods: {
actualizarEstablecimientos() {
this.establecimientoSeleccionado = '';
// Hacer un fetch para obtener los establecimientos de la entidad seleccionada
fetch(`http://localhost:3000/api/entidades/${this.entidadSeleccionada}/establecimientos`)
.then(response => response.json())
.then(establecimientos => {
this.establecimientos = establecimientos;
this.establecimientoSeleccionado = ''; // Resetear la selección
this.servicios = []; // Resetear la lista de servicios
})
.catch(error => {
console.error('Error en la solicitud:', error);
alert(`Hubo un error en la solicitud:\n\n${error.message}`);
});


},
actualizarServicios() {
// Hacer un fetch para obtener los servicios del establecimiento seleccionado
fetch(`http://localhost:3000/api/establecimientos/${this.establecimientoSeleccionado}/servicios`)
.then(response => response.json())
.then(servicios => {
this.servicios = servicios;
});
},
guardarIncidente() {
console.log('Descripción:', this.descripcion);
console.log('Establecimiento seleccionado:', this.establecimientoSeleccionado);
// Enviar los datos al servidor (puedes usar fetch o axios)
const incidente = {
entidad: this.entidadSeleccionada,
establecimiento: this.establecimientoSeleccionado,
servicio: this.servicioSeleccionado,
descripcion: this.descripcion,
fechaInicio: document.getElementById('fecha-inicio').value
};

fetch('http://localhost:3000/incidentes', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(incidente),
})
.then(response => response.json())
.then(data => {
console.log('Incidente creado con éxito:', data);
// Aquí podrías redirigir o realizar otras acciones después de crear el incidente
})
.catch((error) => {
console.error('Error al crear el incidente:', error);
});
}
},
mounted() {
// Cuando el componente se monta, obtener la lista inicial de entidades
// fetch('http://localhost:3000/api/entidades')
// .then(response => {
// if (!response.ok) {
// throw new Error(`Error en la solicitud primer then: ${response.status} ${response.statusText}`);
// }
// return response.json();
// })
// .then(entidades => {
// this.entidades = entidades;
// })
// .catch(error => {
// console.error('Error en la solicitud:', error);
// alert(`Hubo un error en la solicitud:\n\n${error.message}`);
// });
fetch(`http://localhost:3000/api/entidades`)
.then(response => {
if (response.status >= 400) {
alert("Hubo un error en el API")
} else {
return response.json()
}
})
.then(entidades => {
this.entidades = entidades;
})
.catch(error => {
console.error('Error en la solicitud:', error);
alert(`Hubo un error en la solicitud:\n\n${error.message}`);
});

}
});
</script>
Expand Down
43 changes: 31 additions & 12 deletions ENTREGA 6/src/main/java/com/example/hibernate/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,38 @@

public class Main {
public static void main(String[] args) {
// Configurar Javalin
Javalin app = Javalin.create(config -> {
config.registerPlugin(new HibernatePlugin(ConfigHibernate::new));
}).start(7000);
try {
// Configurar Javalin
Javalin app = Javalin.create(config -> {
config.registerPlugin(new HibernatePlugin(ConfigHibernate::new));
}).start(3000);
System.out.println("Servidor Javalin iniciado correctamente en el puerto 3000 antes de los get");
// Rutas
alert("JAVALIN CREADO");
app.get("/api/entidades", EntidadController::getEntidades);
app.get("/api/entidades/:entidadId/establecimientos", EstablecimientoController::getEstablecimientos);
app.get("/api/establecimientos/:establecimientoId/servicios", ServicioController::getServicios);
app.get("/api/entidades/:entidadId/establecimientos", ctx -> {
// Obtener el parámetro de la URL (entidadId)
String entidadId = ctx.pathParam("entidadId");

// Lógica para obtener los establecimientos de la entidad con ID entidadId
// ...

// Devolver la lista de establecimientos como JSON
ctx.json(listaDeEstablecimientos);
});


// Rutas
app.get("/api/entidades", EntidadController::getEntidades);
app.get("/api/entidades/:entidadId/establecimientos", EstablecimientoController::getEstablecimientos);
app.get("/api/establecimientos/:establecimientoId/servicios", ServicioController::getServicios);
// Detener la aplicación al cerrar
//app.events(event -> event.serverStopping(ConfigHibernate::closeSessionFactory));

// Otros controladores y rutas...

// Detener la aplicación al cerrar
app.events(event -> event.serverStopping(ConfigHibernate::closeSessionFactory));
// Mensaje de registro indicando que el servidor se inició correctamente
System.out.println("Servidor Javalin iniciado correctamente en el puerto 3000");
} catch (Exception e) {
// Si hay algún error al iniciar el servidor, imprime un mensaje de error
e.printStackTrace();
System.err.println("Error al iniciar el servidor Javalin: " + e.getMessage());
}
}
}
17 changes: 16 additions & 1 deletion ENTREGA 6/src/main/java/controllers/EntidadController.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
package controllers;

import java.util.Arrays;
import io.javalin.http.Context;
import java.util.List;

public class EntidadController {

public static void getEntidades(Context ctx) {
// Lógica para obtener y devolver la lista de entidades
// Lógica para obtener las entidades desde tu backend
// Por ejemplo:
List<String> listaDeEntidades = obtenerListaDeEntidades();

// Devolver las entidades como JSON
ctx.json(listaDeEntidades);
}

private static List<String> obtenerListaDeEntidades() {
// Lógica para obtener las entidades desde tu base de datos o en memoria
// Por ejemplo:
return List.of("Entidad1", "Entidad2", "Entidad3");
}
}

0 comments on commit aa48fe3

Please sign in to comment.