Enn3DevPlayer

N Finance

May 29th, 2022 (edited)
588
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Author: Enn3DevPlayer
  2.  
  3. -- Updater
  4. local version = 1.0
  5.  
  6. local function check_update()
  7.     local check_version = http.get("http://enn3.it/n_finance/version")
  8.     if version ~= check_version then
  9.         -- TODO
  10.     end
  11. end
  12.  
  13. -- Header
  14. local function clear()
  15.     term.clear()
  16.     term.setCursorPos(0, 0)
  17.     term.setBackgroundColour(colours.black)
  18.     term.setTextColor(colors.white)
  19. end
  20.  
  21. local function color(text_color)
  22.     term.setTextColour(text_color)
  23. end
  24.  
  25. local function end_color()
  26.     term.setTextColour(colours.white)
  27. end
  28.  
  29. local function background(background_color)
  30.     term.setBackgroundColour(background_color)
  31. end
  32.  
  33. local function end_background()
  34.     term.setBackgroundColour(colours.black)
  35. end
  36.  
  37. local function button(background_color, text_color, text)
  38.     background(background_color)
  39.     color(text_color)
  40.     print(text)
  41.     end_color()
  42.     end_background()
  43. end
  44.  
  45. local function link(text)
  46.     color(colours.yellow)
  47.     print(text)
  48.     end_color()
  49. end
  50.  
  51. local function errore()
  52.     while true do
  53.         clear()
  54.         color(colours.red)
  55.         background(colours.yellow)
  56.         print("Errore!")
  57.         end_background()
  58.         print("")
  59.         print("Errore: Impossibile caricare la pagina!")
  60.         end_color()
  61.         print("")
  62.         print("Cause comuni:")
  63.         print("")
  64.         print("- Nessuna connessione a LeNet")
  65.         print("- Pagina inesistente")
  66.         print("- Errore di digitazione dell'indirizzo")
  67.         print("- Link errato o obsoleto.")
  68.         print("")
  69.         print("Premere G per navigare ad un'altra pagina")
  70.         print("Premere Q per uscire da LeNet")
  71.         event, key = os.pullEvent("key")
  72.         if key == keys.g then
  73.             vai_a()
  74.         elseif key == keys.q then
  75.             os.reboot()
  76.         end
  77.     end
  78. end
  79.  
  80. local function vai_a()
  81.     sleep(0.2)
  82.     term.setCursorPos(1, 2)
  83.     background(colours.lightGrey)
  84.     print("|-----------------------------------|")
  85.     print("|        VAI A INDIRIZZO....        |")
  86.     print("|                                   |")
  87.     print("| ln://                             |")
  88.     print("|                                   |")
  89.     print("|                                   |")
  90.     print("|Premere Enter per navigare         |")
  91.     print("|-----------------------------------|")
  92.     end_background()
  93.     term.setCursorPos(8, 5)
  94.     url = read()
  95.     vai_a_url(url)
  96.     term.setCursorPos(1, 19)
  97.     term.write("Premere G per andare ad un indirizzo, Q per uscire")
  98.     while true do
  99.         event, key = os.pullEvent("key")
  100.         if key == keys.g then vai_a() end
  101.     end
  102. end
  103.  
  104. -- inizio pagina
  105.  
  106. -- IMPLEMENTAZIONE DEL DRAWFILLEDBOX
  107. local function drawPixelInternal(xPos, yPos)
  108.     term.setCursorPos(xPos, yPos)
  109.     term.write(" ")
  110. end
  111.  
  112. local tColourLookup = {}
  113. for n = 1, 16 do
  114.     tColourLookup[string.byte("0123456789abcdef", n, n)] = 2 ^ (n - 1)
  115. end
  116. local function drawFilledBox(startX, startY, endX, endY, nColour)
  117.     if type(startX) ~= "number" or type(startX) ~= "number" or type(endX) ~=
  118.         "number" or type(endY) ~= "number" or
  119.         (nColour ~= nil and type(nColour) ~= "number") then
  120.         error("Expected startX, startY, endX, endY, colour", 2)
  121.     end
  122.  
  123.     startX = math.floor(startX)
  124.     startY = math.floor(startY)
  125.     endX = math.floor(endX)
  126.     endY = math.floor(endY)
  127.  
  128.     if nColour then term.setBackgroundColor(nColour) end
  129.     if startX == endX and startY == endY then
  130.         drawPixelInternal(startX, startY)
  131.         return
  132.     end
  133.  
  134.     local minX = math.min(startX, endX)
  135.     if minX == startX then
  136.         minY = startY
  137.         maxX = endX
  138.         maxY = endY
  139.     else
  140.         minY = endY
  141.         maxX = startX
  142.         maxY = startY
  143.     end
  144.  
  145.     for x = minX, maxX do for y = minY, maxY do drawPixelInternal(x, y) end end
  146. end
  147.  
  148. -- FUNZIONE PER L'ARROTONDAMENTO
  149. local function round(num, numDecimalPlaces)
  150.     local mult = 10 ^ (numDecimalPlaces or 0)
  151.     return math.floor(num * mult + 0.5) / mult
  152. end
  153.  
  154. term.clear()
  155. button(colours.yellow, colours.black, "Area Riservata Borsa (Modalità sicura di LeNet)    ")
  156.  
  157. print(
  158.     "\nInserire i propri dati. Premere Enter per confermare i dati inseriti. \nSe i dati sono corretti, il campo diventerà verde. Se sono errati, il programma chiederà di reinserirli nuovamente.")
  159.  
  160. -- nomeutente
  161. term.setCursorPos(1, 9)
  162. term.write("Nome utente:")
  163. term.setCursorPos(15, 9)
  164. end_color()
  165. utenteAccettato = false
  166. conteggioErrori = 0
  167. while utenteAccettato == false do
  168.     utente = read()
  169.     checkuser = http.get(
  170.         "http://172.16.20.220/luanet/servlets/nebraskapay.php?auth=no&richiesta=verifica&utente=" ..
  171.         utente).readAll()
  172.     tabcheckuser = textutils.unserialize(checkuser)
  173.     if tabcheckuser.stato == "OK" then
  174.         term.setCursorPos(15, 9)
  175.         color(colours.lime)
  176.         term.write(utente)
  177.         end_color()
  178.         utenteAccettato = true
  179.     else
  180.         term.setCursorPos(15, 9)
  181.         color(colours.red)
  182.         term.write("Utente errato!          ")
  183.         sleep(2)
  184.         term.setCursorPos(15, 9)
  185.         end_color()
  186.         term.write("                       ")
  187.         term.setCursorPos(15, 9)
  188.         conteggioErrori = conteggioErrori + 1
  189.         if conteggioErrori > 2 then
  190.             term.setCursorPos(15, 9)
  191.             color(colours.red)
  192.             term.write("Troppi tentativi di immissione errati    ")
  193.             sleep(2)
  194.             term.setCursorPos(15, 9)
  195.             end_color()
  196.             term.write("                       ")
  197.             term.setCursorPos(15, 9)
  198.             clear()
  199.             vai_a_url("borsanr")
  200.         end
  201.     end
  202. end
  203.  
  204. -- password
  205. term.setCursorPos(1, 11)
  206. term.write("Password:")
  207. term.setCursorPos(15, 11)
  208.  
  209. conteggioErrori = 0
  210. passAccettata = false
  211. while passAccettata == false do
  212.     end_color()
  213.     password = read("#")
  214.     checkuser = http.get(
  215.         "http://172.16.20.220/luanet/servlets/nebraskapay.php?auth=" ..
  216.         password .. "&richiesta=addebito&valore=0&utente=" ..
  217.         utente).readAll()
  218.     risposta = textutils.unserialize(checkuser)
  219.     if risposta.stato == "OK" then
  220.         term.setCursorPos(15, 11)
  221.         color(colours.lime)
  222.         term.write("##############               ")
  223.         end_color()
  224.         passAccettata = true
  225.     else
  226.         term.setCursorPos(15, 11)
  227.         color(colours.red)
  228.         term.write("Password errata!            ")
  229.         conteggioErrori = conteggioErrori + 1
  230.         sleep(2)
  231.         term.setCursorPos(15, 11)
  232.         term.write("                               ")
  233.         term.setCursorPos(15, 11)
  234.         if conteggioErrori > 2 then
  235.             term.setCursorPos(15, 11)
  236.             color(colours.red)
  237.             term.write("Troppi tentativi di immissione errati")
  238.             sleep(2)
  239.             term.setCursorPos(15, 11)
  240.             term.write("                               ")
  241.             term.setCursorPos(15, 11)
  242.             clear()
  243.             vai_a_url("borsanr")
  244.         end
  245.     end
  246. end
  247.  
  248. aggiornamento = true
  249. -- Pagina principale
  250. while true do
  251.  
  252.     clear()
  253.     conteggioErrori = 0
  254.     -- Pagina in cui scegli le operazioni da fare
  255.  
  256.     -- Ricontrolla il saldo per gestire l'aggiornamento di più operazioni
  257.     if aggiornamento == true then
  258.         checkuser = http.get(
  259.             "http://172.16.20.220/luanet/servlets/nebraskapay.php?auth=" ..
  260.             password .. "&richiesta=addebito&valore=0&utente=" ..
  261.             utente).readAll()
  262.         risposta = textutils.unserialize(checkuser)
  263.         saldo = tonumber(risposta.saldo)
  264.         test_prendi_borsa = http.get(
  265.             "http://172.16.20.220/luanet/servlets/borsa.php?auth=" ..
  266.             password .. "&richiesta=login&utente=" .. utente)
  267.             .readAll()
  268.         prendi_borsa = http.get(
  269.             "http://172.16.20.220/luanet/servlets/borsa.php?auth=" ..
  270.             password .. "&richiesta=login&utente=" .. utente)
  271.             .readAll()
  272.         risposta_borsa = textutils.unserialize(prendi_borsa)
  273.  
  274.         prendi_quotaz = http.get(
  275.             "http://rest.rgbcraft.com/borsa/?richiesta=lua_totale")
  276.             .readAll()
  277.         risposta_qtz = textutils.unserialize(prendi_quotaz)
  278.     end
  279.  
  280.     tot_azioni = 0
  281.     controvalore = 0
  282.     scarto = 0
  283.     for k, v in pairs(risposta_borsa.portfolio) do
  284.         tot_azioni = tot_azioni + tonumber(v)
  285.         print(k)
  286.         controvalore = risposta_qtz[k]["quotazione"] * tonumber(v) +
  287.             controvalore
  288.         scarto = risposta_qtz[k]["closing"] * tonumber(v) + scarto
  289.     end
  290.  
  291.     scarto = (controvalore - scarto) / scarto * 100
  292.  
  293.     if scarto < 0 then
  294.         scarto = round(scarto, 2)
  295.         scarto_pos = false
  296.     elseif tostring(scarto) == "nan" then
  297.         scarto = "Non disp."
  298.         scarto_pos = false
  299.     else
  300.         scarto = "+" .. round(scarto, 2)
  301.         scarto_pos = true
  302.     end
  303.  
  304.     -- Disegna la finestra del pannello utente
  305.     clear()
  306.     button(colours.yellow, colours.black, "Area riservata (Modalità sicura di LeNet)                 ")
  307.     button(colours.black, colours.white, "\nBenvenuto, " .. utente .. "!\nOperazioni disponibili:\n")
  308.  
  309.     button(colours.purple, colours.white, "Visualizza le quotazioni  \n")
  310.     button(colours.purple, colours.white, "Analisi dell'Indice NRI   \n")
  311.     button(colours.purple, colours.white, "Visualizza portfolio      \n")
  312.     button(colours.purple, colours.white, "Acquista azioni           \n")
  313.     button(colours.purple, colours.white, "Vendi azioni              \n")
  314.     button(colours.purple, colours.white, "Imposta Stop Loss Order   \n")
  315.     button(colours.purple, colours.white, "Disconnettiti dalla Borsa \n")
  316.  
  317.     term.setCursorPos(30, 5)
  318.     write("Dati account")
  319.     term.setCursorPos(30, 7)
  320.     write("Saldo:  " .. saldo .. " IC")
  321.     term.setCursorPos(30, 8)
  322.     write("Azioni: " .. tot_azioni)
  323.     term.setCursorPos(30, 9)
  324.     write("Valore: " .. round(controvalore, 2) .. " IC")
  325.     term.setCursorPos(30, 10)
  326.     write("Scarto: ")
  327.     if scarto_pos == false then
  328.         color(colors.red)
  329.     else
  330.         color(colors.lime)
  331.     end
  332.     term.setCursorPos(38, 10)
  333.     write(scarto .. " %")
  334.     end_color()
  335.  
  336.     print(k)
  337.     event, key, x, y = os.pullEvent("mouse_click")
  338.  
  339.  
  340.     if event == "mouse_click" then
  341.         if y == 5 then -- Visualizza le quotazioni
  342.             aggiornamento = true
  343.             clear()
  344.             button(colours.yellow, colours.black, "Quotazioni (Modalità sicura di LeNet)                ")
  345.  
  346.             quotazioni = textutils.unserialize(
  347.                 http.get(
  348.                     "http://rest.rgbcraft.com/borsa/?richiesta=lua_totale")
  349.                 .readAll())
  350.             color(colors.purple)
  351.             print("\nSimb Nome società                  Quotaz.   Scost.")
  352.             end_color()
  353.             ypos = 4
  354.             for k, v in pairs(quotazioni) do
  355.                 term.setCursorPos(1, ypos)
  356.                 term.write(k)
  357.                 term.setCursorPos(6, ypos)
  358.                 term.write(v["nome"])
  359.                 term.setCursorPos(36, ypos)
  360.                 term.write(v["quotazione"])
  361.                 term.setCursorPos(46, ypos)
  362.                 if v["segno"] == "+" then
  363.                     color(colors.lime)
  364.                 else
  365.                     color(colors.red)
  366.                 end
  367.                 term.write(v["scarto"])
  368.                 end_color()
  369.                 ypos = ypos + 1
  370.             end
  371.             term.setCursorPos(1, 18)
  372.             button(colours.purple, colours.white, "  Indietro  ")
  373.  
  374.             -- Fine pagina
  375.             term.setCursorPos(1, 19)
  376.  
  377.             -- Eventi per i link
  378.             sleep(0.5)
  379.             while true do
  380.                 event, key, x, y = os.pullEvent()
  381.                 if event == "mouse_click" and x >= 1 and x <= 20 and y == 18 then
  382.                     break
  383.                 end
  384.             end
  385.  
  386.         elseif y == 7 then -- Analisi dell'Indice NRI
  387.             aggiornamento = true
  388.             clear()
  389.             button(colours.yellow, colours.black, "Analisi tecnica (Modalità sicura di LeNet)    ")
  390.  
  391.             quotazioni = http.get(
  392.                 "http://rest.rgbcraft.com/borsa/analisi-tecnica.php")
  393.                 .readAll()
  394.             color(colors.purple)
  395.             print("\nAnalisi tecnica dell'Indice di New Radeon")
  396.             end_color()
  397.             print("\n")
  398.             print(quotazioni)
  399.             term.setCursorPos(1, 18)
  400.             button(colours.purple, colours.white, "  Indietro  ")
  401.  
  402.             -- Fine pagina
  403.             term.setCursorPos(1, 19)
  404.  
  405.             -- Eventi per i link
  406.             sleep(0.5)
  407.             while true do
  408.                 event, key, x, y = os.pullEvent()
  409.                 if event == "mouse_click" and x >= 1 and x <= 20 and y == 18 then
  410.                     break
  411.                 end
  412.             end
  413.  
  414.         elseif y == 9 then -- Visualizza portfolio
  415.             aggiornamento = true
  416.             clear()
  417.             button(colours.yellow, colours.black, "Portfolio (Modalità sicura di LeNet)                ")
  418.  
  419.             quotazioni = textutils.unserialize(
  420.                 http.get(
  421.                     "http://rest.rgbcraft.com/borsa/?richiesta=lua_totale")
  422.                 .readAll())
  423.             color(colors.purple)
  424.             print("\nSimbolo  Quantità  Quotazione  Totale       Scost.")
  425.             end_color()
  426.             ypos = 4
  427.             for k, v in pairs(risposta_borsa.portfolio) do
  428.                 term.setCursorPos(1, ypos)
  429.                 term.write(k)
  430.                 term.setCursorPos(10, ypos)
  431.                 term.write(v)
  432.                 term.setCursorPos(20, ypos)
  433.                 term.write(round(risposta_qtz[k]["quotazione"], 2))
  434.                 term.setCursorPos(32, ypos)
  435.                 term.write(round(risposta_qtz[k]["quotazione"] * tonumber(v), 2))
  436.                 term.setCursorPos(45, ypos)
  437.                 if quotazioni[k]["segno"] == "+" then
  438.                     color(colors.lime)
  439.                 else
  440.                     color(colors.red)
  441.                 end
  442.                 term.write(quotazioni[k]["scarto"])
  443.                 end_color()
  444.                 ypos = ypos + 1
  445.             end
  446.             term.setCursorPos(1, 18)
  447.             button(colours.purple, colours.white, "  Indietro  ")
  448.  
  449.             -- Fine pagina
  450.             term.setCursorPos(1, 19)
  451.  
  452.             -- Eventi per i link
  453.             sleep(0.5)
  454.             while true do
  455.                 event, key, x, y = os.pullEvent()
  456.                 if event == "mouse_click" and x >= 1 and x <= 20 and y == 18 then
  457.                     break
  458.                 end
  459.             end
  460.  
  461.         elseif y == 11 then -- Acquista azioni
  462.             aggiornamento = true
  463.             clear()
  464.             button(colours.yellow, colours.black, "Acquista azioni (Modalità sicura di LeNet)                ")
  465.             quotazioni = textutils.unserialize(
  466.                 http.get(
  467.                     "http://rest.rgbcraft.com/borsa/?richiesta=lua_totale")
  468.                 .readAll())
  469.             color(colors.purple)
  470.             print("\nSimb Nome società                  Num.")
  471.             end_color()
  472.             ypos = 4
  473.             alt = false
  474.             pos_simboli = {}
  475.             for k, v in pairs(quotazioni) do
  476.                 term.setCursorPos(1, ypos)
  477.                 term.write(k)
  478.                 term.setCursorPos(6, ypos)
  479.                 term.write(v["nome"])
  480.                 term.setCursorPos(36, ypos)
  481.                 term.write(risposta_borsa["portfolio"][k])
  482.                 term.setCursorPos(42, ypos)
  483.  
  484.                 if alt == false then
  485.                     button(colors.purple, colors.white, " Compra ")
  486.                     alt = true
  487.                 else
  488.                     button(colors.purple, colors.white, " Compra ")
  489.                     alt = false
  490.                 end
  491.  
  492.                 pos_simboli[ypos] = k
  493.                 ypos = ypos + 1
  494.             end
  495.             term.setCursorPos(1, 18)
  496.             button(colours.purple, colours.white, "  Indietro  ")
  497.  
  498.             -- Fine pagina
  499.             term.setCursorPos(1, 19)
  500.  
  501.             -- Eventi per i link
  502.             sleep(0.5)
  503.             finito = false
  504.             while finito == false do
  505.                 event, key, x, y = os.pullEvent("mouse_click")
  506.                 if event == "mouse_click" and x >= 1 and x <= 20 and y == 18 then
  507.                     break
  508.                 else
  509.                     clear()
  510.                     button(colours.yellow, colours.black, "Acquista azioni (Modalità sicura di LeNet)                ")
  511.  
  512.                     print("\nSi stanno per acquistare azioni di questa società:\n")
  513.                     simbolo_acquisto = pos_simboli[y]
  514.                     print(pos_simboli[y] .. " - " ..
  515.                         quotazioni[pos_simboli[y]]["nome"])
  516.                     print("\nIl costo di ciascuna azione è " ..
  517.                         quotazioni[pos_simboli[y]]["quotazione"] .. "IC")
  518.                     print("Si possiedono " .. saldo ..
  519.                         " IC sul conto Nebraska Pay.\n\nQuante azioni si desidera acquistare?\n")
  520.  
  521.                     term.setCursorPos(1, 12)
  522.                     term.write("Quantità:")
  523.                     term.setCursorPos(11, 12)
  524.  
  525.                     importoAccettato = false
  526.                     conteggioErrori = 0
  527.                     while importoAccettato == false do
  528.                         importo = tonumber(read())
  529.                         if conteggioErrori > 2 then
  530.                             term.setCursorPos(11, 12)
  531.                             color(colours.red)
  532.                             term.write("Troppi tentativi di immissione errati")
  533.                             sleep(2)
  534.                             term.setCursorPos(11, 12)
  535.                             end_color()
  536.                             term.write("                                   ")
  537.                             term.setCursorPos(11, 12)
  538.                             clear()
  539.                             vai_a_url("borsanr")
  540.                         elseif importo == "" or importo == nil or importo <= 0 or
  541.                             importo > 1000000 then
  542.                             conteggioErrori = conteggioErrori + 1
  543.                             term.setCursorPos(11, 12)
  544.                             color(colours.red)
  545.                             term.write("Quantità errata!                    " ..
  546.                                 conteggioErrori)
  547.                             sleep(2)
  548.                             term.setCursorPos(10, 12)
  549.                             end_color()
  550.                             term.write("                                   ")
  551.                             term.setCursorPos(11, 12)
  552.                         elseif quotazioni[pos_simboli[y]]["quotazione"] * importo <=
  553.                             saldo and importo > 0 then
  554.                             term.setCursorPos(11, 12)
  555.                             color(colours.lime)
  556.                             term.write(importo .. " - " ..
  557.                                 quotazioni[pos_simboli[y]]["quotazione"] *
  558.                                 importo .. " IC")
  559.                             end_color()
  560.                             importoAccettato = true
  561.                         elseif quotazioni[pos_simboli[y]]["quotazione"] * importo >
  562.                             saldo then
  563.                             conteggioErrori = conteggioErrori + 1
  564.                             term.setCursorPos(11, 12)
  565.                             color(colours.red)
  566.                             term.write("Disponibilità insufficiente!          ")
  567.                             sleep(2)
  568.                             term.setCursorPos(11, 12)
  569.                             end_color()
  570.                             term.write("                                   ")
  571.                             term.setCursorPos(11, 12)
  572.                         end
  573.                     end
  574.                     if importoAccettato == true then
  575.                         drawFilledBox(3, 15, 22, 17, colors.red)
  576.                         term.setCursorPos(7, 16)
  577.                         button(colours.red, colours.white, "  Annulla  ")
  578.  
  579.                         drawFilledBox(30, 15, 49, 17, colors.lime)
  580.                         term.setCursorPos(35, 16)
  581.  
  582.                         button(colours.lime, colours.white, " Conferma  ")
  583.  
  584.                         finito = true
  585.                     end
  586.                     while true do
  587.                         event, key, x, y = os.pullEvent("mouse_click")
  588.                         if event == "mouse_click" and x >= 3 and x <= 22 and y >= 15 and
  589.                             y <= 17 then
  590.                             break
  591.                         elseif event == "mouse_click" and x >= 30 and x <= 49 and y >=
  592.                             15 and y <= 17 then
  593.                             clear()
  594.                             button(colours.yellow, colours.black, "Acquista azioni (Modalità sicura di LeNet)                ")
  595.  
  596.                             rest = http.get(
  597.                                 "http://172.16.20.220/luanet/servlets/borsa.php?richiesta=acquista&auth=" ..
  598.                                 password .. "&utente=" .. utente ..
  599.                                 "&simbolo=" .. simbolo_acquisto ..
  600.                                 "&qta=" .. importo).readAll()
  601.                             rest_t = textutils.unserialize(rest)
  602.                             if rest_t["stato"] ~= "OK" then
  603.                                 color(colors.red)
  604.                                 if rest_t["stato"] == "DI" then
  605.                                     print("\n\nERRORE: Credito insufficiente")
  606.                                 else
  607.                                     print("\n\nERRORE: Errore interno")
  608.                                 end
  609.                             else
  610.                                 print("\n\nAcquisto avvenuto con successo!\n")
  611.                                 print("Si posseggono " .. rest_t["azioni"] ..
  612.                                     " azioni di " .. simbolo_acquisto)
  613.                             end
  614.                             print("\n\nAttendere qualche istante...")
  615.                             sleep(3)
  616.                             break
  617.                         end
  618.                     end
  619.                 end
  620.             end
  621.  
  622.         elseif y == 13 then -- Vendi azioni
  623.             aggiornamento = true
  624.             clear()
  625.             button(colours.yellow, colours.black, "Vendi azioni (Modalità sicura di LeNet)                ")
  626.  
  627.             quotazioni = textutils.unserialize(
  628.                 http.get(
  629.                     "http://rest.rgbcraft.com/borsa/?richiesta=lua_totale")
  630.                 .readAll())
  631.             color(colors.purple)
  632.             print("\nSimb Nome società                  Num.")
  633.             end_color()
  634.             ypos = 4
  635.             alt = false
  636.             pos_simboli = {}
  637.             for k, v in pairs(risposta_borsa["portfolio"]) do
  638.                 term.setCursorPos(1, ypos)
  639.                 term.write(k)
  640.                 term.setCursorPos(6, ypos)
  641.                 term.write(quotazioni[k]["nome"])
  642.                 term.setCursorPos(36, ypos)
  643.                 term.write(v)
  644.                 term.setCursorPos(42, ypos)
  645.  
  646.                 if alt == false then
  647.                     button(colors.purple, colors.white, " Vendi ")
  648.                     alt = true
  649.                 else
  650.                     button(colors.purple, colors.white, " Vendi ")
  651.                     alt = false
  652.                 end
  653.  
  654.                 pos_simboli[ypos] = k
  655.                 ypos = ypos + 1
  656.             end
  657.             term.setCursorPos(1, 18)
  658.             button(colours.purple, colours.white, "  Indietro  ")
  659.  
  660.             -- Fine pagina
  661.             term.setCursorPos(1, 19)
  662.  
  663.             -- Eventi per i link
  664.             sleep(0.5)
  665.             finito = false
  666.             while finito == false do
  667.                 event, key, x, y = os.pullEvent("mouse_click")
  668.                 if event == "mouse_click" and x >= 1 and x <= 20 and y == 18 then
  669.                     break
  670.                 else
  671.                     clear()
  672.                     button(colours.yellow, colours.black, "Vendi azioni (Modalità sicura di LeNet)                ")
  673.  
  674.                     print("\nSi stanno per vendere azioni di questa società:\n")
  675.                     simbolo_vendita = pos_simboli[y]
  676.                     print(pos_simboli[y] .. " - " ..
  677.                         quotazioni[pos_simboli[y]]["nome"])
  678.                     print("\nIl valore di ciascuna azione è " ..
  679.                         quotazioni[pos_simboli[y]]["quotazione"] .. "IC")
  680.                     qta_azioni = tonumber(
  681.                         risposta_borsa["portfolio"][simbolo_vendita])
  682.                     print("Si possiedono " .. qta_azioni ..
  683.                         " azioni.\n\nQuante azioni si desidera vendere?\n")
  684.                     term.setCursorPos(1, 12)
  685.                     term.write("Quantità:")
  686.                     term.setCursorPos(11, 12)
  687.                     end_color()
  688.                     importoAccettato = false
  689.                     conteggioErrori = 0
  690.                     while importoAccettato == false do
  691.                         importo = tonumber(read())
  692.                         if conteggioErrori > 2 then
  693.                             term.setCursorPos(11, 12)
  694.                             color(colours.red)
  695.                             term.write("Troppi tentativi di immissione errati")
  696.                             sleep(2)
  697.                             term.setCursorPos(11, 12)
  698.                             end_color()
  699.                             term.write("                                   ")
  700.                             term.setCursorPos(11, 12)
  701.                             clear()
  702.                             vai_a_url("borsanr")
  703.                         elseif importo == "" or importo == nil or importo <= 0 or
  704.                             importo > qta_azioni then
  705.                             conteggioErrori = conteggioErrori + 1
  706.                             term.setCursorPos(11, 12)
  707.                             color(colours.red)
  708.                             term.write("Quantità errata!                    ")
  709.                             sleep(2)
  710.                             term.setCursorPos(10, 12)
  711.                             end_color()
  712.                             term.write("                                   ")
  713.                             term.setCursorPos(11, 12)
  714.                         elseif importo <= qta_azioni and importo > 0 then
  715.                             term.setCursorPos(11, 12)
  716.                             color(colours.lime)
  717.                             term.write(importo .. " - " ..
  718.                                 quotazioni[pos_simboli[y]]["quotazione"] *
  719.                                 importo .. " IC")
  720.                             end_color()
  721.                             importoAccettato = true
  722.                         end
  723.                     end
  724.                     if importoAccettato == true then
  725.                         drawFilledBox(3, 15, 22, 17, colors.red)
  726.                         term.setCursorPos(7, 16)
  727.  
  728.                         button(colours.red, colours.white, "  Annulla  ")
  729.  
  730.                         drawFilledBox(30, 15, 49, 17, colors.lime)
  731.                         term.setCursorPos(35, 16)
  732.  
  733.                         button(colours.lime, colours.white, " Conferma  ")
  734.  
  735.                         finito = true
  736.                     end
  737.                     while true do
  738.                         event, key, x, y = os.pullEvent("mouse_click")
  739.                         if event == "mouse_click" and x >= 3 and x <= 22 and y >= 15 and
  740.                             y <= 17 then
  741.                             break
  742.                         elseif event == "mouse_click" and x >= 30 and x <= 49 and y >=
  743.                             15 and y <= 17 then
  744.                             clear()
  745.                             button(colours.yellow, colours.black, "Acquista azioni (Modalità sicura di LeNet)                ")
  746.  
  747.                             rest = http.get(
  748.                                 "http://172.16.20.220/luanet/servlets/borsa.php?richiesta=vendi&auth=" ..
  749.                                 password .. "&utente=" .. utente ..
  750.                                 "&simbolo=" .. simbolo_vendita .. "&qta=" ..
  751.                                 importo).readAll()
  752.                             rest_t = textutils.unserialize(rest)
  753.                             if rest_t["stato"] ~= "OK" then
  754.                                 color(colors.red)
  755.                                 if rest_t["stato"] == "DI" then
  756.                                     print("\n\nERRORE: " .. rest_t["errore"])
  757.                                 else
  758.                                     print("\n\nERRORE: Errore interno")
  759.                                 end
  760.                             else
  761.                                 print("\n\nAcquisto avvenuto con successo!\n")
  762.                                 if rest_t["azioni"] ~= "" or rest_t["azoni"] ~= nil then
  763.                                     print("Si posseggono " .. rest_t["azioni"] ..
  764.                                         " azioni di " .. simbolo_vendita)
  765.                                 else
  766.                                     print(
  767.                                         "Tutte le azioni di " .. simbolo_vendita ..
  768.                                         " sono state vendute")
  769.                                 end
  770.                             end
  771.                             print("\n\nAttendere qualche istante...")
  772.                             sleep(3)
  773.                             break
  774.                         end
  775.                     end
  776.                 end
  777.             end
  778.  
  779.         elseif y == 15 then -- Imposta Stop Loss Order
  780.             -- TODO
  781.  
  782.         elseif y == 17 then
  783.             vai_a_url("borsanr")
  784.         else
  785.             aggiornamento = false
  786.         end
  787.  
  788.     else
  789.         aggiornamento = false
  790.     end
  791. end
  792.  
RAW Paste Data Copied