local mWikidata = require('Modulo:Wikidata')
local p = {}
local agenzia


function p.nomeagenzia(agenzia)
    agenzia = string.gsub(agenzia,'Q42262', '[['.. mw.wikibase.sitelink('Q42262')   ..'|ESA]]')
    agenzia = string.gsub(agenzia,'Q392953', '[['.. mw.wikibase.sitelink('Q392953')   ..'|ASI]]')
    agenzia = string.gsub(agenzia,'Q23548', '[['.. mw.wikibase.sitelink('Q23548')   ..'|NASA]]')

    return agenzia
end

function p.equipaggio(ruoli, qualificatore, ruolo)
       local idNome
       local text =""
       for _,v in pairs(ruoli) do
        if v == qualificatore then
          text = text .. '| ' ..ruolo.. ' || ' .. mWikidata._getProperty( { 'P1029', qualifier='P39', qualifiervalue=qualificatore } )
          idNome = mWikidata._getProperty( { 'P1029', qualifier='P39', qualifiervalue=qualificatore,formatting='raw' } )
          text = text .. ' ('.. mWikidata._getQualifier({'P450','P1545',n=mWikidata._indexOf({'P450',mWikidata._getId(),from=idNome}),from=idNome}) .. ')'

          if agenzia ~= mWikidata._getProperty({'P108',qualifier='P794',qualifiervalue='Q11631',from=idNome,formatting='raw'}) then
              text = text .. ' - '.. p.nomeagenzia(mWikidata._getProperty({'P108',qualifier='P794',qualifiervalue='Q11631',from=idNome, formatting='raw',conjunction='/'}))
          end

          text = text .. '\n|-\n'
          break
        end
       end
   return text
end


function p.main(frame)
        local text ='{| class="wikitable"\n|-\n! Ruolo!!Equipaggio\n|-\n'

	local equipaggio, membriequipaggio
        local ruoli={}

        membriequipaggio = mWikidata._N( { 'P1029' } )

        for i=0,membriequipaggio,1
            do
                 ruoli[i]=mWikidata._getQualifier( { 'P1029', 'P39', n=i+1, formatting='raw' } )
            end
        agenzia = mWikidata._getProperty({'P137',formatting='raw'})

        text = text .. p.equipaggio(ruoli, 'Q20113945', 'Comandante')
        text = text .. p.equipaggio(ruoli, 'Q20644849', 'Pilota')
        text = text .. p.equipaggio(ruoli, 'Q20114066', 'Pilota del modulo di comando')
        text = text .. p.equipaggio(ruoli, 'Q20114009', 'Pilota del modulo lunare')
        text = text .. p.equipaggio(ruoli, 'Q20162978', 'Pilota')                   -- dello Space Shuttle
        text = text .. p.equipaggio(ruoli, 'Q20116202', 'Specialista di missione 1')
        text = text .. p.equipaggio(ruoli, 'Q20163477', 'Specialista di missione 2')
        text = text .. p.equipaggio(ruoli, 'Q20163680', 'Specialista di missione 3')
        text = text .. p.equipaggio(ruoli, 'Q20199279', 'Specialista di missione 4')
        text = text .. p.equipaggio(ruoli, 'Q20199285', 'Specialista di missione 5')
        text = text .. p.equipaggio(ruoli, 'Q20203864', 'Specialista di missione 6')
        text = text .. p.equipaggio(ruoli, 'Q20443756', 'Ingegnere di volo 1')
        text = text .. p.equipaggio(ruoli, 'Q20443763', 'Ingegnere di volo 2')
        text = text .. p.equipaggio(ruoli, 'Q20163858', 'Specialista del carico utile 1')
        text = text .. p.equipaggio(ruoli, 'Q20163870', 'Specialista del carico utile 2')
        text = text .. p.equipaggio(ruoli, 'Q20190803', 'Specialista del carico utile 3')
        text = text .. p.equipaggio(ruoli, 'Q20623701', 'Turista spaziale')

        text = text .. '|}'  
        text = text .. "\n<small>Tra parentesi il numero di voli spaziali completati da ogni membro dell'equipaggio, inclusa questa missione.</small>"
 
        return string.format('%s',text) 
end

return p