Files
ordr/ordr-ui/app/client/controllers/OrderController.ts
2025-11-19 12:26:37 -07:00

57 lines
1.9 KiB
TypeScript

import axios from 'axios'
import {OrderResponse} from '../response/OrderResponse'
import {OrderTableQuery} from '../request/GetOrderTableRequest'
axios.interceptors.response.use(response => {
return response;
}, async error => {
if (error.response?.status === 401) {
const resp = await axios.get(process.env.NEXT_PUBLIC_API_URL + "/auth/login", {withCredentials: true})
window.location.href = resp.data.Location
}
return error
})
export const CreateOrder = async (orderer: string, dateDue: string): Promise<OrderResponse> => {
const queryParams = new URLSearchParams({
orderer: orderer,
date_due: dateDue,
date_placed: new Date().toISOString()
})
const res = await axios.post(process.env.NEXT_PUBLIC_API_URL + `/order/create?${queryParams.toString()}`, {}, {withCredentials: true})
return res.data as OrderResponse
}
export const GetOrderById = async (orderId: number): Promise<OrderResponse> => {
const queryParams = new URLSearchParams({
order_id: orderId.toString()
})
const res = await axios.get(process.env.API_URL + `/order?${queryParams.toString()}`)
return res.data as OrderResponse
}
export const GetOrderTable = async (page: number, filter: number, searchParams: OrderTableQuery): Promise<OrderResponse[]> => {
const queryParams = new URLSearchParams({
page: page.toString(),
filter: filter.toString()
})
console.log(page)
console.log(filter)
console.log(searchParams)
console.log(queryParams.toString())
const res = await axios.put(process.env.NEXT_PUBLIC_API_URL + `/order/table?${queryParams.toString()}`, searchParams, {withCredentials: true})
if(res.data?.Location) {
window.location.href = res.data.Location
}
return res.data || []
}
export const DeleteOrder = async (orderId: number) => {
const queryParams = new URLSearchParams({
order_id: orderId.toString()
})
await axios.delete(process.env.API_URL + `/order?${queryParams}`)
}