File size: 4,350 Bytes
6f77afa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import streamlit as st
import pandas as pd
import os
from io import BytesIO
from PIL import Image, ImageDraw, ImageFont

# CSV file for saving records
CSV_FILE = "tailor_data.csv"

# Urdu and English fields
FIELDS = [
    "سیریل نمبر", "گاہک کا نام", "موبائل نمبر", "قمیض کی لمبائی", "شلوار کی لمبائی", 
    "بازو", "کالر", "بین", "شلوار پاکٹ", "سائیڈ پاکٹ", "گھیرا", "پائنچہ", "پٹی", 
    "چھاتی", "انٹری کرنے والے کا نام"
]

# Load existing data or create empty DataFrame
if os.path.exists(CSV_FILE):
    df = pd.read_csv(CSV_FILE)
else:
    df = pd.DataFrame(columns=FIELDS)

st.set_page_config(page_title="Riwaj Tailors", layout="wide")
st.title("✂️ Riwaj Tailors - Wah Cantt")
st.markdown("Developed by: Muhammad Haris | [engrharis@proton.me](mailto:engrharis@proton.me)")

# --- Sidebar Navigation ---
tab = st.sidebar.radio("Navigate", ["➕ Add Customer", "📋 View/Edit Records"])

def save_df():
    df.to_csv(CSV_FILE, index=False)

if tab == "➕ Add Customer":
    st.header("➕ Add New Customer")

    with st.form("customer_form"):
        inputs = {}
        cols = st.columns(2)
        for i, field in enumerate(FIELDS[:-1]):
            inputs[field] = cols[i % 2].text_input(field, value="", help="Fill this field")

        inputs["انٹری کرنے والے کا نام"] = st.text_input("انٹری کرنے والے کا نام", value="")

        submitted = st.form_submit_button("Save Customer")
        if submitted:
            if any(inputs[field].strip() == "" for field in FIELDS[:-1]):
                st.error("❌ All fields are required!")
            elif inputs["موبائل نمبر"] in df["موبائل نمبر"].astype(str).values:
                st.error("❌ موبائل نمبر پہلے سے موجود ہے!")
            elif inputs["سیریل نمبر"] in df["سیریل نمبر"].astype(str).values:
                st.error("❌ سیریل نمبر پہلے سے موجود ہے!")
            else:
                df.loc[len(df)] = inputs
                save_df()
                st.success("✅ Customer saved successfully!")

if tab == "📋 View/Edit Records":
    st.header("📋 Customer Records")
    search = st.text_input("🔍 Search by Name, Phone or Serial")
    filtered_df = df[
        df["سیریل نمبر"].astype(str).str.contains(search, case=False, na=False) |
        df["گاہک کا نام"].astype(str).str.contains(search, case=False, na=False) |
        df["موبائل نمبر"].astype(str).str.contains(search, case=False, na=False)
    ] if search else df

    if not filtered_df.empty:
        selected = st.selectbox("Select customer by index to edit or export", filtered_df.index)
        st.dataframe(filtered_df)

        with st.expander("✏️ Edit Selected Customer"):
            updated = {}
            for field in FIELDS:
                updated[field] = st.text_input(field, value=str(df.at[selected, field]))
            if st.button("Update Record"):
                for field in FIELDS:
                    df.at[selected, field] = updated[field]
                save_df()
                st.success("✅ Record updated successfully.")

        if st.button("🗑️ Delete Selected"):
            df.drop(index=selected, inplace=True)
            df.reset_index(drop=True, inplace=True)
            save_df()
            st.success("✅ Record deleted.")

        if st.button("🖼️ Export Selected to Image"):
            customer = df.loc[selected]
            img = Image.new("RGB", (800, 600), color="white")
            d = ImageDraw.Draw(img)

            try:
                font = ImageFont.truetype("arial.ttf", 24)
            except:
                font = ImageFont.load_default()

            y = 20
            for key, val in customer.items():
                d.text((40, y), f"{key}: {val}", fill="black", font=font)
                y += 35

            buffer = BytesIO()
            img.save(buffer, format="PNG")
            st.image(buffer.getvalue(), caption="Exported Record", use_column_width=True)
            st.download_button("📥 Download as Image", buffer.getvalue(), file_name="record.png", mime="image/png")

    else:
        st.warning("❗ No matching records found.")