Пример #1
0
def get_subscribed_emails():
    list_of_customers = crm.read_content_from_file_in_nested_list()
    list_of_subscribed_emails = []
    for customer in list_of_customers:
        if customer[3] == '1':
            list_of_subscribed_emails.append(customer[2])
    view.print_general_results(list_of_subscribed_emails, 'Subscribed emails')
Пример #2
0
def get_subscribed_emails():
    subscribed_emails_list = crm.get_emails_of_subscribent()

    if len(subscribed_emails_list) > 0:
        view.print_general_results(subscribed_emails_list,
                                   "Subscribed Emails:")
    else:
        view.print_error_message("There are no subscribed emails!")
Пример #3
0
def count_employees_per_department():
    list_of_employes = hr.get_employee()
    emp_per_dep = {}
    for i in range(len(list_of_employes)):
        if list_of_employes[i][hr.DEPARTMENT_INDEX] in emp_per_dep:
            emp_per_dep[list_of_employes[i][hr.DEPARTMENT_INDEX]] += 1
        else:
            emp_per_dep[list_of_employes[i][hr.DEPARTMENT_INDEX]] = 1
    view.print_general_results(emp_per_dep, "Employees per department")
Пример #4
0
def get_biggest_revenue_transaction():
    transactions = sales.read_data_from_file()
    price_index = sales.HEADERS.index("Price")
    transaction_price = [
        float(transaction[price_index]) for transaction in transactions
    ]
    transaction_index = transaction_price.index(max(transaction_price))
    view.print_general_results(transactions[transaction_index],
                               "Biggest revenue transaction")
Пример #5
0
def count_employees_with_clearance():
    list_of_employes = hr.get_employee()
    employes_with_clearance = 0
    number = int(view.get_input("Please write a clearence level: "))
    for i in range(len(list_of_employes)):
        if int(list_of_employes[i][hr.CLEARANCE_INDEX]) <= number:
            employes_with_clearance += 1
    view.print_general_results(
        employes_with_clearance,
        "Number of employeees with required clearance level")
Пример #6
0
def count_employees_with_clearance():
    label = "Number of employees with inputted clearance level or greater"
    list_of_employes = hr.read_content_from_file_in_nested_list()
    clearance = hr.HEADERS.index("Clearance")
    iterator = 0
    number = view.get_input("clearance level")
    for employee in list_of_employes:
        if employee[clearance] >= number:
            iterator += 1
    view.print_general_results(iterator, label)
Пример #7
0
def get_average_age():
    list_of_employes = hr.get_employee()
    employee_birthday = hr.date_1(list_of_employes)
    total_age = 0
    for i in range(len(employee_birthday)):
        years = int(employee_birthday[i][hr.YEARS_OLD])
        total_age += hr.CURRENT_YEAR - years

    view.print_general_results(total_age / len(list_of_employes),
                               "Employees average age is")
Пример #8
0
def count_employees_per_department():
    label = "Employees in department in dictionary"
    list_of_employes = hr.read_content_from_file_in_nested_list()
    dictionary_of_departments = {}
    department = hr.HEADERS.index("Department")
    for employee in list_of_employes:
        if employee[department] in dictionary_of_departments:
            dictionary_of_departments[employee[department]] += 1
        else:
            dictionary_of_departments[employee[department]] = 1
    view.print_general_results(dictionary_of_departments, label)
Пример #9
0
def get_average_age():
    label = "Average age of employees"
    list_of_employes = hr.read_content_from_file_in_nested_list()
    birth_date = hr.HEADERS.index("Date of birth")
    sum_of_age = 0
    for employee in list_of_employes:
        birth_date_in_list = employee[birth_date].split("-")
        year_of_birthday = int(birth_date_in_list[0])
        sum_of_age += (2020 - year_of_birthday)
    results = sum_of_age / len(list_of_employes)
    view.print_general_results(results, label)
Пример #10
0
def sum_transactions_between():
    start_date, end_date = view.get_inputs(["start date", "end date"])
    transactions = sales.read_data_from_file()
    price_index = sales.HEADERS.index("Price")
    transactions_price = [
        float(element[price_index]) for element in transactions_between_dates(
            start_date, end_date, transactions)
    ]
    prices_sum = sum(transactions_price)
    view.print_general_results(
        prices_sum, f"Sum of transactions between {start_date} and {end_date}")
Пример #11
0
def get_oldest_and_youngest():
    convert_dates = []
    list_of_employes = hr.get_employee()
    for i in range(len(list_of_employes)):
        convert_dates.append(hr.convert_date(
            list_of_employes[i][hr.DOB_INDEX]))

    names = (list_of_employes[convert_dates.index(min(convert_dates))][1],
             list_of_employes[convert_dates.index(max(convert_dates))][1])
    view.print_general_results(names,
                               "The oldest and the youngest employes are")
Пример #12
0
def count_transactions_between():
    try:
        start_date, end_date = view.get_inputs(["start date", "end date"])
        if date_correct_input(start_date) or date_correct_input(end_date):
            transactions = sales.read_data_from_file()
            view.print_general_results(
                len(
                    transactions_between_dates(start_date, end_date,
                                               transactions)),
                f"Number of transactions between {start_date} and {end_date}")
    except ValueError:
        view.print_error_message("Date in invalid format")
Пример #13
0
def sum_transactions_between():
    date_labels = [
        "Please enter date to sum transactions from (i.e. YYYY-MM-DD): ",
        "Please enter date to sum transactions to (i.e. YYYY-MM-DD): "
    ]
    time_frame = view.get_inputs(date_labels)
    date_from, date_to = time_frame[0], time_frame[1]
    summed_transactions = sales.find_sum_transactions_between(
        date_from, date_to)
    view.print_general_results(
        summed_transactions,
        f"Sum of transactions between {date_from} to {date_to} equals")
def get_oldest_and_youngest():
    view.clear_console()
    employees = hr.read()
    employees.sort(key=lambda employee: employee[2])
    oldest_employee = employees[0][1]
    youngest_employee = employees[len(employees) - 1][1]
    oldest_and_youngest = oldest_employee, youngest_employee
    oldest_and_youngest_label = "Oldest and youngest employees is : "
    view.print_general_results(oldest_and_youngest, oldest_and_youngest_label)
    view.wait_for_reaction()

    return oldest_employee, youngest_employee
Пример #15
0
def get_oldest_and_youngest():
    label = ("Oldest person and Youngest person")
    list_of_employes = hr.read_content_from_file_in_nested_list()
    name = hr.HEADERS.index("Name")
    birth_date = hr.HEADERS.index("Date of birth")
    dict_of_names_with_birth_date = {}
    for employee in list_of_employes:
        dict_of_names_with_birth_date[employee[birth_date]] = employee[name]
    latest_date = min(dict_of_names_with_birth_date)
    earliest_date = max(dict_of_names_with_birth_date)
    results = (dict_of_names_with_birth_date[latest_date], dict_of_names_with_birth_date[earliest_date])
    view.print_general_results(results, label)
Пример #16
0
def count_employees_per_department():
    employees = hr.EMPLOYEES

    department_dict = {}

    for employee in employees:
        department_dict.update({employee[DEPARTMENT]: 0})

    for employee in employees:
        department_dict[employee[DEPARTMENT]] += 1

    view.print_general_results(department_dict, "number of departments")
Пример #17
0
def add_customer():
    '''Creates the new customer in the dataset.'''
    PREFIX = "New Customer"

    # prepares labels to ask User about the new customer data
    labels = (f"{PREFIX} {HEADERS[HEADER_NAME]}",
              f"{PREFIX} {HEADERS[HEADER_EMAIL]}",
              f"{PREFIX} {HEADERS[HEADER_SUBSCRIBE]}")

    customer_data = view.get_inputs(labels)
    crm.create_item(customer_data)

    view.print_general_results(customer_data, "New Customer added")
Пример #18
0
def count_employees_with_clearance():
    employees = hr.EMPLOYEES
    least_clearance = employees[0][CLEARANCE_LEVEL] 
    counter = 0
    for employee in employees:
        if employee[CLEARANCE_LEVEL] < least_clearance:
            least_clearance = employee[CLEARANCE_LEVEL]
    
    for employee in employees:
        if employee[CLEARANCE_LEVEL] == least_clearance:
            counter += 1

    view.print_general_results(counter, "number of employees with at least clearance level")
def next_birthdays():
    view.clear_console()
    employee_list = hr.get_birthday_date_and_name()
    next_birthdays_list = []
    for employee in employee_list:
        days_to_next_birthday = hr.count_time_to_next_birth_day(employee[1])
        if days_to_next_birthday < 14:
            next_birthdays_list.append(employee[0])
            next_birthdays_list.append(str(employee[1].date()))

    next_birthdays_label = "Next birthday has: "
    view.print_general_results(next_birthdays_list, next_birthdays_label)
    view.wait_for_reaction()

    return next_birthdays_list
Пример #20
0
def count_transactions_between():
    date_labels = [
        "Please enter date to count from (i.e. YYYY-MM-DD): ",
        "Please enter date to count to (i.e. YYYY-MM-DD): "
    ]
    time_frame = view.get_inputs(date_labels)
    date_from, date_to = time_frame[0], time_frame[1]
    transactions_between = sales.find_transactions_between(date_from, date_to)
    if len(transactions_between) > 1:
        view.print_message(f"\nTransactions between {date_from} to {date_to}")
        view.print_table(sales.HEADERS, transactions_between)
    else:
        view.print_general_results(
            transactions_between,
            f"Transaction between {date_from} to {date_to}")
Пример #21
0
def get_average_age():
    current_year = 2021
    employees = hr.EMPLOYEES
    list_of_age = []
    sum_of_age = 0

    for employee in employees:
        list_of_age.append(current_year - int(((employee[DATE_OF_BIRTH]).split("-"))[0]))

    for element in list_of_age:
        sum_of_age += element
    
    average_age = sum_of_age / len(list_of_age)

    view.print_general_results(average_age, "average age is: ")
def count_employees_per_department():
    view.clear_console()
    employees = hr.read()
    sep = " "
    employees.sort(key=lambda emplo: emplo[3])
    dict_of_emplo_in_departament = {}
    for employee in employees:
        name_of_departament = employee[3]
        if name_of_departament not in dict_of_emplo_in_departament:
            dict_of_emplo_in_departament[name_of_departament] = 1
        elif name_of_departament in dict_of_emplo_in_departament:
            dict_of_emplo_in_departament[name_of_departament] += 1
    dict_of_emplo_in_departament_label = "Employee numbers by department"
    view.print_general_results(dict_of_emplo_in_departament,
                               dict_of_emplo_in_departament_label)
    view.wait_for_reaction()
Пример #23
0
def next_birthdays(date_str):
    list_employees()
    dic = {}
    names = []
    data_file = hr.DATAFILE
    for line in data_file[1:]:
        dic.update({line[1]: line[2]})
    for key, value in dic.items():
        new_value = date_str[0:5] + value[5:]
        start_date = date.datetime.strptime(date_str, '%Y-%m-%d').date()
        end_date = date.datetime.strptime(new_value, '%Y-%m-%d').date()
        delta = (end_date - start_date).days
        if delta > 0 and delta <= 14:
            names.append(key)
    view.print_general_results(
        names, f'Birthdays in the next two weeks {date_str}')
def count_employees_with_clearance():
    view.clear_console()
    employees = hr.read()
    sep = " "
    employees.sort(key=lambda employee: employee[4])
    list_of_employees_with_lowest_clearance = []
    for worker in employees:
        int_worker_clearance = int(worker[4])

        if int_worker_clearance > 0:
            worker_str = sep.join(worker)
            list_of_employees_with_lowest_clearance.append(worker_str)
    list_of_employees_with_lowest_clearance.sort(key=lambda emplo: emplo[4])
    employees_with_lowest_clearance_label = "number of employees with clearances is :"
    view.print_general_results(len(list_of_employees_with_lowest_clearance),
                               employees_with_lowest_clearance_label)
    view.wait_for_reaction()
Пример #25
0
def get_oldest_and_youngest():
    employees = hr.EMPLOYEES 
    
    name_of_oldest_user = []
    year_of_oldest = int(((employees[0][DATE_OF_BIRTH]).split("-"))[0])
    month_of_oldest = int(((employees[0][DATE_OF_BIRTH]).split("-"))[1])
    day_of_oldest = int(((employees[0][DATE_OF_BIRTH]).split("-"))[2])


    for employee in employees:
        if int(((employee[DATE_OF_BIRTH]).split("-"))[0]) < year_of_oldest:
            name_of_oldest_user[0] = employee[NAME_INDEX]
            year_of_oldest = int(((employee[DATE_OF_BIRTH]).split("-"))[0])
        elif int(((employee[DATE_OF_BIRTH]).split("-"))[0]) == year_of_oldest and int(((employee[DATE_OF_BIRTH]).split("-"))[1]) < month_of_oldest:
            name_of_oldest_user[0] = employee[NAME_INDEX]
            month_of_oldest = int(((employee[DATE_OF_BIRTH]).split("-"))[1])
        elif int(((employee[DATE_OF_BIRTH]).split("-"))[0]) == year_of_oldest and int(((employee[DATE_OF_BIRTH]).split("-"))[1]) == month_of_oldest and int(((employee[DATE_OF_BIRTH]).split("-"))[2]) < day_of_oldest:
            name_of_oldest_user[0] = employee[NAME_INDEX]
            day_of_oldest = int(((employee[DATE_OF_BIRTH]).split("-"))[2])
        elif int(((employee[DATE_OF_BIRTH]).split("-"))[0]) == year_of_oldest and int(((employee[DATE_OF_BIRTH]).split("-"))[1]) == month_of_oldest and int(((employee[DATE_OF_BIRTH]).split("-"))[2]) == day_of_oldest:
            name_of_oldest_user.append(employee[NAME_INDEX])

    name_of_youngest_user = []
    year_of_youngest = int(((employees[0][DATE_OF_BIRTH]).split("-"))[0])
    month_of_youngest = int(((employees[0][DATE_OF_BIRTH]).split("-"))[1])
    day_of_youngest = int(((employees[0][DATE_OF_BIRTH]).split("-"))[2])


    for employee in employees:
        if int(((employee[DATE_OF_BIRTH]).split("-"))[0]) > year_of_youngest:
            name_of_youngest_user[0] = employee[NAME_INDEX]
            year_of_youngest = int(((employee[DATE_OF_BIRTH]).split("-"))[0])
        elif int(((employee[DATE_OF_BIRTH]).split("-"))[0]) == year_of_youngest and int(((employee[DATE_OF_BIRTH]).split("-"))[1]) > month_of_youngest:
            name_of_youngest_user[0] = employee[NAME_INDEX]
            month_of_youngest = int(((employee[DATE_OF_BIRTH]).split("-"))[1])
        elif int(((employee[DATE_OF_BIRTH]).split("-"))[0]) == year_of_youngest and int(((employee[DATE_OF_BIRTH]).split("-"))[1]) == month_of_youngest and int(((employee[DATE_OF_BIRTH]).split("-"))[2]) > day_of_youngest:
            name_of_youngest_user[0] = employee[NAME_INDEX]
            day_of_youngest = int(((employee[DATE_OF_BIRTH]).split("-"))[2])
        elif int(((employee[DATE_OF_BIRTH]).split("-"))[0]) == year_of_youngest and int(((employee[DATE_OF_BIRTH]).split("-"))[1]) == month_of_youngest and int(((employee[DATE_OF_BIRTH]).split("-"))[2]) == day_of_youngest:
            name_of_youngest_user.append(employee[NAME_INDEX])
    
    oldest_and_youngest = tuple(name_of_oldest_user)
    oldest_and_youngest += tuple(name_of_youngest_user)
    print(oldest_and_youngest)
    view.print_general_results(oldest_and_youngest, "name of oldest and youngest user: ")
def get_average_age():
    view.clear_console()
    current_year = int(datetime.now().year)
    all_together = 0
    number_of_employee = 0
    employees = hr.read()
    for employee in employees:
        date_list = employee[2].split("-")
        year = int(date_list[0])
        all_together += year
        number_of_employee += 1

    average = current_year - all_together // number_of_employee

    average_label = "the average age of the employees is"
    view.print_general_results(average, average_label)
    view.wait_for_reaction()

    return average
Пример #27
0
def next_birthdays():
    label = "Employees which have birthday in 14days from inputted date"
    list_of_employes = hr.read_content_from_file_in_nested_list()
    list_of_employes_with_birthday = []
    name = hr.HEADERS.index("Name")
    birth_date = hr.HEADERS.index("Date of birth")
    try:
        start_date = view.get_input("data")
        if not inputted_date_in_right_format(start_date):
            raise ValueError
        max_date = start_date.split("-")
        max_year, max_month, max_day = int(max_date[0]), int(max_date[1]), int(max_date[2]) + 14
        end_date = change_data_into_correct_format(max_day, max_month, max_year)
        for employee in list_of_employes:
            if employee[birth_date] >= start_date and employee[birth_date] <= end_date:
                list_of_employes_with_birthday.append(employee[name])
        view.print_general_results(list_of_employes_with_birthday, label)
    except ValueError:
        view.print_error_message("Data in invalid format")
Пример #28
0
def next_birthdays():
    employees = hr.EMPLOYEES
    date_within_two_weeks = []
    coming_birthday_names = []
    user_input_date = view.get_input("Please input the date like : MM-DD")

    month = int(((user_input_date).split("-"))[0])
    day = int(((user_input_date).split("-"))[1])

    if month in range(1,13) and day in range(1,32):

        for _ in range(14):
            date = (f"{str(month).zfill(2)}-{str(day).zfill(2)}")
            date_within_two_weeks.append(date)

            if day == 31:
                if month == 12:
                    month = 1
                    day = 1
                else:
                    day = 1
                    month += 1
            else:
                day += 1
        
        for employee in employees:

            month_of_birth = int(((employee[DATE_OF_BIRTH]).split("-"))[1])
            day_of_birth = int(((employee[DATE_OF_BIRTH]).split("-"))[2])
            date = (f"{str(month_of_birth).zfill(2)}-{str(day_of_birth).zfill(2)}")
            if date in date_within_two_weeks:
                coming_birthday_names.append(employee[NAME_INDEX])
    

    
        if len(coming_birthday_names) > 0:
            view.print_general_results(coming_birthday_names, "Names of employees having birthdays within the two weeks")
        else:
            view.print_error_message("Nobody has birthday within two weeks")
    else:
        view.print_error_message("The input date is not correct")
def update_logic(label, folder_name_update_function, headers, department_data):
    row_to_update = int(
        view.get_input(f"\nEnter a valid row number to edit "
                       f"{label}'s data(e.g. 1): ")) - 1
    if len(department_data) > row_to_update >= 0:
        view.print_general_results(department_data[row_to_update], headers)
        column_index = view.print_message(
            "\nWhich category would you like to edit:")
        for index, header in enumerate(headers, 1):
            if index == len(headers) - 1:
                view.print_message(f"{index}) {headers[index]}")
                break
            else:
                view.print_message(f"{index}) {headers[index]},")
        column_index = int(view.get_input(""))
        if 0 < column_index < len(headers):
            cell_update_content = view.get_input(
                "\nEnter a new value for the selected category: ")
            update_confirmation = view.get_input(
                f"Are you sure you want to update {label}'s "
                f"{headers[column_index]}: "
                f"{department_data[row_to_update][column_index]} "
                f"to {cell_update_content}? (y/n) ").lower()
            if update_confirmation.startswith("y"):
                folder_name_update_function(row_to_update, column_index,
                                            cell_update_content)
                view.print_message(f"\nSuccessfully updated data!\n"
                                   f"{headers[column_index]} "
                                   f"for row {row_to_update + 1} has been "
                                   f"changed to: {cell_update_content} ")
            else:
                view.print_message("\nNo data has been updated.")
        else:
            view.print_error_message("No such category in this table!")
    else:
        view.print_error_message(
            f"There is no such row ({row_to_update + 1}) in this table!")
Пример #30
0
def get_subscribed_emails():
    subs_mails = crm.get_subscribed_emails()
    view.print_general_results(subs_mails, "subscribers mails")