# EJERCICIOS evaluación contínua #2
# La entrega debe ser en este formato: renting_cars2_tu_nombre_tu_apellido.sql
# Por ejemplo: renting_cars2_Robin_Hood.sql
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.25 puntos
# Correctamente resuelto: 0.50 puntos


# 01. Reforma la vista facturación para incluir :
-- el nombre del país, 
-- la marca, 
-- el modelo y 
-- los concesionarios de cada vehículo
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.25 puntos
# Correctamente resuelto: 0.50 puntos


# PROCEDIMIENTOS ALMACENADOS

# 02. Crea un SP (llamado cars_no_rent) para mostrar los modelos que no se han alquilado nunca
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.25 puntos
# Correctamente resuelto: 0.50 puntos


# 03. Crea un SP (llamado list_fact_by_year) que devuelva por cada año la facturación anual
-- Habrá por tanto dos columnas en la salida: "año" y "facturación anual" 
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.25 puntos
# Correctamente resuelto: 0.50 puntos


# 04. Crea un SP (llamado fact_by_year) que devuelva la facturación anual según el año que se indique
-- Habrá por tanto una única respuesta: "facturación anual" 
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.25 puntos
# Correctamente resuelto: 0.50 puntos


# 05. Crea un SP (llamado facturacion_pais) para saber la facturación total de un pais en concreto
-- Recibirá como parametro de entrada el nombre del pais y devolverá la cantidad de dinero facturada
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.50 puntos
# Correctamente resuelto: 1.00 puntos 


# 06. Crea un SP (llamado update_units_cars) para añadir vehículos a la flota, con estos parámetros:
-- marca y nombre del modelo,
-- unidades a añadir
-- Ejecútalo así:
CALL insert_cars("Fiat", "Panda", 3); # Y como había 2, ahora deben ser 5
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.50 puntos
# Correctamente resuelto: 1.00 puntos 


# 07. Crea un SP (llamado car_rent) para alquilar un vehículo, con estos parámetros:
-- nombre y apellido del cliente
-- marca y nombre del modelo
-- fecha de inicio y fin de alquiler
-- Si no hay una unidad disponible debe aparecer el mensaje:
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.50 puntos
# Correctamente resuelto: 1.00 puntos 


# FUNCIONES

# 08. Crea una función (llamada country) que, dado el nombre de un país
-- devuelva su id de la tabla paises
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.25 puntos
# Correctamente resuelto: 0.50 puntos 


# 09. Crea una función (llamada fact_total_cliente) que, dado el nombre y apellido de un cliente,
-- devuelva su facturación total (incluso si es 0);
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.25 puntos
# Correctamente resuelto: 0.50 puntos 


# 10. Crea una función (llamada total_fact_year) que, dado un año, 
-- devuelva la facturación total de ese año;
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.25 puntos
# Correctamente resuelto: 0.50 puntos 


# 11. Crea una función (llamada fact_model) que, dados la marca y el nombre del modelo
-- devuelva la facturación total de ese modelo, incluso si es 0;
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.50 puntos
# Correctamente resuelto: 1.00 puntos 


# 12. Crea una función (llamada units_conc) que, dado el nombre del concesionario
-- devuelva la cantidad de unidades que tiene ese concesionario
-- o bien cero si ese concesionario no está en la BD;
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.50 puntos
# Correctamente resuelto: 1.00 puntos 

# TRIGGERS

# 13. Crea un trigger que, en caso de que se anule un alquiler, actualice el stock actual.
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.50 puntos
# Correctamente resuelto: 1.00 puntos 

# 14. Crea una tabla de nombre incidencias. Tendrá dos columnas:
-- marca
-- modelo
-- incidencia (varchar 100)
-- fecha_incidencia (por defecto pondrá la fecha, hora, minutos y segundos actuales)
-- Modifica el trigger check_unidades_before_insert para que, en caso de no disponer
-- de stock, se inserte este mensaje en esa el campo incidencia:
-- "Falló el stock"
# No resuelto o mal resuelto: 0 puntos
# Resuelto con errores leves: 0.50 puntos
# Correctamente resuelto: 1.00 puntos 

