Example #1
0
    private function bookOverview()
    {
        $loanHelper = new \Babesk\Schbas\Loan($this->_dataContainer);
        $schoolyear = $this->_em->getRepository('DM:SystemSchoolyears')->findOneByActive(true);
        $gradeId = filter_input(INPUT_POST, 'grade');
        if (!$gradeId) {
            $this->_interface->dieError('Keine Klasse übergeben');
        }
        $grade = $this->_em->find('DM:SystemGrades', $gradeId);
        $query = $this->_em->createQuery('SELECT u FROM DM:SystemUsers u
			INNER JOIN u.attendances a
			INNER JOIN a.schoolyear s WITH s = :schoolyear
			INNER JOIN a.grade g WITH g = :grade
			ORDER BY u.name, u.forename
		');
        $query->setParameter('grade', $grade);
        $query->setParameter('schoolyear', $schoolyear);
        $users = $query->getResult();
        // The only difference between the PDF for booksToReturn and
        // booksToLoan is the title and the included books
        $pdfTitle = '';
        $syName = $schoolyear->getLabel();
        $gradename = $grade->getGradelevel() . $grade->getLabel();
        // [{ user: {<userdata>}, books: [{<bookdata>}] }]
        $usersWithBooks = [];
        if (isset($_POST['booksToReturn'])) {
            $pdfTitle = "Abzugebende Bücher für {$gradename} ({$syName})";
            foreach ($users as $user) {
                $books = $loanHelper->lendBooksToReturnOfUserGet($user, $schoolyear);
                $usersWithBooks[] = ['user' => $user, 'books' => $books];
            }
        } else {
            if (isset($_POST['booksToLoan'])) {
                $pdfTitle = "Noch auszuleihende Bücher für {$gradename} ({$syName})";
                foreach ($users as $user) {
                    $books = $loanHelper->loanBooksOfUserGet($user, ['schoolyear' => $schoolyear]);
                    $usersWithBooks[] = ['user' => $user, 'books' => $books];
                }
            }
        }
        $date = date('d.m.Y H:i:s');
        $this->_smarty->assign('grade', $grade);
        $this->_smarty->assign('date', $date);
        $this->_smarty->assign('usersWithBooks', $usersWithBooks);
        $this->_smarty->assign('pdfTitle', $pdfTitle);
        $pdfContent = $this->_smarty->fetch(PATH_SMARTY_TPL . '/pdf/schbas-books-overview.pdf.tpl');
        $pdf = new GeneralPdf($this->_pdo);
        $pdf->create($pdfTitle, $pdfContent);
        $pdf->output();
    }