/** * Memperbarui kehadiran siswa. * * @Route("/update", name="kehadiran-siswa_update") * @Method("POST") * @Secure(roles="ROLE_GURU_PIKET") */ public function updateAction(Request $request) { $em = $this->getDoctrine()->getManager(); $data = $request->request->get('sisdik_kehadiransiswa'); foreach ($data as $keys => $values) { if (preg_match('/kehadiran_(\\d+)$/', $keys, $matches) !== false) { if (array_key_exists(1, $matches)) { $kehadiran = $em->getRepository('LanggasSisdikBundle:KehadiranSiswa')->find($matches[1]); if (is_object($kehadiran) && $kehadiran instanceof KehadiranSiswa) { $kehadiran->setStatusKehadiran($values); $kehadiran->setPermulaan(false); $kehadiran->setTervalidasi(true); $kehadiran->setKeteranganStatus($data['kehadiran_keterangan_' . $matches[1]]); $em->persist($kehadiran); } } } } $return = []; if (is_object($kehadiran) && $kehadiran instanceof KehadiranSiswa) { $prosesKehadiranSiswa = $em->getRepository('LanggasSisdikBundle:ProsesKehadiranSiswa')->findOneBy(['sekolah' => $kehadiran->getSekolah(), 'tahunAkademik' => $kehadiran->getTahunAkademik(), 'kelas' => $kehadiran->getKelas(), 'tanggal' => $kehadiran->getTanggal()]); if (is_object($prosesKehadiranSiswa) && $prosesKehadiranSiswa instanceof ProsesKehadiranSiswa) { $prosesKehadiranSiswa->setBerhasilValidasi(true); } else { $prosesKehadiranSiswa = new ProsesKehadiranSiswa(); $prosesKehadiranSiswa->setSekolah($kehadiran->getSekolah()); $prosesKehadiranSiswa->setTahunAkademik($kehadiran->getTahunAkademik()); $prosesKehadiranSiswa->setKelas($kehadiran->getKelas()); $prosesKehadiranSiswa->setTanggal($kehadiran->getTanggal()); $prosesKehadiranSiswa->setBerhasilValidasi(true); } $em->persist($prosesKehadiranSiswa); $return['berhasilValidasi'] = 1; } $em->flush(); $return['responseCode'] = 200; $return['responseText'] = $this->get('translator')->trans('flash.presence.student.updated'); $return['matches'] = $matches; $return['data'] = $data; $return = json_encode($return); return new Response($return, 200, ['Content-Type' => 'application/json']); }