<?php

require_once("../../includes/bootstrap.php");
$sesion = new sesion();
$academia = bootstrap::initBd($sesion->get('anio'));
/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', false);
ini_set('display_startup_errors', false);
//date_default_timezone_set('Europe/London');

if (PHP_SAPI == 'cli')
    die('This example should only be run from a Web Browser');

/** Include PHPExcel ok */
require_once("../../includes/phpExcel/PHPExcel.php");


// Create new PHPExcel object
$objPHPExcel = new PHPExcel();

// Set document propertiesv
// Set document properties
$objPHPExcel->getProperties()->setCreator("Academia Web")
    ->setLastModifiedBy(date('Y-m-d H:m:s'))
    ->setDescription("Promedios")
    ->setKeywords("Academia 2013")
    ->setCategory("Reportes Academia");
// Add some data

$grado = $academia->escapar($_GET['grado']);
$id_gr = $academia->escapar($_GET['id_gr']);

//	$director=$academia->escapar($_GET['dir']);
$jornada = $academia->escapar($_GET['jorn']);

$cod_estudiantes = str_replace(",", '|', $cod_estudiantes);

$sede = $academia->escapar(ucwords($_GET['sede']));

$per_ini = $academia->escapar($_GET['pini'], 'int');
$per_fin = $academia->escapar($_GET['pfin'], 'int');
$tipo_valor = $academia->escapar($_GET['valor'], 'int');


$i = 0;
$cmps = "";
$hojaActiva = $objPHPExcel->getActiveSheet();

$dtsColegio = $sesion->get('info_colegio');
$hojaActiva->setCellValue('A1', $dtsColegio['nombre']);
$hojaActiva->setCellValue('A2', "NIT. " . $dtsColegio['nit']);
$hojaActiva->setCellValue('A3', empty($dtsColegio['resolucion']) ? $dtsColegio['decreto'] : $dtsColegio['resolucion']);
$hojaActiva->setCellValue('A5', 'Sede: ' . $sede . " Jornada: " . $jornada . " Grupo: " . $grado);
$hojaActiva->setCellValue('A6', "Promedio de notas del periodo " . $per_ini . " al periodo " . $per_fin);

$mayus_nom = $sesion->getVar('configuracion.format_nom');
$mayus_mat = $sesion->getVar('configuracion.format_mat');


$iduser = $sesion->get('ac_userid');
//p ini , pfin , gru, idus
//$sql = 'CALL SP_REP_DES_MATERIAS(' . $per_ini . ',' . $per_fin . ',' . $id_gr . ',"' . $tipo_valor . '")';
$sql = 'SELECT *, JSON_ARRAYAGG(JSON_OBJECT("materia",nom_asi,"notas",CAST(notas_periodo AS JSON),"notas_def_por",CAST(def_porcentaje_periodo AS JSON), "por_periodo",CAST(porcen_periodo AS JSON) ) ) AS dts

 FROM (

SELECT aca_estxasigxgrupos.cod_asigxgrupo AS cd_asigxgrupo,LOWER(CONCAT_WS(" ", aca_estudiantes.apellido1_est, IF(ISNULL(aca_estudiantes.apellido2_est), "", 
aca_estudiantes.apellido2_est), 
aca_estudiantes.nombre1_est, 
IF(ISNULL(aca_estudiantes.nombre2_est), "", aca_estudiantes.nombre2_est))) AS estudiante, 
aca_asignaturas.cod_asi, 
LOWER(aca_asignaturas.nom_asi) AS nom_asi , 
periodo_calif as per_calif, 
aca_notasxdes.nota_definitiva_numeros,
aca_estudiantes.cod_estudiante,
CONCAT("[",GROUP_CONCAT(aca_notasxdes.nota_definitiva_numeros ORDER BY periodo_calif SEPARATOR ","),"]") AS notas_periodo,
CONCAT("[",GROUP_CONCAT(aca_notasxdes.def_porcentaje_periodo ORDER BY periodo_calif SEPARATOR ","),"]") AS def_porcentaje_periodo,
 (SELECT CONCAT("[",GROUP_CONCAT(por_periodo ORDER BY periodo_calif SEPARATOR ","),"]") FROM aca_detallesxperiodo WHERE aca_detallesxperiodo.cod_asigxgrupo=aca_estxasigxgrupos.cod_asigxgrupo ) AS porcen_periodo
FROM aca_estxasigxgrupos 
INNER JOIN aca_asignaturasxgrupos ON ( aca_estxasigxgrupos.cod_asigxgrupo = aca_asignaturasxgrupos.cod_asigxgrupo) 
INNER JOIN aca_asignaturas ON (aca_asignaturasxgrupos.cod_asi = aca_asignaturas.cod_asi) 
INNER JOIN pro_profesores ON (aca_asignaturasxgrupos.cod_profesor = pro_profesores.cod_profesor) 
INNER JOIN aca_estudiantes ON (aca_estxasigxgrupos.cod_estudiante = aca_estudiantes.cod_estudiante) 
INNER JOIN aca_notasxdes ON (aca_notasxdes.cod_estxasigxgrupos = aca_estxasigxgrupos.cod_estxasigxgrupos) 
WHERE (aca_asignaturasxgrupos.cod_grupo = ' . $id_gr . ' 
AND aca_estudiantes.estado_est=1 AND aca_notasxdes.periodo_calif BETWEEN ' . $per_ini . ' AND ' . $per_fin . ' AND UCASE(aca_asignaturas.nom_asi) NOT LIKE "%DISCIPLINA%") 
GROUP BY aca_estudiantes.`cod_estudiante`, aca_asignaturasxgrupos.cod_asi
ORDER BY estudiante, aca_asignaturas.pri_asi, aca_asignaturasxgrupos.cod_asi, periodo_calif ASC
) AS t1
GROUP BY `cod_estudiante` order by estudiante asc';
//$sql = 'CALL SP_REP_DES_MATERIAS(' . $per_ini . ',' . $per_fin . ',' . $id_gr . ',"' . $tipo_valor . '")';
//echo $sql;
//exit;
$academia->instruccion($sql);

$aux = 0;
$dataMat = array();
$reg = $academia->extraer_registro();
$cdEst = -1;

$filOrg = 10;
$colOrg = 1;
$col = $colOrg;
$fil = $filOrg;
$i = 1;
$hojaActiva->setCellValueByColumnAndRow($colOrg - 1, ($fil - 1), "N°");
$hojaActiva->setCellValueByColumnAndRow($colOrg, ($fil - 1), "Estudiantes");


$band = 0;

$datosMaterias = json_decode($reg['dts'], true);
$colsTotal = 2;


$colTem = 2;
$cx = 0;
foreach ($datosMaterias as $mat) {
    $filTem = $fil - 1;
    $hojaActiva->setCellValueByColumnAndRow($colTem, ($filTem - 1), $mat['materia']);

    $colInit = $colTem;
    $rango = $dtsLang['mod_forma_nom_cel'][$colInit] . ($filTem - 1) . ':' . $dtsLang['mod_forma_nom_cel'][($colInit + count($mat['notas']) - 1)] . ($filTem - 1);
    $colInit = $colInit + count($mat['notas']);
    $hojaActiva->mergeCells($rango);


    //$colTem = $colTem;
    $cn = 1;

    foreach ($mat['notas'] as $not) {
        $hojaActiva->setCellValueByColumnAndRow($colTem++, $filTem, 'Per ' . $cn++);
        $colsTotal++;


    }
    $hojaActiva->setCellValueByColumnAndRow($colTem++, $filTem, 'Promedio');
    $colsTotal++;


}

$col = $colOrg;
$i = 1;
do {
    $datosMaterias = json_decode($reg['dts'], true);
    //var_dump($datosMaterias);periodo_calif
    $hojaActiva->setCellValueByColumnAndRow($col - 1, $fil, $i);
    $hojaActiva->setCellValueByColumnAndRow($col, $fil, formatoPalabras($reg['estudiante'], $mayus_nom));

    foreach ($datosMaterias as $mat) {
        $prom = 0;
        $it = 0;
        $prom2 = 0;
        foreach ($mat['notas'] as $not) {
            $col++;
            $hojaActiva->setCellValueByColumnAndRow($col, $fil, $not);

            $porcent = $mat['por_periodo'][$it];
            $prom = $prom + ($not * $porcent) / 100;

            $prom2 += $mat['notas_def_por'][$it];

            $it++;

        }
        $hojaActiva->setCellValueByColumnAndRow(++$col, $fil, $prom2);

    }

    $fil++;
    $col = $colOrg;
    $aux = 1;
    $i++;

} while ($reg = $academia->extraer_registro());

$rangoNotas = $dtsLang['mod_forma_nom_cel'][$colOrg] . $filOrg . ":" . $dtsLang['mod_forma_nom_cel'][$col + 1] . $fil;
if ($tipo_valor == 1) {
    $hojaActiva->getStyle($rangoNotas)->getNumberFormat()->setFormatCode('#,#0.0');
}

if ($tipo_valor == 1) {
    $rango = $dtsLang['mod_forma_nom_cel'][$colOrg + 1] . $fil . ":" . $dtsLang['mod_forma_nom_cel'][$col] . ($fil);
    $formula = 'AVERAGE(' . $rango . ')';
    $hojaActiva->setCellValue($dtsLang['mod_forma_nom_cel'][$col + 1] . $fil, numberFormat($promedio, 1));
} else {
    $hojaActiva->setCellValue($dtsLang['mod_forma_nom_cel'][$col + 1] . $fil, $promedio);
}

//$hojaActiva->setCellValueByColumnAndRow($col + 1, ($filOrg - 1), "Promedio");

/* FOrmateando encabezado */
$hojaActiva->mergeCells('A1:' . $dtsLang['mod_forma_nom_cel'][$colsTotal - 1] . '1');
$hojaActiva->mergeCells('A2:' . $dtsLang['mod_forma_nom_cel'][$colsTotal - 1] . '2');
$hojaActiva->mergeCells('A3:' . $dtsLang['mod_forma_nom_cel'][$colsTotal - 1] . '3');
$hojaActiva->mergeCells('A5:' . $dtsLang['mod_forma_nom_cel'][$colsTotal - 1] . '5');
$hojaActiva->mergeCells('A6:' . $dtsLang['mod_forma_nom_cel'][$colsTotal - 1] . '6');

$hojaActiva->getStyle('A1:' . $dtsLang['mod_forma_nom_cel'][$colsTotal - 1] . '6')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$hojaActiva->getStyle('A1:' . $dtsLang['mod_forma_nom_cel'][$colsTotal - 1] . '6')->getFont()->setBold(true);


$styleArrayMat = array(
    'alignment' => array(
        'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
        'rotation' => 90,
    )
);

$styleArray1 = array(
    'borders' => array(
        'allborders' => array(
            'style' => PHPExcel_Style_Border:: BORDER_THIN,
            'color' => array('argb' => '0000'),
        ),
    ),
);

$rango = $dtsLang['mod_forma_nom_cel'][0] . ($filOrg - 2) . ':' . $dtsLang['mod_forma_nom_cel'][$colsTotal] . ($filOrg - 1);
$hojaActiva->getStyle($rango)->getFont()->setBold(true);

//tamaño de las columnas a lo algo nombre de materias
$hojaActiva->getRowDimension($filOrg - 2)->setRowHeight(129);

$hojaActiva->getColumnDimension('B')->setAutoSize(true);

$rango = $dtsLang['mod_forma_nom_cel'][$colOrg + 1] . ($filOrg - 2) . ':' . $dtsLang['mod_forma_nom_cel'][$colsTotal + 1] . ($filOrg - 2);
$hojaActiva->getStyle($rango)->applyFromArray($styleArrayMat);
$hojaActiva->getStyle($rango)->getAlignment()->setWrapText(true);

$rango = $dtsLang['mod_forma_nom_cel'][$colOrg - 1] . ($filOrg - 2) . ':' . $dtsLang['mod_forma_nom_cel'][$colsTotal - 1] . $fil;
$hojaActiva->getStyle($rango)->applyFromArray($styleArray1);

for ($ix = 0; $ix <= $colsTotal; $ix++) {
    $hojaActiva->getColumnDimension($dtsLang['mod_forma_nom_cel'][$ix])->setAutoSize(true);
}


// Rename worksheet
$objPHPExcel->getActiveSheet()->setTitle('Promedios');


// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);


// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Promedios de notas.xls"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
?>
