Coder Social home page Coder Social logo

energydata's Introduction

Energydata

Proyecto de Gestión de Vuelos

Este es un proyecto de gestión de vuelos que permite administrar información sobre vuelos, aeropuertos y otros datos relacionados. El proyecto está desarrollado en Spring Boot y utiliza una base de datos relacional para el almacenamiento de datos.

Características

  • Administración de vuelos: Crear, actualizar y eliminar vuelos.
  • Información de aeropuertos: Visualizar detalles de aeropuertos, como ubicación geográfica.
  • Agrupación de vuelos: Obtener información agrupada de vuelos por destino, consumo de combustible, etc.
  • Interfaz web: Interfaz de usuario basada en Thymeleaf para facilitar la interacción con el sistema.

Tecnologías utilizadas

  • Java
  • Spring Boot
  • Spring Data JPA
  • Thymeleaf
  • HTML/CSS
  • MySQL (u otro motor de base de datos relacional)

Configuración del proyecto

  1. Clona el repositorio del proyecto: git clone https://github.com/tu-usuario/proyecto-gestion-vuelos.git
  2. Importa el proyecto en tu IDE favorito.
  3. Configura la conexión a la base de datos en el archivo application.properties.
  4. Ejecuta la aplicación.

Configuración de la base de datos

La aplicación utiliza una base de datos relacional para almacenar la información de los vuelos y aeropuertos. A continuación se muestran los scripts SQL necesarios para crear las tablas requeridas:

-- Crear tabla de vuelos
CREATE TABLE vuelo (
  id_vuelo INT PRIMARY KEY AUTO_INCREMENT,
  ruta_vuelo VARCHAR(255) NOT NULL,
  origen_codigo VARCHAR(255) NOT NULL,
  destino_codigo VARCHAR(255) NOT NULL,
  carga_pasajeros DOUBLE NOT NULL,
  carga DOUBLE NOT NULL,
  consumo_ultimos_100 DOUBLE NOT NULL,
  datos_meteorologicos VARCHAR(255),
  FOREIGN KEY (origen_codigo) REFERENCES aeropuerto (codigo),
  FOREIGN KEY (destino_codigo) REFERENCES aeropuerto (codigo)
);

-- Crear tabla de aeropuertos
CREATE TABLE aeropuerto (
  codigo VARCHAR(255) PRIMARY KEY,
  nombre VARCHAR(255) NOT NULL,
  latitud DOUBLE NOT NULL,
  longitud DOUBLE NOT NULL,
  pax_total INT NOT NULL
);

drop table usuario;
CREATE TABLE usuario (
	id_usuario INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(45) NULL,
    password VARCHAR(128) NULL,
    PRIMARY KEY (id_usuario)
);


drop table if exists rol;
CREATE TABLE rol (
	id_rol INT NOT NULL AUTO_INCREMENT,
    nombre VARCHAR(45) NULL,
    id_usuario INT NULL,
    PRIMARY KEY(id_rol),
    INDEX id_rol_usuario_idx (id_usuario ASC) VISIBLE,
    CONSTRAINT id_rol_usuario
    FOREIGN KEY(id_usuario)
    REFERENCES usuario(id_usuario)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
);
-- datos de prueba

INSERT INTO `test`.`usuario` (`username`, `password`) VALUES ('admin', '123');
INSERT INTO `test`.`usuario` (`username`, `password`) VALUES ('user', '123');


INSERT INTO `test`.`rol` (`nombre`, `id_usuario`) VALUES ('ROLE_ADMIN', '1');
INSERT INTO `test`.`rol` (`nombre`, `id_usuario`) VALUES ('ROLE_USER', '1');
INSERT INTO `test`.`rol` (`nombre`, `id_usuario`) VALUES ('ROLE_USER', '2');


UPDATE `test`.`usuario` SET `password` = '$2a$10$MMyCa9vKGG.LvseRZLG7CupjzV4i1l8EoHOKcT29IRZX6jnwRrnZC' WHERE (`id_usuario` = '1');
UPDATE `test`.`usuario` SET `password` = '$2a$10$6VA2ZoSpiwq6CyJrQko4BuZKUOOUVMytfHAPrE9VteOXrie6pVwu6' WHERE (`id_usuario` = '2');

drop table persona;
CREATE TABLE if not exists `test`.`persona` (
  `id_persona` INT NOT NULL AUTO_INCREMENT,
  `nombre` VARCHAR(45) NULL,
  `apellido` VARCHAR(45) NULL,
  `email` VARCHAR(45) NULL,
  `telefono` VARCHAR(45) NULL,
  PRIMARY KEY (`id_persona`));
  
alter table persona add column contrasena VARCHAR(128) NULL;

ALTER TABLE usuario
ADD id_persona INT;
ALTER TABLE usuario
ADD CONSTRAINT fk_usuario_persona
FOREIGN KEY (id_persona)
REFERENCES persona(id_persona)
ON DELETE SET NULL
ON UPDATE SET NULL;

-- procedimiento insertar usuario -----------------------------------------------------------------------
drop procedure InsertarNuevoRegistro;
DELIMITER //
CREATE PROCEDURE InsertarNuevoRegistro(IN p_email VARCHAR(255), IN p_contrasena VARCHAR(255), IN p_id_persona INT)
BEGIN
    -- Declarar variables locales
    DECLARE v_username VARCHAR(255);
    DECLARE v_password VARCHAR(255);

    -- Generar el username a partir del email
    SET v_username = SUBSTRING_INDEX(p_email, '@', 1);

    -- Asignar la contraseña tal como está
    SET v_password = p_contrasena;

    -- Insertar el registro en tabla2
    INSERT INTO usuario (username, password, id_persona)
    VALUES (v_username, v_password, p_id_persona);
END //

DELIMITER ;
insert into persona (email, contrasena)
values ()
;


-- CALL InsertarNuevoRegistro('[email protected]', 'nueva_contrasena', 20);
-- triger insertar usuario
drop trigger InsertarRegistroPersona;
DELIMITER //
CREATE TRIGGER InsertarRegistroPersona AFTER INSERT ON persona
FOR EACH ROW
BEGIN
    CALL InsertarNuevoRegistro(NEW.email, NEW.contrasena, NEW.id_persona);
END //
	
DELIMITER ;




-- insertar rol ------------------------------------------------------------------------------------
drop procedure InsertarRolUsuarioProcedure;
DELIMITER //

CREATE PROCEDURE InsertarRolUsuarioProcedure(IN p_id_usuario INT)
BEGIN
    INSERT INTO rol (nombre, id_usuario)
    VALUES ('ROLE_USER', p_id_usuario);
END //

DELIMITER ;

-- CALL InsertarRolUsuarioProcedure(123); -- Reemplaza 123 con el valor deseado

DELIMITER //

CREATE TRIGGER InsertarRolUsuarioTrigger
AFTER INSERT
ON usuario FOR EACH ROW
BEGIN
    CALL InsertarRolUsuarioProcedure(NEW.id_usuario);
END //
DELIMITER ;

show triggers;

drop procedure UpdateTabla;
-- actualizar tabla -------------------------------------------------
DELIMITER //

CREATE PROCEDURE UpdateTabla(IN p_id INT, IN p_email VARCHAR(255), IN p_contrasena VARCHAR(255))
BEGIN
    UPDATE usuario
    
    SET username =  SUBSTRING_INDEX(p_email, '@', 1), password = p_contrasena
    WHERE id_persona = p_id;
END //

DELIMITER ;



drop trigger update_trigger;
show triggers;
DELIMITER //
CREATE TRIGGER update_trigger
AFTER UPDATE ON persona
FOR EACH ROW
BEGIN
     CALL UpdateTabla(NEW.id_persona, NEW.email, NEW.contrasena);
END //

DELIMITER ;

Contribuciones

Las contribuciones son bienvenidas. Si encuentras algún error, tienes alguna idea de mejora o deseas agregar nuevas características, puedes hacerlo a través de pull requests.

Licencia

Este proyecto está bajo la Licencia MIT. Si utilizas este proyecto, asegúrate de cumplir con los términos de la licencia.

Contacto

Si tienes alguna pregunta o consulta sobre el proyecto, puedes contactarme a través de mi dirección de correo electrónico: correo

Referencias

Aquí tienes una lista de recursos útiles relacionados con este proyecto:

Además, estos son algunos tutoriales y ejemplos que pueden ser útiles:

Recursos adicionales

Aquí hay un curso recomendado de Udemy que cubre los conceptos fundamentales relacionados con este proyecto:

Recuerda consultar estos recursos para obtener más información y ayuda mientras trabajas en tu proyecto.

energydata's People

Contributors

sebaspatric avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.