/*
 * This file is part of node-crisp-api
 *
 * Copyright (c) 2025 Crisp IM SAS
 * All rights belong to Crisp IM SAS
 */

/**************************************************************************
 * IMPORTS
 ***************************************************************************/

// PROJECT: RESOURCES
import BaseResource from "./BaseResource";

/**************************************************************************
 * TYPES
 ***************************************************************************/

export type WebsiteAvailabilityStatus = {
  status?: string;
  since?: number;
}

export type WebsiteAvailabilityOperator = {
  user_id?: string;
  type?: string;
  time?: WebsiteAvailabilityOperatorTime;
}

export type WebsiteAvailabilityOperatorTime = {
  for?: number;
  since?: number;
}

/**************************************************************************
 * CLASSES
 ***************************************************************************/

/**
 * Crisp WebsiteAvailability Resource
 */
class WebsiteAvailability extends BaseResource {
  /**
   * Get Website Availability Status
   */
  getWebsiteAvailabilityStatus(
    websiteID: string
  ): Promise<WebsiteAvailabilityStatus> {
    return this.crisp.get(
      this.crisp.prepareRestUrl([
        "website", websiteID, "availability", "status"
      ])
    );
  };

  /**
   * List Website Operator Availabilities
   */
  listWebsiteOperatorAvailabilities(
    websiteID: string
  ): Promise<WebsiteAvailabilityOperator[]> {
    return this.crisp.get(
      this.crisp.prepareRestUrl([
        "website", websiteID, "availability", "operators"
      ])
    );
  };
}

/**************************************************************************
 * EXPORTS
 ***************************************************************************/

export default WebsiteAvailability;
