Update src/streamlit_app.py

#4
Files changed (1) hide show
  1. src/streamlit_app.py +193 -38
src/streamlit_app.py CHANGED
@@ -1,40 +1,195 @@
1
- import altair as alt
2
- import numpy as np
3
- import pandas as pd
4
  import streamlit as st
 
5
 
6
- """
7
- # Welcome to Streamlit!
8
-
9
- Edit `/streamlit_app.py` to customize this app to your heart's desire :heart:.
10
- If you have any questions, checkout our [documentation](https://docs.streamlit.io) and [community
11
- forums](https://discuss.streamlit.io).
12
-
13
- In the meantime, below is an example of what you can do with just a few lines of code:
14
- """
15
-
16
- num_points = st.slider("Number of points in spiral", 1, 10000, 1100)
17
- num_turns = st.slider("Number of turns in spiral", 1, 300, 31)
18
-
19
- indices = np.linspace(0, 1, num_points)
20
- theta = 2 * np.pi * num_turns * indices
21
- radius = indices
22
-
23
- x = radius * np.cos(theta)
24
- y = radius * np.sin(theta)
25
-
26
- df = pd.DataFrame({
27
- "x": x,
28
- "y": y,
29
- "idx": indices,
30
- "rand": np.random.randn(num_points),
31
- })
32
-
33
- st.altair_chart(alt.Chart(df, height=700, width=700)
34
- .mark_point(filled=True)
35
- .encode(
36
- x=alt.X("x", axis=None),
37
- y=alt.Y("y", axis=None),
38
- color=alt.Color("idx", legend=None, scale=alt.Scale()),
39
- size=alt.Size("rand", legend=None, scale=alt.Scale(range=[1, 150])),
40
- ))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
+ import urllib.parse
3
 
4
+ # πŸ“ž NAMBARKA WHATSAPP-KA IYO EVC PLUS
5
+ DUKAANKA_WHATSAPP = "252612693555"
6
+ EVC_PLUS_NUMBER = "0612693555" # Halkaan ku beddel nambarkaaga saxda ah ee lacagta laguugu soo dirayo
7
+
8
+ # βš™οΈ Qurxinta dusha sare ee Website-ka
9
+ st.set_page_config(page_title="Baidoa Ice Cream", page_icon="🍦", layout="centered")
10
+
11
+ # πŸ›’ Bilaabidda nidaamka dambiilaha (Session State)
12
+ if 'cart' not in st.session_state:
13
+ st.session_state.cart = []
14
+ if 'page' not in st.session_state:
15
+ st.session_state.page = "home"
16
+ if 'customer_info' not in st.session_state:
17
+ st.session_state.customer_info = {}
18
+
19
+ # πŸ“‹ XOGTA ALAABTA IYO QIIMAHA
20
+ ALAABTA = {
21
+ "JALLAATADA TUFKA": [
22
+ {"magac": "Tuf Wayn", "qiimo": 0.50, "dhadhan": ["Vanilla", "Chocolate", "Strawberry", "Mango"]},
23
+ {"magac": "Tuf Normal", "qiimo": 0.25, "dhadhan": ["Vanilla", "Chocolate", "Strawberry"]},
24
+ {"magac": "Tuf Yar", "qiimo": 0.20, "dhadhan": ["Vanilla", "Chocolate"]}
25
+ ],
26
+ "JALLAATADA CAAGA": [
27
+ {"magac": "Caag Weyn (Max)", "qiimo": 1.00, "dhadhan": ["Mix Flavors", "Chocolate Special", "Strawberry"]},
28
+ {"magac": "Caag Weyn", "qiimo": 0.75, "dhadhan": ["Vanilla", "Chocolate", "Strawberry"]},
29
+ {"magac": "Caag Yar (Normal)", "qiimo": 0.50, "dhadhan": ["Vanilla", "Chocolate"]},
30
+ {"magac": "Caag Yar", "qiimo": 0.25, "dhadhan": ["Vanilla", "Chocolate"]}
31
+ ],
32
+ "MACMACAAN & TOORTO": [
33
+ {"magac": "Toorto Weyn (Celebration)", "qiimo": 25.00, "dhadhan": ["Chocolate", "Vanilla", "Red Velvet"]},
34
+ {"magac": "Toorto Normal", "qiimo": 15.00, "dhadhan": ["Chocolate", "Vanilla"]},
35
+ {"magac": "Toorto Yar / Jab", "qiimo": 4.00, "dhadhan": ["Chocolate", "Vanilla"]}
36
+ ],
37
+ "MACMACAAN CUSUB": [
38
+ {"magac": "Lotus Cake", "qiimo": 3.00, "dhadhan": ["Original Lotus"]},
39
+ {"magac": "Basbuuso", "qiimo": 2.50, "dhadhan": ["Traditional"]},
40
+ {"magac": "Cupcake", "qiimo": 2.50, "dhadhan": ["Chocolate", "Vanilla", "Strawberry"]},
41
+ {"magac": "Normal Cake", "qiimo": 1.50, "dhadhan": ["Vanilla", "Marble"]}
42
+ ]
43
+ }
44
+
45
+ # 🏠 1. BOGGA HORE (HOME PAGE)
46
+ if st.session_state.page == "home":
47
+ st.markdown("<h1 style='text-align: center; color: #d63384;'>🍦 Baidoa Ice Cream πŸŽ‚</h1>", unsafe_allow_html=True)
48
+ st.markdown("<p style='text-align: center; color: #6c757d;'>Ku soo dhowaada dukaanka rasmiga ah! Dooro alaabtaada, bixi lacagta, kuna hel 20 daqiiqo gudahood.</p>", unsafe_allow_html=True)
49
+ st.write("---")
50
+
51
+ # Badhan weyn oo la rigo dambiilaha haddii wax ku jiraan
52
+ if len(st.session_state.cart) > 0:
53
+ st.warning(f"πŸ›’ Dambiilahaaga waxaa ku jira {len(st.session_state.cart)} alaab ah.")
54
+ if st.button("U Gudub Gaadhiga Wax Iibsiga βž”"):
55
+ st.session_state.page = "cart"
56
+ st.rerun()
57
+
58
+ # Muujinta Qaybaha Alaabta
59
+ for qaybta, alaabooyinka inoo yaal iney ku jiraan iney muuqdaan:
60
+ st.markdown(f"### πŸ“ {qaybta}")
61
+ cols = st.columns(2)
62
+ for idx, item in enumerate(alaabooyinka):
63
+ with cols[idx % 2]:
64
+ st.info(f"*{item['magac']}* β€” ${item['qiimo']:.2f}")
65
+
66
+ # Doorashada Dhadhanka iyo Tirada
67
+ dhadhan_dooro = st.selectbox(f"Dhadhanka ({item['magac']})", item['dhadhan'], key=f"flavor_{item['magac']}_{idx}")
68
+ tirada = st.number_input(f"Tirada ({item['magac']})", min_value=1, max_value=20, value=1, key=f"qty_{item['magac']}_{idx}")
69
+
70
+ if st.button(f"βž• Ku Dar Gaadhiga", key=f"btn_{item['magac']}_{idx}"):
71
+ st.session_state.cart.append({
72
+ "magac": item['magac'],
73
+ "qiimo": item['qiimo'],
74
+ "dhadhan": dhadhan_dooro,
75
+ "tirada": tirada,
76
+ "subtotal": item['qiimo'] * tirada
77
+ })
78
+ st.success(f"βœ… {tirada} {item['magac']} ({dhadhan_dooro}) waa lagu daray gaadhiga!")
79
+ st.rerun()
80
+ st.write("---")
81
+
82
+ # πŸ›’ 2. GAADHIGA WAX IIBSIGA (CART PAGE)
83
+ elif st.session_state.page == "cart":
84
+ st.markdown("## πŸ›’ Gaadhiga Wax Iibsiga (Cart)")
85
+ if not st.session_state.cart:
86
+ st.error("Gaadhigaagu waa maran yahay hadda!")
87
+ if st.button("⬅️ Ku noqo Bogga Hore"):
88
+ st.session_state.page = "home"
89
+ st.rerun()
90
+ else:
91
+ wadarta_lacagta = 0
92
+ for idx, c in enumerate(st.session_state.cart):
93
+ col1, col2, col3 = st.columns([3, 2, 1])
94
+ with col1:
95
+ st.write(f"*{c['magac']}* ({c['dhadhan']})")
96
+ with col2:
97
+ st.write(f"{c['tirada']} x ${c['qiimo']:.2f} = *${c['subtotal']:.2f}*")
98
+ with col3:
99
+ if st.button("❌", key=f"del_{idx}"):
100
+ st.session_state.cart.pop(idx)
101
+ st.rerun()
102
+ wadarta_lacagta += c['subtotal']
103
+
104
+ st.write("---")
105
+ st.markdown(f"### πŸ’° Wadarta Guud: *${wadarta_lacagta:.2f}*")
106
+
107
+ col_btn1, col_btn2 = st.columns(2)
108
+ with col_btn1:
109
+ if st.button("⬅️ Sii Wad Adeegsiga"):
110
+ st.session_state.page = "home"
111
+ st.rerun()
112
+ with col_btn2:
113
+ if st.button("Sii Wad Dalabka (Macluumaadka) βž”"):
114
+ st.session_state.page = "info"
115
+ st.rerun()
116
+
117
+ # πŸ‘€ 3. MACLUUMAADKA MACMIILKA (CUSTOMER INFO)
118
+ elif st.session_state.page == "info":
119
+ st.markdown("## πŸ‘€ Macluumaadka Geynta Dalabka")
120
+ st.write("Fadlan qor faahfaahintaada si looguugu soo qaado jalaatada:")
121
+
122
+ magaca = st.text_input("Magacaaga oo Dhammaystiran:")
123
+ telefoonka = st.text_input("Lambarka Telefoonkaaga:")
124
+ cinwaanka = st.text_area("Cinwaanka Guriga / Goobta Shaqada (Geeynta):")
125
+
126
+ col_btn1, col_btn2 = st.columns(2)
127
+ with col_btn1:
128
+ if st.button("⬅️ Ku noqo Gaadhiga"):
129
+ st.session_state.page = "cart"
130
+ st.rerun()
131
+ with col_btn2:
132
+ if st.button("U Gudub Lacag-bixinta βž”"):
133
+ if magaca and telefoonka and cinwaanka:
134
+ st.session_state.customer_info = {
135
+ "magac": magaca,
136
+ "tel": telefoonka,
137
+ "cinwaan": cinwaanka
138
+ }
139
+ st.session_state.page = "payment"
140
+ st.rerun()
141
+ else:
142
+ st.error("Fadlan buuxi dhammaan meelaha banaan!")
143
+
144
+ # πŸ’³ 4. LACAG-BIXINTA (PAYMENT)
145
+ elif st.session_state.page == "payment":
146
+ st.markdown("## πŸ’³ Tallaabada Lacag-bixinta (Amniga Dalabka)")
147
+ st.warning("⚠️ Dalabkaaga lama xaqiijin doono ilaa aad lacagta bixiso si looga hortago dalabyada beenta ah!")
148
+
149
+ wadarta_lacagta = sum(c['subtotal'] for c in st.session_state.cart)
150
+ st.markdown(f"### πŸ’΅ Wadarta Lacagta Laga rabo: *${wadarta_lacagta:.2f}*")
151
+
152
+ st.info(f"ℹ️ *Habka Lacag bixinta:\nFadlan ku dir *${wadarta_lacagta:.2f}* lambarka **EVC Plus: {EVC_PLUS_NUMBER}*")
153
+
154
+ st.write("---")
155
+ st.write("Markaad lacagta dirto ka dib, guji batoonka hoose si aad ugu xaqiijiso WhatsApp-ka oo dukaanka laguugu diyaariyo:")
156
+
157
+ # Diyaarinta qoraalka WhatsApp-ka ku dhacaya
158
+ alaab_qoraal = ""
159
+ for c in st.session_state.cart:
160
+ alaab_qoraal += f"- {c['tirada']} {c['magac']} ({c['dhadhan']}) = ${c['subtotal']:.2f}\n"
161
+
162
+ info = st.session_state.customer_info
163
+ qoraalka_whatsapp = (
164
+ f"🚨 DALAB CUSUB (BAIDOA ICE CREAM) 🚨\n\n"
165
+ f"πŸ‘€ Macmiilka: {info['magac']}\n"
166
+ f"πŸ“ž Tel: {info['tel']}\n"
167
+ f"πŸ“ Cinwaanka: {info['cinwaan']}\n\n"
168
+ f"πŸ›’ Alaabta la doortay:\n{alaab_qoraal}\n"
169
+ f"πŸ’° Wadarta Guud: ${wadarta_lacagta:.2f}\n"
170
+ f"βœ… Xaaladda Lacagta: Waxaan hadda ku soo diray EVC Plus! Fadlan ii xaqiiji oo iisoo rida."
171
+ )
172
+
173
+ url_encoded_text = urllib.parse.quote(qoraalka_whatsapp)
174
+ whatsapp_link = f"https://wa.me/{DUKAANKA_WHATSAPP}?text={url_encoded_text}"
175
+
176
+ col_btn1, col_btn2 = st.columns(2)
177
+ with col_btn1:
178
+ if st.button("⬅️ Beddel Macluumaadka"):
179
+ st.session_state.page = "info"
180
+ st.rerun()
181
+ with col_btn2:
182
+ # Batoonka rasmiga ah ee u diraya WhatsApp-ka oo diiwaangelinaya dalabka
183
+ st.markdown(f'''
184
+ <a href="{whatsapp_link}" target="_blank" style="text-decoration: none;">
185
+ <div style="background-color: #25D366; color: white; text-align: center; padding: 10px; font-weight: bold; border-radius: 5px; cursor: pointer;">
186
+ βœ… BIXI HADDA & XAQIIJI DALABKA
187
+ </div>
188
+ </a>
189
+ ''', unsafe_allow_html=True)
190
+
191
+ if st.button("πŸ’‘ Markaad gujiso kadib, halkan riix si aad u nadiifiso dambiilaha"):
192
+ st.session_state.cart = []
193
+ st.session_state.page = "home"
194
+ st.success("Dalabkaaga waa la diiwaangeliyey! Waxaa laguugu soo dirayaa 20 daqiiqo gudahood. Waad ku mahadsan tahay doorashada Baidoa Ice Cream! 🍦")
195
+ st.rerun()