import json
import mariadb
from PySide6.QtCore import QObject, Signal
from lib.domain.BaseModel import database


class BusinessDAO(QObject):
    newBusinessAdded = Signal()

    __cur = None
    __all_cols = None

    def __init__(self):
        super().__init__()
        self.__con = database.connection()
        if self.__con:
            self.__cur = self.__con.cursor()

    def getBusiness(self, enc_key, criterion="Alle"):
        try:
            if self.__cur:
                self.__cur.callproc("getCustomerView", (enc_key, criterion,))
                self.__all_cols = [desc[0] for desc in self.__cur.description]
                return self.__cur.fetchall(), self.__all_cols
            else:
                return None, None
        except mariadb.Error as e:
            print(str(e))

    def getOneBusiness(self, business_id, enc_key=None):
        try:
            if self.__cur:
                self.__cur.callproc("getCustomer", (business_id, enc_key,))
                # self.__all_cols = [desc[0] for desc in self.__cur.description]
                return self.__cur.fetchall()  # , self.__all_cols
            else:
                return None  # , None
        except mariadb.Error as e:
            print(str(e))

    def addBusiness(self, data, contact_id):
        try:
            if self.__cur:
                self.__cur.callproc("addBusiness", (json.dumps(data), contact_id))
                self.__con.commit()
                self.newBusinessAdded.emit()

        except mariadb.Error as e:
            print(str(e))
