from flask import Flask, request, render_template_string, send_from_directory, jsonify
from flask import render_template
import sqlite3
import os
import uuid
own_url = os.getenv('own_url')  # URL сервера


import unittest

from whatsapp_api_webhook_server_python.webhooksHandler import startServer




app = Flask(__name__, template_folder="./")




app.config['DEBUG'] = True

UPLOAD_FOLDER = 'static'


# Создание директории, если она не существует
if not os.path.exists(UPLOAD_FOLDER):
    os.makedirs(UPLOAD_FOLDER)



# Создание базы данных и таблицы
def init_db():
    try:
        conn = sqlite3.connect('data.db')
        cursor = conn.cursor()
        cursor.execute('''
            CREATE TABLE IF NOT EXISTS contacts (
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                name TEXT NOT NULL,
                phone TEXT NOT NULL,
                email TEXT NOT NULL
            )
        ''')
        conn.commit()
        conn.close()
    except Exception as e:
        print(f"Error initializing database: {e}")

# Вызов функции для инициализации базы данных
init_db()



@app.route('/settings', methods=['GET'])
def settings():
    return render_template('settings.html')


@app.route('/online', methods=['GET'])
def onli():
    return render_template('online.html')







@app.route('/ver', methods=['GET'])
def veref():
    return render_template('ver.html')

@app.route('/se_mes', methods=['GET'])
def se_mes():
    return render_template('se_mes.html')

@app.route('/se_mes_im', methods=['GET'])
def se_mes_im():
    return render_template('se_mes_im.html')


@app.route('/se_mes_im2', methods=['GET'])
def se_mes_im2():
    return render_template('se_mes_im2.html')








@app.route('/online', methods=['GET'])
def online():
    return render_template('online.html')

@app.route('/upload', methods=['POST'])
def upload_file():
    if 'file' not in request.files:
        return "No file part", 400
    file = request.files['file']
    if file.filename == '':
        return "No selected file", 400
    
    # Генерация уникального имени файла
    unique_filename = str(uuid.uuid4()) + os.path.splitext(file.filename)[1]
    save_path = os.path.join(UPLOAD_FOLDER, unique_filename)
    file.save(save_path)
    
    # Возвращаем полный URL загруженного файла с протоколом https
    full_url = request.url_root.replace('http://', 'https://') + 'uploads/' + unique_filename
    return f"File uploaded successfully and saved to {full_url}", 200

@app.route('/uploads/<filename>', methods=['GET'])
def uploaded_file(filename):
    return send_from_directory(UPLOAD_FOLDER, filename)

@app.route('/up_fa', methods=['GET'])
def up_fa():
    return render_template('up_fa.html')







# Маршрут для обработки GET-запроса
@app.route('/add_contact', methods=['GET'])
def add_contact():
    try:
        name = request.args.get('name')
        phone = request.args.get('phone')
        email = request.args.get('email')

        if not name or not phone or not email:
            return "Parameters 'name', 'phone', and 'email' are required.", 400

        conn = sqlite3.connect('data.db')
        cursor = conn.cursor()
        cursor.execute('INSERT INTO contacts (name, phone, email) VALUES (?, ?, ?)', (name, phone, email))
        conn.commit()
        conn.close()

        return f"Contact added: {name} - {phone} - {email}", 200
    except Exception as e:
        print(f"Error adding contact: {e}")
        return "Internal Server Error", 500

# Маршрут для отображения таблицы контактов
@app.route('/contacts')
def show_contacts():
    try:
        conn = sqlite3.connect('data.db')
        cursor = conn.cursor()
        cursor.execute('SELECT name, phone, email FROM contacts')
        contacts = cursor.fetchall()
        conn.close()

        # HTML-шаблон для отображения таблицы
        html = '''
        <!doctype html>
        <html lang="en">
          <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
            <title>Contacts</title>
            <style>
              table {
                width: 70%;
                border-collapse: collapse;
              }
              th, td {
                border: 1px solid black;
                padding: 8px;
                text-align: left;
              }
              th {
                background-color: #f2f2f2;
              }
            </style>
          </head>
          <body>
            <h1>Contacts</h1>
            <table>
              <tr>
                <th>Name</th>
                <th>Phone</th>
                <th>Email</th>
              </tr>
              {% for contact in contacts %}
              <tr>
                <td>{{ contact[0] }}</td>
                <td>{{ contact[1] }}</td>
                <td>{{ contact[2] }}</td>
              </tr>
              {% endfor %}
            </table>
          </body>
        </html>
        '''

        return render_template_string(html, contacts=contacts)
    except Exception as e:
        print(f"Error showing contacts: {e}")
        return "Internal Server Error", 500

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))