Guest User

Untitled

a guest
Sep 20th, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. var keystone = require('keystone');
  2. var Order = keystone.list('Order');
  3.  
  4. exports = module.exports = function (req, res) {
  5.  
  6. var view = new keystone.View(req, res);
  7. var locals = res.locals;
  8.  
  9. locals.section = 'checkout';
  10. locals.formData = req.body || {};
  11. locals.validationErrors = {};
  12. locals.orderSubmitted = false;
  13. locals.orderer = req.user; // <-
  14.  
  15. // On POST requests, add the Order item to the database
  16. view.on('post', { action: 'checkout' }, function (next) {
  17.  
  18. var newOrder = new Order.model();
  19. var updater = newOrder.getUpdateHandler(req);
  20.  
  21. updater.process(req.body, {
  22. flashErrors: true,
  23. fields: 'sum',
  24. errorMessage: 'There was a problem submitting your order:',
  25. }, function (err) {
  26. if (err) {
  27. locals.validationErrors = err.errors;
  28. } else {
  29. locals.orderSubmitted = true;
  30. }
  31. next();
  32. });
  33. });
  34.  
  35. view.render('checkout');
  36. };
  37.  
  38. var Order = new keystone.List('Order');
  39.  
  40. Order.add({
  41. orderer: { type: Types.Relationship, ref:'User' },
  42. sum: { type: Types.Money, format: '0.0,00' },
  43. createdAt: { type: Types.Datetime, default: Date.now },
  44. });
  45.  
  46. var User = new keystone.List('User');
  47.  
  48. User.add({
  49. name: { type: Types.Name, required: true, index: true },
  50. email: { type: Types.Email, initial: true, required: true, unique: true, index: true },
  51. password: { type: Types.Password, initial: true, required: true },
  52. });
  53.  
  54. User.relationship({ ref: 'Order', path: 'orders', refPath: 'orderer' });
Add Comment
Please, Sign In to add comment