import { applicationErrorResponse, sendFailedResponse, sendSuccessResponse } from "@lib/responses";
import { authenticateAPIToken } from "@middleware/authentication";
import { NextApiResponse } from "next";

export default async function handler(req: any, res: NextApiResponse) {
	authenticateAPIToken(req, res, async () => {
		try {
			if (req.websiteId) {
				const { type } = req.body;
				const rawResponse = await fetch(
					`${process.env.CBEND_URL}/api/v1/bigcommerce/updateReviewForProducts?context=${req.query.context}`,
					{
						method: "POST",
						headers: {
							Accept: "application/json",
							"Content-Type": "application/json",
						},
						body: JSON.stringify({ websiteId: req.websiteId, type }),
					}
				);
				const content = await rawResponse.json();
				if (content.status === "success") {
					return sendSuccessResponse(res, {}, content.message || "Review refresh started");
				}
				return sendFailedResponse(res, {}, content.message || "Error refreshing reviews");
			}
			return sendFailedResponse(res, {}, "Shop not found");
		} catch (e) {
			console.log(e);
			return applicationErrorResponse(res);
		}
	});
}
