#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sqlalchemy as sqla # Import knihovny sqlalchemy - pro komunikaci s mysql serverem
import pandas as pd # Knihovna pro operaace s dataframama (tabulkama)
import csv

""" -------------------------------------------------------------------------------------
POPIS:
zjištění všech používaných kanálů
zapsání výsledků do BP_03_LL_channels.csv, BP_03_H_channels.csv, BP_03_M_channels.csv
------------------------------------------------------------------------------------- """

#-------volba parametrů
IDs = range(2, 34) #pro kolik pacientů hledám kanály
#-----

channels_LL = []
channels_H = []
channels_M = []

#připojení do databáze
db_remote = {'user':'', 'pwd':'', 'host': '', 'port':'', 'database':''}
db = db_remote
engine = sqla.create_engine('mysql+pymysql://{}:{}@{}:{}/{}'.format(db['user'],db['pwd'],db['host'],db['port'],db['database']))
conn = engine.connect()

#--------prohledávám unique názvy kanálů u všech pacientů
for i in IDs:
    if i <= 9:
        query_LL = 'SELECT DISTINCT channel_name FROM LL_alg_Fnusa.fnusa_00%s' % i; #%vytahuji z databáze pouze channel_name
        query_H = 'SELECT DISTINCT channel_name FROM Hilbert_alg_Fnusa.fnusa_00%s' % i; #%vytahuji z databáze pouze channel_name
        query_M = 'SELECT DISTINCT channel_name FROM Matt_alg_Fnusa.fnusa_00%s' % i; #%vytahuji z databáze pouze channel_name

        print 'Prave byl vykonán SQL: %s' % query_LL
        print 'Teď jedu pro %s' % i

        ll_channels_only = pd.read_sql(query_LL,conn) # Vytvori dataframe s vysledky sql prikaz
        channels_LL.append(ll_channels_only.channel_name.unique()) # Seznam kanalu v ll_df dataframu, zatím pro jednoho pacienta, naplněná matice stejné řádky

        H_channels_only = pd.read_sql(query_LL,conn) # Vytvori dataframe s vysledky sql prikaz
        channels_H.append(H_channels_only.channel_name.unique()) # Seznam kanalu v ll_df dataframu, zatím pro jednoho pacienta, naplněná matice stejné řádky

        M_channels_only = pd.read_sql(query_LL,conn) # Vytvori dataframe s vysledky sql prikaz
        channels_M.append(M_channels_only.channel_name.unique()) # Seznam kanalu v ll_df dataframu, zatím pro jednoho pacienta, naplněná matice stejné řádky

    if i >=10: # and i <= 49:
        query_LL = 'SELECT DISTINCT channel_name FROM LL_alg_Fnusa.fnusa_0%s' % i; #distinct nebude odesilat duplicitni data , tedy nebude odesilat A1, A1, A1 ...
        query_H = 'SELECT DISTINCT channel_name FROM Hilbert_alg_Fnusa.fnusa_0%s' % i; #%vytahuji z databáze pouze channel_name
        query_M = 'SELECT DISTINCT channel_name FROM Matt_alg_Fnusa.fnusa_0%s' % i; #%vytahuji z databáze pouze channel_name

        print('Prave byl vykonán SQL: %s' % query_LL)
        print('Teď jedu pro %s' % i)

        ll_channels_only = pd.read_sql(query_LL,conn) # Vytvori dataframe s vysledky sql prikaz
        channels_LL.append(ll_channels_only.channel_name.unique()) # Seznam kanalu v ll_df dataframu, zatím pro jednoho pacienta, naplněná matice stejné řádky

        H_channels_only = pd.read_sql(query_LL,conn) # Vytvori dataframe s vysledky sql prikaz
        channels_H.append(H_channels_only.channel_name.unique()) # Seznam kanalu v ll_df dataframu, zatím pro jednoho pacienta, naplněná matice stejné řádky

        M_channels_only = pd.read_sql(query_LL,conn) # Vytvori dataframe s vysledky sql prikaz
        channels_M.append(M_channels_only.channel_name.unique()) # Seznam kanalu v ll_df dataframu, zatím pro jednoho pacienta, naplněná matice stejné řádky


#------zápis do přehledného .csv souboru

with open('BP_03_LL_channels.csv', 'w') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerows(channels_LL)

# kanály jsou u dalších algoritmů stejné
with open('BP_03_H_channels.csv', 'w') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerows(channels_H)

with open('BP_03_M_channels.csv', 'w') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerows(channels_M)

print("Open up csv called {} :)".format(csvfile.name))
