import { ApolloContext } from '@lib/seed/interfaces/context'; import { OrderBusinessStatusEnum } from '@services/module-payments/components/components.orders'; import { ApolloError } from 'apollo-server-lambda'; import _ from 'lodash'; import OrderEngineModel from '../../order.model'; import { ProviderSchema } from '../../schemas/provider.schema'; export const updateBusinessOrderStatus = async (id: string, newStatus: OrderBusinessStatusEnum, ctx: ApolloContext): Promise => { const organisationId = ctx.ctx.organisationId; const orderModel = new OrderEngineModel(); const order = await orderModel.getOne({ query: { 'providerOrderItems.organisationId': organisationId, 'providerOrderItems._id': id } }); const providerOrderItem = _.find(order.providerOrderItems, { _id: id }); if (!providerOrderItem) throw new ApolloError('notfound', '400'); providerOrderItem.orderStatus = newStatus; await (await orderModel.db()).updateOne( { 'providerOrderItems.organisationId': organisationId, 'providerOrderItems._id': id }, { $set: { 'providerOrderItems.$': providerOrderItem } }, ); return providerOrderItem; };