  LANGUAGE plpgsql
  IMMUTABLE
 AS $function$
---fonction permettant de vérifier la cohérence d'une donnée d'occurrence en s'assurant que sa phénologie (dates, altitude, stade de vie selon les paramètres) 
+--fonction permettant de vérifier la cohérence d'une donnée d'occurrence en s'assurant que 
+-- sa phénologie (dates, altitude, stade de vie selon les paramètres) 
 --correspond bien à la phénologie valide définie par le profil du taxon en question
---La fonction renvoie 'false' pour les données trop imprécises (durée d'observation supérieure à la précision temporelle définie dans les paramètres des profils).
+--La fonction renvoie 'false' pour les données trop imprécises (durée d'observation supérieure à 
+-- la précision temporelle définie dans les paramètres des profils).
   DECLARE 
    valid_count integer;
   BEGIN

  		(WITH myphenology AS (
  			SELECT DISTINCT
				t.cd_ref AS cd_ref,
				unnest(ARRAY[ceiling(EXTRACT(DOY FROM s.date_min)/p.temporal_precision_days)::integer, ceiling(EXTRACT(DOY FROM s.date_max)/p.temporal_precision_days)::integer]) AS period,
				CASE 
					WHEN p.active_life_stage=true THEN s.id_nomenclature_life_stage
					ELSE NULL


-- Fonctions dédiées à la comparaison des données avec leur profil d'espèce dans gn_profiles
CREATE OR REPLACE FUNCTION gn_profiles.get_parameters(mycdnom integer)
 RETURNS TABLE (
	 cd_ref integer, spatial_precision integer, temporal_precision_days integer, 
	 active_life_stage boolean, distance smallint
	)
 LANGUAGE plpgsql
 IMMUTABLE
AS $function$
-- fonction permettant de récupérer les paramètres les plus adaptés 
-- (définis au plus proche du taxon) pour calculer le profil d'un taxon donné
-- par exemple, s'il existe des paramètres pour les "Animalia" des paramètres pour le renard, 
-- les paramètres du renard surcoucheront les paramètres Animalia pour cette espèce
  DECLARE 
   my_cd_ref integer := t.cd_ref FROM taxonomie.taxref t WHERE t.cd_nom=mycdnom;
  BEGIN
  	RETURN QUERY
  		WITH all_parameters AS (
  			SELECT param.cd_ref, param.spatial_precision, param.temporal_precision_days, 
			  param.active_life_stage, parents.distance 
  			FROM gn_profiles.cor_taxons_profiles_parameters param
			JOIN taxonomie.find_all_taxons_parents(my_cd_ref) parents ON parents.cd_nom=param.cd_ref)
		SELECT * FROM all_parameters all_param WHERE all_param.distance=(
			SELECT min(all_param2.distance) FROM all_parameters all_param2
		)
			;
  END;
$function$
