def project(self):
        raw_data = connect.runSql("SELECT name, duedate, status, maintenance_requested FROM project")

        project = {}
        raw_data2 = []
        dates = []
        for record in raw_data:
            dates.append(record[1])
            if record[3] == "true":
                status = 5
            else:
                status = record[2]
            project[record[0]] = (record[1], status)
        min_date = min(dates)
        days_range = (max(dates) - min_date).days

        for key in project:
            color = project[key][1]
            if color == 1:
                color = (100, 67, 73)
            elif color == 2:
                color = (139, 180, 144)
            elif color == 3:
                color = (103, 178, 173)
            elif color == 4:
                color = (207, 153, 78)
            elif color == 5:
                color = (54, 130, 104)
            project[key] = (round((project[key][0]-min_date).days/(days_range/3)), color)

        return project
    def clients_name(self):

        raw_data = connect.runSql("SELECT company_name, main_color FROM project")

        records = []
        clients = {}

        for record in raw_data:

            if record[1]:
                color = self.color_converter(record[1])

            if record[0] not in clients:
                clients[record[0]] = [1, color]
            else:
                clients[record[0]][0] += 1
                clients[record[0]].append(color)

        R = 0
        G = 0
        B = 0
        for key in clients:
            for value in clients[key][1:]:
                R += value[0]
                G += value[1]
                B += value[2]
            R = R / len(clients[key][1:])
            G = G / len(clients[key][1:])
            B = B / len(clients[key][1:])
            clients[key] = (len(clients[key][1:]), (round(R), round(G), round(B)))
            R = 0
            G = 0
            B = 0

        return clients
    def project_names(self):
        raw_data = connect.runSql("SELECT name, budget_value, main_color, budget_currency FROM project")

        projects = {}
        budget = []
        for i in range(len(raw_data)):
            if raw_data[i][3] == "USD":
                budget_value = float(raw_data[i][1]) / 0.9
            if raw_data[i][3] == "GBP":
                budget_value = float(raw_data[i][1]) / 1.17
            else:
                budget_value = float(raw_data[i][1])
            budget_value = round(budget_value)
            budget.append(budget_value)

            projects[raw_data[i][0]] = (budget_value, self.color_converter(raw_data[i][2]))
        budget_range = max(budget)-min(budget)
        for i in range(len(raw_data)):
            projects[raw_data[i][0]] = (round(budget[i]/(budget_range/3)), self.color_converter(raw_data[i][2]))

        return projects
def clients_name():
    # 1. Clients name:
    raw_data = connect.runSql("SELECT * FROM project")


    records = []
    for record in raw_data:
        records.append(Record(record[0], record[3], record[5]))
    clients = {}

    for record in records:

        if record.main_color:
            color = color_converter(record.main_color)

        if record.company_name not in clients:
            clients[record.company_name] = [1, color]
        else:
            clients[record.company_name][0] += 1
            clients[record.company_name].append(color)

    return clients
    def company(self):
        raw_data = connect.runSql("SELECT company_name, budget_value, budget_currency FROM project")

        company = {}
        budget = []
        for i in range(len(raw_data)):
            if raw_data[i][2] == "USD":
                budget_value = float(raw_data[i][1]) / 0.9
            if raw_data[i][2] == "GBP":
                budget_value = float(raw_data[i][1]) / 1.17
            else:
                budget_value = float(raw_data[i][1])
            budget_value = round(budget_value)
            budget.append(budget_value)
        budget_range = max(budget) - min(budget)

        for i in range(len(raw_data)):

            if not company.get(raw_data[i][0], 0) == 0:
                budget_value = budget_value + company.get(raw_data[i][0], 0)[1]

            company[raw_data[i][0]] = (raw_data[i][2], round(budget[i]/(budget_range/3)))
        return company