import streamlit as st import sqlite3 import pandas as pd import datetime as dt import requests import time import asyncio import pytz tz = pytz.timezone('Iran') smslist=[] conn = sqlite3.connect('Rayan.db') c = conn.cursor() def create_saves(): c.execute('CREATE TABLE IF NOT EXISTS saves(mtntopup TEXT,mtnpin TEXT, mcitopup TEXT,mcipin TEXT,netless TEXT,rtltopup TEXT,rtlpin TEXT,telepin2 TEXT,baste TEXT)') conn.commit() def add_saves(mtntopup,mtnpin,mcitopup,mcipin,netless,rtltopup,rtlpin,telepin2,baste): c.execute('INSERT INTO saves(mtntopup,mtnpin,mcitopup,mcipin,netless,rtltopup,rtlpin,telepin2,baste) VALUES (?,?,?,?,?,?,?,?,?)',(mtntopup,mtnpin,mcitopup,mcipin,netless,rtltopup,rtlpin,telepin2,baste)) conn.commit() def read_saves(): c.execute('SELECT * FROM saves') data = c.fetchone() return data def update_saves(mtntopup,mtnpin,mcitopup,mcipin,netless,rtltopup,rtlpin,telepin2,baste): c.execute('UPDATE saves SET mtntopup=?,mtnpin=?,mcitopup=?,mcipin=?,netless=?,rtltopup=?,rtlpin=? ,telepin2=?,baste=?',(mtntopup,mtnpin,mcitopup,mcipin,netless,rtltopup,rtlpin,telepin2,baste)) conn.commit() def esaj_topup_add(): c.execute('UPDATE esaj_topup SET date=?,charged=? ',(str(dt.datetime.now(tz).day),"yes")) conn.commit() def esaj_topup_add_fake(): c.execute('INSERT INTO esaj_topup (date,charged) VALUES(?,?) ',(str(dt.datetime.now(tz).day-1),"yes")) conn.commit() def esaj_pin_add(): c.execute('UPDATE esaj_pin SET date=?,charged=? ',(str(dt.datetime.now(tz).day),"yes")) conn.commit() def esaj_pin_add_fake(): c.execute('INSERT INTO esaj_pin (date,charged) VALUES(?,?) ',(str(dt.datetime.now(tz).day-1),"yes")) conn.commit() def esaj_topup_read(): c.execute('SELECT * FROM esaj_topup') data = c.fetchone() return data def esaj_pin_read(): c.execute('SELECT * FROM esaj_pin') data = c.fetchone() return data def create_todo(): c.execute('CREATE TABLE IF NOT EXISTS todo (id INTEGER PRIMARY KEY ,day TEXT,month TEXT,to_do VARCHAR(500))') conn.commit() def add_todo(todo): c.execute('INSERT INTO todo (day,month,to_do) VALUES (?,?,?)',(str(dt.datetime.now(tz).day),str(dt.datetime.now(tz).month),str(todo))) conn.commit() def read_todo(): c.execute('SELECT * FROM todo') data = c.fetchall() return data def clear_todo(): c.execute('DELETE FROM todo') conn.commit() def delete_todo(conn,id): sql='DELETE FROM todo WHERE id=?' cur = conn.cursor() cur.execute(sql, (id,)) conn.commit() async def sms(a): smsinfo = read_saves() if smsinfo: clean_smsinfo=pd.DataFrame([smsinfo],columns=["mtntopup","mtnpin","mcitopup","mcipin","rtltopup","rtlpin","telepin2","baste"]) if dt.datetime.now(tz).second==58 and dt.datetime.now(tz).minute == 59 and dt.datetime.now(tz).hour+1 == int(clean_smsinfo[str(a)])-1: print(a) time.sleep(100) async def checker(a): await sms(a) def main(): st.set_page_config( page_title="Rayan Ertebat", layout="wide", initial_sidebar_state="auto", ) menu = ["Enter Saves","View Saves","Esaj","To Do"] choice = st.sidebar.selectbox("Menu",menu) create_saves() if choice=="Enter Saves": st.header ("Enter Saves") col3,col4=st.columns(2) col3.header("") col3.header("") col3.header("") col3.header('Rayan Ertebat - Business Operation Team') col4.image("https://media.mehrnews.com/d/2021/07/06/3/3822605.jpg",width=400) col1,col2,col3,col4,col5,col6,col7,col8,col9,col10=st.columns(10) col1.header("MTN") col1.subheader("Top up:") col1.markdown("") col1.markdown("") col2.header("") col1.subheader("Pins:") col2.header("") col2.header("") mtntopup = col2.text_input('',key=1) mtnpin = col2.text_input('',key=2) col3.header("MCI") col3.subheader("Top up:") col3.markdown("") col3.markdown("") col4.markdown("") col3.subheader("Pins:") col4.header("") col4.header("") col3.markdown("") col3.markdown("") col4.markdown("") col3.subheader("netless:") mcitopup = col4.text_input('',key=3) mcipin = col4.text_input('',key=4) netless = col4.text_input('',key=9) col5.header("RTL") col5.subheader("Top up:") col5.markdown("") col5.markdown("") col6.header("") col5.subheader("Pins:") col6.header("") col6.header("") rtltopup = col6.text_input('',key=5) rtlpin = col6.text_input('',key=6) col7.header("JIRING") col7.subheader("telepin 2:") col7.markdown("") col7.markdown("") col8.header("") col7.subheader("baste:") col8.header("") col8.header("") telepin2 = col8.text_input('',key=7) baste = col8.text_input('',key=8) if st.button('save'): try: #create_saves() #add_saves(mtntopup,mtnpin,mcitopup,mcipin,netless,rtltopup,rtlpin,telepin2,baste) info=read_saves() if info: clean_info=pd.DataFrame([info],columns=["Mtn Topup","Mtn Pin","Mci Topup","Mci Pin","Netless","Rtl Topup","Rtl Pin","Telepin 2","Baste"]) update_saves(mtntopup,mtnpin,mcitopup,mcipin,netless,rtltopup,rtlpin,telepin2,baste) if mtntopup: tempmtntopup=str(mtntopup) else: tempmtntopup=int(clean_info["Mtn Topup"]) if mtnpin: tempmtnpin=str(mtnpin) else: tempmtnpin=int(clean_info["Mtn Pin"]) if mcitopup: tempmcitopup=str(mcitopup) else: tempmcitopup=int(clean_info["Mci Topup"]) if mcipin: tempmcipin=str(mcipin) else: tempmcipin=int(clean_info["Mci Pin"]) if netless: tempnetless=str(netless) else: tempnetless=int(clean_info["Netless"]) if rtltopup: temprtltopup=str(rtltopup) else: temprtltopup=int(clean_info["Rtl Topup"]) if rtlpin: temprtlpin=str(rtlpin) else: temprtlpin=int(clean_info["Rtl Pin"]) if telepin2: temptelepin2=str(telepin2) else: temptelepin2=int(clean_info["Telepin 2"]) if baste: tempbaste=str(baste) else: tempbaste=int(clean_info["Baste"]) update_saves(tempmtntopup,tempmtnpin,tempmcitopup,tempmcipin,tempnetless,temprtltopup,temprtlpin,temptelepin2,tempbaste) a=st.success('Saved') if a: time.sleep(2) a.empty() else: create_saves() add_saves(mtntopup,mtnpin,mcitopup,mcipin,netless,rtltopup,rtlpin,telepin2,baste) a=st.success('Saved') if a: time.sleep(2) a.empty() except ValueError as e: st.error(e) if choice=="View Saves": try: st.header("View Saves") inf = read_saves() clean_inf=pd.DataFrame([inf],columns=["Mtn Topup","Mtn Pin","Mci Topup","Mci Pin","Netless","Rtl Topup","Rtl Pin","Telepin 2","Baste"]) st.dataframe(clean_inf) columns=["Mtn Topup","Mtn Pin","Mci Topup","Mci Pin","Netless","Rtl Topup","Rtl Pin","Telepin 2","Baste"] for item in columns: t = dt.datetime.now(tz).hour+1 if int(clean_inf[item])-int(t) >3: st.success(item.upper()) elif 1<=int(clean_inf[item])-int(t) <=3: st.warning(item.upper()) elif 0<=int(clean_inf[item])-int(t)<=1: st.error(item.upper()) elif int(clean_inf[item])-int(t)<=0: st.error(f"CAUTION, {item.upper()} has been ran out!!") except ValueError: st.error("اطلاعاتی در دیتابیس موجود نیست. لطفا ابتدا مقادیر سیو را وارد کنید") if choice=="Esaj": st.header("Esaj") col1,col2,col3,col4,col5=st.columns(5) c.execute('CREATE TABLE IF NOT EXISTS esaj_topup (date TEXT,charged TEXT)') conn.commit() c.execute('CREATE TABLE IF NOT EXISTS esaj_pin (date TEXT,charged TEXT)') conn.commit() esaj_topup_inf = esaj_topup_read() if esaj_topup_inf: clean_inf_esaj_topup =pd.DataFrame([esaj_topup_inf],columns=["date","charged"]) else: esaj_topup_add_fake() esaj_topup_inf = esaj_topup_read() clean_inf_esaj_topup =pd.DataFrame([esaj_topup_inf],columns=["date","charged"]) esaj_pin_inf = esaj_pin_read() if esaj_pin_inf: clean_inf_esaj_pin =pd.DataFrame([esaj_pin_inf],columns=["date","charged"]) else: esaj_pin_add_fake() esaj_pin_inf = esaj_pin_read() clean_inf_esaj_pin =pd.DataFrame([esaj_pin_inf],columns=["date","charged"]) if clean_inf_esaj_topup["date"][0] == str(dt.datetime.now(tz).day): col1.subheader("Top up has been done today :)") else: t=col1.checkbox("topup",key="easj_topup") if t: esaj_topup_add() if clean_inf_esaj_pin["date"][0] == str(dt.datetime.now(tz).day): col3.subheader("Pin has been done today :)") else: p = col2.checkbox("pin",key="easj_pin") if p : esaj_pin_add() if clean_inf_esaj_topup["date"][0] == str(dt.datetime.now(tz).day) and clean_inf_esaj_pin["date"][0] == str(dt.datetime.now(tz).day): st.balloons() if choice=="To Do": st.header("To Do") st.subheader("Enter To Do's below and press Submit:") c1,c2,c3,c4,c5,c6,c7,c8,c9=st.columns(9) col1,col2=st.columns(2) c7.header("") c7.header("") c7.header("") clear = c8.button("Press to clear data") if clear: clear_todo() s = col1.success("Cleared Successfully") time.sleep(2) s.empty() create_todo() with col1.form(key='todo',clear_on_submit=True): todo = st.text_input("To Do :") submit_button = st.form_submit_button("Submit") if submit_button: a=str(todo) add_todo(a) t=c9.success("successfully added") time.sleep(1) t.empty() col1.header("") with col1.form(key='done',clear_on_submit=True): done = st.text_input("For delete, enter number if done and submit. ") submit_button = st.form_submit_button("Submit") if submit_button : if done.isdigit(): delete_todo(conn,done) y=c9.success(f'The task number {done} deleted successfully') time.sleep(1) y.empty() data = read_todo() else: x=c9.error("Please Enter the number of task") time.sleep(1) x.empty() col2.header("") show = col2.subheader("Today To Do's:") #if show: data = read_todo() if len(data)>0: todo_list=[] for i in range(len(data)): item=data[i] if item[1]==str(dt.datetime.now(tz).day) and item[2]==str(dt.datetime.now(tz).month) : col2.button(f'{str(item[0])} - {str(item[3])}',key=item[2]) todo_list.append(item[3]) #else: col1.warning("There is no To Do yet!") if __name__ == "__main__": main()