 SET NAMES utf8;
DELIMITER $$

DROP PROCEDURE IF EXISTS `geo_int_adr_tools`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `geo_int_adr_tools`(
	IN _MODE VARCHAR(150),
	IN _Param_A VARCHAR(255),
	IN _Param_B VARCHAR(255),
	IN _Param_C VARCHAR(255),
	IN _Param_D VARCHAR(255),
	IN _Param_E VARCHAR(255),
	IN _Param_F VARCHAR(255),
	INOUT _Param_G VARCHAR(255)
)
SPROC: BEGIN
	/*
	_MODE

	*/
	
	DECLARE _Bool BOOLEAN;
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'_atom_adres'
		Zwraca w zmiennych!!!! skladowe adresow dla Miejscowosci lub adresu
		Parametry
		_Param_A		geo_int_miejsca_ID
		_Param_B		geo_int_adresy_ID
		_Param_C		NrPos
		_Param_D		NrLoc
		_Param_E		AdrDescr
		_Param_F		ZipCode
		_Param_G		Result

		Zwraca jako Result '' 
		
		CALL geo_int_adr_tools('_atom_adres', 'PL0935067', 'PL0933016-17088', '', '', '', '', @_Param_G);
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE = '_atom_adres' THEN
		SET 
			@_geo_int_adr_part.ID_Miejsca = IFNULL(_Param_A, ''),
			@_geo_int_adr_part.ID_Miejsca.Old = IFNULL(_Param_A, ''),
			@_geo_int_adr_part.ID_Adresu = IFNULL(_Param_B, '')
			/*
			@_geo_int_adr_part.NrPos = IFNULL(_Param_C, ''),
			@_geo_int_adr_part.NrLoc = IFNULL(_Param_D, ''),
			@_geo_int_adr_part.AdrDescr = IFNULL(_Param_E, ''),
			@_geo_int_adr_part.ZipCode = IFNULL(_Param_F, ''),
			@_geo_int_adr_part.Adres = IFNULL(_Param_G, '')
			*/
		;
		IF (@_geo_int_adr_part.ID_Adresu = '') AND (@_geo_int_adr_part.ID_Miejsca = '') THEN
			LEAVE SPROC;
		ELSE
			IF @_geo_int_adr_part.ID_Adresu != '' THEN
				SELECT
					a.ID_Miejsca,
					CONCAT(TRIM(c.DisplayValue), _ConcatStr(a.Nazwa_2, a.Nazwa_1, ' ')) AS Ulica,
					IF(@_geo_int_adr.ZipCode != '', @_geo_int_adr.ZipCode, IFNULL(a.ZipCode, '')) AS ZipCode
				INTO
					@_geo_int_adr_part.ID_Miejsca.from.adres,
					@_geo_int_adr_part.Ulica,
					@_geo_int_adr_part.ZipCode
				FROM `geo_int_adresy` a 
				LEFT JOIN `geo_int_adresy_cechy` c ON c.Cecha = a.GUS_CECHA
				WHERE
					a.ID  = @_geo_int_adr_part.ID_Adresu
				;
				
				-- /* bedzie potrzebne w wyzszej procedurze
				IF @_geo_int_adr_part.ID_Miejsca = '' THEN
					SET @_geo_int_adr_part.ID_Miejsca = @_geo_int_adr_part.ID_Miejsca.from.adres;
				END IF;
				-- */
			END IF;
			IF @_geo_int_adr_part.ID_Miejsca != '' THEN
				IF @_geo_int_adr_part.ID_Adresu = '' THEN
					SET
						@_geo_int_adr_part.Ulica = '',
						@_geo_int_adr_part.ZipCode = ''
					;	
				END IF;
				SELECT
					-- _VarStr(CONCAT(m.Nazwa_Child_Parent_Info, ' (woj.', m.Woj_Str, ', pow.', m.Pow_Str, ', gm.', m.Gmi_Str, ')')) AS Info,  
					_VarStr(CONCAT(m.Nazwa_Child_Parent_Info_Sort, ' (', IF(NOT m.IsPartOf, _ConcatSepSTR(m.Rodz_Miejsca, ' - '), ''), 'woj.', m.Woj_Str, ', pow.', m.Pow_Str, ', gm.', m.Gmi_Str, ')')) AS Info,  
					m.Nazwa_Child_Parent AS Nazwa_Miejsca,
					m.Woj_Str,
					m.Pow_Str,
					m.Gmi_Str,
					m.Rodz_Miejsca
				INTO
					@_geo_int_adr_part.Info,
					@_geo_int_adr_part.Nazwa_Miejsca,
					@_geo_int_adr_part.Woj_Str,
					@_geo_int_adr_part.Pow_Str,
					@_geo_int_adr_part.Gmi_Str,
					@_geo_int_adr_part.Rodz_Miejsca
				FROM `v_geo_int_miejsca` m 
				WHERE
					m.ID  = @_geo_int_adr_part.ID_Miejsca
				;
			END IF;
			
			-- SET
			-- 	@_geo_int_adr_part.Adres.gm.woj =
			IF (LOCATE(CONCAT('(', @_geo_int_adr_part.Gmi_Str, ')'), @_geo_int_adr_part.Nazwa_Miejsca) > 0) OR
			   (@_geo_int_adr_part.Gmi_Str = @_geo_int_adr_part.Nazwa_Miejsca)
			THEN
				SET @_geo_int_adr_part.Gmi_Str = '';
			END IF;
			
			SET
				@_geo_int_adr_part.Adres.gm.woj =
				CONCAT(
					' (', 
					_ConcatStr(@_geo_int_adr_part.Gmi_Str, @_geo_int_adr_part.Woj_Str, ', '),
					')'
				)	
			;
		END IF;
	END IF;	--	IF _MODE = '_atom_adres'

					IF _MODE = '_atom_adres!!!!' THEN
						SET 
							@_geo_int_adr_part.ID_Miejsca = IFNULL(_Param_A, ''),
							@_geo_int_adr_part.ID_Miejsca.Old = IFNULL(_Param_A, ''),
							@_geo_int_adr_part.ID_Adresu = IFNULL(_Param_B, '')
							/*
							@_geo_int_adr_part.NrPos = IFNULL(_Param_C, ''),
							@_geo_int_adr_part.NrLoc = IFNULL(_Param_D, ''),
							@_geo_int_adr_part.AdrDescr = IFNULL(_Param_E, ''),
							@_geo_int_adr_part.ZipCode = IFNULL(_Param_F, ''),
							@_geo_int_adr_part.Adres = IFNULL(_Param_G, '')
							*/
						;
						IF (@_geo_int_adr_part.ID_Adresu = '') AND (@_geo_int_adr_part.ID_Miejsca = '') THEN
							LEAVE SPROC;
						ELSE
							IF @_geo_int_adr_part.ID_Adresu != '' THEN
								SELECT
									a.ID_Miejsca,
									-- _VarStr(CONCAT(m.Rodz_Miejsca, ' ', m.Nazwa_Child_Parent, ' (woj.', m.Woj_Str, ', pow.', m.Pow_Str, ', gm.', m.Gmi_Str, ')')) AS Info,  
									_VarStr(CONCAT(m.Nazwa_Child_Parent_Info, ' (woj.', m.Woj_Str, ', pow.', m.Pow_Str, ', gm.', m.Gmi_Str, ')')) AS Info,  
									IF(@_geo_int_adr_part.ID_Miejsca != a.ID_Miejsca, m.Nazwa_Child_Parent, m.Nazwa_Pelna) AS Nazwa_Miejsca,
									m.Woj_Str,
									m.Pow_Str,
									m.Gmi_Str,
									m.Rodz_Miejsca,
									CONCAT(TRIM(c.DisplayValue), _ConcatStr(a.Nazwa_2, a.Nazwa_1, ' ')) AS Ulica,
									IF(@_geo_int_adr.ZipCode != '', @_geo_int_adr.ZipCode, IFNULL(a.ZipCode, '')) AS ZipCode
								INTO
									@_geo_int_adr_part.ID_Miejsca.from.adres,
									@_geo_int_adr_part.Info,
									@_geo_int_adr_part.Nazwa_Miejsca,
									@_geo_int_adr_part.Woj_Str,
									@_geo_int_adr_part.Pow_Str,
									@_geo_int_adr_part.Gmi_Str,
									@_geo_int_adr_part.Rodz_Miejsca,
									@_geo_int_adr_part.Ulica,
									@_geo_int_adr_part.ZipCode
								FROM `geo_int_adresy` a 
								LEFT JOIN `geo_int_adresy_cechy` c ON c.Cecha = a.GUS_CECHA
								INNER JOIN `v_geo_int_miejsca` m ON m.ID = IF(@_geo_int_adr_part.ID_Miejsca != a.ID_Miejsca, @_geo_int_adr_part.ID_Miejsca, a.ID_Miejsca) -- ID_Miejsca  
								WHERE
									a.ID  = @_geo_int_adr_part.ID_Adresu
								;
								-- /* bedzie potrzebne w wyzszej procedurze
								IF @_geo_int_adr_part.ID_Miejsca = '' THEN
									SET @_geo_int_adr_part.ID_Miejsca = @_geo_int_adr_part.ID_Miejsca.from.adres;
								END IF;
								-- */
							ELSE
								SET
									@_geo_int_adr_part.Ulica = '',
									@_geo_int_adr_part.ZipCode = ''
								;	
								SELECT
									_VarStr(CONCAT(m.Nazwa_Child_Parent_Info, ' (woj.', m.Woj_Str, ', pow.', m.Pow_Str, ', gm.', m.Gmi_Str, ')')) AS Info,  
									m.Nazwa_Child_Parent AS Nazwa_Miejsca,
									m.Woj_Str,
									m.Pow_Str,
									m.Gmi_Str,
									m.Rodz_Miejsca
								INTO
									@_geo_int_adr_part.Info,
									@_geo_int_adr_part.Nazwa_Miejsca,
									@_geo_int_adr_part.Woj_Str,
									@_geo_int_adr_part.Pow_Str,
									@_geo_int_adr_part.Gmi_Str,
									@_geo_int_adr_part.Rodz_Miejsca
								FROM `v_geo_int_miejsca` m 
								WHERE
									m.ID  = @_geo_int_adr_part.ID_Miejsca
								;
							END IF;
							
							-- SET
							-- 	@_geo_int_adr_part.Adres.gm.woj =
							IF (LOCATE(CONCAT('(', @_geo_int_adr_part.Gmi_Str, ')'), @_geo_int_adr_part.Nazwa_Miejsca) > 0) OR
							   (@_geo_int_adr_part.Gmi_Str = @_geo_int_adr_part.Nazwa_Miejsca)
							THEN
								SET @_geo_int_adr_part.Gmi_Str = '';
							END IF;
							
							SET
								@_geo_int_adr_part.Adres.gm.woj =
								CONCAT(
									' (', 
									_ConcatStr(@_geo_int_adr_part.Gmi_Str, @_geo_int_adr_part.Woj_Str, ', '),
									')'
								)	
							;
						END IF;
					END IF;	--	IF _MODE = '_atom_adres'
	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------	
	'adres'
		Zwraca 1 gdy jest konflikt czyli zakresy czasowe maja czesc wspolna
		Parametry
		_Param_A		geo_int_miejsca_ID
		_Param_B		geo_int_adresy_ID
		_Param_C		NrPos
		_Param_D		NrLoc
		_Param_E		AdrDescr
		_Param_F		ZipCode
		_Param_G		Result
		
		CALL geo_int_adr_tools('adres.poczt', 'PL0935067', 'PL0933016-17088', '', '', '', '', @_Param_G);
------------------------------------------------------------------------------------------------------------------------------------------------------------------*/	
	IF _MODE LIKE 'adres.%' THEN
		CALL geo_int_adr_tools('_atom_adres', _Param_A, _Param_B, '', '', '', '', _Param_G);
		SET 
			@_geo_int_adr_part.NrPos = IFNULL(_Param_C, ''),
			@_geo_int_adr_part.NrLoc = IFNULL(_Param_D, ''),
			@_geo_int_adr_part.AdrDescr = IFNULL(_Param_E, ''),
			@_geo_int_adr_part.ZipCode = IFNULL(_Param_F, ''),
			@_geo_int_adr_part.Adres = IFNULL(_Param_G, '')
		;
		IF (@_geo_int_adr_part.ID_Adresu = '') AND (@_geo_int_adr_part.ID_Miejsca = '') THEN
			SET _Param_G = @_geo_int_adr_part.Adres;
		ELSE
					/*
					@_geo_int_adr_part.ID_Miejsca,
					@_geo_int_adr_part.Info,
					@_geo_int_adr_part.Nazwa_Miejsca,
					@_geo_int_adr_part.Woj_Str,
					@_geo_int_adr_part.Pow_Str,
					@_geo_int_adr_part.Gmi_Str,
					@_geo_int_adr_part.Rodz_Miejsca,
					@_geo_int_adr_part.Ulica,
					@_geo_int_adr_part.ZipCode
					*/
		
			SET
				@_geo_int_adr_part.Numery = 
					_ConcatStr(@_geo_int_adr_part.NrPos, @_geo_int_adr_part.NrLoc, IF(LOCATE('/', @_geo_int_adr_part.NrPos) > 0, '', '/'))
			;
			SET
				@_geo_int_adr_part.Numery_ZipCode = 
					_ConcatStr(
									@_geo_int_adr_part.Numery,
									@_geo_int_adr_part.ZipCode,
									', '
					)		
			;		
			
			IF @_geo_int_adr_part.ID_Adresu != '' THEN
			--	Ulica, eic	
				SET
					@_geo_int_adr_part.Result =
						_ConcatStr(
							@_geo_int_adr_part.Ulica, 
							_ConcatStr(
								@_geo_int_adr_part.Numery_ZipCode,
								@_geo_int_adr_part.Nazwa_Miejsca,
								' '
							),
							' '
						)
				;	
			ELSEIF @_geo_int_adr_part.ID_Miejsca != '' THEN
			--	TYLKO Miejscowosc
				SET
					@_geo_int_adr_part.Result =
						_ConcatStr(
							@_geo_int_adr_part.Nazwa_Miejsca,
							@_geo_int_adr_part.Numery_ZipCode,
							' '
						)	
				;	
			END IF;
				

			IF _MODE = 'adres.poczt' THEN
				SET
					@_geo_int_adr_part.Result =
					CONCAT(@_geo_int_adr_part.Result, @_geo_int_adr_part.Adres.gm.woj)
				;
					
			END IF;
			IF _MODE = 'adres.poczt.full' THEN
				SET
					@_geo_int_adr_part.Result =
					CONCAT(@_geo_int_adr_part.Result, @_geo_int_adr_part.Adres.gm.woj)
				;
			END IF;
			IF _MODE = 'adres.miekscowosc.info' THEN
				SET
					@_geo_int_adr_part.Result =
					CONCAT(@_geo_int_adr_part.Info)
				;
			END IF;
			IF _MODE = 'adres.poczt.and.info' THEN
				SET
					@_geo_int_adr_part.Result =
					CONCAT(@_geo_int_adr_part.Result, ' ', @_geo_int_adr_part.Info)
				;
			END IF;
			
			SET _Param_G = @_geo_int_adr_part.Result;
		END IF;
		
	END IF;	--	IF _MODE LIKE 'adres.%'
	
	
END$$

DELIMITER ;

/*
====================================================================================================================================================================================
	NOTATNIK
====================================================================================================================================================================================

SELECT
					@_geo_int_adr_part.ID_Miejsca,
					@_geo_int_adr_part.Info,
					@_geo_int_adr_part.Nazwa_Miejsca,
					@_geo_int_adr_part.Woj_Str,
					@_geo_int_adr_part.Pow_Str,
					@_geo_int_adr_part.Gmi_Str,
					@_geo_int_adr_part.Rodz_Miejsca,
					@_geo_int_adr_part.Ulica,
					@_geo_int_adr_part.Numery,
					@_geo_int_adr_part.ZipCode
;
		
CALL geo_int_adr_tools('adres.poczt', 'PL0935067', 'PL0933016-17088', '15', '1', '', '80-234', @_Param_G);
CALL geo_int_adr_tools('adres.poczt', 'PL0935067', 'PL0933016-17088', '', '', '', '81-234', @_Param_G);
SELECT @_geo_int_adr_part.Result;
CALL geo_int_adr_tools('adres.poczt', 'PL0935067', '', '15', '1', '', '80-234', @_Param_G);
SELECT @_geo_int_adr_part.Result;


ALTER TABLE `geo_int_rodz_miejsc` ADD COLUMN `IsPartOf` INT NOT NULL DEFAULT 0;
UPDATE `geo_int_rodz_miejsc`
SET
	Nazwa = TRIM(Nazwa),
	IsPartOf = (rm IN ('00','95','98','99'))
;	

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*/

/*
$Log$
*/
