This repository has been archived on 2022-10-07. You can view files and clone it, but cannot push or open issues or pull requests.
skynet-webportal/packages/dashboard/src/pages/api/square/invoices.js

46 lines
1.3 KiB
JavaScript

import { Client, Environment } from "square";
import { StatusCodes } from "http-status-codes";
const client = new Client({
environment: Environment.Sandbox,
accessToken: process.env.SQUARE_ACCESS_TOKEN,
});
const api = {
GET: async (req, res) => {
const user = "NBE7TRXZPGZXNBD64JB6DR5AGR"; // req.headers["x-user"];
try {
// get locations for invoices search query
const { result: locationsResponse } = await client.locationsApi.listLocations();
const { locations } = locationsResponse;
// create invoices serach query
const locationIds = locations.map(({ id }) => id);
const customerIds = [user];
const filter = { locationIds, customerIds };
const sort = { field: "INVOICE_SORT_DATE", order: "DESC" };
const query = { filter, sort };
// query invoices with given search criteria
const { result: invoicesResponse } = await client.invoicesApi.searchInvoices({ query, limit: 10 });
const { invoices } = invoicesResponse;
res.json(invoices);
} catch (error) {
console.log(error);
console.log(error?.errors);
res.json([]); // todo: error handling
}
},
};
export default (req, res) => {
if (req.method in api) {
return api[req.method](req, res);
}
return res.status(StatusCodes.NOT_FOUND);
};