Advertisement
EntropyStarRover

Message manager

Aug 4th, 2019
161
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function messageManager(input){
  2.     let capacity=Number(input.shift());
  3.  
  4.     input.pop();
  5.     let users=[];
  6.  
  7.     input.forEach(element => {
  8.         let elArr=element.split("=");
  9.         let command=elArr[0];
  10.  
  11.         if (command=="Add"){
  12.             let username=elArr[1];
  13.             let messagesSent=Number(elArr[2]);
  14.             let messagesReceived=Number(elArr[3]);
  15.             let newUser={user:username, sent:messagesSent, received:messagesReceived};
  16.  
  17.             let userExists=false;
  18.             users.forEach(u=>{
  19.                 if (u["user"]==username){
  20.                     userExists=true;
  21.                 }
  22.             });
  23.             if (!userExists){
  24.                 users.push(newUser);
  25.             }
  26.         } else if (command=="Empty"){
  27.             let userToRemove=elArr[1];
  28.             if (userToRemove=="All"){
  29.                 users=[];
  30.             }
  31.             let userToRemoveExists=false;
  32.             let ind=-1;
  33.           for (let i=0; i<users.length; i++){
  34.               let currentUser=users[i];
  35.               if (currentUser["user"]==userToRemove){
  36.                 userToRemoveExists=true;
  37.                 ind=i;
  38.               }
  39.           }
  40.           if (userToRemoveExists){
  41.               users.splice(ind, 1);
  42.           }
  43.         } else if (command=="Message"){
  44.             let sender=elArr[1];
  45.             let receiver=elArr[2];
  46.             let senderExists=false;
  47.             let receiverExists=false;
  48.             let indexOfSender=-1;
  49.             let indexOfReceiver=-1;
  50.  
  51.           for (let i=0; i<users.length; i++){
  52.               let current=users[i];
  53.               if (current["user"]==sender){
  54.                   senderExists=true;
  55.                   indexOfSender=i;
  56.               } else if (current["user"]==receiver){
  57.                   receiverExists=true;
  58.                   indexOfReceiver=i;
  59.               }
  60.           } if (senderExists && receiverExists){
  61.                users[indexOfSender]["sent"]++;
  62.               users[indexOfReceiver]["received"]++;    
  63.             if (users[indexOfSender]["sent"]+users[indexOfSender]["received"]>=capacity){
  64.                 console.log(`${users[indexOfSender]["user"]} reached the capacity!`);
  65.                           users.splice(indexOfSender,1);                  
  66.             }
  67.  
  68.            for (let i=0; i<users.length; i++){
  69.               let current=users[i];
  70.               if (current["user"]==receiver){
  71.                   indexOfReceiver=i;
  72.               }
  73.                }
  74.            
  75.             if (users[indexOfReceiver]["received"]+users[indexOfReceiver]["sent"]>=capacity){
  76.                 console.log(`${users[indexOfReceiver]["user"]} reached the capacity!`);
  77.                 users.splice(indexOfReceiver,1);
  78.             }
  79.           }
  80.         }
  81.     });  
  82.  
  83. users=users.sort((a,b)=>{
  84.     if (a["received"]!==b["received"]){
  85.         return b["received"]- a["received"];
  86.     } else {
  87.         return a["user"].localeCompare(b["user"]);
  88.     }
  89. });
  90. console.log(`Users count: ${users.length}` );
  91. users.forEach(u=>{
  92.     let totalMessages=u["received"]+u["sent"];
  93.     console.log(`${u["user"]} - ${totalMessages}`)
  94. })
  95. }
Advertisement
RAW Paste Data Copied
Advertisement