Skip to content

Commit

Permalink
adds updateCart mutation for convenience, closes #11
Browse files Browse the repository at this point in the history
  • Loading branch information
pozylon committed Feb 26, 2019
1 parent 80f9486 commit 1775615
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 24 deletions.
6 changes: 4 additions & 2 deletions packages/api/resolvers/mutations/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,9 @@ import updateCartItemQuantity from './updateCartItemQuantity';
import removeCartItem from './removeCartItem';
import addCartDiscount from './addCartDiscount';
import removeCartDiscount from './removeCartDiscount';
import removeOrder from './removeOrder';
import updateCart from './updateCart';
import updateOrder from './updateOrder';
import removeOrder from './removeOrder';
import setOrderPaymentProvider from './setOrderPaymentProvider';
import setOrderDeliveryProvider from './setOrderDeliveryProvider';
import updateOrderDelivery from './updateOrderDelivery';
Expand Down Expand Up @@ -138,10 +139,11 @@ export default {
removeCartItem: acl(actions.updateCart)(removeCartItem),
addCartDiscount: acl(actions.updateCart)(addCartDiscount),
removeCartDiscount: acl(actions.updateCart)(removeCartDiscount),
updateCart: acl(actions.updateCart)(updateCart),
updateOrder: acl(actions.updateOrder)(updateOrder),
removeOrder: acl(actions.updateOrder)(removeOrder),
setOrderPaymentProvider: acl(actions.updateOrder)(setOrderPaymentProvider),
setOrderDeliveryProvider: acl(actions.updateOrder)(setOrderDeliveryProvider),
updateOrder: acl(actions.updateOrder)(updateOrder),
updateOrderDeliveryShipping: acl(actions.updateOrderDelivery)(updateOrderDelivery),
updateOrderDeliveryPickUp: acl(actions.updateOrderDelivery)(updateOrderDelivery),
updateOrderPaymentCard: acl(actions.updateOrderPayment)(updateOrderPayment),
Expand Down
22 changes: 22 additions & 0 deletions packages/api/resolvers/mutations/updateCart.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { log } from 'meteor/unchained:core-logger';
import { Users } from 'meteor/unchained:core-users';
import { UserNotFoundError } from '../../errors';

export default function (root, {
address, contact, meta,
}, { countryContext, userId }) {
log('mutation updateCart', { userId });
const user = Users.findOne({ _id: userId });
if (!user) throw new UserNotFoundError({ userId });
let order = user.initCart({ countryContext });
if (meta) {
order = order.updateContext(meta);
}
if (address) {
order = order.updateAddress({ ...address, countryCode: countryContext });
}
if (contact) {
order = order.updateContact({ contact });
}
return order;
}
28 changes: 9 additions & 19 deletions packages/api/resolvers/mutations/updateOrder.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,20 @@ import { log } from 'meteor/unchained:core-logger';
import { Orders } from 'meteor/unchained:core-orders';
import { OrderNotFoundError } from '../../errors';

const logger = console;

export default function (root, {
address, contact, orderId, meta,
}, { countryContext, userId }) {
log('mutation updateOrder', { orderId, userId });
let order = Orders.findOne({ _id: orderId });
if (!order) throw new OrderNotFoundError({ data: { orderId } });
try {
if (meta) {
order = order.updateContext(meta);
}
if (address) {
order = order.updateAddress({ ...address, countryCode: countryContext });
}
if (contact) {
order = order.updateContact({ contact });
}
return order;
} catch (error) {
logger.error(error);
log('could not update order', {
userId, countryCode: countryContext, orderId, level: 'error',
});
throw error;
if (meta) {
order = order.updateContext(meta);
}
if (address) {
order = order.updateAddress({ ...address, countryCode: countryContext });
}
if (contact) {
order = order.updateContact({ contact });
}
return order;
}
11 changes: 8 additions & 3 deletions packages/api/schema/mutation.js
Original file line number Diff line number Diff line change
Expand Up @@ -302,15 +302,20 @@ export default [/* GraphQL */`
removeCartDiscount(discountId: ID!): OrderDiscount!
"""
Remove an order while it's still open
Change billing address and order contact of the current cart
"""
removeOrder(orderId: ID!): Order!
updateCart(address: AddressInput, contact: ContactInput, meta: JSON): Order!
"""
Change billing address and order conact of an open order
Change billing address and order contact of an open order
"""
updateOrder(orderId: ID!, address: AddressInput, contact: ContactInput, meta: JSON): Order!
"""
Remove an order while it's still open
"""
removeOrder(orderId: ID!): Order!
"""
Change the delivery method/provider
"""
Expand Down

0 comments on commit 1775615

Please sign in to comment.