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

namespace Kufer\KuferTools\Allgemein\Raumreservierung\Reservierungsformular;

class ReservierungsFormularUseCase extends BasisRaumReservierungsformularUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new ReservierungsformularResponse());
  }

  public static function getToolId()
  {
    return 66;
  }

  public static function getToolSectionId()
  {
    return 770;
  }

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

    if ($this->request->startTime !== '' && !\DateTimeOperations::isValidTimeString($this->request->startTime)) {
      return false;
    }

    if ($this->request->endTime !== '' && !\DateTimeOperations::isValidTimeString($this->request->endTime)) {
      return false;
    }

    

    return true;
  }

  public function action()
  {
    parent::action();

    return $this->getResponse();
  }

  protected function getResponse()
  {
    $this->handleResponseStrategies();

    $this->response->sperrzeit = $this->getSperrzeit();
    $this->response->kursort = $this->getKursort();
    $this->response->status = $this->request->status; 

    return $this->response;
  }

  private function getSperrzeit()
  {
    
    $sperrzeit = $this->request->sperrzeit;
    $sperrzeit->ortnr = $this->request->raum;
    $sperrzeit->begruendung = $sperrzeit->begruendung ?? '';
    
    $sperrzeit->vondat = $this->request->datum;
    $sperrzeit->bisdat = $this->request->datum;
    $sperrzeit->vonuhr = $sperrzeit->vonuhr ?? '';
    $sperrzeit->bisuhr = $sperrzeit->bisuhr ?? '';

    return $sperrzeit;
  }

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

class ReservierungsFormularRequest extends BasisRaumReservierungsformularRequest
{
  public $startTime;
  public $endTime;

  
  public $sperrzeit;
  public $status;
}

class ReservierungsformularResponse extends BasisRaumReservierungsformularResponse
{
}