Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- jsonData = 0
- kickData = 1
- show = setmetatable({},{
- __index = function()
- os.execute("cls")
- end
- })
- convertJSON = function(list)
- local json,str = "{\"data\":[\n%s]}",""
- for k,v in next,list do
- str = str .. ("\t{\"name\":\"%s\",\"cpf\":\"%s\"},\n"):format(v.name,v.cpf)
- end
- return json:format(str)
- end
- collectJSON = function(json,cpfv,check)
- local real = {}
- for val in json:gmatch("[^\n]+") do
- local name,cpf = val:match("\"name\":\"(.-)\",\"cpf\":\"(.-)\"")
- if name and cpf then
- if name ~= "" and cpf ~= "" then
- real[#real + 1] = {
- name = name,
- cpf = cpf
- }
- end
- end
- end
- if check then
- return real
- end
- local list = {}
- for k,v in next,real do
- if formatCPF(v.cpf) == formatCPF(cpfv) then
- list = v
- break
- end
- end
- return (#list>0 and list or {"Not found","Not found"})
- end
- saveFile = function(fileNumber,data,format)
- fileNumber = io.open("GUESTS_"..fileNumber,format)
- fileNumber:write(data)
- fileNumber:flush()
- fileNumber:close()
- end
- getFile = function(fileNumber)
- fileNumber = io.open("GUESTS_"..fileNumber,"r")
- fileNumber = fileNumber:read("*a")
- return fileNumber
- end
- formatName = function(str)
- return str:gsub("(%S+)",function(l)
- return l:lower():gsub("%a",string.upper,1)
- end)
- end
- formatCPF = function(str)
- if #tostring(str) == 11 then
- local cpf = {}
- for int in str:gmatch(".") do
- cpf[#cpf+1] = int
- end
- for i = 4,12,4 do
- local ic = i<9 and "." or "-"
- table.insert(cpf,i,ic)
- end
- return table.concat(cpf)
- else
- return str
- end
- end
- isCPF = function(cpf)
- return tostring(cpf):find("%d%d%d%.%d%d%d%.%d%d%d%-%d%d$")
- end
- show.removeGuest = function()
- io.write("Digite o CPF do convidado a ser deletado: ")
- local cpf = io.read()
- cpf = formatCPF(cpf)
- if isCPF(cpf) then
- io.write("\nDigite o motivo da remoção deste convidado: ")
- local reason = io.read()
- local data = getFile(jsonData)
- local list = collectJSON(data,cpf)
- local kick = collectJSON(getFile(kickData),nil,true)
- table.insert(kick,{name=list.name,cpf=list.cpf,reason=reason})
- saveFile(kickData,convertJSON(kick),"w+")
- local real = collectJSON(data,nil,true)
- for k,v in next,real do
- if v.name == list.name then
- real[k] = nil
- end
- end
- saveFile(jsonData,convertJSON(real),"w+")
- else
- io.write("\n\nCPF Invalido!")
- end
- main()
- end
- show.searchGuest = function()
- io.write("Digite o CPF: ")
- local cpf = io.read()
- cpf = formatCPF(cpf)
- if isCPF(cpf) then
- local data = collectJSON(getFile(jsonData),cpf)
- io.write(("\nEncontrado:\n\tNome: %s\n\tCPF: %s"):format(data.name,data.cpf))
- else
- io.write("\n\nCPF Invalido!")
- end
- main()
- end
- show.registerGuest = function()
- io.write("Digite o nome do convidado: ")
- local name = io.read()
- io.write("\nDigite o CPF do convidado: ")
- local cpf = io.read()
- cpf = formatCPF(cpf)
- if isCPF(cpf) then
- local real = collectJSON(getFile(jsonData),nil,true)
- table.insert(data,{name=name,cpf=cpf})
- saveFile(jsonData,convertJSON(real),"w+")
- else
- io.write("\n\nCPF Inexistente!")
- end
- main()
- end
- show.listGuest = function()
- local real = collectJSON(getFile(jsonData),nil,true)
- io.write("Convidados: \n")
- local cont = 0
- for k,v in next,real do
- cont = cont + 1
- io.write(("Nome: %s\n\tCPF: %s\n\n"..(cont<#real and "\t" or "")):format(v.name,v.cpf))
- end
- main()
- end
- show.kickedGuest = function()
- local real = collectJSON(getFile(kickData),nil,true)
- io.write("Removidos: \n")
- local cont = 0
- for k,v in next,real do
- cont = cont + 1
- io.write(("Nome: %s\n\tCPF: %s\n\tMotivo: %s\n\n"..(cont<#real and "\t" or "")):format(v.name,v.cpf,v.reason))
- end
- main()
- end
- show.main = function()
- io.write("Bem-vindo ao gerenciador de convidados da festa!\n")
- 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")
- local func = io.read(1)
- func = tonumber(func)
- if func then
- if func == 0 then
- show.registerGuest()
- elseif func == 1 then
- show.removeGuest()
- elseif func == 2 then
- show.searchGuest()
- elseif func == 3 then
- show.listGuest()
- elseif func == 4 then
- show.kickedGuest()
- else
- show.main()
- end
- else
- show.main()
- end
- end
- local guests = io.open("GUESTS_"..jsonData..".txt","w")
- local kicked = io.open("GUESTS_"..kickData..".txt","w")
- guests:flush();kicked:flush()
- guests:close();kicked:close()
- os.execute("title Let's party!")
- show.main()
Advertisement
Add Comment
Please, Sign In to add comment