Untitled

 avatar
unknown
plain_text
3 months ago
3.7 kB
10
Indexable
import streamlit as st
import pandas as pd
from datetime import date

st.set_page_config(page_title="Hotel Demo (Stateless)", page_icon="🏨", layout="wide")

quartos = [
    {"id": 101, "numero": "101", "tipo": "Standard", "preco": 150.00},
    {"id": 102, "numero": "201", "tipo": "Luxo", "preco": 300.00},
    {"id": 103, "numero": "305", "tipo": "Suíte", "preco": 550.00},
]

clientes = [
    {"id": 1, "nome": "Ana Souza", "email": "[email protected]"},
    {"id": 2, "nome": "Bruno Lima", "email": "[email protected]"},
]

reservas = [
    {"id": 1, "cliente": "Ana Souza", "quarto": "101", "checkin": date(2023, 10, 1), "checkout": date(2023, 10, 5)}
]

st.title("🏨 Hotel Manager (Modo Simples)")
st.caption("Nota: Como não há banco de dados, as alterações são perdidas ao recarregar a página ou mudar de aba.")

tab_quartos, tab_clientes, tab_reservas = st.tabs(["🛌 Quartos", "👥 Clientes", "📅 Reservas"])

with tab_quartos:
    st.header("Gerenciar Quartos")
    col_form, col_lista = st.columns([1, 2])
    
    with col_form:
        st.subheader("Novo Quarto")
        with st.form("form_quarto"):
            num = st.text_input("Número do Quarto")
            tipo = st.selectbox("Categoria", ["Standard", "Luxo", "Suíte"])
            preco = st.number_input("Valor Diária R$", value=100.0)
            submitted = st.form_submit_button("Salvar")
            
            if submitted:
                novo = {"id": len(quartos)+1, "numero": num, "tipo": tipo, "preco": preco}
                quartos.append(novo)
                st.success("Quarto adicionado visualmente!")
    
    with col_lista:
        st.subheader("Lista Atual")
        st.dataframe(pd.DataFrame(quartos), use_container_width=True)

        quarto_del = st.selectbox("Remover Quarto (ID)", [q['id'] for q in quartos])
        if st.button("Excluir Quarto"):
            quartos = [q for q in quartos if q['id'] != quarto_del]
            st.warning("Quarto removido da visualização atual!")
            st.dataframe(pd.DataFrame(quartos), use_container_width=True)

with tab_clientes:
    st.header("Gerenciar Clientes")
    col_form, col_lista = st.columns([1, 2])
    
    with col_form:
        st.subheader("Novo Cliente")
        with st.form("form_cliente"):
            nome = st.text_input("Nome Completo")
            email = st.text_input("E-mail")
            if st.form_submit_button("Cadastrar"):
                clientes.append({"id": len(clientes)+1, "nome": nome, "email": email})
                st.success("Cliente listado abaixo!")

    with col_lista:
        st.subheader("Base de Clientes")
        st.dataframe(pd.DataFrame(clientes), use_container_width=True)

with tab_reservas:
    st.header("Nova Reserva")
    st.info("⚠️ Atenção: O formulário abaixo só vê os quartos/clientes originais do código, pois os novos são apagados ao mudar de aba.")
    
    with st.form("form_reserva"):
        c1, c2 = st.columns(2)
        cli_selecionado = c1.selectbox("Cliente", [c['nome'] for c in clientes])
        quarto_selecionado = c2.selectbox("Quarto", [q['numero'] for q in quartos])
        d_in = c1.date_input("Check-in", date.today())
        d_out = c2.date_input("Check-out", date.today())
        
        if st.form_submit_button("Confirmar Reserva"):
            nova_reserva = {
                "id": len(reservas)+1,
                "cliente": cli_selecionado,
                "quarto": quarto_selecionado,
                "checkin": d_in,
                "checkout": d_out
            }
            reservas.append(nova_reserva)
            st.success("Reserva gerada!")

    st.divider()
    st.subheader("Mapa de Reservas")
    st.dataframe(pd.DataFrame(reservas), use_container_width=True)
Editor is loading...
Leave a Comment