/** * @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])); }