<?php
/**
 * @copyright (c) Kufer Software GmbH, Oderstraße 7, D-84453 Mühldorf
 */

namespace Kufer\Web\KuferTools\Teilnehmer\Punkte\PunkteUebersicht;

use Kufer\Web\KuferTools\Teilnehmer\Punkte\Utils\PunkteUtils as PunkteUtils;

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

  public static function getToolId()
  {
    return \ToolsAPI::TOOL_PUNKTE_TN;
  }

  public static function getToolSectionId()
  {
    return 357;
  }

  public function action()
  {
    $this->handleResponseStrategies();
    $this->response->xsrfBestaetigePunkte = \Xsrf::getXsrfGetParameter('bestaetigePunkte');

    $kennz = PunkteUtils::getKennz4Tnr($this->response->user->tnr);

    $beantragungMoeglich = false;
    try {
      $teilnehmer = \SessionOperations::getCurrentWebToolsTeilnehmer();
      $this->response->zertifikatDate = $teilnehmer->zertifikat_druck_dat;
      $this->response->punkteSeitDatum = PunkteUtils::datumAbDemPunkteSummiertWerdenSollen($this->response->zertifikatDate);
      $this->response->punkteOk = PunkteUtils::getPunkteOk($this->response->user->tnr, $this->response->punkteSeitDatum);
      $this->response->punkteNok = PunkteUtils::getPunkteNok($this->response->user->tnr, $this->response->punkteSeitDatum);
      $this->response->punkteSchwelleBerufsgruppe = PunkteUtils::getBlakPunkteschwelle($kennz);
      $beantragungMoeglich = PunkteUtils::isBeantragungMoeglich();
    } catch (\Exception $ex) {
    }

    $this->response->showZertifikatBeantragenButton = $beantragungMoeglich;
    $this->response->isKennzPhiP = ($kennz == 14);
    $this->response->ablaufdatum = PunkteUtils::getAblaufdatumZertifikat($this->response->zertifikatDate);
    $this->response->isZertifikatAbgelaufen = \DateTimeOperations::isDatebeforeNow($this->response->ablaufdatum);
    $this->response->berufsgruppenName = PunkteUtils::getBlakBerufsgruppenNamen($kennz);
    $this->response->punkteSchwelleKurse1bis7 = PunkteUtils::getBlakBerufsgruppenSchwelleKurse1bis7($kennz);
    $this->response->statusCode = $this->request->statusCode;

    return $this->response;
  }

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

class PunkteUebersichtRequest
{
  public $bemerkung;
  public $statusCode;
}

class PunkteUebersichtResponse extends \Kufer\Web\KuferTools\Basis\UseCase\ToolResponse
{
  public $menuPunkte;
  public $user;

  public $zertifikatDate;
  public $punkteOk;
  public $punkteNok;
  public $showZertifikatBeantragenButton = false;
  public $punkteSchwelleBerufsgruppe;
  public $punkteSchwelleKurse1bis7;
  public $punkteSeitDatum;
  public $isKennzPhiP;
  public $ablaufdatum;
  public $isZertifikatAbgelaufen = false;
  public $berufsgruppenName;
  public $statusCode;

  public $xsrfBestaetigePunkte;
}