Bolodefchoco_LUAXML

[Pedido] GerenciadorParty

Oct 1st, 2016
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.58 KB | None | 0 0
  1. jsonData = 0
  2. kickData = 1
  3.  
  4. show = setmetatable({},{
  5.     __index = function()
  6.         os.execute("cls")
  7.     end
  8. })
  9.  
  10. convertJSON = function(list)
  11.     local json,str = "{\"data\":[\n%s]}",""
  12.     for k,v in next,list do
  13.         str = str .. ("\t{\"name\":\"%s\",\"cpf\":\"%s\"},\n"):format(v.name,v.cpf)
  14.     end
  15.     return json:format(str)
  16. end
  17.  
  18. collectJSON = function(json,cpfv,check)
  19.     local real = {}
  20.     for val in json:gmatch("[^\n]+") do
  21.         local name,cpf = val:match("\"name\":\"(.-)\",\"cpf\":\"(.-)\"")
  22.         if name and cpf then
  23.             if name ~= "" and cpf ~= "" then
  24.                 real[#real + 1] = {
  25.                     name = name,
  26.                     cpf = cpf
  27.                 }
  28.             end
  29.         end
  30.     end
  31.     if check then
  32.         return real
  33.     end
  34.     local list = {}
  35.     for k,v in next,real do
  36.         if formatCPF(v.cpf) == formatCPF(cpfv) then
  37.             list = v
  38.             break
  39.         end
  40.     end
  41.     return (#list>0 and list or {"Not found","Not found"})
  42. end
  43.  
  44. saveFile = function(fileNumber,data,format)
  45.     fileNumber = io.open("GUESTS_"..fileNumber,format)
  46.     fileNumber:write(data)
  47.     fileNumber:flush()
  48.     fileNumber:close()
  49. end
  50.  
  51. getFile = function(fileNumber)
  52.     fileNumber = io.open("GUESTS_"..fileNumber,"r")
  53.     fileNumber = fileNumber:read("*a")
  54.     return fileNumber
  55. end
  56.  
  57. formatName = function(str)
  58.     return str:gsub("(%S+)",function(l)
  59.         return l:lower():gsub("%a",string.upper,1)
  60.     end)
  61. end
  62.  
  63. formatCPF = function(str)
  64.     if #tostring(str) == 11 then
  65.         local cpf = {}
  66.         for int in str:gmatch(".") do
  67.             cpf[#cpf+1] = int
  68.         end
  69.         for i = 4,12,4 do
  70.             local ic = i<9 and "." or "-"
  71.             table.insert(cpf,i,ic)
  72.         end
  73.         return table.concat(cpf)
  74.     else
  75.         return str
  76.     end
  77. end
  78.  
  79. isCPF = function(cpf)
  80.     return tostring(cpf):find("%d%d%d%.%d%d%d%.%d%d%d%-%d%d$")
  81. end
  82.  
  83. show.removeGuest = function()
  84.     io.write("Digite o CPF do convidado a ser deletado: ")
  85.     local cpf = io.read()
  86.     cpf = formatCPF(cpf)
  87.     if isCPF(cpf) then
  88.         io.write("\nDigite o motivo da remoção deste convidado: ")
  89.         local reason = io.read()
  90.         local data = getFile(jsonData)
  91.         local list = collectJSON(data,cpf)
  92.         local kick = collectJSON(getFile(kickData),nil,true)
  93.         table.insert(kick,{name=list.name,cpf=list.cpf,reason=reason})
  94.         saveFile(kickData,convertJSON(kick),"w+")
  95.         local real = collectJSON(data,nil,true)
  96.         for k,v in next,real do
  97.             if v.name == list.name then
  98.                 real[k] = nil
  99.             end
  100.         end
  101.         saveFile(jsonData,convertJSON(real),"w+")
  102.     else
  103.         io.write("\n\nCPF Invalido!")
  104.     end
  105.     main()
  106. end
  107.  
  108. show.searchGuest = function()
  109.     io.write("Digite o CPF: ")
  110.     local cpf = io.read()
  111.     cpf = formatCPF(cpf)
  112.     if isCPF(cpf) then
  113.         local data = collectJSON(getFile(jsonData),cpf)
  114.         io.write(("\nEncontrado:\n\tNome: %s\n\tCPF: %s"):format(data.name,data.cpf))
  115.     else
  116.         io.write("\n\nCPF Invalido!")
  117.     end
  118.     main()
  119. end
  120.  
  121. show.registerGuest = function()
  122.     io.write("Digite o nome do convidado: ")
  123.     local name = io.read()
  124.     io.write("\nDigite o CPF do convidado: ")
  125.     local cpf = io.read()
  126.     cpf = formatCPF(cpf)
  127.     if isCPF(cpf) then
  128.         local real = collectJSON(getFile(jsonData),nil,true)
  129.         table.insert(data,{name=name,cpf=cpf})
  130.         saveFile(jsonData,convertJSON(real),"w+")
  131.     else
  132.         io.write("\n\nCPF Inexistente!")
  133.     end
  134.     main()
  135. end
  136.  
  137. show.listGuest = function()
  138.     local real = collectJSON(getFile(jsonData),nil,true)
  139.     io.write("Convidados: \n")
  140.     local cont = 0
  141.     for k,v in next,real do
  142.         cont = cont + 1
  143.         io.write(("Nome: %s\n\tCPF: %s\n\n"..(cont<#real and "\t" or "")):format(v.name,v.cpf))
  144.     end
  145.     main()
  146. end
  147.  
  148. show.kickedGuest = function()
  149.     local real = collectJSON(getFile(kickData),nil,true)
  150.     io.write("Removidos: \n")
  151.     local cont = 0
  152.     for k,v in next,real do
  153.         cont = cont + 1
  154.         io.write(("Nome: %s\n\tCPF: %s\n\tMotivo: %s\n\n"..(cont<#real and "\t" or "")):format(v.name,v.cpf,v.reason))
  155.     end
  156.     main()
  157. end
  158.  
  159. show.main = function()
  160.     io.write("Bem-vindo ao gerenciador de convidados da festa!\n")
  161.     io.write("\nO que voce gostaria de fazer?\n\t0 -> Cadastrar um novo convidado\n\t1 -> Remover um convidado\n\t2 -> Consultar a presenca de convidado\n\t3 -> Visualizar todos os convidados\n\t4 -> Visualizar todos os convidados removidos\n")
  162.     local func = io.read(1)
  163.     func = tonumber(func)
  164.     if func then
  165.         if func == 0 then
  166.             show.registerGuest()
  167.         elseif func == 1 then
  168.             show.removeGuest()
  169.         elseif func == 2 then
  170.             show.searchGuest()
  171.         elseif func == 3 then
  172.             show.listGuest()
  173.         elseif func == 4 then
  174.             show.kickedGuest()
  175.         else
  176.             show.main()
  177.         end
  178.     else
  179.         show.main()
  180.     end
  181. end
  182.  
  183. local guests = io.open("GUESTS_"..jsonData..".txt","w")
  184. local kicked = io.open("GUESTS_"..kickData..".txt","w")
  185. guests:flush();kicked:flush()
  186. guests:close();kicked:close()
  187.  
  188. os.execute("title Let's party!")
  189. show.main()
Advertisement
Add Comment
Please, Sign In to add comment