#!/usr/bin/env python
"""Create a new admin user able to view the /reports endpoint."""
from getpass import getpass
import sys
from flask_bcrypt import Bcrypt
import sqlalchemy as db
import logging
from configparser import ConfigParser
import urllib.parse
import pandas as pd
logging.basicConfig(filename='/var/www/html/annex_survey/survey/logs/app.log',
                    filemode='a',
                    format='%(asctime)s %(name)s %(levelname)s %(message)s',
                    level=logging.INFO)

config_object = ConfigParser()
config_object.read("../.config.ini")

# get info
dbinfo = config_object['db']
bcrypt = Bcrypt()


cnx = db.create_engine('mysql+pymysql://' + str(dbinfo["user"]) + ':' + urllib.parse.quote(str(dbinfo["password"])) + '@' + str(dbinfo['host']) + ':' + str(dbinfo["port"]) + '/' + str(dbinfo["db"]))
conn = cnx.connect()
try:
    df = pd.read_sql('select * from users', conn)
    if len(df):
        print('A user already exists! Create another? (y/n): '),
        create = input()
        if create == 'n':
            pass
        else:
            print('Enter email address: '),
            email = input()
            password = getpass()
            assert password == getpass('Password (again):')

            password=bcrypt.generate_password_hash(password)
            query = """INSERT INTO users (email, password) VALUES(%s, %s)"""
            val = (email, password)
            conn.execute(query, val)
            conn.close()
            print('User added')
    else:
        print('Enter email address: '),
        email = input()
        password = getpass()
        assert password == getpass('Password (again):')

        password=bcrypt.generate_password_hash(password)
        query = """INSERT INTO users (email, password) VALUES(%s, %s)"""
        val = (email, password)
        conn.execute(query, val)
        conn.close()
        print('User added')
except Exception as e:
    logging.info(f'failed with error {e}')


