<?php
namespace nur\b\date;

/**
 * Class Hour: une heure pour un planning de rendez-vous
 */
class Hour extends Time {
  const UNIT = self::UNIT_MINUTES;
  const WRAP = true;

  const FORMAT = "HhMM";

  /**
   * @return int|null un nombre de minutes dont l'heure doit être multiple. par
   * exemple, une valeur 5 permet d'avoir des heures qui vont de 5 en 5 minutes
   * (0h00, 0h05, 0h10, etc.)
   */
  protected function STEP(): ?int {
    return static::STEP;
  } const STEP = null;

  protected function afterUpdate(): void {
    $step = $this->STEP();
    if ($step !== null) {
      $step *= $this->UNIT();
      $value = $this->seconds;
      $adjust = $value % $step;
      if ($value < 0) $adjust = -$adjust;
      $value -= $adjust;
      $this->seconds = $value;
    }
    parent::afterUpdate();
  }
}
