-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Funcion para insertar personas en la base.
-- select f_crear_personas( cant_personas_a_crear );
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- DROP FUNCTION f_crear_personas(integer);
CREATE OR REPLACE FUNCTION f_crear_personas(_cant INTEGER) 
   RETURNS INTEGER AS 
$BODY$
  DECLARE 
	_apellido text;
	_nombre text;
	_usuario text;
	i integer;
	_persona integer;
	_dc integer;
	nro_doc integer;
	loc integer;
	loc2 integer;
	loc_cant integer;
BEGIN
nro_doc := 1000000;


SELECT  count(localidad) into loc_cant
FROM mug_localidades;



FOR i IN 1 .. _cant LOOP
  _apellido := 'Apellido ' || i::varchar;	
  _nombre   := 'Nombre ' || i::varchar;	
  _usuario  := i::text;
  nro_doc  := nro_doc  + i;


  SELECT  localidad into loc
  FROM mug_localidades
  LIMIT 1 OFFSET RANDOM () * (loc_cant);

  SELECT  localidad into loc2
  FROM mug_localidades
  LIMIT 1 OFFSET RANDOM () * (loc_cant);

  INSERT INTO mdp_personas 
	(apellido,
	nombres,
	sexo,
	fecha_nacimiento,
	nacionalidad,
	usuario)
	VALUES (_apellido, _nombre, 'F', '01-01-1970', 1, _usuario);
	

	_persona := (SELECT currval('mdp_personas_seq'));

	INSERT INTO mdp_personas_documentos (persona, tipo_documento, nro_documento, pais_documento) values (_persona, 0, nro_doc, 54);
	
	-- 1er dato censal
	INSERT INTO mdp_datos_censales (persona, fecha_relevamiento, fecha_actualizacion)
		values (_persona, '01-01-2010','01-01-2010');
	_dc := (SELECT currval('mdp_datos_censales_seq'));

	INSERT INTO mdp_datos_personales (dato_censal, procedencia_localidad)
		values (_dc, loc);

	-- 2do dato censal
	INSERT INTO mdp_datos_censales (persona, fecha_relevamiento, fecha_actualizacion)
		values (_persona, '25-02-2010','25-02-2010');
	_dc := (SELECT currval('mdp_datos_censales_seq'));

	INSERT INTO mdp_datos_personales (dato_censal, procedencia_localidad)
		values (_dc, loc2);

  
  -- DOCENTES. Inserto un docente cada 10 docentes
  IF MOD(_persona,5) = 0 THEN
     INSERT INTO sga_docentes (persona, legajo, estado)     VALUES (_persona, 'L' || _persona::text, 'A');
  END IF;
   
 END LOOP;
 
 
 RETURN i;
 
  END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
-- ++++++++++++++++++++++++++++++ Fin Function f_crear_personas(integer) ++++++++++++++++

-- REVOKE EXECUTE ON FUNCTION f_crear_personas (integer) FROM public;
GRANT EXECUTE ON FUNCTION f_crear_personas (integer) to public;

/* 
 -- delete from mdp_personas_documentos;
 -- delete from mdp_personas;

  select f_crear_personas(10000);

  -- select * from mdp_personas;
 */ 


