Advertisement
Goufix

Untitled

Nov 10th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const planilha = `Carimbo de data/hora,Nickname,TAG,Data:,Horário do INÍCIO da instrução:,Curso aplicado: ,Nick(s) do(s) aluno(s) presente(s):,Nick(s) do(s) aluno(s) aprovado(s):,Comentários:
  2. 21/10/2018 00:08:10,MINISTÉRIO,MINISTÉRIO,21/10/2018,00:07:00,Curso de Formação de Soldados (CFSd),MINISTÉRIO,MINISTÉRIO,MINISTÉRIO
  3. 21/10/2018 00:13:28,25Bans,25B,21/10/2018,23:57:00,Curso de Formação de Soldados (CFSd),Bruno-David ,Bruno-David`
  4.  
  5.  
  6. const fs  = require('fs')
  7. const rawData = fs.readFileSync('planilha.csv', 'utf-8')
  8.  
  9. // O código abaixo transforma a planilha no modelo: Nick / Pontos
  10. const splitData = rawData.split('\n')
  11. let data = ''
  12. splitData.forEach ((value, index, array) => {
  13.   const line = value.split(',')
  14.   const nick = line[1]
  15.   const className = line[5]
  16.   let points = 0
  17.   switch (className) {
  18.     case 'Curso de Formação de Soldados (CFSd)':
  19.     points = 2
  20.     break;
  21.     case 'Curso de Formação de Cabos (Parte 2) (CFC2)':
  22.     points = 1
  23.     break;
  24.     case 'Curso de Formação de Cabos (Parte 1) (CFC1)':
  25.     points = 2
  26.     break;
  27.     case 'Curso de Aperfeiçoamento de Praças (CAP)':
  28.     points = 1
  29.     break;
  30.   }
  31.   data += nick + ' / ' + points + '\n';
  32. })
  33.  
  34. function getDict (string) {
  35.   // Criamos o nosso objeto:
  36.   const dict = {}
  37.  
  38.   // Transformamos a nossa string em um array com arrays dentro:
  39.   const data = string.trim()
  40.     .split('\n')
  41.     .map((line) => line.split('/').map((part) => part.trim()))
  42.  
  43.   //Inserimos os valores no objeto:
  44.   for (const [nick, pointsString] of data) {
  45.     const points = parseInt(pointsString)
  46.    
  47.     // Se o nick ainda não está no objeto, criamos uma nova propriedade
  48.     // para o usuário.
  49.     if (!dict.hasOwnProperty(nick)) {
  50.       Object.assign(dict, { [nick]: points })
  51.     } else {
  52.       // Caso o usuário seja repetido, simplesmente some os pontos à
  53.       // quantidade já existente:
  54.       dict[nick] += points
  55.     }
  56.   }
  57.  
  58.   return dict
  59. }
  60. const object = getDict(data)
  61. // Transforma o objeto em array
  62. let resultArray = Object.entries(object)
  63. // Organiza o array por número de pontos
  64. resultArray.sort(sortFunction)
  65. function sortFunction (a, b){
  66.   return (b[1] - a[1])
  67. }
  68. // Adiciona a palavra "Pontos", depois de cada índice do array
  69. resultArray.forEach ((value, index, array) => {
  70.   array[index] += ' Pontos'
  71. })
  72. // Join, separando por linhas.
  73. resultArray = resultArray.join('\n')
  74. console.log(resultArray)
  75. // -------------------------------------- //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement