OrderService.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. const knex = require('../models/database');
  2. var ProductService = require('./ProductService');
  3. var UserService = require('./UserService');
  4. class OrderService {
  5. constructor() {
  6. }
  7. prepare(order,user) {
  8. return new Promise((resolve,reject) => {
  9. try{
  10. //order.products = JSON.stringify(order.products);
  11. //console.log(user);
  12. let prepare_order = {
  13. products:JSON.stringify(order.products),
  14. total:order.total,
  15. }
  16. prepare_order.userId = user.id;
  17. delete prepare_order.user;
  18. resolve(prepare_order);
  19. }
  20. catch(e){
  21. reject(e);
  22. }
  23. });
  24. }
  25. save(order) {
  26. console.log("SAVING....");
  27. //console.log(order);
  28. //return Promise.resolve(true);
  29. return knex('Orders').insert(order).then(() => order);
  30. }
  31. verify(order) {
  32. try {
  33. //console.log("here on user");
  34. let prodLength = order.products.length;
  35. //console.log(order);
  36. let user = order.user;
  37. if (prodLength < 1) return Promise.reject('No products');
  38. // order Type = {
  39. // "user": {
  40. // "token" : "$2b$10$/iEZtr8TjhmHQMGIDi9Yue"
  41. // }
  42. // products: [
  43. // {
  44. // item: itemID,
  45. // quantity: X
  46. // },
  47. // ...]
  48. // payment_method: Y,
  49. // shipping_method: Z,
  50. // payment: {
  51. // method: Y
  52. // ...
  53. // },
  54. // shipping: {
  55. // method: Z
  56. // ...
  57. // },
  58. // }
  59. // Verify product existence
  60. console.log(order);
  61. let promises = order.products.map((product) =>
  62. ProductService.verify(product.item)
  63. .then((item) => {
  64. console.log("here");
  65. // check product quantities
  66. if (product.quantity > item.quantity) {
  67. throw Error('Not enough items');
  68. }
  69. return item;
  70. }));
  71. // verify user - add to promises array!
  72. // verify payment_method
  73. // verify shipping_method
  74. return Promise.all(promises).then(() => order);
  75. } catch (e) {
  76. return Promise.reject(e);
  77. }
  78. }
  79. submit(order,user) {
  80. return this.verify(order)
  81. .then((order) => this.prepare(order,user))
  82. .then(this.save);
  83. }
  84. present(orders){
  85. console.log("orders")
  86. console.log(orders);
  87. try{
  88. orders.products = JSON.parse(orders.products)
  89. return (({shipping_id,products,total,payment_meth_id})=>({shipping_id,products,total,payment_meth_id}))(orders);
  90. }
  91. catch(e){
  92. console.log(e);
  93. }
  94. }
  95. }
  96. module.exports = new OrderService();