<?php

require_once "../app/model/db.class.php";
require_once 'rangos.php';

    function decimales($nota){

         if (strlen($nota)==1) {
             $nota=$nota.".0";
         }

         if (strlen($nota)>3) {
             $nota=substr($nota ,0,3);
         }

        return $nota;

    }

    //--------------------------------
    
    function decimales1($nota){

         if (strlen($nota)==1) {
             $nota=$nota.".00";
         }

         if (strlen($nota)==3) {
             $nota=$nota."0";
         }

         if (strlen($nota)>3) {
             $nota=substr($nota ,0,4);
         }

        return $nota;

    }

    //--------------------------------

    $obj = new database();

   $grado=$_REQUEST['grado'];
   $curso=$_REQUEST['curso'];
   $periodo=$_REQUEST['periodo'];

   if  ($periodo==4)
        $periodo=3;

    $obj->conectar(); $obj->consulta("set names 'utf8'");
    

        $consulta = "SELECT curso_asignatura_profesor.grado, curso_asignatura_profesor.curso, catalogo.codigo, catalogo.nombrecorto
                     FROM catalogo INNER JOIN curso_asignatura_profesor ON catalogo.codigo = curso_asignatura_profesor.asignatura
                     WHERE curso_asignatura_profesor.grado='".$grado."' AND curso_asignatura_profesor.curso='".$curso."' ORDER BY catalogo.orden";

        $resultado = $obj->consulta($consulta);
        $numero = $obj->numero_de_filas($resultado); // obtenemos el numero de registros

        $asignatura=array();

        if($numero > 0 ){

		date_default_timezone_set('America/Mexico_City');

		if (PHP_SAPI == 'cli')
			die('Este archivo solo se puede ver desde un navegador web');

		/** Se agrega la libreria PHPExcel */
		require_once '../PHPExcel/PHPExcel.php';

		// Se crea el objeto PHPExcel
		$objPHPExcel = new PHPExcel();

		// Se asignan las propiedades del libro
		$objPHPExcel->getProperties()->setCreator("Academic Reports") //Autor
					     ->setLastModifiedBy("Academic Reports") //Ultimo usuario que lo modific&oacute;
					     ->setTitle("Reporte Consolidado")
					     ->setSubject("Reporte Consolidado")
					     ->setDescription("Consolidado")
					     ->setKeywords("Consolidado")
					     ->setCategory("Reporte excel");


                /*------------------------------------------------------*/
                $resultadoie = $obj->consulta("SELECT * from registrar");
                $fila_ie = $obj->fetch_assoc($resultadoie);
	              $tituloReporte = $fila_ie['institucion'];
                /*------------------------------------------------------*/


                $estiloInformacion = new PHPExcel_Style();
                $estiloInformacion->applyFromArray(
                            array(
                            'font' => array(
                            'name'      => 'Arial',
                            'size'      =>10,
                            'color'     => array(
                            'rgb' => '000000'
                    )
                    ),

                     'borders' => array(
                     'allborders' => array(
                     'style' => PHPExcel_Style_Border::BORDER_THIN
                    )
                  )

                  ));

		// Se agregan los titulos del reporte
		$objPHPExcel->setActiveSheetIndex(0)
			    ->setCellValue('C1',$tituloReporte)
        		    ->setCellValue('A5',"CODIGO")
		            ->setCellValue('B5',"APELLIDOS Y NOMBRES");

                 $objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion, "A5:B5");

                $head = 5;

                //Devuelve la ultima columna utilizada en este caso la B
                //$lastColumn =$objPHPExcel->getActiveSheet()->getHighestColumn();
                
                $lastColumn ='B';
                $l=0;

                while ($fila = $obj->fetch_assoc($resultado)){
                    $lastColumn++; //va iterando desde la C,D,E,F,G...n en la fila 3 ($head)
                    $objPHPExcel->setActiveSheetIndex(0)->setCellValue($lastColumn.$head, $fila['nombrecorto']);
                    $objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion, $lastColumn.$head);
                    $asignatura[$l]= $fila['codigo'];
                    $l++;
                 }

                 $lastColumn =$objPHPExcel->getActiveSheet()->getHighestColumn();
                 $ultima=$lastColumn++;


		$colorcelda = new PHPExcel_Style();
		$colorcelda->applyFromArray(array('fill'=> array('type'=> PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR,'rotation' => 90,
                                        'startcolor' => array('rgb'=> 'FCC5DD'),'endcolor'=> array('argb' => 'FCC5DD'))));


                //-- Alumnos y Notas Finales ------

                $consulta1 = "select matriculas.codigo,CONCAT(p_apellido,' ',s_apellido,' ',p_nombre,' ', s_nombre) as nombres from cursos inner join
                              (alumnos inner join matriculas on alumnos.codigo = matriculas.codigo) on (cursos.codigo = matriculas.curso) and
                              (cursos.grado = matriculas.grado)  where matriculas.grado = '".$grado."' and matriculas.curso = '".$curso."' and matriculas.estado = 'A'
                               order by CONCAT(p_apellido,' ',s_apellido,' ',p_nombre,' ', s_nombre)";

                $resultado1 = $obj->consulta($consulta1);
                
		 $i = 6;
		 while ($fila1 = $obj->fetch_assoc($resultado1)){
			$objPHPExcel->setActiveSheetIndex(0)
        		            ->setCellValue('A'.$i,  $fila1['codigo'])
		                    ->setCellValue('B'.$i,  $fila1['nombres']);

                         $objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion, "A".$i.":B".$i);

                        //...Recorrer el arreglo Asignatura.....

                        $lastColumn ='B';

                        for($p=0;$p<count($asignatura);$p++) {

                              $lastColumn++; //va iterando desde la C,D,E,F,G...n en la fila 3 ($head)

                              $notas='';
                              $promediar=0;

                              $consulta2 = "SELECT boletin.periodo, detalleboletin.definitiva
                                           FROM boletin INNER JOIN detalleboletin ON boletin.numero = detalleboletin.boletin
                                           WHERE boletin.asignatura='".$asignatura[$p]."' AND detalleboletin.alumno='".$fila1['codigo']."' order by periodo";

                              $resultado2 = $obj->consulta($consulta2);

                              $notas_alumno=array ();
                              while ($fila2 = $obj->fetch_assoc($resultado2)){
                                     $notas_alumno[$fila2['periodo']]=$fila2['definitiva'];
                              }


                              $j=1;
                              while ($j<=$periodo){

                                   if(isset($notas_alumno[$j])) {
                                        $notas.=($notas_alumno[$j])."  ";
                                        //$promediar=$promediar + $notas_alumno[$j];

                                  }
                                  else{
                                     $notas.=" * ";
                                  }

                                  $j++;
                              }

                              //$promediar=$promediar/$periodo;

                              if ($periodo==3){
                              
                                  $notas_f = $obj->consulta("SELECT * FROM notas_finales_asign WHERE asignatura='".$asignatura[$p]."' AND codigo='".$fila1['codigo']."'");
                                  $row_f = $obj->fetch_assoc($notas_f);
                                  
                                  $def="";
                                  if ($row_f['valor_asigna']=='DEFICIENTE')
                                      $def="D";
                                  else if($row_f['valor_asigna']=='BAJO')
                                      $def=".b";   
                                  else if($row_f['valor_asigna']=='BASICO')
                                      $def="B"; 
                                  else if($row_f['valor_asigna']=='ALTO')
                                      $def="A"; 
                                  else if($row_f['valor_asigna']=='SUPERIOR')
                                      $def="S";                                                                                                                   
                               
                                  $objPHPExcel->setActiveSheetIndex(0)->setCellValue($lastColumn.$i, $notas."= ".$def);
                              
                              }
                              else
                                  $objPHPExcel->setActiveSheetIndex(0)->setCellValue($lastColumn.$i, $notas);
                              

                              $objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion, $lastColumn.$i);

                              /*
                              if ($promediar<3){
                                  $objPHPExcel->getActiveSheet()->setSharedStyle($colorcelda, $lastColumn.$i);
                              }
                              */
                                                              
                        }

	          $i++;
                }

                //--- Coloca recuadros a las celdas -----

//                $objPHPExcel->getActiveSheet()->setSharedStyle($estiloInformacion, "A4:".$ultima.($i-1));

                $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(TRUE);
                $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(TRUE);

                for($i = 'C'; $i <= $lastColumn; $i++){

			$objPHPExcel->setActiveSheetIndex(0)
				    ->getColumnDimension($i)->setWidth(16);
		}

                //-------- Encabezado --------------------------

                $consulta0 = "SELECT grados.descripcion AS nom_gra, cursos.descripcion AS nom_cur, jornadas.descripcion AS nom_jor, profesores.nombres
                              FROM (jornadas INNER JOIN (grados INNER JOIN cursos ON grados.codigo = cursos.grado) ON jornadas.codigo = cursos.jornada)
                              INNER JOIN (profesores INNER JOIN titulares ON profesores.cedula = titulares.profesor) ON (cursos.codigo = titulares.curso) AND (cursos.grado = titulares.grado)
                              WHERE cursos.grado='".$grado."' AND cursos.codigo='".$curso."'";

                $resultado0 = $obj->consulta($consulta0);
                $fila0 = $obj->fetch_assoc($resultado0);

                $consul = "SELECT * from parametros";

                $resul = $obj->consulta($consul);
                $anyo = $obj->fetch_assoc($resul);

		$objPHPExcel->setActiveSheetIndex(0)
			    ->setCellValue('B3',"GRADO :".$fila0['nom_gra'])
        		    ->setCellValue('C3',"CURSO :".$fila0['nom_cur'])
                ->setCellValue('D2',"CONSOLIDADO DE ASIGNATURAS")
		            ->setCellValue('F3',"JORNADA :".$fila0['nom_jor'])
		            ->setCellValue('H3',"TITULAR :".$fila0['nombres'])
                ->setCellValue('L3',"A&ntilde;O LECTIVO :".$anyo['anolectivo'])
                ->setCellValue('N3',"TRIMESTRE :".$periodo);

                //-------   Final Encabezado -------------------


		// Se asigna el nombre a la hoja
		$objPHPExcel->getActiveSheet()->setTitle($grado."_".$curso);

		// Se activa la hoja para que sea la que se muestre cuando el archivo se abre
		$objPHPExcel->setActiveSheetIndex(0);

		// Se manda el archivo al navegador web, con el nombre que se indica (Excel2007)
		header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
		header('Content-Disposition: attachment;filename="'.$grado."_".$curso.'.xlsx"');
		header('Cache-Control: max-age=0');

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

	}
	else{
		print_r('No hay Informaci&oacute;n para mostrar');
	}
?>