// src/services/orderService.js
import { get, post, put } from './api'

/**
 * 🔹 Tek bir siparişi ID’ye göre getirir.
 * @param {string} id - OrderHeaderID (GUID)
 */
export async function getOrderById(id) {
  try {
    const data = await get(`/order/get/${id}`)
    return data
  } catch (err) {
    console.error('❌ getOrderById hatası:', err.message)
    throw err
  }
}

/**
 * 🔹 Yeni sipariş oluşturur (insert).
 * Backend: POST /api/order/create
 * @param {Object} header - Sipariş başlığı (OrderHeader tablosu)
 * @param {Array} lines - Satırlar (OrderLine tablosu)
 */
export async function createOrder(header, lines) {
  const payload = {
    header,
    lines,
    username: header?.CreatedUserName || 'system',
  }

  try {
    const data = await post('/order/create', payload)
    console.log('✅ Sipariş oluşturuldu:', data)
    return data
  } catch (err) {
    console.error('❌ createOrder hatası:', err.message)
    throw err
  }
}

/**
 * 🔹 Mevcut siparişi günceller (update).
 * Backend: PUT /api/order/update
 * @param {Object} header - Sipariş başlığı (OrderHeader tablosu)
 * @param {Array} lines - Satırlar (OrderLine tablosu)
 */
export async function updateOrder(header, lines) {
  const payload = {
    header,
    lines,
    username: header?.LastUpdatedUserName || 'system',
  }

  try {
    const data = await put('/order/update', payload)
    console.log('✅ Sipariş güncellendi:', data)
    return data
  } catch (err) {
    console.error('❌ updateOrder hatası:', err.message)
    throw err
  }
}
