<?php
/**
 * PHP version 7
 *
 * Copyright (C) 2023 Leipzig University Library
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * @category VuFind
 * @package  Controller
 * @author   Alexander Purr <purr@ub.uni-leipzig.de>
 * @license  http://opensource.org/licenses/gpl-2.0.php GNU GPLv2
 * @link     https://vufind.org/wiki/development Wiki
 */
namespace fid_adlr\Controller;

use fid\Controller\UserController as FidUserContoller;
use fid\Service\Client;
use fid\Service\DataTransferObject\User;
use fid\Service\UserNotAuthorizedException;

/**
 * User Controller
 *
 * @category VuFind
 * @package  Controller
 * @author   Alexander Purr <purr@ub.uni-leipzig.de>
 * @license  http://opensource.org/licenses/gpl-2.0.php GNU GPLv2
 * @link     https://vufind.org/wiki/development Wiki
 */
class UserController extends FidUserContoller
{
    /**
     * Request download of user list newsletter route action
     *
     * @return HttpResponse
     * @throws ClientException
     * @throws UserNotAuthorizedException
     */
    public function exportListNewsletterAction()
    {
        $userListNewsletter = [];
        foreach ($this->client->requestUserList() as $user) {
            /* @var User $user */
            $data = $user->getData();
            if (isset($data["newsletter"]) && $data["newsletter"] == true) {
                $userListNewsletter[] = $user;
            }
        }
        return $this->createExportFile(
            $userListNewsletter,
            $fields = ['username'],
            $mode = 'default',
            $separator = "\t",
            $printTableHead = false
        );
    }
}