<?php

namespace lib\Core\Http;

class Redirect
{
  protected Session $session;

  public function __construct(Session $session)
  {
    $this->session = $session;
  }

  // 리다이렉트할 때 캐시를 방지하는 헤더 추가
  private function noCacheHeaders(): void
  {
    header("Cache-Control: no-cache, no-store, must-revalidate");
    header("Pragma: no-cache");
    header("Expires: 0");
  }

  // 이전 페이지로 리다이렉트 (캐시 방지)
  public function back(): self
  {
    $this->noCacheHeaders(); // 캐시 방지
    $backUrl = $_SERVER['HTTP_REFERER'] ?? '/';
    header("Location: {$backUrl}");
    return $this;
  }

  // 특정 URL로 리다이렉트 (캐시 방지)
  public function to(string $url): self
  {
    $this->noCacheHeaders(); // 캐시 방지
    header("Location: {$url}");
    return $this;;
  }

  // 세션에 값 추가 후 리다이렉트
  public function withInput(): self
  {
    $this->session->flashInput($_POST);
    return $this;
  }

  // 세션에 에러 메시지 저장 후 리다이렉트
  public function with(string $key, mixed $value): self
  {
    $this->session->flash($key, $value);
    return $this;
  }
}
