orderDetails.js 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. let orderDetails = {
  2. display: function(order){
  3. document.getElementById("removeOrderBtn").onclick = ()=>{controller.openModal("confirmDeleteOrder", order)};
  4. document.getElementById("orderDetailName").innerText = order.name;
  5. document.getElementById("orderDetailDate").innerText = order.date.toLocaleDateString("en-US");
  6. document.getElementById("orderDetailTax").innerText = `$${order.taxes.toFixed(2)}`;
  7. document.getElementById("orderDetailFee").innerText = `$${order.fees.toFixed(2)}`;
  8. let ingredientList = document.getElementById("orderIngredients");
  9. while(ingredientList.children.length > 0){
  10. ingredientList.removeChild(ingredientList.firstChild);
  11. }
  12. let template = document.getElementById("orderIngredient").content.children[0];
  13. for(let i = 0; i < order.ingredients.length; i++){
  14. let ingredientDiv = template.cloneNode(true);
  15. const ingredient = order.ingredients[i].ingredient;
  16. ingredientDiv.children[0].innerText = order.ingredients[i].ingredient.name;
  17. ingredientDiv.children[2].innerText = `$${order.ingredients[i].cost().toFixed(2)}`;
  18. ingredientDiv.onclick = ()=>{
  19. controller.openStrand("ingredients");
  20. controller.openSidebar("ingredientDetails", merchant.getIngredient(order.ingredients[i].ingredient.id));
  21. }
  22. let ingredientDisplay = ingredientDiv.children[1];
  23. ingredientDisplay.innerText = `${order.ingredients[i].quantity.toFixed(2)} ${ingredient.unit.toUpperCase()} X $${order.ingredients[i].pricePerUnit.toFixed(2)}`;
  24. ingredientList.appendChild(ingredientDiv);
  25. }
  26. document.getElementById("orderDetailTotal").innerText = `$${order.getIngredientCost().toFixed(2)}`;
  27. document.querySelector("#orderTotalPrice p").innerText = `$${order.getTotalCost().toFixed(2)}`;
  28. },
  29. remove: function(order){
  30. let loader = document.getElementById("loaderContainer");
  31. loader.style.display = "flex";
  32. fetch(`/order/${order.id}`, {
  33. method: "DELETE",
  34. headers: {
  35. "Content-Type": "application/json;charset=utf-8"
  36. }
  37. })
  38. .then((response) => response.json())
  39. .then((response)=>{
  40. if(typeof(response) === "string"){
  41. controller.createBanner(response, "error");
  42. }else{
  43. let from = new Date();
  44. from.setDate(from.getDate() - 30);
  45. if(order.date > from){
  46. merchant.removeOrder(order);
  47. state.updateOrders();
  48. }
  49. controller.openStrand("orders", merchant.orders);
  50. controller.closeModal();
  51. controller.createBanner("ORDER REMOVED", "success");
  52. }
  53. })
  54. .catch((err)=>{
  55. controller.createBanner("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE", "error");
  56. })
  57. .finally(()=>{
  58. loader.style.display = "none";
  59. });
  60. }
  61. }
  62. module.exports = orderDetails;