import axios from 'axios'
import { IData } from '../interfaces'

const sendToGateway = async (jwt: string, backendUrl: string, data: IData) => {
  try {
    await axios.post(`${backendUrl}gateway`, data, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `jwt ${jwt}`
      }
    })
    return {
      success: true
    }
  } catch (err) {
    return {
      success: false,
      message: err.response.data
    }
  }
}

const checkGatewayStatus = async (jwt: string, backendUrl: string) => {
  try {
    const response = await axios.get(`${backendUrl}gateway`, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `jwt ${jwt}`
      }
    })
    return {
      success: true,
      data: response.data
    }
  } catch (err) {
    return {
      success: false,
      message: err.response.data
    }
  }
}
const sendStartHandover = async (jwt: string, backendUrl: string, userId: string) => {
  try {
    const response = await axios.post(`${backendUrl}gateway/startHandover/${userId}`, {}, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `jwt ${jwt}`
      }
    })
    return {
      success: true,
      data: response.data
    }
  } catch (err) {
    return {
      success: false,
      message: err.response.data
    }
  }
}

const queryHandoverStatus = async (jwt: string, backendUrl: string, userId: string) => {
  try {
    const response = await axios.get(`${backendUrl}gateway/handoverStatus/${userId}`, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `jwt ${jwt}`
      }
    })
    return {
      success: true,
      data: response.data
    }
  } catch (err) {
    return {
      success: false,
      message: err.response.data
    }
  }
}

const queryConversationIds = async (jwt: string, backendUrl: string) => {
  try {
    const response = await axios.get(`${backendUrl}gateway/conversationIds`, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `jwt ${jwt}`
      }
    })
    return {
      success: true,
      data: response.data
    }
  } catch (err) {
    return {
      success: false,
      message: err.response.data
    }
  }
}

export {
  queryConversationIds,
  sendStartHandover,
  queryHandoverStatus,
  sendToGateway,
  checkGatewayStatus
}
