import { Request, Response } from "express";
import SettingHelper from "../../../helpers/settingsHelper";
import { SettingString } from "../../../type/settingTypes";

/**
 * @description get All settings
 * @param req {Request} Express req object
 * @param res {Response} Express res object
 * @returns {Promise<*>}
 */
export async function getSettings(req: Request, res: Response): Promise<any> {
  res.json({ ...SettingHelper.getAllSettings(), ["mail.password"]: undefined });
}

/**
 * @description get setting
 * @param req {Request} Express req object
 * @param res {Response} Express res object
 * @returns {Promise<*>}
 */
export async function getSetting(req: Request, res: Response): Promise<any> {
  let setting = req.params.setting as SettingString;

  let value = SettingHelper.getSetting(setting);

  if (setting == "mail.password") {
    value = undefined;
  }

  res.send(value);
}

/**
 * @description set setting
 * @param req {Request} Express req object
 * @param res {Response} Express res object
 * @returns {Promise<*>}
 */
export async function setSetting(req: Request, res: Response): Promise<any> {
  let setting = req.body.setting as SettingString;
  let value = req.body.value as string;

  SettingHelper.setSetting(setting, value);

  res.sendStatus(204);
}

/**
 * @description reset setting
 * @param req {Request} Express req object
 * @param res {Response} Express res object
 * @returns {Promise<*>}
 */
export async function resetSetting(req: Request, res: Response): Promise<any> {
  let setting = req.params.setting as SettingString;

  SettingHelper.resetSetting(setting);

  res.sendStatus(204);
}