<?php
/**
 * @copyright (c) Kufer Software GmbH, Loisachstrasse 4, D-84453 Mühldorf
 */

namespace Kufer\KuferTools\Allgemein\Aktuelles\NeueNews;

use Kufer\KuferTools\Allgemein\Aktuelles\Utils\NewsHelper as NewsHelper;

class NeueNewsUseCase extends \Kufer\KuferTools\Basis\UseCase\ToolUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new NeueNewsResponse());
  }

  public static function getToolId()
  {
    return 16;
  }

  public static function getToolSectionId()
  {
    return 267;
  }

  public function hasAccess($pToolSectionId = null)
  {
    if (!parent::hasAccess()) {
      return false;
    }

    if (!$this->isRechtAllowed('266.0.1')) { 
      return false;
    }

    return true;
  }

  public function action()
  {
    return $this->getResponse();
  }

  protected function getResponse()
  {
    $this->handleResponseStrategies();
    $this->response->showFachbereiche = $this->showFachbereiche();
    $this->response->fachbereiche = $this->getFachbereiche();
    $this->response->benutzergruppen = $this->getBenutzergruppen();
    $this->response->gueltigBis = $this->getGueltigBisDatum();

    return $this->response;
  }

  private function showFachbereiche()
  {
    return NewsHelper::showFachbereiche();
  }

  protected function getResponseStrategies()
  {
    return array(
        new \Kufer\KuferTools\Utils\ResponseStrategies\ResponseMitRahmen($this)
    );
  }

  private function getFachbereiche()
  {
    return NewsHelper::getFachbereiche();
  }

  private function getBenutzergruppen()
  {
    return NewsHelper::getBenutzergruppen();
  }

  private function getGueltigBisDatum()
  {
    return \DateTimeOperations::getNextDate(\DateTimeOperations::getDateNow(), 14);
  }
}

class NeueNewsRequest
{
}

class NeueNewsResponse extends \Kufer\KuferTools\Basis\UseCase\ToolResponse
{
  public $user;
  public $menuPunkte = array();
  public $gueltigBis;
  public $showFachbereiche;
  public $fachbereiche;
  public $benutzergruppen;
}