|
import streamlit as st |
|
import pandas as pd |
|
from datetime import datetime |
|
|
|
|
|
today = datetime.today().strftime('%d/%m/%Y') |
|
|
|
|
|
data = { |
|
'Người đăng ký': [], |
|
'Thời gian bắt đầu': [], |
|
'Thời gian kết thúc': [], |
|
'Phòng': [] |
|
} |
|
|
|
|
|
df = pd.DataFrame(data) |
|
|
|
|
|
def is_time_overlap(start1, end1, start2, end2): |
|
return max(start1, start2) < min(end1, end2) |
|
|
|
|
|
st.title(f"Đăng ký phòng họp ngày {today}") |
|
|
|
|
|
name = st.text_input("Người đăng ký") |
|
|
|
|
|
start_time = st.time_input("Thời gian bắt đầu") |
|
end_time = st.time_input("Thời gian kết thúc") |
|
|
|
|
|
room = st.radio('Chọn phòng', ('Phòng 1', 'Phòng 2', 'Phòng 3')) |
|
|
|
|
|
if st.button("Submit"): |
|
if start_time >= end_time: |
|
st.error("Thời gian bắt đầu phải nhỏ hơn thời gian kết thúc.") |
|
else: |
|
|
|
overlap = False |
|
for i, row in df.iterrows(): |
|
|
|
if row['Phòng'] == room and is_time_overlap(row['Thời gian bắt đầu'], row['Thời gian kết thúc'], start_time, end_time): |
|
overlap = True |
|
|
|
if overlap: |
|
st.error(f"Thời gian bạn chọn cho {room} đã bị trùng lặp với một người đăng ký khác.") |
|
else: |
|
|
|
new_row = pd.DataFrame({ |
|
'Người đăng ký': [name], |
|
'Thời gian bắt đầu': [start_time], |
|
'Thời gian kết thúc': [end_time], |
|
'Phòng': [room] |
|
}) |
|
df = pd.concat([df, new_row], ignore_index=True) |
|
st.success("Đăng ký thành công!") |
|
|
|
|
|
st.write("Danh sách đăng ký:") |
|
st.dataframe(df) |
|
|