import http from './http';
import type { OrderPriority } from '@/types/OrderPriority';

export interface CreateOrderPriorityPayload {
  orderID: number;
  pageID: number;
  priority?: number;
}

export interface UpdateOrderPriorityPayload {
  priority?: number;
}

export interface BatchUpdateManyOrderPriorityDto {
  pages: {
    pageID: number;
    configs: {
      id: number;
      priority: number;
    }[];
  }[];
}

export async function listOrderPriorities(): Promise<OrderPriority[]> {
  const { data } = await http.get('/orderpiorities');
  return data;
}

export async function findOrderPrioritiesWithFilter(
  orderId?: number,
  pageId?: number
): Promise<OrderPriority[]> {
  const params = new URLSearchParams();
  if (orderId !== undefined) params.append('orderId', orderId.toString());
  if (pageId !== undefined) params.append('pageId', pageId.toString());

  const query = params.toString();
  const { data } = await http.get(`/orderpiorities${query ? '?' + query : ''}`);
  return data;
}


export async function createOrUpdateOrderPriority(
  payload: CreateOrderPriorityPayload
): Promise<{ message: string; orderPriority: OrderPriority }> {
  const { data } = await http.post('/orderpiorities', payload);
  return data;
}

export async function updateManyOrderPriorities(
  payload: BatchUpdateManyOrderPriorityDto
): Promise<any> {
  const { data } = await http.patch('/orderpiorities/batch', payload);
  return data;
}

export async function deleteOrderPriority(id: number): Promise<void> {
  await http.delete(`/orderpiorities/${id}`);
}