/************************************************************************************************************************/
/* Definicion del cuerpo del paquete PAC_NFL										*/
/************************************************************************************************************************/

CREATE OR REPLACE PACKAGE BODY PAC_NFL 
IS
/****************************************************************************************************************/
/* Procedimiento Insertar_Conferencia										*/
/****************************************************************************************************************/

	PROCEDURE insertar_conferencia(con_id IN NUMBER, con_nombre IN VARCHAR2)
	IS
		Integridad EXCEPTION;
		PRAGMA EXCEPTION_INIT(Integridad, -00001);
	BEGIN
		INSERT INTO Conferencia 
		VALUES(con_id, con_nombre);
		
	EXCEPTION
		WHEN Integridad THEN
			DBMS_OUTPUT.PUT_LINE(CHR(10) || 'Codigo de la conferencia ya existe... Datos no insertados');			
			

	END insertar_conferencia;

/****************************************************************************************************************/
/* Procedimiento Insertar_Division										*/
/****************************************************************************************************************/
	PROCEDURE insertar_division(div_id IN NUMBER, div_nombre IN VARCHAR2, con_id IN NUMBER)
	IS
		Integridad EXCEPTION;
		PRAGMA EXCEPTION_INIT(Integridad, -02291);
	BEGIN
		INSERT INTO division 
		VALUES(div_id, div_nombre, con_id);

	EXCEPTION
		WHEN Integridad THEN
			DBMS_OUTPUT.PUT_LINE(CHR(10) || 'Conferencia no existe . . . Datos no insertados');			
		
	END insertar_division;

/****************************************************************************************************************/
/* Procedimiento Insertar_Equipo										*/
/****************************************************************************************************************/	
	PROCEDURE insertar_equi(equi_id IN NUMBER, equi_nombre IN VARCHAR2, equi_ciudad IN VARCHAR2, div_id IN NUMBER)
	IS
		Integridad EXCEPTION;
		PRAGMA EXCEPTION_INIT(Integridad, -02291);
	BEGIN
		INSERT INTO Equipo 
		VALUES(equi_id, equi_nombre, equi_ciudad, div_id);

	EXCEPTION
		WHEN Integridad THEN
			DBMS_OUTPUT.PUT_LINE(CHR(10) || 'Division no existe. . . ');			
			
	END insertar_equi;

/****************************************************************************************************************/
/* Procedimiento Insertar_Partido2										*/
/****************************************************************************************************************/

	PROCEDURE insertar_partido2(p_id_partido IN NUMBER, v_equiNombreVis IN VARCHAR2, v_equiPuntosVis IN NUMBER, v_equiNombreLoc IN VARCHAR2, v_equiPuntosLoc IN NUMBER, p_fecha IN DATE)
	IS
		Integridad EXCEPTION;
		PRAGMA EXCEPTION_INIT(Integridad, -00001);
		v_equiIdLoc	NUMBER;
		v_equiIdVis	NUMBER;
	BEGIN
		SELECT	equiid
		INTO   	v_equiIdLoc
		FROM	Equipo
		WHERE	equiciudad = v_equiNombreLoc;

		SELECT	equiid
		INTO   	v_equiIdVis
		FROM	Equipo
		WHERE	equiciudad = v_equiNombreVis;		

		INSERT INTO Partido 
		VALUES(p_id_partido, v_equiIdLoc, v_equiPuntosLoc, v_equiIdVis, v_equiPuntosVis, p_fecha);

		actualizar_estadisticas(v_equiIdLoc, v_equiPuntosLoc, v_equiIdVis, v_equiPuntosVis);

	EXCEPTION
		WHEN Integridad THEN
			DBMS_OUTPUT.PUT_LINE(CHR(10) || 'Partido ya existe .... Datos no insertados');			
	END insertar_partido2;

/****************************************************************************************************************/
/* Procedimiento actualizar_estadisticas									*/
/****************************************************************************************************************/
	
	PROCEDURE actualizar_estadisticas(id_equiloc IN NUMBER, ptos_equi_loc IN NUMBER, id_equivis IN NUMBER, ptos_equi_vis IN NUMBER)
	IS
		
	BEGIN
		IF ptos_equi_loc < ptos_equi_vis THEN
		
			UPDATE Estadistica
			SET    estpg = estpg + 1
			WHERE  equiid = id_equivis;

			UPDATE Estadistica
			SET    estpp = estpp + 1
			WHERE  equiid = id_equiloc;

		ELSIF ptos_equi_loc > ptos_equi_vis THEN
			
			UPDATE Estadistica
			SET    estpg = estpg + 1
			WHERE  equiid = id_equiloc;

			UPDATE Estadistica
			SET    estpp = estpp + 1
			WHERE  equiid = id_equivis;

		ELSE 
			UPDATE Estadistica
			SET    estpe = estpe + 1
			WHERE  equiid IN (id_equivis, id_equiloc);
			
		END IF;

		UPDATE Estadistica
		SET estpuntosafavor = estpuntosafavor + ptos_equi_vis, estpuntosencontra = estpuntosencontra + ptos_equi_loc 
		WHERE  equiid = id_equivis;

		UPDATE Estadistica
		SET    estpuntosafavor = estpuntosafavor + ptos_equi_loc, estpuntosencontra = estpuntosencontra + ptos_equi_vis
		WHERE  equiid = id_equiloc;
	  	
	END actualizar_estadisticas;

END PAC_NFL;
/


