import streamlit as st
from process import process,process_using_llm
import os
import shutil
import PyPDF2

TEMP_DIR = "temp_files"
st.set_page_config(layout="wide",page_title="KYC Doc AI")

def cleanup_temp_files():
    try:
        if os.path.exists(TEMP_DIR):
            # Remove all files in TEMP_DIR
            shutil.rmtree(TEMP_DIR)
            print(f"Temporary files in {TEMP_DIR} have been deleted.")
        # Re-create the temp directory after cleanup
        os.makedirs(TEMP_DIR)
    except Exception as e:
        print(f"An error occurred during cleanup: {e}")
def extract_pages(input_pdf_path, output_pdf_path, start_page=None, end_page=None):
    try:
        # Open the PDF file
        with open(input_pdf_path, 'rb') as input_pdf:
            reader = PyPDF2.PdfReader(input_pdf)
            total_pages = len(reader.pages)

            # Create a PDF writer object for the new PDF
            writer = PyPDF2.PdfWriter()

            # Default: extract only the first page if no specific input is provided
            if start_page is None and end_page is None:
                start_page, end_page = 0, 0

            # Special case: if user specifies 0 for start_page and -1 for end_page
            # Extract the first and last page only
            if start_page == 0 and end_page == -1:
                writer.add_page(reader.pages[0])  # First page
                writer.add_page(reader.pages[-1])  # Last page
            # If only first page is required
            elif start_page == 0 and end_page == 0:
                writer.add_page(reader.pages[0])  # First page
            else:
                print("Invalid input. Only first page or (first and last page) extraction is allowed.")
                return

            # Write the combined PDF to a new file
            with open(output_pdf_path, 'wb') as output_pdf:
                writer.write(output_pdf)

            print(f"PDF saved as {output_pdf_path}")

    except Exception as e:
        print(f"An error occurred: {e}")


def merge_dicts_by_aadhaar(data):
    new_dic = {}
    for dic in data:
        aadhar = dic.get("Aadhaar Number")
        aadhar = aadhar.replace(" ", "")
        if aadhar in new_dic:
            if dic.get('Gender') and dic.get('Date of birth'):
                new_dic[aadhar]['Gender'] = dic.get('Gender', None)
                new_dic[aadhar]['Date of birth'] = dic.get('Date of birth', None)
                new_dic[aadhar]['Name'] = dic.get('Name', None)
                new_dic[aadhar]['Aadhaar Number'] = dic.get('Aadhaar Number', None).replace(" ", "")

            else:
                new_dic[aadhar]['Address'] = dic.get('Address', None)

        else:
            new_dic[aadhar] = {}
            if dic.get('Gender') and dic.get('Date of birth'):
                new_dic[aadhar]['Gender'] = dic.get('Gender', None)
                new_dic[aadhar]['Date of birth'] = dic.get('Date of birth', None)
                new_dic[aadhar]['Name'] = dic.get('Name', None)
                new_dic[aadhar]['Aadhaar Number'] = dic.get('Aadhaar Number', None).replace(" ", "")
            else:
                new_dic[aadhar]['Address'] = dic.get('Address', None)
    new_data = []
    for key in new_dic:
        new_data.append(new_dic[key])

    return new_data


def process_uploads(uploaded_files):
    try:
        company_name=None
        company_name_legal=None
        company_trade_name=None
        gst_number=None
        pan_number_company=None
        coi_number=None
        director_names=[]
        extracted_results={}
        gst_dict={}
        pan_dict={}
        coi_dict={}
        moa_dict={}
        aoa_dict={}
        add_dict={}
        share_dict={}
        total_pan_number=0
        total_company_names=0
        total_coi_numbers=0

        if not os.path.exists(TEMP_DIR):
            os.makedirs(TEMP_DIR)

        # director pans: -> can be individual files, single file
        director_pans=uploaded_files.get('director_pans',None)
        if director_pans:
            director_pan_data=[]
            for pan in director_pans:
                file_path = os.path.join(TEMP_DIR, pan.name)

                with open(file_path, "wb") as temp_file:
                    temp_file.write(pan.getbuffer())
                ocr_data=process(file_path)
                content = ""
                for page_num, text in ocr_data.items():
                    content += text + '\n'

                dict=process_using_llm(content,"pan_user")

                if dict:
                    director_pan_data.append(dict)
            for pan_data in director_pan_data:
                if "Name" in pan_data:
                    director_names.append(pan_data.get('Name').strip().lower())
            extracted_results['Pan Cards of Directors']=director_pan_data

        director_aadhars=uploaded_files.get("director_aadhars",None)
        if director_aadhars:
            director_aadhars_data=[]
            for aadhar in director_aadhars:
                file_path = os.path.join(TEMP_DIR, aadhar.name)

                with open(file_path, "wb") as temp_file:
                    temp_file.write(aadhar.getbuffer())
                ocr_data = process(file_path)
                content = ""
                for page_num, text in ocr_data.items():
                    content += text + '\n'
                dict = process_using_llm(content, "aadhar_user")

                if dict:
                    director_aadhars_data.append(dict)

            director_aadhars_data_new=merge_dicts_by_aadhaar(director_aadhars_data)
            for direc_adhar in director_aadhars_data_new:
                if "Name" in direc_adhar:
                    name=direc_adhar.get('Name').strip().lower()
                    if name not in director_names:
                        director_names.append(name)
            extracted_results["Aadhaar Cards of Directors"]=director_aadhars_data_new



        gst_cert=uploaded_files.get('gst_certificate',None)
        if gst_cert:
            file_path = os.path.join(TEMP_DIR, gst_cert.name)

            with open(file_path, "wb") as temp_file:
                temp_file.write(gst_cert.getbuffer())
            ocr_data = process(file_path)
            content = ""
            for page_num, text in ocr_data.items():
                content += text + '\n'
            gst_dict = process_using_llm(content, "gst")
            if "Legal Name" in gst_dict:
                company_name_legal=gst_dict.get('Legal Name','').strip()
            elif "Trade Name" in gst_dict:
                company_trade_name=gst_dict.get('Trade Name','').strip()
            if "Registration Number"in gst_dict:
                gst_number=gst_dict.get('Registration Number').strip()

            if company_name_legal or company_trade_name:
                total_company_names+=1




        company_pan = uploaded_files.get('company_pan',None)
        if company_pan:
            file_path = os.path.join(TEMP_DIR, company_pan.name)

            with open(file_path, "wb") as temp_file:
                temp_file.write(company_pan.getbuffer())
            ocr_data = process(file_path)
            content = ""
            for page_num, text in ocr_data.items():
                content += text + '\n'
            pan_dict = process_using_llm(content, "company_pan")
            if "Company Name" in pan_dict:
                name=pan_dict.get("Company Name").strip()
                company_name=name
                total_company_names+=1

            if "PAN Number" in pan_dict:
                pan_number_company=pan_dict.get('PAN Number').strip()
                total_pan_number+=1


        coi = uploaded_files.get('coi',None)
        if coi:
            file_path = os.path.join(TEMP_DIR, coi.name)

            with open(file_path, "wb") as temp_file:
                temp_file.write(coi.getbuffer())
            ocr_data = process(file_path)
            content = ""
            for page_num, text in ocr_data.items():
                content += text + '\n'
            coi_dict = process_using_llm(content, "coi")
            if "Company Name" in coi_dict:
                name=coi_dict.get("Company Name").strip()
                company_name=name
                total_company_names+=1

            if "Corporate Identity Number" in coi_dict:
                coi_number=coi_dict.get("Corporate Identity Number").strip()
                total_coi_numbers+=1

            if "PAN Number" in coi_dict:
                total_pan_number+=1
                pan_number_company=coi_dict.get("PAN Number").strip()




        aoa = uploaded_files.get('aoa',None)
        if aoa:
            file_path = os.path.join(TEMP_DIR, aoa.name)

            with open(file_path, "wb") as temp_file:
                temp_file.write(aoa.getbuffer())

            extract_pages(file_path,file_path,0,-1)
            ocr_data = process(file_path)
            content = ""
            for page_num, text in ocr_data.items():
                content += text + '\n'

            aoa_dict = process_using_llm(content, "aoa")

            if "Share Holders" in aoa_dict:
                share_holders=aoa_dict.get("Share Holders",[])
                aoa_dict["Share Holders"]=",".join(share_holders)



        moa = uploaded_files.get('moa',None)
        if moa:
            file_path = os.path.join(TEMP_DIR, moa.name)

            with open(file_path, "wb") as temp_file:
                temp_file.write(moa.getbuffer())

            extract_pages(file_path, file_path,0,-1)
            ocr_data = process(file_path)
            content = ""
            for page_num, text in ocr_data.items():
                content += text + '\n'

            moa_dict = process_using_llm(content, "moa")

            if "Share Holders" in moa_dict:
                share_holders=moa_dict.get("Share Holders",[])
                moa_dict["Share Holders"]=",".join(share_holders)




        share=uploaded_files.get('share',None)
        if share:
            file_path = os.path.join(TEMP_DIR, share.name)

            with open(file_path, "wb") as temp_file:
                temp_file.write(share.getbuffer())


            ocr_data = process(file_path)
            content = ""
            for page_num, text in ocr_data.items():
                content += text + '\n'

            share_dict = process_using_llm(content, "share")


            if "Share Holders" in share_dict:
                share_holders=share_dict.get("Share Holders",[])
                share_dict["Share Holders"]=",".join(share_holders)

            if "Corporate Identity Number" in share_dict:
                coi_number=share_dict.get('Corporate Identity Number').strip()
                total_coi_numbers+=1



        address_proof = uploaded_files.get('address_proof', None)
        if address_proof:
            file_path = os.path.join(TEMP_DIR, address_proof.name)

            with open(file_path, "wb") as temp_file:
                temp_file.write(address_proof.getbuffer())
            extract_pages(file_path, file_path)
            ocr_data = process(file_path)
            content = ""
            for page_num, text in ocr_data.items():
                content += text + '\n'

            add_dict = process_using_llm(content, "stamp")
            if "Stamp Duty" in add_dict:
                duty=add_dict.get("Stamp Duty",None)
                if duty>=100:
                    add_dict['Valid Stamp']="Yes"
            subword = "nota"
            if subword in content.lower():
                add_dict['Notary Stamp']="Present"

            extracted_results['Address Proof Details(Non Judicial Stamp)']=add_dict



        if company_name is not None or company_name_legal is not None or company_trade_name is not None:
            if total_company_names>1:
                if pan_dict:
                    name=pan_dict.get("Company Name",None)
                    if name and (name.strip() == company_name or name.strip() == company_name_legal or name.strip() == company_trade_name):
                        pan_dict['Is Company Matching']="Yes"
                    else:
                        pan_dict['Is Company Matching']="No"

                if coi_dict:
                    name = coi_dict.get("Company Name",None)
                    if name and (name.strip() == company_name or name.strip() == company_name_legal or name.strip() == company_trade_name):
                        coi_dict['Is Company Matching'] = "Yes"
                    else:
                        coi_dict['Is Company Matching'] = "No"


                if gst_dict:
                    name1 = gst_dict.get("Legal Name",None)
                    name2 = gst_dict.get("Trade Name",None)

                    if name1 and (name1.strip() == company_name or name1.strip() == company_name_legal or name1.strip() == company_trade_name):
                        gst_dict['Is Company Matching'] = "Yes"

                    elif name2 and (name2.strip() == company_name or name2.strip() == company_name_legal or name2.strip() == company_trade_name):
                        gst_dict['Is Company Matching'] = "Yes"

                    else:
                        gst_dict['Is Company Matching']="No"

                if moa_dict:
                    name = moa_dict.get("Company Name", None)
                    if name and (name.strip() == company_name or name.strip() == company_name_legal or name.strip() == company_trade_name):
                        moa_dict['Is Company Matching'] = "Yes"
                    else:
                        moa_dict['Is Company Matching'] = "No"

                if aoa_dict:
                    name = moa_dict.get("Company Name", None)
                    if name and (name.strip() == company_name or name.strip() == company_name_legal or name.strip() == company_trade_name):
                        moa_dict['Is Company Matching'] = "Yes"
                    else:
                        moa_dict['Is Company Matching'] = "No"

                if share_dict:
                    name = share_dict.get("Company Name",None)
                    if name and (name.strip() == company_name or name.strip() == company_name_legal or name.strip() == company_trade_name):
                        share_dict['Is Company Matching'] = "Yes"
                    else:
                        share_dict['Is Company Matching'] = "No"

            else: # if total count is less than or equal to 1 then we cannot validate
                if pan_dict:
                    pan_dict[
                        'More information needed to validate company name'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"
                if coi_dict:
                    coi_dict[
                        'More information needed to validate company name'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"
                if gst_dict:
                    gst_dict[
                        'More information needed to validate company name'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"
                if aoa_dict:
                    aoa_dict[
                        'More information needed to validate company name'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"
                if moa_dict:
                    moa_dict[
                        'More information needed to validate company name'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"
                if share_dict:
                    share_dict[
                        'More information needed to validate company name'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"


        else:
            if pan_dict:
                pan_dict['More information needed to validate company name'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"
            if coi_dict:
                coi_dict['More information needed to validate company name'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"
            if gst_dict:
                gst_dict['More information needed to validate company name'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"
            if aoa_dict:
                aoa_dict[
                    'More information needed to validate company name'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"
            if moa_dict:
                moa_dict[
                    'More information needed to validate company name'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"
            if share_dict:
                share_dict[
                    'More information needed to validate company name'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"


        if pan_number_company is not None:
            if total_pan_number>1:
                if pan_dict:
                    pan_number=pan_dict.get('PAN Number',None)
                    if pan_number is not None and pan_number.strip()==pan_number_company:
                        pan_dict['Is Company PAN Number Matching']="Yes"
                    else:
                        pan_dict['Is Company PAN Number Matching'] = "No"

                if coi_dict:
                    pan_number = coi_dict.get('PAN Number',None)
                    if pan_number is not None and pan_number.strip() == pan_number_company:
                        coi_dict['Is Company PAN Number Matching'] = "Yes"
                    else:
                        coi_dict['Is Company PAN Number Matching'] = "No"

            else:
                if pan_dict:
                    pan_dict[
                        'More information needed to validate company PAN number'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"

                if coi_dict:
                    coi_dict[
                        'More information needed to validate company PAN number'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"



        else:
            if pan_dict:
                pan_dict['More information needed to validate company PAN number'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"

            if coi_dict:
                coi_dict['More information needed to validate company PAN number']= f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"


        if coi_number is not None:

            if total_coi_numbers>1:

                if coi_dict:
                    coi_number_check=coi_dict.get('Corporate Identity Number',None)
                    if coi_number_check is not None and coi_number_check.strip()==coi_number:
                        coi_dict['Is Corporate Identity Number Matching']="Yes"

                    else:
                        coi_dict['Is Corporate Identity Number Matching']="No"

                if share_dict:
                    coi_number_check=share_dict.get('Corporate Identity Number',None)
                    if coi_number_check is not None and coi_number_check.strip()==coi_number:
                        share_dict['Is Corporate Identity Number Matching']="Yes"
                    else:
                        share_dict['Is Corporate Identity Number Matching'] = "No"

            else:
                if coi_dict:
                    coi_dict[
                        'More information needed to validate company COI number'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"

                if share_dict:
                    share_dict[
                        'More information needed to validate company COI number'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"



        else:
            if coi_dict:
                coi_dict['More information needed to validate company COI number']=f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"

            if share_dict:
                share_dict['More information needed to validate company COI number'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"



        if "Names of directors" in gst_dict:
            gst_director_names = gst_dict.get("Names of directors", [])
            if gst_director_names:
                gst_dict["Names of directors"]=",".join(gst_director_names)
                missing_directors = []
                gst_director_names_lower = [name.strip().lower() for name in gst_director_names]
                if director_names:
                    for direc_name in director_names:
                        if direc_name not in gst_director_names_lower:
                            missing_directors.append(direc_name)

                    if not missing_directors:
                        gst_dict["All director names present?"] = "<span style='color: green;'><strong>Yes</strong></span>"

                    else:
                        # List missing director names in red
                        missing_directors_text = ', '.join(
                            [f"<span style='color: red;'>{name}</span>" for name in missing_directors])
                        gst_dict["All director names present?"] = f"<span style='color: red;'><strong>No</strong></span> (Missing: {missing_directors_text})"
                else:
                    gst_dict['More information needed to validate Director names'] = f"<span style='color: #d4ac0d;'><strong>Yes</strong></span>"


        if pan_dict:
            extracted_results['Company PAN Details']=pan_dict
        if coi_dict:
            extracted_results['COI Details']=coi_dict
        if gst_dict:
            extracted_results['GST Certificate Details']=gst_dict
        if moa_dict:
            extracted_results['MOA Details']=gst_dict
        if aoa_dict:
            extracted_results['AOA Details']=aoa_dict
        if share_dict:
            extracted_results['Shareholding Details']=share_dict



        return extracted_results
    except Exception as e:
        print(f"error occured in processing files {e}")
    finally:
        cleanup_temp_files()


def display_results_in_cards(extracted_results):
    col1, col2, col3 = st.columns(3)  # Create three columns
    count = 0  # To keep track of the row/column positioning

    for key in extracted_results:
        # Determine which column to use (cycle through 3 columns)
        current_col = col1 if count % 3 == 0 else col2 if count % 3 == 1 else col3

        with current_col:
            # Process director PAN data
            if key == "Pan Cards of Directors":
                d_pans = extracted_results[key]
                text = ""

                # Build the text for each director's PAN information
                for count, d_pan in enumerate(d_pans):
                    text += f"<h4 style='color:black;'>Pan Information of Director {count + 1}</h4>"
                    for key2 in d_pan:
                        # Add each field to the text
                        field_text = f"<strong style='color: #3498db;'>{key2}</strong>: {d_pan[key2]}<br>"
                        text += field_text

                # Display in a custom card-like layout
                current_col.markdown(f"""
                        <div style="border: 1px solid #ddd; padding: 15px; border-radius: 10px; margin-bottom: 20px; background-color: #f9f9f9; height: 250px; display: flex; flex-direction: column; justify-content: space-between;">
                            <div style="color: #333; height: 150px; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #888 #ddd;">
                                <p>{text}</p>
                            </div>
                        </div>
                    """, unsafe_allow_html=True)

            # Process director Aadhaar data
            elif key == "Aadhaar Cards of Directors":
                d_aadhars = extracted_results[key]
                text = ""

                for count, d_aadhar in enumerate(d_aadhars):
                    text += f"<h4 style='color:black;'>Aadhaar Information of Director {count + 1}</h4>"
                    for key2 in d_aadhar:
                        field_text = f"<strong style='color: #3498db;'>{key2}</strong>: {d_aadhar[key2]}<br>"
                        text += field_text

                current_col.markdown(f"""
                        <div style="border: 1px solid #ddd; padding: 15px; border-radius: 10px; margin-bottom: 20px; background-color: #f9f9f9; height: 250px; display: flex; flex-direction: column; justify-content: space-between;">
                            <div style="color: #333; height: 230px; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #888 #ddd;">
                                <p>{text}</p>
                            </div>
                        </div>
                    """, unsafe_allow_html=True)

            # Process other documents and check for 'Yes'/'No' status
            else:
                data = extracted_results[key]
                text = f"<h4 style='color:black;'>{key}</h4>"

                for key2 in data:
                    # Apply color and bold formatting for "Yes" and "No" values
                    if key2 in ["Is Company Matching", "Is Corporate Identity Number Matching",
                                "Is Company PAN Number Matching"]:
                        if data[key2] == "Yes":
                            field_text = f"<strong style='color: #3498db;'>{key2}</strong>: <strong><span style='color: green;'>{data[key2]}</span></strong><br>"
                        elif data[key2] == "No":
                            field_text = f"<strong style='color: #3498db;'>{key2}</strong>: <strong><span style='color: red;'>{data[key2]}</span></strong><br>"
                        else:
                            field_text = f"<strong style='color: #3498db;'>{key2}</strong>: {data[key2]}<br>"
                    else:
                        field_text = f"<strong style='color: #3498db;'>{key2}</strong>: {data[key2]}<br>"

                    text += field_text

                current_col.markdown(f"""
                        <div style="border: 1px solid #ddd; padding: 15px; border-radius: 10px; margin-bottom: 20px; background-color: #f9f9f9; height: 250px; display: flex; flex-direction: column; justify-content: space-between;">
                            <div style="color: #333; height: 230px; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #888 #ddd;">
                                <p>{text}</p>
                            </div>
                        </div>
                    """, unsafe_allow_html=True)

        count += 1


def main():
    if "submitted" not in st.session_state:
        st.session_state["submitted"] = False

    if not st.session_state["submitted"]:
        st.title("Welcome to KYC DOC AI")

        # Create a form to handle all file uploads and submission
        with st.form("kyc_form"):
            uploaded_files = {}

            # Director PAN Cards (Multiple files)
            director_pans = st.file_uploader("Upload PAN Cards of Directors", type=['png', 'jpg', 'jpeg', 'pdf'], accept_multiple_files=True)
            if director_pans:
                uploaded_files['director_pans'] = director_pans

            # Director Aadhar Cards (Multiple files)
            director_aadhars = st.file_uploader("Upload Aadhar Cards of Directors", type=['png', 'jpg', 'jpeg', 'pdf'], accept_multiple_files=True)
            if director_aadhars:
                uploaded_files['director_aadhars'] = director_aadhars

            # GST Certificate (Single file)
            gst_certificate = st.file_uploader("Upload GST Certificate", type=['png', 'jpg', 'jpeg', 'pdf'], accept_multiple_files=False)
            if gst_certificate:
                uploaded_files['gst_certificate'] = gst_certificate

            # Company PAN Card (Single file)
            company_pan = st.file_uploader("Upload PAN Card of Company", type=['png', 'jpg', 'jpeg', 'pdf'], accept_multiple_files=False)
            if company_pan:
                uploaded_files['company_pan'] = company_pan

            # Certificate of Incorporation (Single file)
            coi_certificate = st.file_uploader("Upload CERTIFICATE OF INCORPORATION", type=['png', 'jpg', 'jpeg', 'pdf'], accept_multiple_files=False)
            if coi_certificate:
                uploaded_files['coi'] = coi_certificate

            # AOA Document (Single file)
            aoa = st.file_uploader("Upload AOA document", type=['png', 'jpg', 'jpeg', 'pdf'], accept_multiple_files=False)
            if aoa:
                uploaded_files['aoa'] = aoa

            # COA Document (Single file)
            moa = st.file_uploader("Upload MOA document", type=['png', 'jpg', 'jpeg', 'pdf'], accept_multiple_files=False)
            if moa:
                uploaded_files['moa'] = moa

            # Shareholding Document (Single file)
            share = st.file_uploader("Upload Shareholding Document", type=['png', 'jpg', 'jpeg', 'pdf'], accept_multiple_files=False)
            if share:
                uploaded_files['share'] = share

            # Address Proof of Company Office (Single file)
            address = st.file_uploader("Upload Address Proof of Company Office", type=['png', 'jpg', 'jpeg', 'pdf'], accept_multiple_files=False)
            if address:
                uploaded_files['address_proof'] = address

            # Submit button for the form
            submitted = st.form_submit_button("Process Files")
            if submitted:
                with st.spinner('Processing files...'):
                    extracted_results=process_uploads(uploaded_files)

                st.session_state["extracted_results"] = extracted_results
                st.session_state["submitted"] = True
                st.rerun()

    else:
        st.title("KYC Document Results")
        if "extracted_results" in st.session_state:
            extracted_results = st.session_state["extracted_results"]
            display_results_in_cards(extracted_results)

        if st.button("Back"):
            st.session_state["submitted"] = False
            st.rerun()



if __name__ == "__main__":
    main()