<?php

use Slim\Views\Twig;

class SettingsAPI
{
  public function __construct()
  {
  }

  public static function handleSettingsTask($request, $args, $body = null)
  {
    $task = $args["fourth"];
    switch ($task) {
      case "publish":
        $render = new Render();
        $render->renderTags();
        $render->renderArchive();
        $render->renderPages();

        $result = [
          "message" => "Site Rendered. GOOD EFFORT",
          "type" => "TASK_NONE",
        ];

        break;
      case "add-avatar":
        $result = ImagesAPI::uploadImage($request, "avatar");
        break;
      case "add-feature-background":
        $result = ImagesAPI::uploadImage($request, "background");
        break;
      case "sync":
        Settings::sync($body);
        $result = [
          "message" => "Settings Synced. You're doing great!",
          "type" => "settingsUpdated",
        ];
        break;
      case "nav-sync":
        Settings::navSync($body);
        $result = [
          "message" => "Navigation updated. Very slick!",
          "type" => "menuUpdated",
        ];
        break;
      default:
        $result = [
          "message" => "Hm, no task. That's unfortunate",
          "type" => "TASK_NONE",
        ];
        break;
    }

    return $result;
  }

  public static function getInfo($request, $args)
  {
    $task = $args["fourth"];
    switch ($task) {
      case "site":
        $config = new Settings();
        $settings = $config->getSettings();
        $data = [
          "title" => $settings["global"]["title"],
          "base_url" => $settings["global"]["base_url"],
          "description" => $settings["global"]["descriptions"],
        ];
        $result = [
          "message" => "Settings Found",
          "type" => "GET_SETTINGS",
          "data" => $data,
        ];
        break;
      case "member":
        if (Session::active()) {
          $member = $member = Session::get("member");
          $data = ["handle" => $member["handle"], "email" => $member["email"]];
          $result = [
            "message" => "Member Info Found",
            "type" => "GET_MEMBER_INFO",
            "data" => $data,
          ];
        } else {
          $result = [
            "message" => "Not logged in. C'mon, bruh",
            "type" => "TASK_NONE",
          ];
        }
        break;
      default:
        $result = [
          "message" => "No Settings found. Frowny Face",
          "type" => "TASK_NONE",
        ];
        break;
    }
    return $result;
  }

  public static function createBackup()
  {
    $result = Maintenance::makeBackup();
    return $result;
  }
}