<?php
session_start();
$time_start = microtime(true); 
include "../../inc/config.php";
session_check();
require('../../lib/simplexlsx.class.php');
require('../../lib/php-excel-reader/excel_reader2.php');
require('../../lib/SpreadsheetReader.php');

switch ($_GET["act"]) {
case 'down_template':
    require_once '../Writer.php';
    $writer = new XLSXWriter();
$style =
        array (
                      array(
              'border' => array(
                'style' => 'thin',
                'color' => '000000'
                ),
            'allfilleddata' => true
            ),
            array(
                'fill' => array(
                    'color' => 'ff0000'
                    ),
                'cells' => array(
                    'A1',
                    'B1',
                    'C1',
                    'G1',
                    'H1',
                    'I1'
                    ),
                'border' => array(
                    'style' => 'thin',
                    'color' => '000000'
                    ),
                'verticalAlign' => 'center',
                'horizontalAlign' => 'center',
            ),
                        array(
                'fill' => array(
                    'color' => '00ff00'
                    ),
                'cells' => array(
                      'D1',
                      'E1',
                      'F1',
                      'J1',
                      'K1',
                      'L1'
                    ),
                'border' => array(
                    'style' => 'thin',
                    'color' => '000000'
                    ),
                'verticalAlign' => 'center',
                'horizontalAlign' => 'center',
                ),
            array(
                    'fill' => array(
                        'color' => '2f74b5'
                        ),
                    'cells' => array(
                     
                        'J1'
                        ),
                    'border' => array(
                        'style' => 'thin',
                        'color' => '000000'
                        ),
                    'verticalAlign' => 'center',
                    'horizontalAlign' => 'center',
                    )
            );

//column width
$col_width = array(
  1 => 19,
  2 => 20,
  3 => 42,
  4 => 19,
  5 => 23,
  6 => 19,
  7 => 19,
  8 => 19,
  9 => 19,
  10 => 20,
  11 => 20,
  12 => 20
  );
$writer->setColWidth($col_width);

$header = array(
  'Semester'=>'string',
  'Jenis Aktivitas'=>'string',
  'Judul'=>'string',
  'Lokasi'=>'string',
  'Nomor SK Tugas' => 'string',
  'Tanggal SK Tugas' => 'date',
  'Jenis Anggota' => 'date',
  'ID AKTIVITAS'=>'string',
  'Kode Prodi' => 'string',
  'Program MBKM' => 'string',
  'Tanggal Mulai' => 'string',
  'Tanggal Selesai' => 'string'
);


    $data_rec = array(); 
            $key = json_decode(file_get_contents('data.json'));
                    $data_rec[] = array(
                          $key->semester,
                          $key->id_jenis_akt,
                          strip_tags($key->judul),
                          $key->lokasi,
                          $key->nomor_sk,
                          $key->tanggal_sk,
                          $key->jenis_anggota,
                          $key->ket,
                          $key->kode_jurusan,
                          $key->program_mbkm,
                          $key->tanggal_mulai,
                          $key->tanggal_selesai
                    );
            $filename = 'template_aktivitas_mahasiswa.xlsx';

//jalur pendaftaran
$jenis_akt_mhs = $db->fetch_custom("select * from jenis_akt_mhs");
foreach ($jenis_akt_mhs as $jns_akt) {
  if ($jns_akt->a_kegiatan_kampus_merdeka=='1') {
    $data_jenis_akt[] = $jns_akt->id_jns_akt_mhs." : ".$jns_akt->nm_jns_akt_mhs.' (Kampus Merdeka)';
  } else {
    $data_jenis_akt[] = $jns_akt->id_jns_akt_mhs." : ".$jns_akt->nm_jns_akt_mhs;
  }
  
}
$comments = array(
'A1' => 'Semester Pelaporan
format : tahun+semester (1 : Ganjil, 2 : Genap, 3 : Pendek)
contoh : 20231 (berarti 2023 ganjil)
info : Wajib disi',
'B1' => 'Jenis Aktivitas
'.implode("\n", $data_jenis_akt).'
Info : Wajib Diisi',
'C1' => 'Judul Aktivitas

info : Wajib disi',
'D1' => 'Lokasi
Boleh Kosong Kalau Belum Ada',
'E1' => 'Nomor SK Tugas 

Info : Boleh Kosong',
'F1' => 'Tanggal SK Tugas
Format
Tahun-Bulan-Tanggal
contoh : 2024-07-23
Info : Boleh Kosong',
'G1' => 'Jenis Anggota
0 : Personal
1 : Kelompok
Wajib Diisi',
'H1' => '
ID Aktivitas
Id ini sebagai acuan unik  antara data anggota, pembimbing dan penguji. Jadi harus sama
id ini bebas (bisa angka/huruf) asal unik  antara aktivitas satu dengan yang lainya. Misal contoh saya buat 
2017205 (tahun dan kelompok kkn)
',
'I1' => '
Lihat di menu master data -> jurusan
Wajib Diisi',
'J1' => '
Silakan isi jika Jenis Aktivitas Kampus Merdeka

Konditional',
'K1' => 'Tanggal Mulai
format : tahun-bulan-tanggal
contoh : 2024-02-01
Info : Boleh Kosong',
'L1' => 'Tanggal Akhir
format : tahun-bulan-tanggal
contoh : 2024-02-01
Info : Boleh Kosong'
);


$writer->setComment($comments);

    header('Content-disposition: attachment; filename="'.XLSXWriter::sanitize_filename($filename).'"');
    header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    header('Content-Transfer-Encoding: binary');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');



    $writer->writeSheet($data_rec,'Template Aktivitas', $header, $style);
    $writer->writeToStdOut();
    exit(0);
    break;
  case 'delete_error':
    $db->fetch_custom("delete from aktivitas_mahasiswa where status_error=2 and kode_jurusan='".$_POST['id']."'");
    break;
    case 'delete_all':
  
    $status = $_POST['status'];
    if ($status=='all') {
        $status = '';
    } elseif ($status=='0') {
        $status = "and status_error ='0'";
    } elseif ($status=='1') {
        $status = "and status_error ='1'";
    } elseif ($status=='2') {
        $status = "and status_error ='2'";
    }

    if ($_POST['jurusan']=='all') {
        $jurusan = "";

    } else {
        $jurusan = "and kode_jurusan='".$_POST['jurusan']."'";
    }
        if ($_POST['sem']=='all') {
        $semester = "";
    } else {
        $semester = "and semester='".$_POST['sem']."'";
    }

    if ($status=="" && $jurusan=="" && $semester=="") {
       if ($_SESSION['level']==1) {
         $db->fetch_custom("TRUNCATE `aktivitas_mahasiswa`");
       } else {
          $db->fetch_custom("delete from aktivitas_mahasiswa where kode_jurusan='".$_SESSION['jurusan']."'");
       }
    } else {
      $ids = $db->fetch_custom("select id from aktivitas_mahasiswa where id!='' $semester $jurusan $status");
      foreach ($ids as $id) {
        $id_delete[] = $id->id;
      }
        $data_id = implode(",", $id_delete);
       $data_mhs_pt = $db->fetch_custom("delete from aktivitas_mahasiswa where id!='' $semester $jurusan $status and id in ($data_id)");
    }

    break;
  case 'import':
     if (!is_dir("../../../upload/aktivitas_mahasiswa")) {
              mkdir("../../../upload/aktivitas_mahasiswa");
    
    }


   if (!preg_match("/.(xls|xlsx)$/i", $_FILES["semester"]["name"]) ) {

              echo "pastikan file yang anda pilih xls|xlsx";
              exit();

            } else {
              move_uploaded_file($_FILES["semester"]["tmp_name"], "../../../upload/aktivitas_mahasiswa/".$_FILES['semester']['name']);
              $semester = array("semester"=>$_FILES["semester"]["name"]);

            }



$error_count = 0;
$error = array();
$sukses = 0;
$values = "";
$array_insert = array();
  $Reader = new SpreadsheetReader("../../../upload/aktivitas_mahasiswa/".$_FILES['semester']['name']);
  foreach ($Reader as $key => $val)
  {

    if ($key>0) {
      if ($val[0]!='') {
          $check = $db->check_exist('aktivitas_mahasiswa',array(
            'semester' => $db->trimmer($val[0]),
            'ket' => addslashes($val[7]),
            'kode_jurusan' => $db->trimmer($val[8])
          ));
            if ($check==true) {
              $error_count++;
              $error[] = $val[7]." Sudah Ada";
            } else {
              $sukses++;
                        $array_insert[] = array(
                          'semester' => $db->trimmer($val[0]),
                          'id_jenis_akt' => $db->trimmer($val[1]),
                          'judul' => addslashes($val[2]),
                          'lokasi' => $val[3],
                          'nomor_sk' => $db->trimmer($val[4]),
                          'tanggal_sk' => $db->trimmer($val[5]),
                          'jenis_anggota' => $db->trimmer($val[6]),
                          'ket' => addslashes($val[7]),
                          'kode_jurusan' => $db->trimmer($val[8]),
                          'program_mbkm' => isset($val[9]) && $val[9]!='' ? $db->trimmer($val[9]) : '0',
                          'tanggal_mulai' => isset($val[10]) ? $db->trimmer($val[10]) : '',
                          'tanggal_selesai' => isset($val[11]) ? $db->trimmer($val[11]) : ''
                        );
              }
      }
    }
  }

 if (!empty($array_insert)) {
  $db->insertMulti('aktivitas_mahasiswa',$array_insert);
  echo $db->getErrorMessage();
}

    unlink("../../../upload/aktivitas_mahasiswa/".$_FILES['semester']['name']);
    $msg = '';
$time_end = microtime(true);
$execution_time = ($time_end - $time_start);
if (($sukses>0) || ($error_count>0)) {
  $msg =  "<div class=\"alert alert-warning alert-dismissible\" role=\"alert\" >
  <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>
      <font color=\"#3c763d\">".$sukses." data Aktivitas baru berhasil di import</font><br />
      <font color=\"#ce4844\" >".$error_count." data tidak bisa ditambahkan </font>";
      if (!$error_count==0) {
        $msg .= "<a data-toggle=\"collapse\" href=\"#collapseExample\" aria-expanded=\"false\" aria-controls=\"collapseExample\">Detail error</a>";
      }
      //echo "<br />Total: ".$i." baris data";
      $msg .= "<div class=\"collapse\" id=\"collapseExample\">";
          $i=1;
          foreach ($error as $pesan) {
              $msg .= "<div class=\"bs-callout bs-callout-danger\">".$i.". ".$pesan."</div><br />";
            $i++;
            }
      $msg .= "</div>
    </div>";
            $msg .= "<p>Total Waktu Import : ". waktu_import($execution_time);
}
  echo $msg;
    break;
  case "in":
  
   $data = array(
    "semester"=>$_POST["semester"],
    "kode_jurusan"=>$_POST["jurusan"],
    "judul"=>$_POST["judul"],
    "lokasi"=>$_POST["lokasi"],
    "nomor_sk"=>$_POST["nomor_sk"],
    "tanggal_sk"=>$_POST["tanggal_sk"],
    "id_jenis_akt"=>$_POST["id_jenis_akt"],
    "ket"=>$_POST["ket"]
  );
  
  
   
    $in = $db->insert("aktivitas_mahasiswa",$data);
    
    if ($in=true) {
      echo "good";
    } else {
      return false;
    }
    break;
  case "delete":
    
    
    
    $db->delete("aktivitas_mahasiswa","id",$_GET["id"]);
    break;

      case 'del_massal':
    $data_ids = $_REQUEST['data_ids'];
    if(trim($data_ids)!="") {
        $delete =  $db->fetch_custom("delete from aktivitas_mahasiswa where id in ($data_ids)");
    }
    break;
  case "up":
   $data = array(
    "semester"=>$_POST["semester"],
    "kode_jurusan"=>$_POST["jurusan"],
    "judul"=>$_POST["judul"],
    "lokasi"=>$_POST["lokasi"],
    "nomor_sk"=>$_POST["nomor_sk"],
    "tanggal_sk"=>$_POST["tanggal_sk"],
    "jenis_anggota"=>$_POST["jenis_anggota"],
    "id_jenis_akt"=> $_POST["id_jenis_akt"],
    "ket"=> $_POST["ket"],
    "program_mbkm"=>$_POST["program_mbkm"],
    "tanggal_selesai"=>$_POST["tanggal_selesai"],
    "tanggal_mulai"=>$_POST["tanggal_mulai"]
  );
    
    $up = $db->update("aktivitas_mahasiswa",$data,"id",$_POST["id"]);
    if ($up=true) {
      echo "good";
    } else {
      return false; 
    }
    break;
  default:
    # code...
    break;
}

?>