def __init__(self, con, id): """ function to initialize Employee class :param con: Database connection object :param id: Employee Id """ self.id = id self.employee_db = EmployeeDatabase(con, id)
class SalesSalaryAvgBarChart(AbstractMakeChart): def __init__(self): super().__init__() self.db = EmployeeDatabase() # db = EmployeeDatabase() def create(self): ave_sales = self.db.get_ave_sales() ave_salary = self.db.get_ave_salary() objects = ('Average Sales', 'Average Salary') y_pos = np.arange(len(objects)) performance = [ave_sales, ave_salary] if ave_sales < 0 or ave_salary < 0: raise ValueError("wrong value of the input") plt.bar(y_pos, performance, align='center', alpha=0.5) plt.xticks(y_pos, objects) plt.ylabel('NZ Dollor') plt.title('Average Sales and Average Salary') plt.show()
class PieChart(AbstractMakeChart): def __init__(self): super().__init__() self.db = EmployeeDatabase() def create(self): employee_list = self.db.get_all_employee() labels = [emp[0] for emp in employee_list] sales = [emp[5] for emp in employee_list] plt.pie(sales, labels=labels, shadow=True) plt.axis('equal') plt.title("Sales by Salesperson") plt.show()
class LineChart(AbstractMakeChart): def __init__(self): super().__init__() self.db = EmployeeDatabase() def create(self): employee_list = self.db.get_all_employee() # our X values: emp_id = [emp[0] for emp in employee_list] # our Y values: sales_values = [emp[3] for emp in employee_list] plt.plot(emp_id, sales_values, '-b', label="A simple line") plt.legend(loc='upper left') plt.title("Sales Value for Employees") plt.xlabel('Employee ID') plt.ylabel('Sales') plt.show() plt.plot(emp_id, sales_values, 'bo') plt.show()
def __init__(self): super().__init__() self.db = EmployeeDatabase()
class Employee(object): def __init__(self, con, id): """ function to initialize Employee class :param con: Database connection object :param id: Employee Id """ self.id = id self.employee_db = EmployeeDatabase(con, id) def indirect(self, i): """ function to redirect to a specific function :param i: number of the method to be called :return: method called """ method_name = 'number_' + str(i) method = getattr(self, method_name, lambda: 'Invalid') return method() def show_cab_for_timing(self, rows): x = PrettyTable() x.field_names = ["Cab Number", "Timing", "Route Id", "Source", "Destination", "Seats Available"] for r in rows: x.add_row([r[1], r[2], r[3], r[5], r[6], r[7]]) print(x) def number_1(self): """ function to book a cab :return: True if executed successfully else False """ source = builtins.input("Please Enter the source: ") dest = builtins.input("Please Enter the destination: ") timing = builtins.input("Please Enter the timing: ") rows = self.employee_db.get_cab_for_timing(timing) self.show_cab_for_timing(rows) another_route = "True" while another_route == "True": route_id = builtins.input("Please enter the route id: ") self.employee_db.book_a_cab(int(route_id)) another_route = builtins.input("Do you want to add another route?(True/False) ") def show_booking_details(self, rows): x = PrettyTable() x.field_names = ["Cab Number", "Timing", "Route Id", "Source", "Destination", "Date", "Status"] for r in rows: x.add_row([r[11], r[12], r[1], r[7], r[8], r[2], r[4]]) print(x) def number_2(self): """ function to view all the past bookings :return: True if executed successfully else False """ status = 'PAST' rows = self.employee_db.get_booking_details(status) self.show_booking_details(rows) def number_3(self): """ function to view all upcoming bookings :return: True if executed successfully else False """ status = 'UPCOMING' rows = self.employee_db.get_booking_details(status) self.show_booking_details(rows) def show_upcoming_bookings(self, rows): x = PrettyTable() x.field_names = ["Booking Id", "Cab Number", "Timing", "Route Id", "Source", "Destination", "Date", "Status"] for r in rows: x.add_row([r[0], r[11], r[12], r[1], r[7], r[8], r[2], r[4]]) print(x) def number_4(self): """ function to cancel an upcoming booking :return: True if executed successfully else False """ print("Following are the upcoming bookings: ") time_delta = datetime.datetime.now() + datetime.timedelta(minutes=30) print(time_delta.strftime("%H:%M")) rows = self.employee_db.get_upcoming_booking_details(time_delta.strftime("%H:%M")) self.show_upcoming_bookings(rows) cancel_booking = builtins.input("Please enter the Booking Id of the booking you want to cancel: ") self.employee_db.cancel_booking(int(cancel_booking))
class Controller: f = Filer() v = Validator() db = EmployeeDatabase() chart = ChartMaker() gd = GetData() # Jono's def load_file(self, file): try: if ".csv" in file[-4:]: content = self.f.read_csv(file) elif ".xlsx" in file[-5:]: content = self.f.read_excel(file) elif ".txt" in file[-4:]: content = self.f.read_txt(file) else: message = "incorrect format please see help load" raise NameError(message) validated_employees = self.validate_items(content) return validated_employees except NameError as e: print(e) except FileNotFoundError: print("File not found") except Exception as e: print(e) def validate_items(self, content): valid_employees = [] invalid_employees = [] for employee in content: item = self.v.validate_all(employee) if False in item: invalid_employees.append(employee) else: valid_employees.append(employee) emp = {'Valid': valid_employees, 'Invalid': invalid_employees} return emp def add_to_database(self, content_list): for item in content_list: self.gd.insert_employee(item) def get_all_employees(self): try: employees = self.gd.get_all_employee() if len(employees) > 0: return employees else: raise IndexError except IndexError: print("No employees in database") except Exception as e: print(e) # renee def print_chart_average(self): ave_sales = self.gd.get_ave_sales() ave_salary = self.gd.get_ave_salary() self.chart.make_bar_average(ave_sales, ave_salary) def print_chart_sales(self): employees = self.gd.get_all_employee() self.chart.make_bar_sales(employees) def print_chart_pie(self): employees = self.gd.get_all_employee() self.chart.make_pie(employees) def print_chart_line(self): employees = self.gd.get_all_employee() self.chart.make_line(employees) # Chami def save_file(self, file_format, employee_list): """ # Chami -- added 19-03-2018 >>> Controller.save_file('test1.txt', [['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991'],['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']]) Traceback (most recent call last): TypeError: save_file() missing 1 required positional argument: 'employee_list' >>> Controller.save_file('test1.txt',) Traceback (most recent call last): TypeError: save_file() missing 2 required positional arguments: 'file_format' and 'employee_list' >>> Controller.save_file() Traceback (most recent call last): TypeError: save_file() missing 3 required positional arguments: 'self', 'file_format', and 'employee_list' >>> Controller.save_file('test1.txt', [[],[]]) Traceback (most recent call last): TypeError: save_file() missing 1 required positional argument: 'employee_list' >>> Controller.save_file('test1.txt', [[,[]]) Traceback (most recent call last): SyntaxError: invalid syntax >>> Controller.save_file('test1.txt', [['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']]) Traceback (most recent call last): TypeError: list indices must be integers or slices, not tuple >>> Controller.save_file(' ', [['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']]) Traceback (most recent call last): TypeError: list indices must be integers or slices, not tuple >>> Controller.save_file(' .csv', [['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']]) Traceback (most recent call last): TypeError: list indices must be integers or slices, not tuple >>> Controller.save_file('test1.', [['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']]) Traceback (most recent call last): TypeError: list indices must be integers or slices, not tuple >>> Controller.save_file('.txt', [['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']]) Traceback (most recent call last): TypeError: list indices must be integers or slices, not tuple >>> Controller.save_file('.xlsx', [['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']]) Traceback (most recent call last): TypeError: list indices must be integers or slices, not tuple >>> Controller.save_file('.', [['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']]) Traceback (most recent call last): TypeError: list indices must be integers or slices, not tuple >>> Controller.save_file(' .xlsx', [['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']]) Traceback (most recent call last): TypeError: list indices must be integers or slices, not tuple >>> Controller.save_file('.xxx', [['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']['A001', 'M', '26', '200', 'Normal', '20', '08-10-1991']]) Traceback (most recent call last): TypeError: list indices must be integers or slices, not tuple """ try: if ".csv" in file_format: self.f.save_csv(file_format, employee_list) elif ".xlsx" in file_format: self.f.save_excel(file_format, employee_list) elif ".txt" in file_format: self.f.save_txt_file(file_format, employee_list) else: raise NameError("can not save that file type") except NameError as e: print(e) # except exception part needed def save_invalid(self, invalid_employees): try: self.f.save_txt_file("invalid.csv", invalid_employees) except: print("Whoops something went wrong")
def __init__(self): self.cf = CSVFactory() self.f = Filer() self.v = Validator() self.db = EmployeeDatabase() self.chart = ChartMaker()
class Controller: def __init__(self): self.cf = CSVFactory() self.f = Filer() self.v = Validator() self.db = EmployeeDatabase() self.chart = ChartMaker() @staticmethod def load_filer(factory, file): return factory.create_file_content().get_result(file) @staticmethod def save_filer(factory, file, employee_list): return factory.create_save_file().get_result(file, employee_list) # Jono's def load_file(self, file): try: if ".csv" in file[-4:]: content = self.load_filer(CSVFactory(), file) elif ".xlsx" in file[-5:]: content = self.load_filer(ExcelFactory(), file) elif ".txt" in file[-4:]: content = self.load_filer(TXTFactory(), file) else: message = "incorrect format please see help load" raise NameError(message) validated_employees = self.validate_items(content) return validated_employees except NameError as e: print(e) except FileNotFoundError: print("File not found") except Exception as e: print(e) def validate_items(self, content): valid_employees = [] invalid_employees = [] for employee in content: item = self.v.validate_all(employee) if False in item: invalid_employees.append(employee) else: valid_employees.append(employee) emp = {'Valid': valid_employees, 'Invalid': invalid_employees} return emp def add_to_database(self, content_list): for item in content_list: self.db.insert_employee(item) def get_all_employees(self): try: employees = self.db.get_all_employee() if len(employees) > 0: return employees else: raise IndexError except IndexError: print("No employees in database") except Exception as e: print(e) # renee def print_chart_average(self): bar_chart = Chart(SalesSalaryAvgBarChart()) bar_chart.make_chart() def print_chart_sales(self): bar_chart = Chart(SalesBarChart()) bar_chart.make_chart() def print_chart_pie(self): pie_chart = Chart(PieChart()) pie_chart.make_chart() def print_chart_line(self): line_chart = Chart(LineChart()) line_chart.make_chart() # Chami def save_file(self, file_format, employee_list): try: if ".csv" in file_format: content = self.save_filer(CSVFactory(), file_format, employee_list) elif ".xlsx" in file_format: content = self.save_filer(ExcelFactory(), file_format, employee_list) elif ".txt" in file_format: content = self.save_filer(TXTFactory(), file_format, employee_list) else: raise NameError("can not save that file type") except NameError as e: print(e) def save_invalid(self, invalid_employees): try: self.f.save_txt_file("invalid.csv", invalid_employees) except: print("Whoops something went wrong")