newTransaction.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. module.exports = {
  2. display: function(){
  3. let recipeList = document.getElementById("newTransactionRecipes");
  4. let template = document.getElementById("createTransaction").content.children[0];
  5. while(recipeList.children.length > 0){
  6. recipeList.removeChild(recipeList.firstChild);
  7. }
  8. for(let i = 0; i < merchant.recipes.length; i++){
  9. let recipeDiv = template.cloneNode(true);
  10. recipeDiv.recipe = merchant.recipes[i];
  11. recipeList.appendChild(recipeDiv);
  12. recipeDiv.children[0].innerText = merchant.recipes[i].name;
  13. }
  14. },
  15. submit: function(){
  16. let recipeDivs = document.getElementById("newTransactionRecipes");
  17. let date = document.getElementById("newTransactionDate").valueAsDate;
  18. if(date > new Date()){
  19. banner.createError("CANNOT HAVE A DATE IN THE FUTURE");
  20. return;
  21. }
  22. let newTransaction = {
  23. date: date,
  24. recipes: []
  25. };
  26. for(let i = 0; i < recipeDivs.children.length; i++){
  27. let quantity = recipeDivs.children[i].children[1].value;
  28. if(quantity !== "" && quantity > 0){
  29. newTransaction.recipes.push({
  30. recipe: recipeDivs.children[i].recipe.id,
  31. quantity: quantity
  32. });
  33. }else if(quantity < 0){
  34. banner.createError("CANNOT HAVE NEGATIVE VALUES");
  35. return;
  36. }
  37. }
  38. if(newTransaction.recipes.length > 0){
  39. let loader = document.getElementById("loaderContainer");
  40. loader.style.display = "flex";
  41. fetch("/transaction/create", {
  42. method: "post",
  43. headers: {
  44. "Content-Type": "application/json;charset=utf-8"
  45. },
  46. body: JSON.stringify(newTransaction)
  47. })
  48. .then(response => response.json())
  49. .then((response)=>{
  50. if(typeof(response) === "string"){
  51. banner.createError(response);
  52. }else{
  53. let transaction = new Transaction(
  54. response._id,
  55. response.date,
  56. response.recipes,
  57. merchant
  58. );
  59. merchant.editTransactions(transaction);
  60. banner.createNotification("NEW TRANSACTION CREATED");
  61. }
  62. })
  63. .catch((err)=>{
  64. banner.createError("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE");
  65. })
  66. .finally(()=>{
  67. loader.style.display = "none";
  68. });
  69. }
  70. }
  71. }