diff --git a/src/api/order/content-types/order/lifecycles.ts b/src/api/order/content-types/order/lifecycles.ts index 580920c..e424a9d 100644 --- a/src/api/order/content-types/order/lifecycles.ts +++ b/src/api/order/content-types/order/lifecycles.ts @@ -94,16 +94,35 @@ export default { const { id: entityId } = where; const { time_start, time_end, state } = data; - if (state && !time_start && !time_end) { - return; - } - const existingOrder = await strapi.db.query('api::order.order').findOne({ where: { id: entityId }, select: ['documentId', 'time_start', 'time_end'], - populate: ['slot'], + populate: ['slot', 'client'], }); + if (state && !time_start && !time_end) { + if (state === 'completed') { + const clientId = extractId(existingOrder.client); + + const lastOrder = await strapi.db.query('api::order.order').findMany({ + where: { + client: { + id: clientId, + }, + state: 'completed', + }, + orderBy: { order_number: 'desc' }, + limit: 1, + }); + + const lastOrderNumber = + lastOrder.length > 0 ? lastOrder[0].order_number : 0; + data.order_number = lastOrderNumber + 1; + } + + return; + } + if ( existingOrder.time_start === time_start && existingOrder.time_end === time_end