|
|
|
|
@ -10,6 +10,7 @@ import Trainer from "../interfaces/trainer";
|
|
|
|
|
import { Order, OrderObject, OrderObjectStatus, OrderStatus, PaymentIntentStatus } from "../interfaces/order";
|
|
|
|
|
import { sendUserCancelledOrderEmail } from "../mail/userCancelledOrder";
|
|
|
|
|
import User from "../interfaces/user";
|
|
|
|
|
import { stripe } from "../stripe";
|
|
|
|
|
|
|
|
|
|
const router: Router = express.Router();
|
|
|
|
|
|
|
|
|
|
@ -28,6 +29,7 @@ router.post("/order/:id/cancel", UserAuth, async (req: AuthedRequest, res: Respo
|
|
|
|
|
price,
|
|
|
|
|
created_at,
|
|
|
|
|
payment_intents.status as payment_intent_status,
|
|
|
|
|
payment_intents.external_id as payment_intent_id,
|
|
|
|
|
start_time as "startDate",
|
|
|
|
|
end_time as "endDate",
|
|
|
|
|
json_build_object(
|
|
|
|
|
@ -65,6 +67,8 @@ router.post("/order/:id/cancel", UserAuth, async (req: AuthedRequest, res: Respo
|
|
|
|
|
|
|
|
|
|
const user: User = lookupResult.rows[0].user;
|
|
|
|
|
lookupResult.rows[0].user = undefined;
|
|
|
|
|
const paymentIntentId = lookupResult.rows[0].payment_intent_id;
|
|
|
|
|
lookupResult.rows[0].payment_intent_id = undefined;
|
|
|
|
|
const order: Order = lookupResult.rows[0];
|
|
|
|
|
|
|
|
|
|
const dateValidation = Joi.date().min(Date.now()).validate(order.startDate)
|
|
|
|
|
@ -81,6 +85,11 @@ router.post("/order/:id/cancel", UserAuth, async (req: AuthedRequest, res: Respo
|
|
|
|
|
req.params.id
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
await stripe.refunds.create({
|
|
|
|
|
payment_intent: paymentIntentId,
|
|
|
|
|
reason: "requested_by_customer"
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
sendUserCancelledOrderEmail(user, order);
|
|
|
|
|
|
|
|
|
|
return res.sendStatus(204);
|
|
|
|
|
|