/**
  * @Route("/{year}/{month}", name="siswa__kehadiran")
  * @Template("LanggasSisdikBundle:KehadiranSiswa:tabulasi.html.twig")
  */
 public function indexAction($year = 0, $month = 0)
 {
     $waktuSekarang = new \DateTime();
     $year = $year != 0 ? $year : $waktuSekarang->format('Y');
     $month = $month != 0 ? $month : $waktuSekarang->format('m');
     $tanggalTerpilih = new \DateTime("{$year}-{$month}-01");
     $sekolah = $this->getSekolah();
     $em = $this->getDoctrine()->getManager();
     $tahunAkademik = $em->getRepository('LanggasSisdikBundle:TahunAkademik')->findOneBy(['sekolah' => $sekolah, 'aktif' => true]);
     if (!$tahunAkademik instanceof TahunAkademik) {
         throw $this->createNotFoundException($this->get('translator')->trans('flash.tahun.akademik.tidak.ada.yang.aktif'));
     }
     $siswa = $this->getUser()->getSiswa();
     $siswaKelas = $em->getRepository('LanggasSisdikBundle:SiswaKelas')->findOneBy(['siswa' => $siswa, 'tahunAkademik' => $tahunAkademik, 'aktif' => true]);
     if (!$siswaKelas instanceof SiswaKelas) {
         throw $this->createNotFoundException($this->get('translator')->trans('flash.siswa.tidak.terdaftar.aktif.di.kelas'));
     }
     $objectCalendar = new Calendar();
     $calendar = $objectCalendar->createMonthlyCalendar($tanggalTerpilih->format('Y'), $tanggalTerpilih->format('m'));
     $nextmonth = date('Y-m-d', mktime(0, 0, 0, $tanggalTerpilih->format('m') + 1, 1, $tanggalTerpilih->format('Y')));
     $kehadiran = $em->createQueryBuilder()->select('kehadiran')->from('LanggasSisdikBundle:KehadiranSiswa', 'kehadiran')->where('kehadiran.sekolah = :sekolah')->andWhere('kehadiran.tahunAkademik = :tahunAkademik')->andWhere('kehadiran.kelas = :kelas')->andWhere('kehadiran.siswa = :siswa')->andWhere('kehadiran.tanggal >= :firstday AND kehadiran.tanggal < :nextmonth')->setParameter('sekolah', $sekolah)->setParameter('tahunAkademik', $tahunAkademik)->setParameter('kelas', $siswaKelas->getKelas())->setParameter('siswa', $siswa)->setParameter('firstday', $tanggalTerpilih->format('Y-m-01'))->setParameter('nextmonth', $nextmonth)->getQuery()->getResult();
     $tanggalTerpilih->modify('first day of -1 month');
     $tahunBulanSebelumnya = $tanggalTerpilih->format('Y');
     $bulanSebelumnya = $tanggalTerpilih->format('m');
     $tanggalTerpilih->modify('first day of +2 month');
     $tahunBulanBerikutnya = $tanggalTerpilih->format('Y');
     $bulanBerikutnya = $tanggalTerpilih->format('m');
     return ['tahunAkademik' => $tahunAkademik, 'kelas' => $siswaKelas, 'siswa' => $siswa, 'kehadiran' => $kehadiran, 'daftarStatusKehadiran' => JadwalKehadiran::getDaftarStatusKehadiran(), 'calendar' => $calendar, 'tanggalTerpilih' => $tanggalTerpilih, 'tahunBulanSebelumnya' => $tahunBulanSebelumnya, 'bulanSebelumnya' => $bulanSebelumnya, 'tahunBulanBerikutnya' => $tahunBulanBerikutnya, 'bulanBerikutnya' => $bulanBerikutnya];
 }
 /**
  * @Route("/update/{year}/{month}", name="kalender-akademik_update")
  * @Method("POST")
  */
 public function updateAction(Request $request, $year, $month)
 {
     $sekolah = $this->getSekolah();
     $this->setCurrentMenu();
     $objectCalendar = new Calendar();
     $calendar = $objectCalendar->createMonthlyCalendar($year, $month);
     $form = $this->createForm('sisdik_kalenderpendidikan', null, ['calendar' => $calendar]);
     $form->submit($request);
     if ($form->isValid()) {
         /* @var $em EntityManager */
         $em = $this->getDoctrine()->getManager();
         $data = $form->getData();
         for ($i = 1; $i <= 31; $i++) {
             if (array_key_exists('kbm_' . $i, $data) === true) {
                 $tanggal = new \DateTime("{$year}-{$month}-{$i}");
                 $kalenderPendidikan = $em->getRepository('LanggasSisdikBundle:KalenderPendidikan')->findOneBy(['sekolah' => $sekolah, 'tanggal' => $tanggal]);
                 if ($kalenderPendidikan instanceof KalenderPendidikan) {
                     if ($data['kbm_' . $i] == 1) {
                         $kalenderPendidikan->setKbm(true);
                     } else {
                         $kalenderPendidikan->setKbm(false);
                     }
                     $em->persist($kalenderPendidikan);
                 } else {
                     if ($data['kbm_' . $i] == 1) {
                         $kalenderPendidikan = new KalenderPendidikan();
                         $kalenderPendidikan->setSekolah($sekolah);
                         $kalenderPendidikan->setKbm(true);
                         $kalenderPendidikan->setTanggal($tanggal);
                         $em->persist($kalenderPendidikan);
                     }
                 }
             }
         }
         $em->flush();
         $this->get('session')->getFlashBag()->add('success', $this->get('translator')->trans('flash.data.academic.calendar.updated', ['%year%' => $year, '%month%' => $calendar['months'][$month]]));
     }
     return $this->redirect($this->generateUrl('kalender-akademik_display', ['year' => $year, 'month' => $month]));
 }