Delimiter //
/**
 * Author:  armen
 * Created: 12 dec. 2019
 * recherche un code langue en fonction du pays founis
 * le pays peut être founis par son nom, code iso2, ou iso 3
 * argument
 *  - country : code is2, iso3 ou nom du pays
 */

drop function if exists CASH_BUSINESS_FIND_LANGUAGE_WITH_COUNTRY //

Create Function CASH_BUSINESS_FIND_LANGUAGE_WITH_COUNTRY(
		country varchar(80)
        , defaultLangCode Varchar(5)
	)
	returns char(5)
Begin
	return (
			Coalesce(
                (
                    select 
                        lng.DF_LANGUAGES_CODE 
                    from DF_LANGUAGES lng
                    Where Exists (
                            Select *
                            From DF_COUNTRY cntr
                                Inner Join DF_COUNTRY_LNG cntrl
                                    On cntr.ID_DF_COUNTRY = cntrl.DF_COUNTRY_ID_DF_COUNTRY
                            Where cntr.DF_COUNTRY_SHORT_CODE = substring(lng.DF_LANGUAGES_CODE, -2)
                                And country in (cntr.DF_COUNTRY_SHORT_CODE, cntr.DF_COUNTRY_LONG_CODE, cntrl.DF_COUNTRY_LABEL)
                            Limit 1
                        )   
                    Limit 1
                )
                , NullIf(defaultLangCode, '')
                , 'en_GB'
            )
		)
	;
End //
Delimiter ;