solicitudes_excel.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. $fecha = date('d_m_Y');
  3. require_once '../class/c_login.php';
  4. if (!isset($_SESSION['user'])){
  5. die(header('Location: index.php'));
  6. }
  7. header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
  8. header("Content-Disposition: attachment;filename=solicitudes_$fecha.xlsx");
  9. header("Cache-Control: max-age=0");
  10. require_once "../vendor/autoload.php";
  11. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  12. use PhpOffice\PhpSpreadsheet\Style\Border;
  13. use PhpOffice\PhpSpreadsheet\Style\Color;
  14. use PhpOffice\PhpSpreadsheet\Style\Fill;
  15. use PhpOffice\PhpSpreadsheet\Style\Alignment;
  16. use PhpOffice\PhpSpreadsheet\IOFactory;
  17. $fecha_ini = $_POST["fecha_inicial"];
  18. $fecha_fin = $_POST["fecha_final"];
  19. //Reposiciones
  20. $repEdo_rs = $db->query('SELECT * FROM fs_estado_reposicion' );
  21. $repoParams = array();
  22. $user = Login::get_user();
  23. $user->access();
  24. $query="";
  25. if($user->rol["rol_id"] == 9){//es coordinador
  26. $query .= ":facultad, ";
  27. $repoParams[":facultad"] = $user->facultad["facultad_id"];
  28. }else{//supervisor
  29. $query .= "NULL, ";
  30. }
  31. if(isset($_POST["prof"]) ){
  32. $query .= ":prof,";
  33. $profesor = trim($_POST["prof"]);//limpia texto
  34. $repoParams[":prof"] = $profesor;
  35. }else{
  36. $query .= "NULL,";
  37. }
  38. $query .= ":f_ini, :f_fin, ";
  39. $spreadsheet = new Spreadsheet();
  40. // Set document properties
  41. $spreadsheet->getProperties()->setCreator('Universidad La Salle')
  42. ->setLastModifiedBy('Universidad La Salle')
  43. ->setTitle('Solicitudes')
  44. ->setDescription('Reporte de solicitudes.');
  45. $headerStyle = new Style();
  46. $headerStyle->applyFromArray(
  47. [
  48. 'fill' => [
  49. 'fillType' => Fill::FILL_SOLID,
  50. 'color' => ['argb' => 'FF001d68'],
  51. ],
  52. 'borders' => [
  53. 'bottom' => ['borderStyle' => Border::BORDER_THIN],
  54. 'right' => ['borderStyle' => Border::BORDER_MEDIUM],
  55. ],
  56. 'font' => [
  57. 'bold' => true,
  58. 'color' => ['argb' => 'FFFFFFFF'],
  59. ]
  60. ]
  61. );
  62. $row_base = 6;
  63. $i=0;
  64. foreach($repEdo_rs as $redo){
  65. $row = $row_base;
  66. $spreadsheet->setActiveSheetIndex($i);
  67. //crea imagen
  68. $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
  69. $drawing->setName('La Salle');
  70. $drawing->setDescription('La Salle');
  71. $drawing->setPath('../imagenes/logo.png'); // put your path and image here
  72. $drawing->setCoordinates('A1');
  73. $drawing->setHeight(100);
  74. $drawing->setOffsetX(10);
  75. //agrega imagen
  76. $drawing->setWorksheet($spreadsheet->getActiveSheet());
  77. $spreadsheet->getActiveSheet()
  78. ->setCellValue('A'.$row, 'Estado')
  79. ->setCellValue('B'.$row, 'Tipo')
  80. ->setCellValue('C'.$row, 'Profesor')
  81. ->setCellValue('D'.$row, 'Materia')
  82. ->setCellValue('E'.$row, 'Grupo')
  83. ->setCellValue('F'.$row, 'Fecha falta')
  84. ->setCellValue('G'.$row, 'Fecha reposición')
  85. ->setCellValue('H'.$row, 'Salón');
  86. $repoParams[":edo"]=$redo["estado_reposicion_id"];
  87. if($user->rol["rol_id"] == 7){//es supervisor
  88. $repoParams[":sup"] = $user->user["id"];
  89. $solicitudes_rs = $db->query('SELECT * FROM fs_solicitud(NULL, '.$query.':edo, NULL, :sup) ', $repoParams );
  90. }else{
  91. $solicitudes_rs = $db->query('SELECT * FROM fs_solicitud(NULL, '.$query.':edo, NULL, NULL) ', $repoParams );
  92. }
  93. $spreadsheet->setActiveSheetIndex($sheet)->setTitle($redo["estado_nombre"]);
  94. if(isset($solicitudes_rs) && count($solicitudes_rs)>0){
  95. foreach($solicitudes_rs as $reposicion){
  96. $sheet = $spreadsheet->getActiveSheet();
  97. $sheet->setCellValue('A'.$row, $reposicion["estado_nombre"]);
  98. $sheet->setCellValue('B'.$row, $reposicion["solicitudtipo_nombre"]);
  99. $sheet->setCellValue('C'.$row, $reposicion["profesor_clave"]." - ".$reposicion["profesor_nombre"]);
  100. $sheet->setCellValue('D'.$row, $reposicion["materia_nombre"]);
  101. if($reposicion["horario_grupo"]!="")
  102. $sheet->setCellValue('E'.$row, $reposicion["grupo_nombre"]);
  103. if($reposicion["fecha_clase"]!=""){
  104. $sheet->setCellValue('F'.$row, $fechaI." ".substr($reposicion["horario_hora"],0, 5));
  105. }
  106. $fechaF = date("d/m/Y", strtotime($reposicion["fecha_nueva"]));
  107. $sheet->setCellValue('G'.$row, $fechaF." ".substr($reposicion["hora_nueva"],0, 5)." a ".substr($reposicion["hora_nueva_fin"],0, 5));
  108. if($reposicion["salon_id"] != ""){
  109. $salon_json = json_decode($reposicion["salon_array"], true);
  110. $sheet->setCellValue('H'.$row, $salon_json[count($salon_json)-1]);
  111. }else
  112. $sheet->setCellValue('H'.$row, "Pendiente");
  113. $row++;
  114. }//foreach
  115. }//if
  116. $i++;
  117. }
  118. $spreadsheet->setActiveSheetIndex(0);
  119. foreach ($sheet->getColumnIterator() as $column) {
  120. $sheet->getColumnDimension($column->getColumnIndex())->setAutoSize(true);
  121. }
  122. $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
  123. $writer->save('php://output');