<?php

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


    function decimales($nota){

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

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

        return $nota;

    }

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

    $obj = new database();

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

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

  // --- Asignaturas del Curso ------
  
     	$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."'";
     
        $resultado = $obj->consulta($consulta);
        $numero = $obj->numero_de_filas($resultado); // obtenemos el numero de registros

        $areas=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("Itesco") //Autor
					     ->setLastModifiedBy("Saul Ramirez") //Ultimo usuario que lo modific&oacute;
					     ->setTitle("Reporte Libro Final")
					     ->setSubject("Reporte Libro Final")
					     ->setDescription("Libro Final")
					     ->setKeywords("Libro Final")
					     ->setCategory("Reporte excel");


	        $tituloReporte = "INSTITUCION EDUCATIVA SAGRADOS CORAZONES";


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

                $head = 4;

                //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']);
                    $areas[$l]= $fila['codigo'];
                    $l++;
                 }

                 $lastColumn =$objPHPExcel->getActiveSheet()->getHighestColumn();
                 $lastColumn++;
                 $objPHPExcel->setActiveSheetIndex(0)->setCellValue($lastColumn.$head, "ESTADO FINAL" );


                 $ultima=$lastColumn++;

                $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
                    )
                  )

                  ));
                 
             		$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 = 5;
		 while ($fila1 = $obj->fetch_assoc($resultado1)){
			$objPHPExcel->setActiveSheetIndex(0)
        		            ->setCellValue('A'.$i,  $fila1['codigo'])
		                    ->setCellValue('B'.$i,  $fila1['nombres']);

                        //...Recorrer el arreglo Areas.....

                        $lastColumn ='B';

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

                              $lastColumn++; //va iterando desde la C,D,E,F,G...n en la fila 3 ($head)
                              $consulta2 = "SELECT * FROM notas_finales_asign WHERE codigo='".$fila1['codigo']."' and asignatura='".$areas[$p]."'";

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

                              //----- Nota final de Areas --------

                              $nota = (string)$fila2['definitiva'];

                              $nivel='';

                              if ($fila2['valor_asigna']=='BAJO')
                                  $nivel='.b';

                              if ($fila2['valor_asigna']=='BASICO')
                                  $nivel='B';

                              if ($fila2['valor_asigna']=='ALTO')
                                  $nivel='A';

                              if ($fila2['valor_asigna']=='SUPERIOR')
                                  $nivel='S';

                              $objPHPExcel->setActiveSheetIndex(0)->setCellValue($lastColumn.$i, decimales($nota)." - ".$nivel); 
                              
                              if ($fila2['definitiva']<3){
                                  $objPHPExcel->setActiveSheetIndex(0)->setSharedStyle($colorcelda, $lastColumn.$i);
                                  
                              }
                              
                        }


                  //---- Estado Final del Alumno -----

                  $consulta3 = "SELECT * FROM matriculas WHERE codigo='".$fila1['codigo']."'";

                  $resultado3 = $obj->consulta($consulta3);
                  $fila3 = $obj->fetch_assoc($resultado3);

                  $lastColumn =$objPHPExcel->getActiveSheet()->getHighestColumn();
                  $objPHPExcel->setActiveSheetIndex(0)->setCellValue($lastColumn.$i, $fila3['tipo_aprobacion']);



	          $i++;
                }

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

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

                //$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$i, "LAS NOTAS ENTRE [ ] SON RECUPERACIONES.    << NIVELES DE DESEMPE&ntilde;O: .b=BAJO   B=B&aacute;SICO  A=ALTO   S=SUPERIOR >>");
                $i=$i+2;

                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$i, '0 => PROMOVIDA: Aprob&oacute; TODAS las &aacute;reas/Asignaturas.');               
                $i++;

                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$i, '1 => GRADO <11: PROMOVIDA: Reprob&oacute; una (1) &aacute;rea/Asignatura y obtuvo Promedio General de -Desempe&ntilde;o B&aacute;sico-. (*) Para MEJORAMIENTO DE SU REGISTRO ACAD&eacute;MICO, puede presentar (el 15 y 16 de Enero de 2015) la -Prueba de Recuperaci&oacute;n- correspondiente al &aacute;rea/Asignatura reprobada, seg&uacute;n -Plan de Apoyo y Recomendaciones del Docente-.');               
                $i++;

                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$i, '1 => GRADO 11: Para MEJORAMIENTO DE SU REGISTRO ACAD&eacute;MICO, puede SOLICITAR, NO graduarse hasta despu&eacute;s de presentar (el 15 y 16 de Enero de 2015) la -Prueba de Recuperaci&oacute;n- correspondiente al &aacute;rea/Asignatura reprobada, seg&uacute;n -Plan de Apoyo y Recomendaciones del Docente-');               
                $i++;

                
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$i, '2 => GRADO < 11: NO PROMOVIDA: Obtuvo Desempe&ntilde;o Bajo en dos Asignaturas. Tiene derecho a presentar Evaluaci&oacute;n de Recuperaci&oacute;n (el 15 y 16 de enero de 2015). Y s&iacute; obtiene por lo menos Desempe&ntilde;o B&aacute;sico en cada una de las Asignaturas ser&aacute; promovida');                
                $i++;

                 $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$i, '2 => GRADO  11: Para MEJORAMIENTO DE SU REGISTRO ACAD&eacute;MICO, puede SOLICITAR, NO graduarse hasta despu&eacute;s de presentar (el 15 y 16 de Enero de 2015) las -Pruebas de Recuperaci&oacute;n- correspondientes a las &aacute;reas/Asignaturas reprobadas, seg&uacute;n -Plan de Apoyo y Recomendaciones del Docente- ');                
                $i++;
 
                               
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$i, '3 => NO PROMOVIDA: Reprob&oacute; en dos a&ntilde;os consecutivos MATEM&aacute;TICAS Y ESPA&ntilde;OL');
                $i++;

                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$i, '4 => NO PROMOVIDA: Reprob&oacute; en dos a&ntilde;os consecutivos MATEM&aacute;TICAS');
                $i++;

                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$i, '5 => NO PROMOVIDA: Reprob&oacute; en dos a&ntilde;os consecutivos ESPA&ntilde;OL');
                $i++;

                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$i, '6 => NO PROMOVIDA: Reprob&oacute; una (1) &aacute;rea/Asignatura y NO obtuvo Promedio General de -Desempe&ntilde;o B&aacute;sico-.  (*) Debe presentar EVALUACI&oacute;N DE RECUPERACI&oacute;N, el 15 y 16 de enero de 2015, con base en el -Plan de Apoyo y Recomendaciones del Docente-.');
                $i++;

                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$i, '7 => NO PROMOVIDA: Obtuvo Desempe&ntilde;o Bajo en dos Asignaturas. Tiene derecho a presentar Evaluaci&oacute;n de Recuperaci&oacute;n el 15 y 16 de enero de 2015. Y s&iacute; obtiene por lo menos Desempe&ntilde;o B&aacute;sico en cada una de las Asignaturas ser&aacute; promovida');
                $i++;

                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$i, '8 => NO PROMOVIDA: Reprob&oacute; 3 o màs &aacute;reas/Asignaturas.');
                $i++;
                
                $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(TRUE);
                $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(TRUE);

                for($i = 'C'; $i <= $lastColumn; $i++){
			$objPHPExcel->setActiveSheetIndex(0)
				    ->getColumnDimension($i)->setWidth(10);
		}

                //-------- 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',"ESTADO FINAL")
		            ->setCellValue('F3',"JORNADA :".$fila0['nom_jor'])
		            ->setCellValue('I3',"TITULAR :".$fila0['nombres'])
                            ->setCellValue('L3',"A&ntilde;O LECTIVO :".$anyo['anolectivo']);

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


		// Se asigna el nombre a la hoja
		$objPHPExcel->getActiveSheet()->setTitle('Libro_Final_'.$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="Libro_Final.xlsx"');
		header('Cache-Control: max-age=0');

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

	}
	else{
		print_r('No hay resultados para mostrar');
	}
?>