import Joi from "joi";
import { IPercentage_DTO, Result, RuleValidator } from "../../../../common";

export interface IUpdateProfile_Request_DTO {
  contact_information: string;
  default_payment_method: string;
  default_notes: string;
  default_legal_terms: string;
  default_quote_validity: string;
  default_tax: IPercentage_DTO;
  logo: string;
}

export function ensureUpdateProfile_Request_DTOIsValid(userDTO: IUpdateProfile_Request_DTO) {
  const schema = Joi.object({
    contact_information: Joi.string().optional().allow(null).allow("").default(""),
    default_payment_method: Joi.string().optional().allow(null).allow("").default(""),
    default_notes: Joi.string().optional().allow(null).allow("").default(""),
    default_legal_terms: Joi.string().optional().allow(null).allow("").default(""),
    default_quote_validity: Joi.string().optional().allow(null).allow("").default(""),
    default_tax: Joi.object({
      amount: Joi.number().allow(null),
      scale: Joi.number(),
    }).optional(),
    logo: Joi.string().optional().allow(null).allow("").default(""),
  }).unknown(true);

  const result = RuleValidator.validate<IUpdateProfile_Request_DTO>(schema, userDTO);

  if (result.isFailure) {
    return Result.fail(result.error);
  }

  return Result.ok(true);
}
