[#assign approvedEntriesList = [] ]
[#if approvedCurriculumEntries??]
    [#if approvedCurriculumEntries?size > 0]
        [#assign approvedEntriesList = approvedCurriculumEntries ]
    [/#if]
[/#if]
[#if standaloneCurriculumEntries??]
    [#if standaloneCurriculumEntries?size > 0]
        [#assign approvedEntriesList = standaloneCurriculumEntries ]
    [/#if]
[/#if]

[#assign approvedExtraEntriesList = [] ]
[#if extraCurriculumEntries??]
    [#if extraCurriculumEntries?size > 0]
        [#assign approvedExtraEntriesList = extraCurriculumEntries ]
    [/#if]
[/#if]

[#-- Remarks --]
[#assign showCreditacao = false]
[#assign showAprovado = false]

[#list approvedEntriesList as entry]
    [#if entry.grade??]
        [#assign aceGrade = entry.grade]
    [#else]
        [#assign aceGrade = ""]
    [/#if]
    [#if aceGrade?contains("AP")]
        [#assign showAprovado = true]
    [/#if]
    [#if aceGrade?contains("C")]
        [#assign showCreditacao = true]
    [/#if]    
[/#list]

[#assign finalRemarks = []]

[#if approvementRemarks??]
    [#assign finalRemarks = approvementRemarks ]
[/#if]

[#if standaloneCurriculumEntries??]
    [#assign finalRemarks = approvementStandaloneRemarks ]
[/#if]

[#-- 
[#if showAprovado]
    [#assign finalRemarks = finalRemarks + ["\nAP - Aprovado"]]
[/#if]
[#if showCreditacao]
    [#assign finalRemarks = finalRemarks + ["\nC - Creditação"]]
[/#if]
--]

[#assign hasRemarks = false ]
[#if finalRemarks?has_content]
    [#if finalRemarks?size > 0]
        [#assign hasRemarks = true ]
    [/#if]
[/#if]

[#macro printRemarks]
    [#assign addNewLine = false]
    [#if hasRemarks]
        [#list finalRemarks as remark]
            [#if remark?is_hash]
                [#if addNewLine]
                    [#assign text = "\n" + lang.i18n(remark.description)]
                    ${text}
                [#else]
                    ${lang.i18n(remark.description)}
                    [#assign addNewLine = true]
                [/#if]
            [#else]
                ${remark}
            [/#if]
        [/#list]
    [/#if]
[/#macro]

[#assign finalExtraRemarks = []]

[#if approvementExtraRemarks??]
    [#assign finalExtraRemarks = approvementExtraRemarks ]
[/#if]

[#macro printExtraRemarks]
    [#list finalExtraRemarks as remark]
        ${lang.i18n(remark.description)}
    [/#list]
[/#macro]

[#-- Approvements --]
[#assign hasExtraApprovements = false]
[#if totalExtraApprovements??]
    [#if totalExtraApprovements > 0]
        [#assign hasExtraApprovements = true]
    [/#if]
[/#if]

[#assign totalAppEnrolments = totalApprovements!0 + totalStandaloneApprovements!0 ]
[#assign totalAppEcts = numbers.onePlace(totalApprovedECTS!0 + totalStandaloneApprovedECTS!0) ]

[#if totalAppEnrolments > 1 ]
    [#assign na_seguinte_unidade_curricular = nas_seguintes_unidades_curriculares ]
    [#assign a_unidade_curricular = as_unidades_curriculares ]
    [#assign discriminada = discriminadas ]
    [#assign Unidade_Curricular = Unidades_Curriculares ]
[#else]
    [#assign na_seguinte_unidade_curricular = na_seguinte_unidade_curricular ]
    [#assign a_unidade_curricular = a_unidade_curricular ]
    [#assign discriminada = discriminada ]
    [#assign Unidade_Curricular = Unidade_Curricular ]
[/#if]

[#assign totalStandaloneApprovements = totalStandaloneApprovements!0]

[#if totalStandaloneApprovements > 1]
    [#assign na_seguinte_unidade_curricular = nas_seguintes_unidades_curriculares_isoladas ]
    [#assign a_unidade_curricular = as_unidades_curriculares_isoladas ]
    [#assign Unidade_Curricular = Unidades_Curriculares_Isoladas ]
[#elseif totalStandaloneApprovements == 1]
    [#assign na_seguinte_unidade_curricular = na_seguinte_unidade_curricular_isolada ]
    [#assign a_unidade_curricular = a_unidade_curricular_isolada ]
    [#assign Unidade_Curricular = Unidade_Curricular_Isolada ]
[/#if]

[#assign totalExtraApprovements = totalExtraApprovements!0]
[#assign totalExtraEcts = totalExtraApprovedECTS!0]


[#if totalExtraApprovements > 1]
    [#assign Unidade_Extracurricular = Unidades_Extracurriculares]
[#else]
    [#assign Unidade_Extracurricular = Unidade_Extracurricular]
[/#if]


[#assign aceLst = [] ]
[#list approvedEntriesList as approvement]
    [#assign tmpName = "${lang.i18n(approvement.name)}"]
    [#if approvement.grade??]
        [#assign tmpGrade = "${approvement.grade}"]
    [#else]
        [#assign tmpGrade = ""]
    [/#if]
    [#if approvement.ectsCredits??]
        [#assign tmpEcts = "${numbers.onePlace(approvement.ectsCredits)}"]
        [#if tmpEcts == "0.0"]
            [#assign tmpEcts = "-"]
        [/#if]
    [#else]
        [#assign tmpEcts = ""]
    [/#if]
    [#if approvement.ectsGrade??]
        [#assign tmpEctsGrade = "${approvement.ectsGrade}"]
    [#else]
        [#assign tmpEctsGrade = ""]
    [/#if]
    [#if approvement.executionYearName??]
        [#assign tmpExecutionYear = "${approvement.executionYearName}"]
    [#else]
        [#assign tmpExecutionYear = ""]
    [/#if]
    [#if approvement.remarkNumbers??]   
        [#assign tmpRemark = "${approvement.remarkNumbers}"]
    [#else]
        [#assign tmpRemark = ""]
    [/#if]
    [#if approvement.curricularYear??]   
        [#assign tmpCurricularYear = "${approvement.curricularYear}"]
    [#else]
        [#assign tmpCurricularYear = ""]
    [/#if]
    [#assign tmpMap = { "a" : "${tmpName}", "c" : "${tmpGrade}", "d" : "${tmpEcts}", "e" : "${tmpEctsGrade}", "b" : "${tmpExecutionYear}", "f" : "${tmpRemark}", "g" : "${tmpCurricularYear}" } ]
    [#assign aceLst = aceLst + [tmpMap] ]
[/#list]
qubList("aceLst")

[#assign sortByCurricularYear = false ]
[#if serviceRequest.hasProperty("sortByCurricularYear")]
    [#assign sortByCurricularYear = serviceRequest.findProperty("sortByCurricularYear").getValue()]
[/#if]

[#if sortByCurricularYear]
    [#assign aceLst = order.sort(aceLst, "g b a")]
[#else]
    [#assign aceLst = order.sort(aceLst, "b a")]
[/#if]

[#assign exLst = [] ]
[#list approvedExtraEntriesList as approvement]
    [#assign tmpName = "${lang.i18n(approvement.name)}"]
    [#if approvement.grade??]
        [#assign tmpGrade = "${approvement.grade}"]
    [#else]
        [#assign tmpGrade = ""]
    [/#if]
    [#if approvement.ectsCredits??]
        [#assign tmpEcts = "${numbers.onePlace(approvement.ectsCredits)}"]
        [#if tmpEcts == "0.0"]
            [#assign tmpEcts = "-"]
        [/#if]
    [#else]
        [#assign tmpEcts = ""]
    [/#if]
    [#if approvement.ectsGrade??]
        [#assign tmpEctsGrade = "${approvement.ectsGrade}"]
    [#else]
        [#assign tmpEctsGrade = ""]
    [/#if]
    [#if approvement.executionYearName??]
        [#assign tmpExecutionYear = "${approvement.executionYearName}"]
    [#else]
        [#assign tmpExecutionYear = ""]
    [/#if]
    [#if approvement.remarkNumbers??]   
        [#assign tmpRemark = "${approvement.remarkNumbers}"]
    [#else]
        [#assign tmpRemark = ""]
    [/#if]
    [#if approvement.curricularYear??]   
        [#assign tmpCurricularYear = "${approvement.curricularYear}"]
    [#else]
        [#assign tmpCurricularYear = ""]
    [/#if]
    [#assign tmpMap = { "a" : "${tmpName}", "c" : "${tmpGrade}", "d" : "${tmpEcts}", "e" : "${tmpEctsGrade}", "b" : "${tmpExecutionYear}", "f" : "${tmpRemark}", "g" : "${tmpCurricularYear}" } ]
    [#assign exLst = exLst + [tmpMap] ]
[/#list]
qubList("exLst")

[#if sortByCurricularYear]
    [#assign exLst = order.sort(exLst, "g b a")]
[#else]
    [#assign exLst = order.sort(exLst, "b a")]
[/#if]

[#if executionYearInformation.isBefore("2014-01-01")]
    [#assign stampSentence = stampOldSentence]
[#else]
    [#assign stampSentence = stampSentence]
[/#if]