Advertisement
nikolapetkov824

Warehouse Machine

Jun 8th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function coffeeStorage() {
  2.     let textarea=JSON.parse(document.querySelector('textarea').value.split(','));
  3.     let [reportOutput, inspectionOutput] = document.querySelectorAll('div p');
  4.  
  5.     let brands={};
  6.  
  7.     for (const brand of textarea) {
  8.         let [command,brandName,coffeeName,expireDate,quantity]=brand.split(', '); // ???????
  9.  
  10.         if (command==='IN') {
  11.             if (!brands[brandName]) {
  12.                 brands[brandName]={};
  13.             }
  14.  
  15.             if (!brands[brandName][coffeeName]) { // ????
  16.                 brands[brandName][coffeeName]={expireDate,quantity:Number(quantity)};
  17.             }
  18.  
  19.             if (brands[brandName][coffeeName].expireDate<=expireDate) {
  20.                 brands[brandName][coffeeName]={expireDate,quantity:Number(quantity)};
  21.             }
  22.         }else if (command==='OUT') {
  23.             if (brands[brandName] &&
  24.                 brands[brandName][coffeeName] &&
  25.                 brands[brandName][coffeeName].expireDate>expireDate &&
  26.                 brands[brandName][coffeeName].quantity>=Number(quantity)) {
  27.  
  28.                 brands[brandName][coffeeName].quantity-=Number(quantity);
  29.             }
  30.         }else if (command==='REPORT') {
  31.             Object
  32.             .entries(brands)
  33.             .forEach(([brandName,coffeeName])=>{
  34.                 let arr=[];
  35.  
  36.                 Object
  37.                 .entries(coffeeName)
  38.                 .map(([name,information])=>{
  39.                     arr.push(`${name} - ${information.expireDate} - ${information.quantity}.`);
  40.                 });
  41.  
  42.                 reportOutput.innerHTML += `${brandName}: ${arr.join(' ')}` + '<br/>';
  43.             })
  44.         }else if (command==='INSPECTION') {
  45.             Object
  46.             .entries(brands)
  47.             .sort((a,b)=>a[0].localeCompare(b[0]))
  48.             .forEach(([brandName,coffeeName])=>{
  49.                 let arr=[];
  50.  
  51.                 Object
  52.                 .entries(coffeeName)
  53.                 .sort((a,b)=>b[1].quantity-a[1].quantity)
  54.                 .forEach(([name,information])=>{
  55.                     arr.push(`${name} - ${information.expireDate} - ${information.quantity}.`);
  56.                 });
  57.  
  58.                 inspectionOutput.innerHTML += `${brandName}: ${arr.join(' ')}` + '<br/>';
  59.             })
  60.         }
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement