from flask import Flask, render_template, request, redirect, url_for, session
from datetime import datetime, timedelta
from werkzeug.security import check_password_hash
import sqlite3
import pytz
import pandas as pd
from io import BytesIO
from flask import send_file

app = Flask(__name__, template_folder='templates', static_folder='static')
app.secret_key = 'weddingrs2025'
app.permanent_session_lifetime = timedelta(minutes=30)

# Database setup
DATABASE = 'weddingRS.db'

ADMIN_PASSWORD = 'scrypt:32768:8:1$F8U53F3uPKgI0NGM$df3c40b14a91dd751f42374eed15ace85632901a4cb1c9486af667abc6a2a49fc1e822646d817e564cc370b92aeee67b268376433c008dbbf2132c7bdbc8cc43'

def init_db():
    with sqlite3.connect(DATABASE) as conn:
        conn.execute('''
            CREATE TABLE IF NOT EXISTS registrations (
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                first_name TEXT NOT NULL,
                last_name TEXT,
                email TEXT,
                camping BIT,
                vegitarian BIT,
                accommodation TEXT,
                kind_words TEXT,
                timestamp INTEGER DEFAULT (strftime('%s', 'now')) 
            )
        ''')
        conn.commit()

    
@app.route('/')
def weddingrs():
    return render_template('weddingrs.html')


@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        first_name = request.form['first_name']
        last_name = request.form['last_name']
                        
        # Controleer of het email adres in de database staat
        with sqlite3.connect(DATABASE) as conn:
            cursor = conn.cursor()
            cursor.execute('SELECT 1 FROM registrations WHERE Trim(first_name) = ? COLLATE NOCASE AND Trim(last_name) = ? COLLATE NOCASE LIMIT 1',(first_name.strip(), last_name.strip()))
            result = cursor.fetchone() is not None
                    
            if result is False:
                if first_name == 'admin':
                    if check_password_hash(ADMIN_PASSWORD, last_name):
                        session.permanent = True
                        session["logged_in"] = True
                        session["user"] = first_name
                        return redirect(url_for('admin'))
                else:
                    return render_template('weddingrs.html', error="Jouw naam werd niet gevonden in de database.")
                # Controleer of het wachtwoord correct is
            else:
                session.permanent = True
                session["logged_in"] = True
                session["user"] = first_name
                return render_template('weddingrs.html', logged_in=True)
                
    return render_template('weddingrs.html')
    

if __name__ == '__main__':
    init_db()
    app.run(host='::',debug=True, port=5000)

