diff --git a/src/controllers/order/editStatus.ts b/src/controllers/order/editStatus.ts index c37f032..721ff28 100644 --- a/src/controllers/order/editStatus.ts +++ b/src/controllers/order/editStatus.ts @@ -1,5 +1,4 @@ import {Request, Response} from 'express'; -import axios from 'axios'; import notifyOrdersUpdated from '../../sockets/notifyOrdersUpdated'; import {badRequest, noContent, notFound, unauthorized} from '../../utils/responses'; import Order from '../../models/order'; @@ -8,40 +7,7 @@ import {Error, OrderUpdate, Permission, Status} from '../../types'; import OrderItem from '../../models/orderItem'; import Item from '../../models/item'; import Category from '../../models/category'; -import log from '../../utils/log'; -import PlaceAndDiscord from "../../models/placeAndDiscord"; - -const sendOrderToDiscordApi = async (order: Order) => { - const token = process.env.DISCORD_API_PRIVATE_KEY; - log.info('Sending order to discord...'); - - try { - const discordId: string | null = (await PlaceAndDiscord.findByPk(order.place))?.discordId; - if (!discordId) { - log.info('No discord id found for this place, aborting'); - return; - } - log.info(`Discord id found : ${discordId}`); - const res = await axios.post( - `https://discord.com/api/users/@me/channels`, - { recipient_id: discordId }, - { - headers: { - Authorization: `Bot ${token}`, - }, - }, - ); - const { id: dmId }: { id: string } = res.data; - await axios.post( - `https://discord.com/api/channels/${dmId}/messages`, - { content: "Ta commande est prête, viens la chercher !" }, - { headers: { Authorization: `Bot ${token}` } } - ); - log.info(`Discord message sent to : ${discordId}`); - } catch (error) { - log.warn(`Discord message error : ${error}`); - } -}; +import sendOrderToDiscordApi from '../../utils/sendDiscordMessage'; const editStatus = (orderUpdate: OrderUpdate) => async (req: Request, res: Response) => { try { diff --git a/src/utils/sendDiscordMessage.ts b/src/utils/sendDiscordMessage.ts new file mode 100644 index 0000000..af3dab3 --- /dev/null +++ b/src/utils/sendDiscordMessage.ts @@ -0,0 +1,43 @@ +import axios from 'axios'; +import Order from '../models/order'; +import log from '../utils/log'; +import PlaceAndDiscord from "../models/placeAndDiscord"; + +const sendOrderToDiscordApi = async (order: Order) => { + const token = process.env.DISCORD_API_PRIVATE_KEY; + log.info('Sending order to discord...'); + + const items = '- ' + order.orderItems + .map(orderItem => orderItem.item.name) + .join('\n- '); + + try { + const discordId: string | null = (await PlaceAndDiscord.findByPk(order.place))?.discordId; + if (!discordId) { + log.info('No discord id found for this place, aborting'); + return; + } + log.info(`Discord id found : ${discordId}`); + const res = await axios.post( + `https://discord.com/api/users/@me/channels`, + { recipient_id: discordId }, + { + headers: { + Authorization: `Bot ${token}`, + }, + }, + ); + const { id: dmId }: { id: string } = res.data; + const content = `Ta commande est prête, viens la chercher !\n\nDétail de la commande :\n${items}\n\nNuméro de commande : **${order.place}**`; + await axios.post( + `https://discord.com/api/channels/${dmId}/messages`, + { content: content}, + { headers: { Authorization: `Bot ${token}` } } + ); + log.info(`Discord message sent to : ${discordId}`); + } catch (error) { + log.warn(`Discord message error : ${error}`); + } +}; + +export default sendOrderToDiscordApi; \ No newline at end of file