Files
AnythingYouWant/src/helpers/transactionHelpers.js
zadit a64b999a05 ok
2025-03-15 18:59:44 +07:00

509 lines
12 KiB
JavaScript

import API_BASE_URL from "../config.js";
import { getLocalStorage, updateLocalStorage } from "./localStorageHelpers";
import { getItemsByCafeId } from "../helpers/cartHelpers.js";
export async function confirmTransaction(transactionId, notAcceptedItems) {
try {
const token = getLocalStorage("auth");
const response = await fetch(
`${API_BASE_URL}/transaction/confirm-transaction/${transactionId}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
notAcceptedItems
}),
}
);
if (!response.ok) {
return false;
}
const res = await response.json();
return res;
} catch (error) {
console.error("Error:", error);
}
}
export async function declineTransaction(transactionId) {
try {
const token = getLocalStorage("auth");
const response = await fetch(
`${API_BASE_URL}/transaction/decline-transaction/${transactionId}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
}
);
if (!response.ok) {
return false;
}
return true;
} catch (error) {
console.error("Error:", error);
}
}
export async function cancelTransaction(transactionId) {
try {
const token = getLocalStorage("auth");
const response = await fetch(
`${API_BASE_URL}/transaction/cancel-transaction/${transactionId}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
}
);
console.log(response);
if (!response.ok) {
return false;
}
return true;
} catch (error) {
console.error("Error:", error);
}
}
export async function handleClaimHasPaid(transactionId) {
try {
console.log(transactionId);
const token = getLocalStorage("auth");
const response = await fetch(
`${API_BASE_URL}/transaction/claim-transaction/${transactionId}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
}
);
if (!response.ok) {
return false;
}
return await response.json();
} catch (error) {
console.error("Error:", error);
}
}
export async function handleConfirmHasPaid(transactionId) {
try {
console.log(transactionId);
const token = getLocalStorage("auth");
const response = await fetch(
`${API_BASE_URL}/transaction/confirm-paid/${transactionId}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
}
);
if (!response.ok) {
return false;
}
return true;
} catch (error) {
console.error("Error:", error);
}
}
export async function getTransaction(transactionId) {
try {
const token = getLocalStorage("auth");
const response = await fetch(
`${API_BASE_URL}/transaction/get-transaction/${transactionId}`,
{
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
}
);
if (!response.ok) {
return false;
}
const transaction = await response.json();
return transaction;
} catch (error) {
console.error("Error:", error);
}
}
export async function getMyTransactions() {
try {
const token = getLocalStorage("auth");
const response = await fetch(
`${API_BASE_URL}/transaction/get-my-transactions`,
{
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
}
);
const transactions = await response.json();
return transactions;
} catch (error) {
console.error("Error:", error);
}
}
export async function getTransactionsFromCafe(shopId, demand, idsOnly) {
try {
const token = getLocalStorage("auth");
const response = await fetch(
`${API_BASE_URL}/transaction/get-transactions/${shopId}?demandLength=${demand}&&idsOnly=${idsOnly}`,
{
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
}
);
if (!response.ok) {
return false;
}
const transactions = await response.json();
return transactions;
} catch (error) {
console.error("Error:", error);
}
}
export const handlePaymentFromClerk = async (
shopId,
user_email,
payment_type,
serving_type,
tableNo
) => {
try {
const token = getLocalStorage("auth");
const items = getItemsByCafeId(shopId);
const structuredItems = {
items: items.map((item) => ({
itemId: item.itemId,
qty: item.qty,
})),
};
console.log(items);
const response = await fetch(
API_BASE_URL + "/transaction/fromClerk/" + shopId,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
user_email: user_email,
payment_type,
serving_type,
tableNo,
transactions: structuredItems,
}),
}
);
if (response.ok) {
// Handle success response
console.log("Transaction successful!");
// Optionally return response data or handle further actions upon success
return true;
} else {
// Handle error response
console.error("Transaction failed:", response.statusText);
return false;
}
} catch (error) {
console.error("Error sending transaction:", error);
// Handle network or other errors
return false;
}
};
export const handlePaymentFromGuestSide = async (
shopId,
user_email,
payment_type,
serving_type,
tableNo
) => {
try {
const token = getLocalStorage("authGuestSide");
const items = getItemsByCafeId(shopId);
const structuredItems = {
items: items.map((item) => ({
itemId: item.itemId,
qty: item.qty,
})),
};
console.log(items);
const response = await fetch(
API_BASE_URL + "/transaction/fromGuestSide/" + shopId,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
user_email: user_email,
payment_type,
serving_type,
tableNo,
transactions: structuredItems,
}),
}
);
const res = await response.json();
console.log(res);
if (response.ok) {
// Handle success response
console.log("Transaction successful!");
// Optionally return response data or handle further actions upon success
return true;
} else {
// Handle error response
console.error("Transaction failed:", response.message);
return false;
}
} catch (error) {
console.error("Error sending transaction:", error);
// Handle network or other errors
return false;
}
};
export const handlePaymentFromGuestDevice = async (
shopId,
payment_type,
serving_type,
tableNo,
notes,
socketId
) => {
try {
const token = getLocalStorage("auth");
const items = getItemsByCafeId(shopId);
const structuredItems = {
items: items.map((item) => ({
itemId: item.itemId,
qty: item.qty,
price: item.price
})),
};
console.log(items);
const response = await fetch(
API_BASE_URL + "/transaction/fromGuestDevice/" + shopId,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
payment_type,
serving_type,
tableNo,
transactions: structuredItems,
notes: notes,
socketId,
}),
}
);
if (response.ok) {
// Handle success response
console.log("Transaction successful!");
const data = await response.json();
if (data.newUser) updateLocalStorage("auth", data.auth);
// Optionally return response data or handle further actions upon success
return true;
} else {
// Handle error response
console.error("Transaction failed:", response.statusText);
return false;
}
} catch (error) {
console.error("Error sending transaction:", error);
// Handle network or other errors
return false;
}
};
export const handleCloseBillFromGuestDevice = async (
transactionId,
orderMethod,
socketId
) => {
try {
const token = getLocalStorage("auth");
const response = await fetch(
API_BASE_URL + "/transaction/closeBillFromGuestDevice/" + transactionId,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
socketId,
orderMethod
}),
}
);
if (response.ok) {
// Handle success response
console.log("Transaction successful!");
return true;
} else {
// Handle error response
console.error("Transaction failed:", response.statusText);
return false;
}
} catch (error) {
console.error("Error sending transaction:", error);
// Handle network or other errors
return false;
}
};
export const handleExtendFromGuestDevice = async (
shopId,
transactionId,
notes,
socketId
) => {
try {
const token = getLocalStorage("auth");
const items = getItemsByCafeId(shopId);
const structuredItems = {
items: items.map((item) => ({
itemId: item.itemId,
qty: item.qty,
price: item.price
})),
};
console.log(items);
const response = await fetch(
API_BASE_URL + "/transaction/extentFromGuestDevice/" + transactionId,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
transactions: structuredItems,
notes: notes,
socketId,
}),
}
);
if (response.ok) {
// Handle success response
console.log("Transaction successful!");
const data = await response.json();
if (data.newUser) updateLocalStorage("auth", data.auth);
// Optionally return response data or handle further actions upon success
return true;
} else {
// Handle error response
console.error("Transaction failed:", response.statusText);
return false;
}
} catch (error) {
console.error("Error sending transaction:", error);
// Handle network or other errors
return false;
}
};
// Function to retrieve the authentication token from localStorage
function getAuthToken() {
return localStorage.getItem("auth");
}
// Helper function to get headers with authentication token
const getHeaders = (method = "GET") => {
const headers = {
Authorization: `Bearer ${getAuthToken()}`,
};
// No content-type header needed for FormData; fetch will handle it automatically
if (method !== "POST" && method !== "PUT") {
return { method, headers };
}
return {
method,
headers,
};
};
export const getReports = async (cafeId, filter) => {
const response = await fetch(
API_BASE_URL + "/transaction/get-reports/" + cafeId + "?type=" + filter,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
}
);
return response.json();
};
export const getAnalytics = async (filter, selectedCafeId) => {
// Start the URL with the filter type query
let url = API_BASE_URL + "/transaction/get-analytics" + "?type=" + filter;
// Only add selectedCafeId to the query string if it's not null
if (selectedCafeId !== null) {
url += "&cafeId=" + selectedCafeId;
}
// Fetch with the updated URL
const response = await fetch(url, getHeaders('POST'));
return response.json();
};